diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/99/extensions/agents/init.lua | 26 | ||||
| -rw-r--r-- | lua/99/ops/make-prompt.lua | 12 |
2 files changed, 22 insertions, 16 deletions
diff --git a/lua/99/extensions/agents/init.lua b/lua/99/extensions/agents/init.lua index 559f34b..4002c75 100644 --- a/lua/99/extensions/agents/init.lua +++ b/lua/99/extensions/agents/init.lua @@ -110,6 +110,23 @@ function M.by_name(rules, prompt) } end +--- @param rule _99.Agents.Rule +--- @return string | nil +function M.get_rule_content(rule) + local file_path = rule.absolute_path or rule.path + local ok, file = pcall(io.open, file_path, "r") + if not ok or not file then + return nil + end + local ok_read, content = pcall(file.read, file, "*a") + if not ok_read then + return nil + end + + pcall(file.close, file) + return string.format("<%s>\n%s\n</%s>", rule.name, content, rule.name) +end + --- @param _99 _99.State --- @return _99.CompletionProvider function M.completion_provider(_99) @@ -140,14 +157,7 @@ function M.completion_provider(_99) if not rule then return nil end - local file_path = rule.absolute_path or rule.path - local ok, file = pcall(io.open, file_path, "r") - if not ok or not file then - return nil - end - local content = file:read("*a") - file:close() - return string.format("<%s>\n%s\n</%s>", rule.name, content, rule.name) + return M.get_rule_content(rule) end, } end diff --git a/lua/99/ops/make-prompt.lua b/lua/99/ops/make-prompt.lua index 5a5dc10..8b77256 100644 --- a/lua/99/ops/make-prompt.lua +++ b/lua/99/ops/make-prompt.lua @@ -1,10 +1,9 @@ -local Agents = require("99.extensions.agents") local Completions = require("99.extensions.completions") --- @param context _99.RequestContext --- @param prompt string --- @param opts _99.ops.Opts ---- @return string, _99.Agents.Rule[], _99.Completion +--- @return string, _99.Completion return function(context, prompt, opts) local user_prompt = opts.additional_prompt assert( @@ -15,16 +14,13 @@ return function(context, prompt, opts) local full_prompt = prompt full_prompt = context._99.prompts.prompts.prompt(user_prompt, full_prompt) - local rules = Agents.find_rules(context._99.rules, user_prompt) - + local refs = Completions.parse(user_prompt) local additional_rules = opts.additional_rules if additional_rules then for _, r in ipairs(additional_rules) do - table.insert(rules, r) + table.insert(refs, r) end end - local refs = Completions.parse(user_prompt) - - return full_prompt, rules, refs + return full_prompt, refs end |
