diff --git a/BACKLOG.md b/BACKLOG.md index 3507cdf..3921c66 100644 --- a/BACKLOG.md +++ b/BACKLOG.md @@ -38,22 +38,21 @@ - [Tech Debt 3]: Test coverage missing for `M.interactive_prompt_with_fragments` in `commands.lua`. ## Ranked Backlog -1. [Gap 3 - Subtask 1] - [High Impact/Low Effort] - Add extraction configuration options to config.lua and plugin/llm.lua. -2. [Gap 3 - Subtask 2] - [High Impact/Low Effort] - Update command execution in commands.lua to append extract flags and add test coverage. -3. [Gap 1] - [High Impact/Medium Effort] - Add support for Tools / Function Calling (`-T`, `--tool`, `--functions`, `--td`, `--ta`, `--cl`) in commands. -4. [Gap 4] - [Medium Impact/Low Effort] - Expose Model Options (`-o`, `--option`) configuration per model or prompt. -5. [Gap 5] - [Medium Impact/Low Effort] - Support dynamic Template Parameters (`-p`, `--param`). -6. [Gap 8] - [Medium Impact/Low Effort] - Add functionality to Continue Conversations (`-c`, `--continue`, `--cid`, `--conversation`) easily from previous prompt sessions. -7. [Gap 11] - [Medium Impact/Low Effort] - Add support for Schema Options (`--schema`, `--schema-multi`) in prompts. -8. [Gap 13] - [Medium Impact/Low Effort] - Add support to Save as Template (`--save`). -9. [Gap 2] - [Medium Impact/Medium Effort] - Implement Multi-modal attachment support for models that accept images or other data types (`-a`, `--attachment`, `--at`, `--attachment-type`). -10. [Tech Debt 2] - [Medium Impact/Medium Effort] - Enhance async job handling logic in `job.lua` for edge cases. -11. [Tech Debt 1 - Subtask 1] - [High Impact/High Effort] - Increase test coverage for models_manager, templates_manager, and schemas_manager. -12. [Tech Debt 1 - Subtask 2] - [High Impact/High Effort] - Increase test coverage for keys_manager, fragments_manager. -13. [Tech Debt 1 - Subtask 3] - [High Impact/High Effort] - Increase test coverage for custom_openai, plugins_manager. -14. [Gap 6] - [Low Impact/Low Effort] - Expose token Usage tracking (`-u`, `--usage`) visually after execution. -15. [Gap 7] - [Low Impact/Low Effort] - Allow composing System Fragments (`--sf`, `--system-fragment`). -16. [Gap 9] - [Low Impact/Low Effort] - Enable dynamic Query Selection (`-q`, `--query`). -17. [Gap 10] - [Low Impact/Low Effort] - Add options for explicit Async Execution (`--async`) and blocking Stream Control (`--no-stream`). -18. [Gap 12] - [Low Impact/Low Effort] - Add support for Database Logging options (`-d`, `--database`, `-n`, `--no-log`, `--log`). -19. [Tech Debt 3] - [Low Impact/Low Effort] - Write explicit unit tests for `interactive_prompt_with_fragments` in `commands.lua`. +1. [Gap 3 - Subtask 2] - [High Impact/Low Effort] - Update command execution in commands.lua to append extract flags and add test coverage. +2. [Gap 1] - [High Impact/Medium Effort] - Add support for Tools / Function Calling (`-T`, `--tool`, `--functions`, `--td`, `--ta`, `--cl`) in commands. +3. [Gap 4] - [Medium Impact/Low Effort] - Expose Model Options (`-o`, `--option`) configuration per model or prompt. +4. [Gap 5] - [Medium Impact/Low Effort] - Support dynamic Template Parameters (`-p`, `--param`). +5. [Gap 8] - [Medium Impact/Low Effort] - Add functionality to Continue Conversations (`-c`, `--continue`, `--cid`, `--conversation`) easily from previous prompt sessions. +6. [Gap 11] - [Medium Impact/Low Effort] - Add support for Schema Options (`--schema`, `--schema-multi`) in prompts. +7. [Gap 13] - [Medium Impact/Low Effort] - Add support to Save as Template (`--save`). +8. [Gap 2] - [Medium Impact/Medium Effort] - Implement Multi-modal attachment support for models that accept images or other data types (`-a`, `--attachment`, `--at`, `--attachment-type`). +9. [Tech Debt 2] - [Medium Impact/Medium Effort] - Enhance async job handling logic in `job.lua` for edge cases. +10. [Tech Debt 1 - Subtask 1] - [High Impact/High Effort] - Increase test coverage for models_manager, templates_manager, and schemas_manager. +11. [Tech Debt 1 - Subtask 2] - [High Impact/High Effort] - Increase test coverage for keys_manager, fragments_manager. +12. [Tech Debt 1 - Subtask 3] - [High Impact/High Effort] - Increase test coverage for custom_openai, plugins_manager. +13. [Gap 6] - [Low Impact/Low Effort] - Expose token Usage tracking (`-u`, `--usage`) visually after execution. +14. [Gap 7] - [Low Impact/Low Effort] - Allow composing System Fragments (`--sf`, `--system-fragment`). +15. [Gap 9] - [Low Impact/Low Effort] - Enable dynamic Query Selection (`-q`, `--query`). +16. [Gap 10] - [Low Impact/Low Effort] - Add options for explicit Async Execution (`--async`) and blocking Stream Control (`--no-stream`). +17. [Gap 12] - [Low Impact/Low Effort] - Add support for Database Logging options (`-d`, `--database`, `-n`, `--no-log`, `--log`). +18. [Tech Debt 3] - [Low Impact/Low Effort] - Write explicit unit tests for `interactive_prompt_with_fragments` in `commands.lua`. diff --git a/lua/llm/config.lua b/lua/llm/config.lua index f92910b..8b668a8 100644 --- a/lua/llm/config.lua +++ b/lua/llm/config.lua @@ -47,6 +47,11 @@ M.defaults = { type = "string", desc = "Default tools to make available to the model (comma separated string)" }, + extract = { + default = false, + type = "boolean", + desc = "Extract content of fenced code blocks" + }, -- Add more config options here } diff --git a/plugin/llm.lua b/plugin/llm.lua index 2a9ec5b..f48f31f 100644 --- a/plugin/llm.lua +++ b/plugin/llm.lua @@ -45,6 +45,7 @@ if vim.g.llm_auto_update_cli then user_config.auto_update_cli = vim.g.llm_auto_u if vim.g.llm_auto_update_interval_days then user_config.auto_update_interval_days = vim.g.llm_auto_update_interval_days end if vim.g.llm_executable_path then user_config.llm_executable_path = vim.g.llm_executable_path end if vim.g.llm_tools then user_config.tools = vim.g.llm_tools end +if vim.g.llm_extract ~= nil then user_config.extract = vim.g.llm_extract end llm.setup(user_config) diff --git a/tests/spec/config_spec.lua b/tests/spec/config_spec.lua index 55d70e8..0376669 100644 --- a/tests/spec/config_spec.lua +++ b/tests/spec/config_spec.lua @@ -33,10 +33,12 @@ describe('llm.config', function() local user_opts = { model = 'test-model', debug = true, + extract = true, } config.setup(user_opts) assert.are.same('test-model', config.get('model')) assert.are.same(true, config.get('debug')) + assert.are.same(true, config.get('extract')) -- Check a default value was not overwritten assert.are.same('You are a helpful assistant.', config.get('system_prompt')) end)