dotfiles/nvim/.config/nvim/lua/plugins/llm.lua

131 lines
3.1 KiB
Lua

return {
{
-- NOTE: Requires manual auth with ':Copilot auth' or 'GH_COPILOT_TOKEN' set as envvar
"zbirenbaum/copilot.lua",
dependencies = { "AndreM222/copilot-lualine" },
cmd = "Copilot",
event = "InsertEnter",
opts = {
panel = { layout = { position = "bottom" } },
suggestion = { keymap = { accept = "<M-p>" } },
},
keys = {
{
"<leader>ap",
function()
-- FIXME: If opening before lazy-loaded, errors
require("copilot.panel").open({})
require("copilot.panel").refresh()
end,
desc = "Refresh Copilot Panel",
silent = true,
mode = { "n" },
},
},
},
{
"olimorris/codecompanion.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
"zbirenbaum/copilot.lua",
{ "ibhagwan/fzf-lua", optional = true },
"ravitemer/codecompanion-history.nvim",
"jinzhongjia/codecompanion-gitcommit.nvim",
{ -- enable mcp server agent extensions
"ravitemer/mcphub.nvim",
build = "bundled_build.lua",
opts = {
use_bundled_binary = true,
},
cmd = "MCPHub",
keys = {
{
"<leader>va",
"<cmd>MCPHub<cr>",
desc = "MCP Hub",
silent = true,
},
},
},
},
init = function(_)
if require("core.util").is_available("which-key") then
require("which-key").add({ "<leader>a", group = "codecompanion" })
end
end,
opts = {
strategies = {
chat = { adapter = "groq" },
inline = { adapter = "groq" },
},
adapters = {
groq = function()
return require("codecompanion.adapters").extend("openai", {
env = {
api_key = "GROQ_API_KEY",
},
name = "Groq",
url = "https://api.groq.com/openai/v1/chat/completions",
schema = {
model = {
default = "llama-3.1-8b-instant",
choices = {
"llama-3.3-70b-versatile",
"meta-llama/llama-4-maverick-17b-128e-instruct",
"mistral-saba-24b",
},
},
},
max_tokens = {
default = 4096,
},
temperature = {
default = 1,
},
})
end,
},
display = {
action_palette = {
provider = "fzf_lua",
},
},
extensions = {
history = {
enabled = true,
auto_save = false,
expiration_days = 7,
picker = "fzf-lua",
delete_on_clearing_chat = true,
},
gitcommit = {
enabled = true,
callback = "codecompanion._extensions.gitcommit",
opts = {
add_slash_command = true,
buffer = {
enabled = true,
keymap = "<leader>ag",
},
},
},
mcphub = {
callback = "mcphub.extensions.codecompanion",
opts = {
show_results_in_chat = true,
make_vars = true,
make_slash_commands = true,
},
},
},
},
keys = {
{ "<leader>aa", "<cmd>CodeCompanionActions<cr>", desc = "Actions", silent = true, mode = { "n", "v" } },
{ "<leader>ac", "<cmd>CodeCompanionChat Toggle<cr>", desc = "Toggle chat", silent = true },
{ "<leader>ac", "<cmd>CodeCompanionChat Add<cr>", desc = "Add to chat", silent = true, mode = "v" },
},
cmd = { "CodeCompanionActions", "CodeCompanionChat", "CodeCompanion", "CodeCompanionCmd" },
},
}