diff --git a/Dockerfile b/Dockerfile index 170ddd9..69b3bd2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -194,7 +194,7 @@ RUN fish -c true \ && echo 'alias nh="nvim --listen 0.0.0.0:6666 --headless &> /dev/null"' >> ${XDG_CONFIG_HOME}/fish/config.fish # git configuration -ENV NEOVIM_KICKSTART_VERSION 6ba2408cdf5eb7a0e4b62c7d6fab63b64dd720f6 +ENV NEOVIM_KICKSTART_VERSION 3338d3920620861f8313a2745fd5d2be39f39534 COPY ./patch/kickstart.nvim/updates.patch /tmp COPY ./config/nvim/lua/custom/plugins/init.lua /tmp RUN git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME}"/nvim \ diff --git a/config/aider/config.yml b/config/aider/config.yml index aae7457..45ce300 100644 --- a/config/aider/config.yml +++ b/config/aider/config.yml @@ -1,10 +1,13 @@ --- -model: gemini/gemini-2.5-pro-preview-03-25 +reasoning-effort: medium +thinking-tokens: 8k +model: gemini/gemini-2.5-pro-preview-05-06 weak-model: gemini/gemini-2.0-flash-001 -editor-model: gemini/gemini-2.5-pro-preview-03-25 +editor-model: gemini/gemini-2.5-pro-preview-05-06 editor: nvim git: true gitignore: true auto-commits: false read: - CONVENTIONS.md + - CLAUDE.md diff --git a/config/goose/config.yaml b/config/goose/config.yaml new file mode 100644 index 0000000..bb135eb --- /dev/null +++ b/config/goose/config.yaml @@ -0,0 +1,43 @@ +ANTHROPIC_HOST: https://api.anthropic.com +GOOSE_PROVIDER: google +GOOSE_MODEL: gemini-2.5-pro-preview-05-06 +extensions: + computercontroller: + bundled: true + display_name: Computer Controller + enabled: true + name: computercontroller + timeout: 600 + type: builtin + context7: + args: + - dlx + - '@upstash/context7-mcp@latest' + bundled: null + cmd: pnpm + description: null + enabled: true + env_keys: [] + envs: {} + name: context7 + timeout: 600 + type: stdio + developer: + bundled: true + display_name: Developer Tools + enabled: true + name: developer + timeout: 600 + type: builtin + git: + args: + - mcp-server-git + bundled: null + cmd: uvx + description: null + enabled: true + env_keys: [] + envs: {} + name: git + timeout: 600 + type: stdio diff --git a/config/mcphub/config.json b/config/mcphub/config.json deleted file mode 100644 index 8199571..0000000 --- a/config/mcphub/config.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "mcpServers": { - "context7": { - "command": "pnpm", - "args": [ - "dlx", - "@upstash/context7-mcp@latest" - ] - }, - "git": { - "command": "uvx", - "args": [ - "mcp-server-git" - ] - }, - "vectorcode": { - "command": "vectorcode-mcp-server", - "args": [] - } - } -} diff --git a/config/mcphub/servers.json b/config/mcphub/servers.json index 6b0a486..8199571 100644 --- a/config/mcphub/servers.json +++ b/config/mcphub/servers.json @@ -1 +1,21 @@ -{"mcpServers":{}} \ No newline at end of file +{ + "mcpServers": { + "context7": { + "command": "pnpm", + "args": [ + "dlx", + "@upstash/context7-mcp@latest" + ] + }, + "git": { + "command": "uvx", + "args": [ + "mcp-server-git" + ] + }, + "vectorcode": { + "command": "vectorcode-mcp-server", + "args": [] + } + } +} diff --git a/config/mise/config.toml b/config/mise/config.toml index da5c804..5ecf5cd 100644 --- a/config/mise/config.toml +++ b/config/mise/config.toml @@ -33,6 +33,7 @@ "pipx:aider-chat" = { version = "0.83.1", uvx_args = "--python 3.12.10 --with google-generativeai" } "pipx:vectorcode" = { version = "0.6.6", uvx_args = "--python 3.13.3", extras = "mcp" } "ubi:Samyak2/toipe" = "0.5.0" +"ubi:block/goose" = "1.0.24" "ubi:hlsxx/tukai" = "0.2.2" "ubi:jdx/usage" = "2.1.1" "ubi:max-niederman/ttyper" = "1.6.0" diff --git a/config/nvim/lua/custom/plugins/init.lua b/config/nvim/lua/custom/plugins/init.lua index f489937..7c32d34 100644 --- a/config/nvim/lua/custom/plugins/init.lua +++ b/config/nvim/lua/custom/plugins/init.lua @@ -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 = { + { 'gg', 'Goose', mode = 'n', desc = 'Toggle goose' }, + { 'gi', 'GooseOpenInput', mode = 'n', desc = 'Open goose input' }, + { 'gI', 'GooseOpenInputNewSession', mode = 'n', desc = 'Open goose input in new session' }, + { 'go', 'GooseOpenOutput', mode = 'n', desc = 'Open goose output' }, + { 'gt', 'GooseToggleFocus', mode = 'n', desc = 'Toggle focus between goose and last window' }, + { 'gq', 'GooseClose', mode = 'n', desc = 'Close goose' }, + { 'gf', 'GooseToggleFullscreen', mode = 'n', desc = 'Toggle goose fullscreen' }, + { 'gsn', 'GooseSelectSession', mode = 'n', desc = 'Select and load a goose session' }, + -- { 'gmc', 'GooseModeChat', mode = 'n', desc = 'Set goose mode to `chat`' }, + -- { 'gma', 'GooseModeAuto', mode = 'n', desc = 'Set goose mode to `auto`' }, + { 'gp', 'GooseConfigureProvider', mode = 'n', desc = 'Quick provider and model switch from predefined list' }, + { 'gd', 'GooseDiff', mode = 'n', desc = 'Opens a diff tab of a modified file since the last goose prompt' }, + { 'g]', 'GooseDiffNext', mode = 'n', desc = 'Navigate to next file diff' }, + { 'g[', 'GooseDiffPrev', mode = 'n', desc = 'Navigate to previous file diff' }, + { 'gc', 'GooseDiffClose', mode = 'n', desc = 'Close diff view tab and return to normal editing' }, + { 'gra', 'GooseDiffRevertAll', mode = 'n', desc = 'Revert all file changes since the last goose prompt' }, + { 'grt', 'GooseDiffRevertThis', 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 = 'ua', + edit = 'ue', + refresh = 'ur', + 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 = '', + }, + sidebar = { + apply_all = 'A', + apply_cursor = 'a', + switch_windows = '', + reverse_switch_windows = '', + }, + }, + -- 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 = { diff --git a/docker-compose.yml b/docker-compose.yml index 52a6f20..b6dda0b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,6 +21,7 @@ services: volumes: - './config/atuin:/home/coder/.config/atuin' - './config/git:/home/coder/.config/git' + - './config/goose:/home/coder/.config/goose' - './config/mcphub:/home/coder/.config/mcphub' - './config/mise:/home/coder/.config/mise' - './config/nvim/lua/custom:/home/coder/.config/nvim/lua/custom' diff --git a/patch/kickstart.nvim/updates.patch b/patch/kickstart.nvim/updates.patch index bb7ae7c..8d974f5 100644 --- a/patch/kickstart.nvim/updates.patch +++ b/patch/kickstart.nvim/updates.patch @@ -1,5 +1,5 @@ diff --git a/init.lua b/init.lua -index b98ffc6..f0cf036 100644 +index b98ffc6..8013e25 100644 --- a/init.lua +++ b/init.lua @@ -91,7 +91,7 @@ vim.g.mapleader = ' ' @@ -156,23 +156,28 @@ index b98ffc6..f0cf036 100644 require('lspconfig')[server_name].setup(server) end, }, -@@ -809,6 +893,8 @@ require('lazy').setup({ +@@ -809,6 +893,9 @@ require('lazy').setup({ opts = {}, }, 'folke/lazydev.nvim', + 'saghen/blink.compat', + 'supermaven-inc/supermaven-nvim', ++ 'Kaiser-Yang/blink-cmp-avante', }, --- @module 'blink.cmp' --- @type blink.cmp.Config -@@ -854,9 +940,15 @@ require('lazy').setup({ +@@ -854,9 +941,19 @@ require('lazy').setup({ }, sources = { - default = { 'lsp', 'path', 'snippets', 'lazydev' }, -+ default = { 'lsp', 'path', 'snippets', 'lazydev', 'supermaven' }, ++ default = { 'avante', 'lsp', 'path', 'snippets', 'lazydev', 'supermaven' }, providers = { lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 }, ++ avante = { ++ name = 'avante', ++ module = 'blink-cmp-avante', ++ }, + supermaven = { + name = 'supermanve', + module = 'blink.compat.source', @@ -182,7 +187,7 @@ index b98ffc6..f0cf036 100644 }, }, -@@ -882,19 +974,39 @@ require('lazy').setup({ +@@ -882,19 +979,39 @@ require('lazy').setup({ -- -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. 'folke/tokyonight.nvim', @@ -228,7 +233,7 @@ index b98ffc6..f0cf036 100644 end, }, -@@ -944,7 +1056,39 @@ require('lazy').setup({ +@@ -944,7 +1061,39 @@ require('lazy').setup({ main = 'nvim-treesitter.configs', -- Sets main module to use for opts -- [[ Configure Treesitter ]] See `:help nvim-treesitter` opts = { @@ -269,7 +274,7 @@ index b98ffc6..f0cf036 100644 -- Autoinstall languages that are not installed auto_install = true, highlight = { -@@ -974,17 +1118,17 @@ require('lazy').setup({ +@@ -974,17 +1123,17 @@ require('lazy').setup({ -- Uncomment any of the lines below to enable them (you will need to restart nvim). -- -- require 'kickstart.plugins.debug',