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" }, "aa", "CodeCompanionActions", { desc = "AI actions", }) map("n", "ac", "CodeCompanionChat Toggle", { desc = "Toggle AI chat", }) map("n", "an", "CodeCompanionChat", { desc = "New AI chat", }) map({ "n", "v" }, "ai", "CodeCompanion", { desc = "AI inline prompt", }) map({ "n", "v" }, "ab", "CodeCompanionChat Add", { desc = "Add buffer/selection to AI chat", }) local which_key = require("which-key") which_key.add({ { "a", group = "AI" }, { "aa", desc = "Actions" }, { "ab", desc = "Add buffer/selection" }, { "ac", desc = "Toggle chat" }, { "ai", desc = "Inline prompt" }, { "an", desc = "New chat" }, })