fix: removing dependency on copilot too expensive
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
[main]
|
[main]
|
||||||
include=~/.local/share/themes/current/theme/foot.ini
|
font=MonaspiceNeNerdFontMono:size=13
|
||||||
font=TX\-02:size=13
|
|
||||||
term=xterm-256color
|
term=xterm-256color
|
||||||
pad=6x6
|
pad=6x6
|
||||||
initial-window-mode=windowed
|
initial-window-mode=windowed
|
||||||
workers=0
|
workers=0
|
||||||
|
include=~/.local/share/themes/current/theme/foot.ini
|
||||||
|
|
||||||
[scrollback]
|
[scrollback]
|
||||||
lines=10000
|
lines=10000
|
||||||
|
|||||||
+55
-40
@@ -193,36 +193,40 @@ function sysinfo()
|
|||||||
hl.notification.create({ text = mesg, icon = "hint", duration = 5000 })
|
hl.notification.create({ text = mesg, icon = "hint", duration = 5000 })
|
||||||
end
|
end
|
||||||
|
|
||||||
function focus_or_launch(opts)
|
function dispatch_focus_or_launch(opts)
|
||||||
return function()
|
return function()
|
||||||
local match = opts.match
|
focus_or_launch(opts)
|
||||||
local cmd = opts.cmd
|
|
||||||
local field = opts.field or "class" -- class, title, initialClass, initialTitle
|
|
||||||
local use_workspace = opts.use_workspace ~= false
|
|
||||||
|
|
||||||
local clients = hl.get_windows()
|
|
||||||
|
|
||||||
for _, client in ipairs(clients) do
|
|
||||||
local value = client[field]
|
|
||||||
if value and string.find(string.lower(value), string.lower(match), 1, true) then
|
|
||||||
if use_workspace and client.workspace and client.workspace.id then
|
|
||||||
hl.dispatch(hl.dsp.focus({
|
|
||||||
workspace = client.workspace.id,
|
|
||||||
on_current_monitor = true,
|
|
||||||
}))
|
|
||||||
end
|
|
||||||
|
|
||||||
hl.dispatch(hl.dsp.focus({
|
|
||||||
window = "address:" .. client.address
|
|
||||||
}))
|
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
hl.exec_cmd(cmd)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function focus_or_launch(opts)
|
||||||
|
local match = opts.match
|
||||||
|
local cmd = opts.cmd
|
||||||
|
local field = opts.field or "class" -- class, title, initialClass, initialTitle
|
||||||
|
local use_workspace = opts.use_workspace ~= false
|
||||||
|
|
||||||
|
local clients = hl.get_windows()
|
||||||
|
|
||||||
|
for _, client in ipairs(clients) do
|
||||||
|
local value = client[field]
|
||||||
|
if value and string.find(string.lower(value), string.lower(match), 1, true) then
|
||||||
|
if use_workspace and client.workspace and client.workspace.id then
|
||||||
|
hl.dispatch(hl.dsp.focus({
|
||||||
|
workspace = client.workspace.id,
|
||||||
|
on_current_monitor = true,
|
||||||
|
}))
|
||||||
|
end
|
||||||
|
|
||||||
|
hl.dispatch(hl.dsp.focus({
|
||||||
|
window = "address:" .. client.address
|
||||||
|
}))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
hl.exec_cmd(cmd)
|
||||||
|
end
|
||||||
|
|
||||||
function toggle_master()
|
function toggle_master()
|
||||||
local ws = hl.get_active_workspace()
|
local ws = hl.get_active_workspace()
|
||||||
if not ws then
|
if not ws then
|
||||||
@@ -247,14 +251,25 @@ function toggle_master()
|
|||||||
hl.dispatch(hl.dsp.layout("mfact exact " .. mfact))
|
hl.dispatch(hl.dsp.layout("mfact exact " .. mfact))
|
||||||
end
|
end
|
||||||
|
|
||||||
hl.bind(LEADER .. "return",
|
hl.bind(LEADER .. "return", function()
|
||||||
focus_or_launch({
|
focus_or_launch({
|
||||||
match = terminal,
|
match = terminal,
|
||||||
field = "class",
|
field = "class",
|
||||||
cmd = terminal .. " tmux new -A -s main"
|
cmd = terminal .. " tmux new -A -s main"
|
||||||
}), { description = "Open terminal" })
|
})
|
||||||
|
end, { description = "Open terminal" })
|
||||||
|
|
||||||
|
--hl.bind(LEADER .. "SHIFT + return", hl.dsp.exec_raw(terminal .. "tmux attach-session -t $(tmux list-windows -a -F '#S:#I' | rofi -dmenu -P Session)"))
|
||||||
|
hl.bind(LEADER .. "SHIFT + return", function()
|
||||||
|
local session = io.popen("tmux list-sessions -F '#S:#I' | rofi -dmenu -P Session"):read("*a")
|
||||||
|
hl.notification.create({ text = "Attaching to tmux session: " .. session, icon = "hint", duration = 2000 })
|
||||||
|
focus_or_launch({
|
||||||
|
match = "session",
|
||||||
|
field = "title",
|
||||||
|
cmd = terminal .. " -e tmux attach-session -t " .. session
|
||||||
|
})
|
||||||
|
end, { description = "Attach to tmux session" })
|
||||||
|
|
||||||
hl.bind(LEADER .. "SHIFT + return", hl.dsp.exec_raw(terminal .. " nvim"))
|
|
||||||
hl.bind(LEADER .. "B", hl.dsp.exec_raw(browser), { description = "Open browser" })
|
hl.bind(LEADER .. "B", hl.dsp.exec_raw(browser), { description = "Open browser" })
|
||||||
hl.bind(LEADER .. "T", hl.dsp.exec_raw(terminal .. " -e btop"), { description = "Open system monitor" })
|
hl.bind(LEADER .. "T", hl.dsp.exec_raw(terminal .. " -e btop"), { description = "Open system monitor" })
|
||||||
hl.bind(LEADER .. "S", hl.dsp.exec_raw("rofi -show recursivebrowser"), { description = "Open finder" })
|
hl.bind(LEADER .. "S", hl.dsp.exec_raw("rofi -show recursivebrowser"), { description = "Open finder" })
|
||||||
@@ -278,58 +293,58 @@ hl.bind(HYPR .. "B", hl.dsp.exec_cmd("blueberry"), { description = "Bluetooth ma
|
|||||||
|
|
||||||
hl.bind(HYPR .. "semicolon", hl.dsp.exec_cmd("~/.local/bin/bing-wallpaper"), { description = "get new wallpaper" })
|
hl.bind(HYPR .. "semicolon", hl.dsp.exec_cmd("~/.local/bin/bing-wallpaper"), { description = "get new wallpaper" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "A", focus_or_launch({
|
hl.bind(HYPR .. "A", dispatch_focus_or_launch({
|
||||||
match = "Goose",
|
match = "Goose",
|
||||||
field = "class",
|
field = "class",
|
||||||
cmd = "gtk-launch goose-desktop.desktop"
|
cmd = "gtk-launch goose-desktop.desktop"
|
||||||
}), { description = "Goose Desktop" })
|
}), { description = "Goose Desktop" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "C", focus_or_launch({
|
hl.bind(HYPR .. "C", dispatch_focus_or_launch({
|
||||||
match = "chrome-chatgpt.com",
|
match = "chrome-chatgpt.com",
|
||||||
cmd = "gtk-launch ChatGPT.desktop",
|
cmd = "gtk-launch ChatGPT.desktop",
|
||||||
}), { description = "ChatGPT" })
|
}), { description = "ChatGPT" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "O", focus_or_launch({
|
hl.bind(HYPR .. "O", dispatch_focus_or_launch({
|
||||||
match = "chrome-outlook.office.com",
|
match = "chrome-outlook.office.com",
|
||||||
cmd = "gtk-launch Outlook.desktop",
|
cmd = "gtk-launch Outlook.desktop",
|
||||||
}), { description = "Email" })
|
}), { description = "Email" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "T", focus_or_launch({
|
hl.bind(HYPR .. "T", dispatch_focus_or_launch({
|
||||||
match = "chrome-teams.microsoft.com",
|
match = "chrome-teams.microsoft.com",
|
||||||
cmd = "gtk-launch Team.desktop",
|
cmd = "gtk-launch Team.desktop",
|
||||||
}), { description = "UWO Team" })
|
}), { description = "UWO Team" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "Y", focus_or_launch({
|
hl.bind(HYPR .. "Y", dispatch_focus_or_launch({
|
||||||
match = "chrome-youtube.com",
|
match = "chrome-youtube.com",
|
||||||
cmd = "gtk-launch YouTube.desktop",
|
cmd = "gtk-launch YouTube.desktop",
|
||||||
}), { description = "YouTube" })
|
}), { description = "YouTube" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "W", focus_or_launch({
|
hl.bind(HYPR .. "W", dispatch_focus_or_launch({
|
||||||
match = "chrome-web.whatsapp.com",
|
match = "chrome-web.whatsapp.com",
|
||||||
cmd = "gtk-launch WhatsApp.desktop",
|
cmd = "gtk-launch WhatsApp.desktop",
|
||||||
}), { description = "WhatsApp" })
|
}), { description = "WhatsApp" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "G", focus_or_launch({
|
hl.bind(HYPR .. "G", dispatch_focus_or_launch({
|
||||||
match = "chrome-www.gmail.com",
|
match = "chrome-www.gmail.com",
|
||||||
cmd = webapp .. "https://www.gmail.com/",
|
cmd = webapp .. "https://www.gmail.com/",
|
||||||
}), { description = "Google" })
|
}), { description = "Google" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "D", focus_or_launch({
|
hl.bind(HYPR .. "D", dispatch_focus_or_launch({
|
||||||
match = "chrome-discord.com",
|
match = "chrome-discord.com",
|
||||||
cmd = "gtk-launch Discord.desktop"
|
cmd = "gtk-launch Discord.desktop"
|
||||||
}), { description = "Discord" })
|
}), { description = "Discord" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "M", focus_or_launch({
|
hl.bind(HYPR .. "M", dispatch_focus_or_launch({
|
||||||
match = "chrome-messages.google.com",
|
match = "chrome-messages.google.com",
|
||||||
cmd = "gtk-launch \"Google Messages.desktop\"",
|
cmd = "gtk-launch \"Google Messages.desktop\"",
|
||||||
}), { description = "Google Messages" })
|
}), { description = "Google Messages" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "S", focus_or_launch({
|
hl.bind(HYPR .. "S", dispatch_focus_or_launch({
|
||||||
match = "Spotify",
|
match = "Spotify",
|
||||||
cmd = music,
|
cmd = music,
|
||||||
}), { description = "Music" })
|
}), { description = "Music" })
|
||||||
|
|
||||||
hl.bind(HYPR .. "F", focus_or_launch({
|
hl.bind(HYPR .. "F", dispatch_focus_or_launch({
|
||||||
match = "pcmanfm",
|
match = "pcmanfm",
|
||||||
cmd = "pcmanfm",
|
cmd = "pcmanfm",
|
||||||
}), { description = "File Manager" })
|
}), { description = "File Manager" })
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ vim.pack.add({
|
|||||||
{ src = 'https://github.com/carlos-algms/agentic.nvim' },
|
{ src = 'https://github.com/carlos-algms/agentic.nvim' },
|
||||||
{ src = 'https://github.com/chipsenkbeil/org-roam.nvim' },
|
{ src = 'https://github.com/chipsenkbeil/org-roam.nvim' },
|
||||||
{ src = 'https://github.com/christoomey/vim-tmux-navigator' },
|
{ src = 'https://github.com/christoomey/vim-tmux-navigator' },
|
||||||
{ src = 'https://github.com/copilotlsp-nvim/copilot-lsp' },
|
-- { src = 'https://github.com/copilotlsp-nvim/copilot-lsp' },
|
||||||
{ src = 'https://github.com/esmuellert/codediff.nvim' },
|
{ src = 'https://github.com/esmuellert/codediff.nvim' },
|
||||||
{ src = 'https://github.com/fang2hou/blink-copilot' },
|
{ src = 'https://github.com/fang2hou/blink-copilot' },
|
||||||
{ src = 'https://github.com/folke/flash.nvim' },
|
{ src = 'https://github.com/folke/flash.nvim' },
|
||||||
@@ -201,7 +201,6 @@ vim.pack.add({
|
|||||||
{ src = 'https://github.com/ten3roberts/window-picker.nvim' },
|
{ src = 'https://github.com/ten3roberts/window-picker.nvim' },
|
||||||
{ src = 'https://github.com/thunder-coding/zincoxide' },
|
{ src = 'https://github.com/thunder-coding/zincoxide' },
|
||||||
{ src = 'https://github.com/ttgrules/cc-adapter-copilot-cli-acp' },
|
{ src = 'https://github.com/ttgrules/cc-adapter-copilot-cli-acp' },
|
||||||
{ src = 'https://github.com/ttgrules/cc-adapter-copilot-cli-acp' },
|
|
||||||
{ src = 'https://github.com/uhs-robert/sshfs.nvim' },
|
{ src = 'https://github.com/uhs-robert/sshfs.nvim' },
|
||||||
{ src = 'https://github.com/utilyre/barbecue.nvim' },
|
{ src = 'https://github.com/utilyre/barbecue.nvim' },
|
||||||
{ src = 'https://github.com/williamboman/mason-lspconfig.nvim' },
|
{ src = 'https://github.com/williamboman/mason-lspconfig.nvim' },
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ require('blink.cmp').setup({
|
|||||||
-- -- example: 'foo_|_bar' will match 'foo_' for 'prefix' and 'foo__bar' for 'full'
|
-- -- example: 'foo_|_bar' will match 'foo_' for 'prefix' and 'foo__bar' for 'full'
|
||||||
-- range = "full",
|
-- range = "full",
|
||||||
-- },
|
-- },
|
||||||
|
-- keymap = {
|
||||||
|
-- -- Change "<Tab>" to "<Right>" if you prefer the arrow key
|
||||||
|
-- ["C-y"] = { "select_and_accept", "fallback" },
|
||||||
|
-- },
|
||||||
menu = {
|
menu = {
|
||||||
draw = {
|
draw = {
|
||||||
treesitter = { 'lsp' }
|
treesitter = { 'lsp' }
|
||||||
@@ -33,8 +37,11 @@ require('blink.cmp').setup({
|
|||||||
-- border = "single",
|
-- border = "single",
|
||||||
-- },
|
-- },
|
||||||
},
|
},
|
||||||
ghost_text = { enabled = false },
|
-- ghost_text = { enabled = true },
|
||||||
},
|
},
|
||||||
|
-- completion = {
|
||||||
|
-- ghost_text = { enabled = true },
|
||||||
|
-- },
|
||||||
cmdline = {
|
cmdline = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
},
|
},
|
||||||
@@ -44,11 +51,14 @@ require('blink.cmp').setup({
|
|||||||
org = {'orgmode'}
|
org = {'orgmode'}
|
||||||
},
|
},
|
||||||
default = { 'orgmode', 'lsp', 'copilot', 'snippets', 'path', 'omni', 'buffer', 'codecompanion', 'markdown' },
|
default = { 'orgmode', 'lsp', 'copilot', 'snippets', 'path', 'omni', 'buffer', 'codecompanion', 'markdown' },
|
||||||
|
-- default = { 'orgmode', 'lsp', 'snippets', 'path', 'omni', 'buffer', 'codecompanion', 'markdown' },
|
||||||
providers = {
|
providers = {
|
||||||
codecompanion = {
|
codecompanion = {
|
||||||
name = "CodeCompanion" ,
|
name = "CodeCompanion" ,
|
||||||
module = "codecompanion.providers.completion.blink",
|
module = "codecompanion.providers.completion.blink",
|
||||||
enabled = true,
|
enabled = true,
|
||||||
|
score_offset = 100,
|
||||||
|
async = true,
|
||||||
},
|
},
|
||||||
orgmode = {
|
orgmode = {
|
||||||
name = 'Orgmode',
|
name = 'Orgmode',
|
||||||
@@ -115,6 +125,7 @@ require('blink.cmp').setup({
|
|||||||
-- Blink does not expose its default kind icons so you must copy them all (or set your custom ones) and add Copilot
|
-- Blink does not expose its default kind icons so you must copy them all (or set your custom ones) and add Copilot
|
||||||
kind_icons = {
|
kind_icons = {
|
||||||
Copilot = "",
|
Copilot = "",
|
||||||
|
CodeCompanion = "",
|
||||||
Text = '',
|
Text = '',
|
||||||
Method = '',
|
Method = '',
|
||||||
Function = '',
|
Function = '',
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
|
|
||||||
|
|
||||||
vim.keymap.set({'n', 'v'}, '<leader>mct', '<cmd>CodeCompanionChat Toggle<cr>', { noremap = true, silent = true, desc = "CC Toggle" })
|
vim.keymap.set({'n', 'v'}, '<leader>mct', '<cmd>CodeCompanionChat Toggle<cr>', { noremap = true, silent = true, desc = "CC Toggle" })
|
||||||
vim.keymap.set({'n', 'v'}, '<leader>mca', '<cmd>CodeCompanionActions<cr>', { noremap = true, silent = true, desc = "CC Action" })
|
vim.keymap.set({'n', 'v'}, '<leader>mca', '<cmd>CodeCompanionActions<cr>', { noremap = true, silent = true, desc = "CC Action" })
|
||||||
vim.keymap.set({'n', 'v'}, '<leader>mce', '<cmd>CodeCompanion Explain<cr>', { desc = "CC Explain" })
|
vim.keymap.set({'n', 'v'}, '<leader>mce', '<cmd>CodeCompanion Explain<cr>', { desc = "CC Explain" })
|
||||||
@@ -37,6 +36,17 @@ local function get_abacus_key()
|
|||||||
return key
|
return key
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function get_opencode_key()
|
||||||
|
local ok, res = pcall(vim.fn.systemlist, "pass show opencode-api")
|
||||||
|
if not ok or not res or vim.tbl_isempty(res) then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
-- systemlist returns lines; join and trim whitespace
|
||||||
|
local key = table.concat(res, "\n")
|
||||||
|
key = key:gsub("^%s+", ""):gsub("%s+$", "")
|
||||||
|
return key
|
||||||
|
end
|
||||||
|
|
||||||
local function copilot_supports_sampling(self)
|
local function copilot_supports_sampling(self)
|
||||||
local model = self.schema.model.default
|
local model = self.schema.model.default
|
||||||
if type(model) == "function" then
|
if type(model) == "function" then
|
||||||
@@ -79,15 +89,14 @@ codecompanion.setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
abacus = function()
|
opencode_zen = function()
|
||||||
return require("codecompanion.adapters").extend("openai_compatible", {
|
return require("codecompanion.adapters").extend("openai_compatible", {
|
||||||
name = "abacus",
|
name = "opencode-zen",
|
||||||
formatted_name = "Abacus.AI",
|
formatted_name = "OpenCode Zen",
|
||||||
env = {
|
env = {
|
||||||
url = "https://routellm.abacus.ai/v1",
|
url = "https://opencode.ai/zen",
|
||||||
-- IMPORTANT: include /v1 in the base url
|
api_key = get_opencode_key(),
|
||||||
api_key = get_abacus_key(),
|
chat_url = "/v1/chat/completions",
|
||||||
chat_url = "/chat/completions"
|
|
||||||
},
|
},
|
||||||
headers = {
|
headers = {
|
||||||
["Content-Type"] = "application/json",
|
["Content-Type"] = "application/json",
|
||||||
@@ -95,107 +104,98 @@ codecompanion.setup({
|
|||||||
},
|
},
|
||||||
schema = {
|
schema = {
|
||||||
model = {
|
model = {
|
||||||
order = 1,
|
default = "deepseek-v4-flash-free",
|
||||||
mapping = "parameters",
|
-- choices = {
|
||||||
type = "enum",
|
-- ["minimax-m3-free"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
desc = "The model to use for chat completions.",
|
-- ["big-pickle"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
default = "route-llm",
|
-- ["mini-v2.5-free"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
choices = {
|
-- ["nemotron-3-super-free"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
-- Routing Model
|
-- ["nemotron-3-ultra-free"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
["route-llm"] = { opts = { desc = "Intelligent routing to best model" } },
|
-- ["deepseek-v4-flash-free"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["qwen-3.6-plus-free"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
-- OpenAI Models
|
-- },
|
||||||
["gpt-5.2"] = { opts = { has_vision = true } },
|
|
||||||
["gpt-5.1"] = { opts = { has_vision = true } },
|
|
||||||
["gpt-5.1-chat-latest"] = { opts = { has_vision = true } },
|
|
||||||
["gpt-5"] = { opts = { has_vision = true } },
|
|
||||||
["gpt-5-mini"] = { opts = { has_vision = true } },
|
|
||||||
["gpt-5-nano"] = { opts = { has_vision = true } },
|
|
||||||
["gpt-4o"] = { opts = { has_vision = true } },
|
|
||||||
["gpt-4o-mini"] = { opts = { has_vision = true } },
|
|
||||||
["o4-mini"] = { opts = { can_reason = true } },
|
|
||||||
["o3"] = { opts = { can_reason = true } },
|
|
||||||
["o3-pro"] = { opts = { can_reason = true } },
|
|
||||||
|
|
||||||
-- Anthropic Models
|
|
||||||
["claude-4-5-sonnet"] = { opts = { has_vision = true } },
|
|
||||||
["claude-4-5-haiku"] = { opts = { has_vision = true } },
|
|
||||||
["claude-4-5-opus"] = { opts = { has_vision = true } },
|
|
||||||
["claude-3-opus"] = { opts = { has_vision = true } },
|
|
||||||
|
|
||||||
-- Google Models
|
|
||||||
["gemini-3-pro"] = { opts = { has_vision = true } },
|
|
||||||
["gemini-3-flash"] = { opts = { has_vision = true } },
|
|
||||||
["gemini-2.5-pro"] = { opts = { has_vision = true } },
|
|
||||||
["gemini-2.5-flash"] = { opts = { has_vision = true } },
|
|
||||||
|
|
||||||
-- xAI Models
|
|
||||||
["grok-4-1-fast"] = {},
|
|
||||||
["grok-4"] = {},
|
|
||||||
["grok-code-fast-1"] = {},
|
|
||||||
|
|
||||||
-- Meta Models
|
|
||||||
["llama-4-Maverick-17B"] = {},
|
|
||||||
["llama-3.1-405B"] = {},
|
|
||||||
["llama-3.1-70B"] = {},
|
|
||||||
|
|
||||||
-- DeepSeek Models
|
|
||||||
["deepseek-v3.2"] = {},
|
|
||||||
["deepseek-v3.1-Terminus"] = {},
|
|
||||||
["deepseek-R1"] = { opts = { can_reason = true } },
|
|
||||||
|
|
||||||
-- Qwen Models
|
|
||||||
["qwen-3-Max"] = {},
|
|
||||||
["qwen3-coder-480b-a35b-instruct"] = {},
|
|
||||||
["qwen-3-32B"] = {},
|
|
||||||
["qwq-32B"] = { opts = { can_reason = true } },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
temperature = {
|
|
||||||
order = 2,
|
|
||||||
mapping = "parameters",
|
|
||||||
type = "number",
|
|
||||||
optional = true,
|
|
||||||
default = 1.0,
|
|
||||||
desc = "Controls randomness of output (0-2).",
|
|
||||||
validate = function(n)
|
|
||||||
return n >= 0 and n <= 2, "Must be between 0 and 2"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
max_tokens = {
|
|
||||||
order = 3,
|
|
||||||
mapping = "parameters",
|
|
||||||
type = "integer",
|
|
||||||
optional = true,
|
|
||||||
default = nil,
|
|
||||||
desc = "Maximum tokens to generate.",
|
|
||||||
validate = function(n)
|
|
||||||
return n > 0, "Must be greater than 0"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
top_p = {
|
|
||||||
order = 4,
|
|
||||||
mapping = "parameters",
|
|
||||||
type = "number",
|
|
||||||
optional = true,
|
|
||||||
default = 1.0,
|
|
||||||
desc = "Nucleus sampling parameter (0-1).",
|
|
||||||
validate = function(n)
|
|
||||||
return n >= 0 and n <= 1, "Must be between 0 and 1"
|
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
ollama = function()
|
opencode_go_anthropic = function()
|
||||||
local ollama_url = os.getenv("OLLAMA_URL") or "http://192.168.33.74:11434"
|
return require("codecompanion.adapters").extend("anthropic", {
|
||||||
|
name = "opencode-go-anthropic",
|
||||||
|
formatted_name = "OpenCode Go Anthropic",
|
||||||
|
env = {
|
||||||
|
url = "https://opencode.ai/zen/go",
|
||||||
|
api_key = get_opencode_key(),
|
||||||
|
},
|
||||||
|
headers = {
|
||||||
|
["x-api-key"] = "${api_key}",
|
||||||
|
["anthropic-version"] = "2023-06-01",
|
||||||
|
["content-type"] = "application/json",
|
||||||
|
},
|
||||||
|
schema = {
|
||||||
|
model = {
|
||||||
|
default = "minimax-m3",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
opencode_go = function()
|
||||||
|
return require("codecompanion.adapters").extend("openai_compatible", {
|
||||||
|
name = "opencode-go",
|
||||||
|
formatted_name = "OpenCode Go",
|
||||||
|
env = {
|
||||||
|
url = "https://opencode.ai/zen/go",
|
||||||
|
api_key = get_opencode_key(),
|
||||||
|
chat_url = "/v1/chat/completions",
|
||||||
|
},
|
||||||
|
headers = {
|
||||||
|
["Content-Type"] = "application/json",
|
||||||
|
["Authorization"] = "Bearer ${api_key}",
|
||||||
|
},
|
||||||
|
schema = {
|
||||||
|
model = {
|
||||||
|
default = "mimo-v2.5-pro",
|
||||||
|
-- choices = {
|
||||||
|
-- ["minimax-m3"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["minimax-m2.7"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["mini-v2.5-pro"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["mini-v2.5"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["mimo-v2.5-pro"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["mimo-v2.5"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["kimi-k2.6"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["kimi-k2.5"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["glm-5.1"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["deepseek-v4-flash"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["deepseek-v4-pro"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["qwen-3.7-plus"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["qwen-3.7-max"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- ["hy3-preview"] = { opts = { has_vision = true, can_reason = true } },
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
allears = function()
|
||||||
|
local ollama_url = os.getenv("ALLEARS_OLLAMA_URL") or "http://192.168.33.74:11434"
|
||||||
return require("codecompanion.adapters").extend("ollama", {
|
return require("codecompanion.adapters").extend("ollama", {
|
||||||
env = {
|
env = {
|
||||||
url = ollama_url,
|
url = ollama_url,
|
||||||
},
|
},
|
||||||
schema = {
|
schema = {
|
||||||
model = {
|
model = {
|
||||||
default = "qwen3.5",
|
default = "qwen3.6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
sagacity = function()
|
||||||
|
local ollama_url = os.getenv("SAGACITY_OLLAMA_URL") or "http://172.25.11.30"
|
||||||
|
return require("codecompanion.adapters").extend("ollama", {
|
||||||
|
env = {
|
||||||
|
url = ollama_url,
|
||||||
|
},
|
||||||
|
schema = {
|
||||||
|
model = {
|
||||||
|
default = "qwen3.6",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -265,6 +265,7 @@ codecompanion.setup({
|
|||||||
-- end,
|
-- end,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
ghost_text = { enabled = false },
|
||||||
rules = {
|
rules = {
|
||||||
opts = {
|
opts = {
|
||||||
chat = {
|
chat = {
|
||||||
@@ -305,8 +306,8 @@ codecompanion.setup({
|
|||||||
picker = "snacks",
|
picker = "snacks",
|
||||||
dir_to_save = vim.env.HOME .. "/Documents/ai-history",
|
dir_to_save = vim.env.HOME .. "/Documents/ai-history",
|
||||||
title_generation_opts = {
|
title_generation_opts = {
|
||||||
adapter = "copilot",
|
adapter = "opencode_zen",
|
||||||
model = "gpt-5-mini",
|
model = "big-pickle",
|
||||||
},
|
},
|
||||||
summary = {
|
summary = {
|
||||||
create_summary_keymap = "ghc",
|
create_summary_keymap = "ghc",
|
||||||
@@ -556,18 +557,19 @@ codecompanion.setup({
|
|||||||
},
|
},
|
||||||
-- adapter = { name = "abacus", model = "route-llm" },
|
-- adapter = { name = "abacus", model = "route-llm" },
|
||||||
-- adapter = { name = "opencode", model = "github-copilot/gpt-5.2-codex" },
|
-- adapter = { name = "opencode", model = "github-copilot/gpt-5.2-codex" },
|
||||||
adapter = { name = "copilot", model = "gpt-5-mini" },
|
-- adapter = { name = "copilot", model = "gpt-5-mini" },
|
||||||
-- adapter = { name = "goose" },
|
-- adapter = { name = "goose" },
|
||||||
|
adapter = { name = "opencode_go", model = "mimo-v2.5-pro" },
|
||||||
},
|
},
|
||||||
inline = {
|
inline = {
|
||||||
-- adapter = { name = "abacus", model = "route-llm" },
|
-- adapter = { name = "abacus", model = "route-llm" },
|
||||||
adapter = { name = "copilot", model = "gpt-5.1-codex-mini" },
|
adapter = { name = "opencode_zen", model = "deepseek-v4-flash-free" },
|
||||||
},
|
},
|
||||||
cmd = {
|
cmd = {
|
||||||
adapter = { name = "copilot", model = "gpt-5-mini" },
|
adapter = { name = "opencode_zen", model = "mimo-v2.5-free" },
|
||||||
},
|
},
|
||||||
background = {
|
background = {
|
||||||
adapter = { name = "copilot", model = "gpt-5-mini" },
|
adapter = { name = "opencode_zen", model = "mimo-v2.5-free" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prompt_library = {
|
prompt_library = {
|
||||||
@@ -583,10 +585,10 @@ codecompanion.setup({
|
|||||||
opts = {
|
opts = {
|
||||||
mapping = "<LocalLeader>rpc",
|
mapping = "<LocalLeader>rpc",
|
||||||
modes = { "v" },
|
modes = { "v" },
|
||||||
adapter = {
|
-- adapter = {
|
||||||
name = "copilot",
|
-- name = "copilot",
|
||||||
model = "chatgpt-5.3-codex",
|
-- model = "chatgpt-5.3-codex",
|
||||||
},
|
-- },
|
||||||
},
|
},
|
||||||
prompts = {
|
prompts = {
|
||||||
{
|
{
|
||||||
@@ -610,10 +612,10 @@ codecompanion.setup({
|
|||||||
opts = {
|
opts = {
|
||||||
mapping = "<LocalLeader>rpo",
|
mapping = "<LocalLeader>rpo",
|
||||||
modes = { "v" },
|
modes = { "v" },
|
||||||
adapter = {
|
-- adapter = {
|
||||||
name = "copilot",
|
-- name = "copilot",
|
||||||
model = "chatgpt-5.3-codex",
|
-- model = "chatgpt-5.3-codex",
|
||||||
},
|
-- },
|
||||||
},
|
},
|
||||||
prompts = {
|
prompts = {
|
||||||
{
|
{
|
||||||
@@ -637,10 +639,10 @@ codecompanion.setup({
|
|||||||
mapping = "<LocalLeader>rpd",
|
mapping = "<LocalLeader>rpd",
|
||||||
modes = { "v" },
|
modes = { "v" },
|
||||||
|
|
||||||
adapter = {
|
-- adapter = {
|
||||||
name = "copilot",
|
-- name = "copilot",
|
||||||
model = "chatgpt-5.3-codex",
|
-- model = "chatgpt-5.3-codex",
|
||||||
},
|
-- },
|
||||||
},
|
},
|
||||||
prompts = {
|
prompts = {
|
||||||
{
|
{
|
||||||
@@ -682,10 +684,10 @@ codecompanion.setup({
|
|||||||
mapping = "<LocalLeader>rpa",
|
mapping = "<LocalLeader>rpa",
|
||||||
modes = { "v" },
|
modes = { "v" },
|
||||||
|
|
||||||
adapter = {
|
-- adapter = {
|
||||||
name = "copilot",
|
-- name = "copilot",
|
||||||
model = "chatgpt-5.4",
|
-- model = "chatgpt-5.4",
|
||||||
},
|
-- },
|
||||||
},
|
},
|
||||||
prompts = {
|
prompts = {
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
|
|
||||||
vim.g.copilot_nes_debounce = 500
|
vim.g.copilot_nes_debounce = 500
|
||||||
|
|
||||||
require('copilot').setup({
|
-- require('copilot').setup({
|
||||||
nes = {
|
-- nes = {
|
||||||
enabled = false,
|
-- enabled = false,
|
||||||
keymap = {
|
-- keymap = {
|
||||||
accept_and_goto = "<a-y>",
|
-- accept_and_goto = "<a-y>",
|
||||||
accept = false,
|
-- accept = false,
|
||||||
dismiss = "<Esc>",
|
-- dismiss = "<Esc>",
|
||||||
},
|
-- },
|
||||||
},
|
-- },
|
||||||
panel = {
|
-- panel = {
|
||||||
enabled = false,
|
-- enabled = false,
|
||||||
},
|
-- },
|
||||||
})
|
-- })
|
||||||
|
|||||||
Reference in New Issue
Block a user