90 lines
2.0 KiB
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" },
|
|
})
|