dotfiles/.config/nvim/lua/plugins/codecomapnion.lua
2026-01-06 15:41:28 -06:00

86 lines
2.2 KiB
Lua

local OLLAMA_TOKEN = os.getenv("OLLAMA_TOKEN")
local OPENAI_TOKEN = os.getenv("OPENAI_TOKEN")
local GEMINI_TOKEN = os.getenv("GEMINI_TOKEN")
local ANTHROPIC_TOKEN = os.getenv("ANTHROPIC_TOKEN")
return {
{
"olimorris/codecompanion.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
},
config = true,
opts = {
strategies = {
chat = { adapter = "ollama", model = "mistral:latest" },
},
adapters = {
opts = {
show_defaults = false,
},
gemini = function()
return require("codecompanion.adapters").extend("gemini", {
name = "gemini",
schema = {
model = {
default = "gemini-2.0-flash",
},
},
env = {
api_key = GEMINI_TOKEN,
},
})
end,
anthropic = function()
return require("codecompanion.adapters").extend(
"anthropic",
{
name = "anthropic",
schema = {
model = {
default = "claude-3-haiku-20240307",
},
},
env = {
api_key = ANTHROPIC_TOKEN,
},
}
)
end,
openai = function()
return require("codecompanion.adapters").extend("openai", {
name = "openai",
schema = {
model = {
default = "gpt-4o-mini",
},
},
env = {
api_key = OPENAI_TOKEN,
},
})
end,
ollama = function()
return require("codecompanion.adapters").extend("ollama", {
name = "ollama",
schema = {
model = {
default = "llama3.1:8b",
},
},
env = {
url = "https://ollama.durp.info",
},
headers = {
["Content-Type"] = "application/json",
["Authorization"] = OLLAMA_TOKEN,
},
parameters = {
sync = true,
},
})
end,
},
},
},
}