174 lines
4.6 KiB
Lua
174 lines
4.6 KiB
Lua
local avante = require('avante')
|
|
|
|
local model_names = {
|
|
'claude-3.5-sonnet',
|
|
'claude-3.7-sonnet',
|
|
'claude-3.7-sonnet-thought',
|
|
'gemini-2.0-flash-001',
|
|
'gemini-2.5-pro',
|
|
'gpt-4.1',
|
|
'gpt-4o-2024-11-20',
|
|
'o1',
|
|
'o3-mini',
|
|
'o4-mini',
|
|
}
|
|
|
|
-- Generate provider configurations for each model
|
|
local function generate_providers()
|
|
local providers_table = {}
|
|
for _, model_name in ipairs(model_names) do
|
|
local provider_key = 'copilot-' .. model_name
|
|
providers_table[provider_key] = {
|
|
__inherited_from = 'copilot',
|
|
model = model_name,
|
|
display_name = provider_key,
|
|
}
|
|
end
|
|
return providers_table
|
|
end
|
|
|
|
avante.setup({
|
|
mode = 'agentic',
|
|
provider = 'copilot-claude-3.5-sonnet',
|
|
-- cursor_applying_provider = 'copilot-o3-mini',
|
|
-- auto_suggestions_provider = 'copilot-claude-3.7-sonnet',
|
|
|
|
providers = vim.tbl_extend('force', {
|
|
copilot = {
|
|
endpoint = 'https://api.githubcopilot.com',
|
|
allow_insecure = false,
|
|
timeout = 10 * 60 * 1000,
|
|
extra_request_body = {
|
|
temperature = 0,
|
|
},
|
|
max_completion_tokens = 1000000,
|
|
reasoning_effort = 'high',
|
|
}
|
|
}, generate_providers()),
|
|
|
|
behaviour = {
|
|
auto_suggestions = false,
|
|
auto_set_highlight_group = true,
|
|
auto_set_keymaps = true,
|
|
auto_apply_diff_after_generation = false,
|
|
support_paste_from_clipboard = false,
|
|
minimize_diff = true, -- Whether to remove unchanged lines when applying a code block
|
|
enable_token_counting = true,
|
|
},
|
|
hints = { enabled = false },
|
|
mappings = {
|
|
---@class AvanteConflictMappings
|
|
diff = {
|
|
ours = 'co',
|
|
theirs = 'ct',
|
|
all_theirs = 'ca',
|
|
both = 'cb',
|
|
cursor = 'cc',
|
|
next = ']x',
|
|
prev = '[x',
|
|
},
|
|
suggestion = {
|
|
accept = '<M-l>',
|
|
next = '<M-]>',
|
|
prev = '<M-[>',
|
|
dismiss = '<C-]>',
|
|
},
|
|
jump = {
|
|
next = ']]',
|
|
prev = '[[',
|
|
},
|
|
submit = {
|
|
normal = '<CR>',
|
|
insert = '<C-s>',
|
|
},
|
|
cancel = {
|
|
normal = { '<C-c>', '<Esc>', 'q' },
|
|
insert = { '<C-c>' },
|
|
},
|
|
ask = '<leader>aa',
|
|
edit = '<leader>ae',
|
|
refresh = '<leader>ar',
|
|
focus = '<leader>af',
|
|
stop = '<leader>as',
|
|
select_model = '<leader>aM',
|
|
select_history = '<leader>ah',
|
|
files = {
|
|
add_current = '<leader>ac',
|
|
add_all_buffers = '<leader>ab',
|
|
},
|
|
toggle = {
|
|
default = '<leader>at',
|
|
debug = '<leader>ad',
|
|
hint = '<leader>aH',
|
|
suggestion = '<leader>aS',
|
|
repomap = '<leader>aR',
|
|
},
|
|
sidebar = {
|
|
apply_all = 'A',
|
|
apply_cursor = 'a',
|
|
retry_user_request = 'r',
|
|
edit_user_request = 'e',
|
|
switch_windows = '<Tab>',
|
|
reverse_switch_windows = '<S-Tab>',
|
|
remove_file = 'd',
|
|
add_file = 'a',
|
|
close = { 'q' },
|
|
close_from_input = nil, -- e.g., { normal = "<Esc>", insert = "<C-d>" }
|
|
},
|
|
},
|
|
windows = {
|
|
---@type "right" | "left" | "top" | "bottom"
|
|
position = 'right',
|
|
wrap = true,
|
|
width = 40,
|
|
sidebar_header = {
|
|
enabled = true,
|
|
align = 'center',
|
|
rounded = true,
|
|
},
|
|
input = {
|
|
prefix = '> ',
|
|
height = 32,
|
|
},
|
|
edit = {
|
|
border = 'rounded',
|
|
start_insert = true,
|
|
},
|
|
ask = {
|
|
floating = false,
|
|
start_insert = true,
|
|
border = 'rounded',
|
|
---@type "ours" | "theirs"
|
|
focus_on_apply = 'ours',
|
|
},
|
|
},
|
|
highlights = {
|
|
diff = {
|
|
current = 'DiffText',
|
|
incoming = 'DiffAdd',
|
|
},
|
|
},
|
|
--- @class AvanteConflictUserConfig
|
|
diff = {
|
|
autojump = true,
|
|
---@type string | fun(): any
|
|
list_opener = 'copen',
|
|
override_timeoutlen = 500,
|
|
},
|
|
suggestion = {
|
|
debounce = 600,
|
|
throttle = 600,
|
|
},
|
|
system_prompt = function()
|
|
local hub = require('mcphub').get_hub_instance()
|
|
return hub:get_active_servers_prompt()
|
|
end,
|
|
custom_tools = function()
|
|
return {
|
|
require('mcphub.extensions.avante').mcp_tool(),
|
|
}
|
|
end,
|
|
disabled_tools = {},
|
|
slash_commands = {},
|
|
})
|