feat(neovim): experiment with ai agents (#237)
The following changes are introduced:
* Update `kickstart.nvim` to latest commit ([6ba24..3338d](6ba2408cdf..3338d39206
))
* Add [`goose`](https://block.github.io/goose/) and [`goose.nvim`](https://block.github.io/goose/)
* Re-enable [`avante.nvim`](https://block.github.io/goose/)
Reviewed-on: #237
Co-authored-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
Co-committed-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
This commit is contained in:
@@ -234,7 +234,7 @@ return {
|
||||
name = 'gemini_pro',
|
||||
schema = {
|
||||
model = {
|
||||
default = 'gemini-2.5-pro-exp-03-25',
|
||||
default = 'gemini-2.5-pro-preview-05-06',
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -310,6 +310,178 @@ return {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'azorng/goose.nvim',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
{
|
||||
'MeanderingProgrammer/render-markdown.nvim',
|
||||
opts = {
|
||||
file_types = { 'markdown', 'goose' },
|
||||
anti_conceal = { enabled = false },
|
||||
},
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
prefered_picker = 'telescope',
|
||||
default_global_keymaps = false,
|
||||
ui = {
|
||||
window_widht = 0.3,
|
||||
input_height = 0.2,
|
||||
fullscreen = false,
|
||||
layout = 'right',
|
||||
floating_height = 0.9,
|
||||
display_model = true,
|
||||
display_goose_mode = true,
|
||||
},
|
||||
providers = {
|
||||
anthropic = {
|
||||
'claude-sonnet-4-20250514',
|
||||
},
|
||||
gemini = {
|
||||
'gemini-2.5-pro-preview-05-06',
|
||||
'gemini-2.5-flash-preview-05-20',
|
||||
'gemini-2.0-flash',
|
||||
},
|
||||
groq = {
|
||||
'deepseek-r1-distill-llama-70b',
|
||||
'qwen-qwq-32b',
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>gg', '<cmd>Goose<cr>', mode = 'n', desc = 'Toggle goose' },
|
||||
{ '<leader>gi', '<cmd>GooseOpenInput<cr>', mode = 'n', desc = 'Open goose input' },
|
||||
{ '<leader>gI', '<cmd>GooseOpenInputNewSession<cr>', mode = 'n', desc = 'Open goose input in new session' },
|
||||
{ '<leader>go', '<cmd>GooseOpenOutput<cr>', mode = 'n', desc = 'Open goose output' },
|
||||
{ '<leader>gt', '<cmd>GooseToggleFocus<cr>', mode = 'n', desc = 'Toggle focus between goose and last window' },
|
||||
{ '<leader>gq', '<cmd>GooseClose<cr>', mode = 'n', desc = 'Close goose' },
|
||||
{ '<leader>gf', '<cmd>GooseToggleFullscreen<cr>', mode = 'n', desc = 'Toggle goose fullscreen' },
|
||||
{ '<leader>gsn', '<cmd>GooseSelectSession<cr>', mode = 'n', desc = 'Select and load a goose session' },
|
||||
-- { '<leader>gmc', '<cmd>GooseModeChat<cr>', mode = 'n', desc = 'Set goose mode to `chat`' },
|
||||
-- { '<leader>gma', '<cmd>GooseModeAuto<cr>', mode = 'n', desc = 'Set goose mode to `auto`' },
|
||||
{ '<leader>gp', '<cmd>GooseConfigureProvider<cr>', mode = 'n', desc = 'Quick provider and model switch from predefined list' },
|
||||
{ '<leader>gd', '<cmd>GooseDiff<cr>', mode = 'n', desc = 'Opens a diff tab of a modified file since the last goose prompt' },
|
||||
{ '<leader>g]', '<cmd>GooseDiffNext<cr>', mode = 'n', desc = 'Navigate to next file diff' },
|
||||
{ '<leader>g[', '<cmd>GooseDiffPrev<cr>', mode = 'n', desc = 'Navigate to previous file diff' },
|
||||
{ '<leader>gc', '<cmd>GooseDiffClose<cr>', mode = 'n', desc = 'Close diff view tab and return to normal editing' },
|
||||
{ '<leader>gra', '<cmd>GooseDiffRevertAll<cr>', mode = 'n', desc = 'Revert all file changes since the last goose prompt' },
|
||||
{ '<leader>grt', '<cmd>GooseDiffRevertThis<cr>', mode = 'n', desc = 'Revert current file changes since the last goose prompt' },
|
||||
},
|
||||
},
|
||||
{
|
||||
'yetone/avante.nvim',
|
||||
build = 'make',
|
||||
event = 'VeryLazy',
|
||||
version = false,
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'stevearc/dressing.nvim',
|
||||
'nvim-lua/plenary.nvim',
|
||||
'MunifTanjim/nui.nvim',
|
||||
'nvim-telescope/telescope.nvim',
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
{
|
||||
-- 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,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'MeanderingProgrammer/render-markdown.nvim',
|
||||
opts = {
|
||||
file_types = { 'markdown', 'Avante' },
|
||||
},
|
||||
ft = { 'markdown', 'Avante' },
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
mappings = {
|
||||
ask = '<leader>ua',
|
||||
edit = '<leader>ue',
|
||||
refresh = '<leader>ur',
|
||||
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>',
|
||||
},
|
||||
sidebar = {
|
||||
apply_all = 'A',
|
||||
apply_cursor = 'a',
|
||||
switch_windows = '<Tab>',
|
||||
reverse_switch_windows = '<S-Tab>',
|
||||
},
|
||||
},
|
||||
-- The custom_tools type supports both a list and a function that returns a list. Using a function here prevents requiring mcphub before it's loaded
|
||||
custom_tools = function()
|
||||
return {
|
||||
require('mcphub.extensions.avante').mcp_tool(),
|
||||
}
|
||||
end,
|
||||
hints = { enabled = true },
|
||||
provider = 'gemini-pro',
|
||||
-- The system_prompt type supports both a string and a function that returns a string. Using a function here allows dynamically updating the prompt with `mcphub`
|
||||
system_prompt = function()
|
||||
local hub = require('mcphub').get_hub_instance()
|
||||
return hub and hub:get_active_servers_prompt() or ''
|
||||
end,
|
||||
vendors = {
|
||||
['gemini-pro'] = {
|
||||
__inherited_from = 'gemini',
|
||||
model = 'gemini-2.5-pro-preview-05-06',
|
||||
timeout = 600000,
|
||||
max_tokens = 40960,
|
||||
},
|
||||
['gemini-flash'] = {
|
||||
__inherited_from = 'gemini',
|
||||
model = 'gemini-2.0-flash',
|
||||
timeout = 600000,
|
||||
max_tokens = 20480,
|
||||
},
|
||||
['claude-sonnet-4'] = {
|
||||
__inherited_from = 'claude',
|
||||
model = 'claude-sonnet-4-20250514',
|
||||
timeout = 600000,
|
||||
max_tokens = 20480,
|
||||
},
|
||||
groq = {
|
||||
__inherited_from = 'openai',
|
||||
api_key_name = 'GROQ_API_KEY',
|
||||
endpoint = 'https://api.groq.com/openai/v1/',
|
||||
model = 'deepseek-r1-distill-llama-70b',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'sphamba/smear-cursor.nvim',
|
||||
opts = {
|
||||
|
Reference in New Issue
Block a user