feat: add the possibility to also add all files to initial context

This commit is contained in:
2025-02-08 02:21:12 +01:00
parent aa12bca3ab
commit 6723b802bf
3 changed files with 25 additions and 2 deletions

View File

@@ -61,6 +61,7 @@ function M.load()
project_name = "", project_name = "",
debug = false, debug = false,
initial_files = {}, initial_files = {},
include_file_contents = false, -- NEW FLAG: include file contents in prompt if true
preview_changes = false, preview_changes = false,
interactive_file_selection = false, interactive_file_selection = false,
partial_acceptance = false, partial_acceptance = false,
@@ -119,6 +120,9 @@ function M.load()
if type(result.initial_files) == "table" then if type(result.initial_files) == "table" then
config.initial_files = result.initial_files config.initial_files = result.initial_files
end end
if type(result.include_file_contents) == "boolean" then -- LOAD NEW FLAG
config.include_file_contents = result.include_file_contents
end
if type(result.preview_changes) == "boolean" then if type(result.preview_changes) == "boolean" then
config.preview_changes = result.preview_changes config.preview_changes = result.preview_changes
end end

View File

@@ -185,4 +185,22 @@ function M.get_file_contents(files, conf)
return table.concat(sections, "\n") return table.concat(sections, "\n")
end end
return M -- NEW FUNCTION: Build the project prompt by optionally including file contents.
function M.get_project_prompt(directories, conf)
local structure = M.get_project_structure(directories, conf)
if conf.include_file_contents then
local files = M.get_project_files(directories, conf)
local contents = M.get_file_contents(files, conf)
local total_chars = #contents
if total_chars > conf.prompt_char_limit then
vim.notify("Total file contents (" .. total_chars .. " characters) exceed the prompt limit (" .. conf.prompt_char_limit .. "). Please disable 'include_file_contents' in your config.", vim.log.levels.ERROR)
return structure
else
return structure .. "\n" .. contents
end
else
return structure
end
end
return M

View File

@@ -133,7 +133,8 @@ local function build_prompt(user_input, dirs, conf)
env_lines[#env_lines+1] = os.date("%x, %X (%Z)") env_lines[#env_lines+1] = os.date("%x, %X (%Z)")
env_lines[#env_lines+1] = "" env_lines[#env_lines+1] = ""
env_lines[#env_lines+1] = "# Current Working Directory (" .. root .. ") Files" env_lines[#env_lines+1] = "# Current Working Directory (" .. root .. ") Files"
env_lines[#env_lines+1] = context.get_project_structure(dirs, conf) or "" -- Using the new get_project_prompt function instead of get_project_structure.
env_lines[#env_lines+1] = context.get_project_prompt(dirs, conf) or ""
env_lines[#env_lines+1] = "" env_lines[#env_lines+1] = ""
env_lines[#env_lines+1] = "# Current Mode" env_lines[#env_lines+1] = "# Current Mode"
env_lines[#env_lines+1] = "ACT MODE" env_lines[#env_lines+1] = "ACT MODE"