Files
nvim-config/lua/codecompanion_settings.lua

90 lines
2.0 KiB
Lua

local adapters = require("codecompanion.adapters")
require("codecompanion").setup({
adapters = {
http = {
bifrost = function()
return adapters.extend("openai_compatible", {
name = "bifrost",
formatted_name = "Bifrost",
env = {
url = vim.env.BIFROST_BASE_URL or "https://bifrost.th3r00t.net",
api_key = vim.env.BIFROST_API_KEY
and "BIFROST_API_KEY"
or "file:~/.config/bifrost/api-key",
chat_url = "/v1/chat/completions",
models_endpoint = "/v1/models",
},
schema = {
model = {
default = vim.env.CODECOMPANION_MODEL
or "OllamaMSI/qwen3:30b-a3b",
},
},
})
end,
},
},
interactions = {
chat = {
adapter = "bifrost",
},
inline = {
adapter = "bifrost",
},
background = {
adapter = "bifrost",
},
},
display = {
action_palette = {
provider = "snacks",
},
chat = {
window = {
layout = "vertical",
position = "right",
width = 0.42,
border = "rounded",
},
start_in_insert_mode = false,
show_token_count = true,
},
diff = {
enabled = true,
},
},
opts = {
log_level = "ERROR",
language = "English",
send_code = true,
},
})
local map = vim.keymap.set
map({ "n", "v" }, "<leader>aa", "<cmd>CodeCompanionActions<cr>", {
desc = "AI actions",
})
map("n", "<leader>ac", "<cmd>CodeCompanionChat Toggle<cr>", {
desc = "Toggle AI chat",
})
map("n", "<leader>an", "<cmd>CodeCompanionChat<cr>", {
desc = "New AI chat",
})
map({ "n", "v" }, "<leader>ai", "<cmd>CodeCompanion<cr>", {
desc = "AI inline prompt",
})
map({ "n", "v" }, "<leader>ab", "<cmd>CodeCompanionChat Add<cr>", {
desc = "Add buffer/selection to AI chat",
})
local which_key = require("which-key")
which_key.add({
{ "<leader>a", group = "AI" },
{ "<leader>aa", desc = "Actions" },
{ "<leader>ab", desc = "Add buffer/selection" },
{ "<leader>ac", desc = "Toggle chat" },
{ "<leader>ai", desc = "Inline prompt" },
{ "<leader>an", desc = "New chat" },
})