return { 'yetone/avante.nvim', enabled = false, event = 'VeryLazy', lazy = false, version = false, opts = { ---@alias Provider "claude" | "openai" | "azure" | "gemini" | "cohere" | "copilot" | string ---@type Provider provider = 'copilot', -- The provider used in Aider mode or in the planning phase of Cursor Planning Mode ---@alias Mode "agentic" | "legacy" ---@type Mode mode = 'agentic', -- The default mode for interaction. "agentic" uses tools to automatically generate code, "legacy" uses the old planning method to generate code. -- WARNING: Since auto-suggestions are a high-frequency operation and therefore expensive, -- currently designating it as `copilot` provider is dangerous because: https://github.com/yetone/avante.nvim/issues/1048 -- Of course, you can reduce the request frequency by increasing `suggestion.debounce`. auto_suggestions_provider = 'copilot', providers = { claude = { endpoint = 'https://api.anthropic.com', model = 'claude-3-5-sonnet-20241022', extra_request_body = { temperature = 0.75, max_tokens = 4096, }, }, }, ---Specify the special dual_boost mode ---1. enabled: Whether to enable dual_boost mode. Default to false. ---2. first_provider: The first provider to generate response. Default to "openai". ---3. second_provider: The second provider to generate response. Default to "claude". ---4. prompt: The prompt to generate response based on the two reference outputs. ---5. timeout: Timeout in milliseconds. Default to 60000. ---How it works: --- When dual_boost is enabled, avante will generate two responses from the first_provider and second_provider respectively. Then use the response from the first_provider as provider1_output and the response from the second_provider as provider2_output. Finally, avante will generate a response based on the prompt and the two reference outputs, with the default Provider as normal. ---Note: This is an experimental feature and may not work as expected. dual_boost = { enabled = false, first_provider = 'openai', second_provider = 'claude', prompt = 'Based on the two reference outputs below, generate a response that incorporates elements from both but reflects your own judgment and unique perspective. Do not provide any explanation, just give the response directly. Reference Output 1: [{{provider1_output}}], Reference Output 2: [{{provider2_output}}]', timeout = 60000, -- Timeout in milliseconds }, behaviour = { auto_suggestions = false, -- Experimental stage 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, -- Whether to enable token counting. Default to true. auto_approve_tool_permissions = false, -- Default: show permission prompts for all tools -- Examples: -- auto_approve_tool_permissions = true, -- Auto-approve all tools (no prompts) -- auto_approve_tool_permissions = {"bash", "replace_in_file"}, -- Auto-approve specific tools only }, prompt_logger = { -- logs prompts to disk (timestamped, for replay/debugging) enabled = true, -- toggle logging entirely log_dir = vim.fn.stdpath 'cache' .. '/avante_prompts', -- directory where logs are saved fortune_cookie_on_success = false, -- shows a random fortune after each logged prompt (requires `fortune` installed) next_prompt = { normal = '', -- load the next (newer) prompt log in normal mode insert = '', }, prev_prompt = { normal = '', -- load the previous (older) prompt log in normal mode insert = '', }, }, mappings = { --- @class AvanteConflictMappings diff = { ours = 'co', theirs = 'ct', all_theirs = 'ca', both = 'cb', cursor = 'cc', next = ']x', prev = '[x', }, suggestion = { accept = '', next = '', prev = '', dismiss = '', }, jump = { next = ']]', prev = '[[', }, submit = { normal = '', insert = '', }, cancel = { normal = { '', '', 'q' }, insert = { '' }, }, sidebar = { apply_all = 'A', apply_cursor = 'a', retry_user_request = 'r', edit_user_request = 'e', switch_windows = '', reverse_switch_windows = '', remove_file = 'd', add_file = '@', close = { '', 'q' }, close_from_input = nil, -- e.g., { normal = "", insert = "" } }, }, selection = { enabled = true, hint_display = 'delayed', }, windows = { ---@type "right" | "left" | "top" | "bottom" position = 'right', -- the position of the sidebar wrap = true, -- similar to vim.o.wrap width = 30, -- default % based on available width sidebar_header = { enabled = true, -- true, false to enable/disable the header align = 'center', -- left, center, right for title rounded = true, }, spinner = { editing = { '⡀', '⠄', '⠂', '⠁', '⠈', '⠐', '⠠', '⢀', '⣀', '⢄', '⢂', '⢁', '⢈', '⢐', '⢠', '⣠', '⢤', '⢢', '⢡', '⢨', '⢰', '⣰', '⢴', '⢲', '⢱', '⢸', '⣸', '⢼', '⢺', '⢹', '⣹', '⢽', '⢻', '⣻', '⢿', '⣿', }, generating = { '·', '✢', '✳', '∗', '✻', '✽' }, -- Spinner characters for the 'generating' state thinking = { '🤯', '🙄' }, -- Spinner characters for the 'thinking' state }, input = { prefix = '> ', height = 8, -- Height of the input window in vertical layout }, edit = { border = 'rounded', start_insert = true, -- Start insert mode when opening the edit window }, ask = { floating = false, -- Open the 'AvanteAsk' prompt in a floating window start_insert = true, -- Start insert mode when opening the ask window border = 'rounded', ---@type "ours" | "theirs" focus_on_apply = 'ours', -- which diff to focus after applying }, }, highlights = { ---@type AvanteConflictHighlights diff = { current = 'DiffText', incoming = 'DiffAdd', }, }, --- @class AvanteConflictUserConfig diff = { autojump = true, ---@type string | fun(): any list_opener = 'copen', --- Override the 'timeoutlen' setting while hovering over a diff (see :help timeoutlen). --- Helps to avoid entering operator-pending mode with diff mappings starting with `c`. --- Disable by setting to -1. override_timeoutlen = 500, }, suggestion = { debounce = 600, throttle = 600, }, }, dependencies = { 'nvim-treesitter/nvim-treesitter', 'stevearc/dressing.nvim', 'nvim-lua/plenary.nvim', 'MunifTanjim/nui.nvim', --- The below dependencies are optional, 'echasnovski/mini.pick', -- for file_selector provider mini.pick 'nvim-telescope/telescope.nvim', -- for file_selector provider telescope 'hrsh7th/nvim-cmp', -- autocompletion for avante commands and mentions 'ibhagwan/fzf-lua', -- for file_selector provider fzf 'nvim-tree/nvim-web-devicons', -- or echasnovski/mini.icons 'zbirenbaum/copilot.lua', -- for providers='copilot' { -- support for image pasting 'HakonHarnes/img-clip.nvim', event = 'VeryLazy', opts = { -- recommended settings default = { embed_image_as_base64 = false, prompt_for_file_name = false, drag_and_drop = { insert_mode = true, }, -- required for Windows users use_absolute_path = true, }, }, }, { -- Make sure to set this up properly if you have lazy=true 'MeanderingProgrammer/render-markdown.nvim', opts = { file_types = { 'markdown', 'Avante' }, }, ft = { 'markdown', 'Avante' }, }, }, } -- from https://github.com/yetone/avante.nvim?tab=readme-ov-file -- { -- "yetone/avante.nvim", -- -- if you want to build from source then do `make BUILD_FROM_SOURCE=true` -- -- ⚠️ must add this setting! ! ! -- build = vim.fn.has("win32") ~= 0 -- and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- or "make", -- event = "VeryLazy", -- version = false, -- Never set this value to "*"! Never! -- ---@module 'avante' -- ---@type avante.Config -- opts = { -- -- add any opts here -- -- this file can contain specific instructions for your project -- instructions_file = "avante.md", -- -- for example -- provider = "claude", -- providers = { -- claude = { -- endpoint = "https://api.anthropic.com", -- model = "claude-sonnet-4-20250514", -- timeout = 30000, -- Timeout in milliseconds -- extra_request_body = { -- temperature = 0.75, -- max_tokens = 20480, -- }, -- }, -- moonshot = { -- endpoint = "https://api.moonshot.ai/v1", -- model = "kimi-k2-0711-preview", -- timeout = 30000, -- Timeout in milliseconds -- extra_request_body = { -- temperature = 0.75, -- max_tokens = 32768, -- }, -- }, -- }, -- }, -- dependencies = { -- "nvim-lua/plenary.nvim", -- "MunifTanjim/nui.nvim", -- --- The below dependencies are optional, -- "echasnovski/mini.pick", -- for file_selector provider mini.pick -- "nvim-telescope/telescope.nvim", -- for file_selector provider telescope -- "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions -- "ibhagwan/fzf-lua", -- for file_selector provider fzf -- "stevearc/dressing.nvim", -- for input provider dressing -- "folke/snacks.nvim", -- for input provider snacks -- "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons -- "zbirenbaum/copilot.lua", -- for providers='copilot' -- { -- -- support for image pasting -- "HakonHarnes/img-clip.nvim", -- event = "VeryLazy", -- opts = { -- -- recommended settings -- default = { -- embed_image_as_base64 = false, -- prompt_for_file_name = false, -- drag_and_drop = { -- insert_mode = true, -- }, -- -- required for Windows users -- use_absolute_path = true, -- }, -- }, -- }, -- { -- -- Make sure to set this up properly if you have lazy=true -- 'MeanderingProgrammer/render-markdown.nvim', -- opts = { -- file_types = { "markdown", "Avante" }, -- }, -- ft = { "markdown", "Avante" }, -- }, -- }, -- }