diff options
Diffstat (limited to 'lua/plugins/codecompanion.lua')
| -rw-r--r-- | lua/plugins/codecompanion.lua | 104 |
1 files changed, 83 insertions, 21 deletions
diff --git a/lua/plugins/codecompanion.lua b/lua/plugins/codecompanion.lua index 95edce8..e5f087f 100644 --- a/lua/plugins/codecompanion.lua +++ b/lua/plugins/codecompanion.lua @@ -1,3 +1,27 @@ +-- Choose default model from a list of preferred models. Fall back to first +-- available. +local function preferred_model_picker(preferred) + return function(self) + if self == nil then + -- Debug:render() calls Adapter.schema.model.default() but doesn't pass + -- in `self`. Just return an empty string in this case. + return "" + end + + local choices = self.schema.model.choices(self) + + for _, best in ipairs(preferred) do + for _, choice in ipairs(choices) do + if choice:find(best, 1, true) then + return choice + end + end + end + + return choices[1] + end +end + local IS_DEV = false return { { @@ -8,6 +32,23 @@ return { "nvim-treesitter/nvim-treesitter", "ibhagwan/fzf-lua", -- For fzf provider, file or buffer picker "jellydn/spinner.nvim", -- Show loading spinner when request is started + { + "echasnovski/mini.diff", + config = function() + local diff = require "mini.diff" + diff.setup { source = diff.gen_source.none() } + end, + }, + { + "ravitemer/mcphub.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + }, + build = "npm install -g mcp-hub@latest", -- Installs `mcp-hub` node binary globally + config = function() + require("mcphub").setup() + end, + }, }, opts = { log_level = "TRACE", -- or "DEBUG" @@ -28,7 +69,13 @@ return { }, schema = { model = { - default = "tinyllama:1.1b", + default = preferred_model_picker { + "qwen2.5-coder:14b", + "qwen2.5-coder:7b", + "qwen2.5-coder:3b", + "qwen2.5-coder:1.5b", + "qwen2.5-coder:0.5b", + }, }, }, }) @@ -49,7 +96,7 @@ return { return require("codecompanion.adapters").extend("copilot", { schema = { model = { - default = "o3-mini" + default = "gpt-4.1", }, }, }) @@ -111,9 +158,9 @@ return { }, schema = { model = { - default = "deepseek-chat" - } - } + default = "deepseek-chat", + }, + }, }) end, -- deepseek = function() @@ -135,24 +182,28 @@ return { -- }, -- }) -- end, - azure_openai = function() - return require("codecompanion.adapters").extend("azure_openai", { - env = { - api_key = "cmd:echo $AZ_DS_API_KEY", - endpoint = "https://DeepSeek-R1-nphob.eastus2.models.ai.azure.com", - }, - schema = { - model = { - default = "DeepSeek-R1-nphob", + azure_openai = function() + return require("codecompanion.adapters").extend("azure_openai", { + env = { + api_key = "cmd:echo $AZ_DS_API_KEY", + endpoint = "https://DeepSeek-R1-nphob.eastus2.models.ai.azure.com", }, - }, - }) - end, + schema = { + model = { + default = "DeepSeek-R1-nphob", + }, + }, + }) + end, + }, + display = { + diff = { + provider = "mini_diff", + }, }, - strategies = { chat = { - adapter = "deepseek", + adapter = "copilot", -- roles = { llm = " Copilot Chat", user = "IT Man" }, }, inline = { adapter = "copilot" }, @@ -161,9 +212,20 @@ return { }, config = function(_, options) require("codecompanion").setup(options) - + require("codecompanion").setup { + extensions = { + mcphub = { + callback = "mcphub.extensions.codecompanion", + opts = { + make_vars = true, + make_slash_commands = true, + show_result_in_chat = true, + }, + }, + }, + } -- Show loading spinner when request is started - local spinner = require("spinner") + local spinner = require "spinner" local group = vim.api.nvim_create_augroup("CodeCompanionHooks", {}) vim.api.nvim_create_autocmd({ "User" }, { pattern = "CodeCompanionRequest*", |