Compare commits
3 commits
289756b61c
...
448cdca018
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
448cdca018 | ||
|
|
3106412845 | ||
|
|
8ce5786c26 |
7 changed files with 21 additions and 380 deletions
41
flake.lock
41
flake.lock
|
|
@ -199,22 +199,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gp-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1754903071,
|
||||
"narHash": "sha256-+K536d3WF5eHRTSgkhn1NLFHms67iw4A0Ql8OZ9TgTw=",
|
||||
"owner": "Robitx",
|
||||
"repo": "gp.nvim",
|
||||
"rev": "c37f154b97690c4925fef4e35ffdbf2c844b5f4e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Robitx",
|
||||
"repo": "gp.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hlargs-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
|
@ -305,11 +289,11 @@
|
|||
"namu-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1763488841,
|
||||
"narHash": "sha256-YTUPpFgKo5q5QexcmEv0IcSiMG2hVfYk9cKepB9tNVo=",
|
||||
"lastModified": 1764103858,
|
||||
"narHash": "sha256-b6fSeg86mREnSmWZd6bBqAZ2JCY0/KaT5y0qsFBOaUU=",
|
||||
"owner": "bassamsdata",
|
||||
"repo": "namu.nvim",
|
||||
"rev": "51d2c1de7dcdab8c0b712cd9463e392039efa5e2",
|
||||
"rev": "c86d708ac1c22df260a5bc132ea1f7ba3802c64b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -329,11 +313,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763942693,
|
||||
"narHash": "sha256-DvAkXPkSfgColZZ2sBbBl69CxzamyH7Hmi4qVUTP1OU=",
|
||||
"lastModified": 1764029077,
|
||||
"narHash": "sha256-a3imRMIsRjonDDyt4buoTaXnCJ0H6FSZEes0tHyWr0s=",
|
||||
"owner": "nix-community",
|
||||
"repo": "neovim-nightly-overlay",
|
||||
"rev": "da647c7ac355d4f8be218ff0466bee9b5c6680ed",
|
||||
"rev": "4e2ede6fae4af2d474f63028ff54bd714707c3e7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -345,11 +329,11 @@
|
|||
"neovim-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1763931717,
|
||||
"narHash": "sha256-juqY16KziaFTk4D0Vx06tUlYLiEc6vMlEtjDLIjGn0Q=",
|
||||
"lastModified": 1764025805,
|
||||
"narHash": "sha256-DMG2kVggmBUbr2lxFugiRjiCBOkC9vU822JTkpYTeN4=",
|
||||
"owner": "neovim",
|
||||
"repo": "neovim",
|
||||
"rev": "a88c7962a82f1427aa90d1c0a08514423516f9f2",
|
||||
"rev": "60c35cc4c7b713c27e8bfdd196cbee46cf050bbb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -422,11 +406,11 @@
|
|||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1763835633,
|
||||
"narHash": "sha256-HzxeGVID5MChuCPESuC0dlQL1/scDKu+MmzoVBJxulM=",
|
||||
"lastModified": 1763966396,
|
||||
"narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "050e09e091117c3d7328c7b2b7b577492c43c134",
|
||||
"rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -491,7 +475,6 @@
|
|||
"flake-parts": "flake-parts_2",
|
||||
"gen-luarc": "gen-luarc",
|
||||
"gentags-lua": "gentags-lua",
|
||||
"gp-nvim": "gp-nvim",
|
||||
"hlargs-nvim": "hlargs-nvim",
|
||||
"kulala-fmt": "kulala-fmt",
|
||||
"kulala-nvim": "kulala-nvim",
|
||||
|
|
|
|||
10
flake.nix
10
flake.nix
|
|
@ -85,10 +85,10 @@
|
|||
flake = false;
|
||||
};
|
||||
|
||||
gp-nvim = {
|
||||
url = "github:Robitx/gp.nvim";
|
||||
flake = false;
|
||||
};
|
||||
# gp-nvim = {
|
||||
# url = "github:Robitx/gp.nvim";
|
||||
# flake = false;
|
||||
# };
|
||||
|
||||
# my
|
||||
|
||||
|
|
@ -133,6 +133,8 @@
|
|||
nvim-small = pkgs.nvim-small;
|
||||
nvim-minimal = pkgs.nvim-minimal;
|
||||
default = nvim;
|
||||
|
||||
codingPackages = pkgs.codingPackages;
|
||||
};
|
||||
devShells = {
|
||||
default = pkgs.mkShell {
|
||||
|
|
|
|||
11
nix/ai.nix
11
nix/ai.nix
|
|
@ -1,15 +1,5 @@
|
|||
{ inputs, pkgs, mkNvimPlugin, ... }:
|
||||
with pkgs.vimPlugins; [
|
||||
# {
|
||||
# plugin = codecompanion-nvim.overrideAttrs (oa: {
|
||||
# dependencies = with pkgs.vimPlugins; [
|
||||
# codecompanion-spinner-nvim
|
||||
# codecompanion-history-nvim
|
||||
# ];
|
||||
# });
|
||||
# type = "lua";
|
||||
# optional = false;
|
||||
# }
|
||||
{
|
||||
plugin = avante-nvim.overrideAttrs (oa: {
|
||||
dependencies = with pkgs.vimPlugins; [
|
||||
|
|
@ -32,5 +22,4 @@ with pkgs.vimPlugins; [
|
|||
}
|
||||
'';
|
||||
}
|
||||
(mkNvimPlugin inputs.gp-nvim "gp.nvim")
|
||||
]
|
||||
|
|
|
|||
|
|
@ -325,6 +325,8 @@ with final.pkgs.lib; let
|
|||
];
|
||||
in
|
||||
{
|
||||
|
||||
codingPackages = extraPackages;
|
||||
# This is the neovim derivation
|
||||
# returned by the overlay
|
||||
nvim-pkg = mkNeovim {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ local opts = {
|
|||
use_cwd_as_project_root = true,
|
||||
auto_focus_on_diff_view = true,
|
||||
auto_approve_tool_permissions = false,
|
||||
auto_add_current_file = false,
|
||||
auto_add_current_file = true,
|
||||
confirmation_ui_style = "popup",
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -1,205 +0,0 @@
|
|||
vim.g.did_load_cai_plugin = true
|
||||
|
||||
if vim.g.did_load_cai_plugin or vim.g.did_load_ai_plugin then
|
||||
return
|
||||
end
|
||||
vim.g.did_load_cai_plugin = true
|
||||
|
||||
local adapters = require("ai.adapters")
|
||||
|
||||
lze.load({
|
||||
"codecompanion.nvim",
|
||||
cmd = {
|
||||
"CodeCompanionChat",
|
||||
"CodeCompanion",
|
||||
"CodeCompanionCmd",
|
||||
"CodeCompanionActions",
|
||||
"CodeCompanionHistory",
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>cc",
|
||||
function()
|
||||
require("codecompanion").toggle()
|
||||
end,
|
||||
desc = "Code Companion",
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<leader>cc",
|
||||
":'<,'>CodeCompanionChat Add<cr>",
|
||||
desc = "Code Companion Add",
|
||||
silent = true,
|
||||
mode = "x",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"<C-?>",
|
||||
function()
|
||||
require("codecompanion").toggle()
|
||||
end,
|
||||
desc = "Code Companion",
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<C-?>",
|
||||
":'<,'>CodeCompanionChat Add<cr>",
|
||||
desc = "Code Companion Add",
|
||||
silent = true,
|
||||
mode = "x",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"<leader>ci",
|
||||
":CodeCompanion<cr>",
|
||||
desc = "Code Companion inline",
|
||||
silent = true,
|
||||
mode = "n",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"<leader>ci",
|
||||
":'<,'>CodeCompanion<cr>",
|
||||
desc = "Code Companion inline",
|
||||
silent = true,
|
||||
mode = "x",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"<leader>ca",
|
||||
":'<,'>CodeCompanionActions<cr>",
|
||||
desc = "Code Companion Actions",
|
||||
silent = true,
|
||||
mode = "x",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"<leader>ca",
|
||||
":CodeCompanionActions<cr>",
|
||||
desc = "Code Companion Actions",
|
||||
silent = true,
|
||||
mode = "n",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
"<leader>ch",
|
||||
":CodeCompanionHistory<cr>",
|
||||
desc = "Code Companion Actions",
|
||||
silent = true,
|
||||
mode = "n",
|
||||
noremap = true,
|
||||
},
|
||||
},
|
||||
after = function()
|
||||
local opts = {
|
||||
opts = {
|
||||
log_level = "TRACE", -- TRACE|DEBUG|ERROR|INFO
|
||||
},
|
||||
adapters = {
|
||||
http = adapters,
|
||||
},
|
||||
strategies = {
|
||||
chat = {
|
||||
adapter = "default_adapter",
|
||||
keymaps = require("ai.keymap"),
|
||||
opts = {
|
||||
completion_provider = "blink", -- blink|cmp|coc|default
|
||||
},
|
||||
tools = require("ai.tools"),
|
||||
},
|
||||
inline = {
|
||||
adapter = "default_adapter",
|
||||
keymaps = {
|
||||
accept_change = {
|
||||
modes = { n = "gh" },
|
||||
description = "Accept the suggested change",
|
||||
},
|
||||
reject_change = {
|
||||
modes = { n = "gH" },
|
||||
description = "Reject the suggested change",
|
||||
},
|
||||
},
|
||||
},
|
||||
agent = { adapter = "default_adapter" },
|
||||
},
|
||||
diff = {
|
||||
enabled = true,
|
||||
},
|
||||
display = {
|
||||
chat = {
|
||||
-- window = {
|
||||
-- layout = "float",
|
||||
-- },
|
||||
icons = {
|
||||
pinned_buffer = "📌 ",
|
||||
watched_buffer = "👀 ",
|
||||
},
|
||||
show_header_separator = true,
|
||||
show_settings = true,
|
||||
show_tools_processing = true,
|
||||
},
|
||||
},
|
||||
-- extensions = {
|
||||
-- spinner = {},
|
||||
-- history = {
|
||||
-- enabled = true,
|
||||
-- opts = {
|
||||
-- keymap = "<leader>sh",
|
||||
-- save_chat_keymap = "sc",
|
||||
-- auto_save = true,
|
||||
-- expiration_days = 0,
|
||||
-- picker = "fzf-lua",
|
||||
-- auto_generate_title = false,
|
||||
-- ---On exiting and entering neovim, loads the last chat on opening chat
|
||||
-- continue_last_chat = false,
|
||||
-- ---When chat is cleared with `gx` delete the chat from history
|
||||
-- delete_on_clearing_chat = true,
|
||||
-- ---Directory path to save the chats
|
||||
-- dir_to_save = vim.fn.stdpath("data") .. "/codecompanion-history",
|
||||
-- ---Enable detailed logging for history extension
|
||||
-- enable_logging = false,
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
}
|
||||
|
||||
local ok, _ = pcall(require, "mchup")
|
||||
if ok then
|
||||
opts.extensions.mcphub = {
|
||||
callback = "mcphub.extensions.codecompanion",
|
||||
opts = {
|
||||
make_vars = true,
|
||||
make_slash_commands = true,
|
||||
show_result_in_chat = true,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
ok, _ = pcall(require, "vectorcode")
|
||||
if ok then
|
||||
opts.extensions.vectorcode = {
|
||||
opts = {
|
||||
tool_group = {
|
||||
enabled = true,
|
||||
extras = {},
|
||||
collapse = false,
|
||||
},
|
||||
tool_opts = {
|
||||
ls = {},
|
||||
vectorise = {},
|
||||
query = {
|
||||
max_num = { chunk = -1, document = -1 },
|
||||
default_num = { chunk = 50, document = 10 },
|
||||
include_stderr = false,
|
||||
use_lsp = true,
|
||||
no_duplicate = true,
|
||||
chunk_mode = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
require("codecompanion").setup(opts)
|
||||
end,
|
||||
})
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
if vim.g.did_load_gp_plugin or vim.g.did_load_ai_plugin then
|
||||
return
|
||||
end
|
||||
vim.g.did_load_gp_plugin = true
|
||||
|
||||
lze.load({
|
||||
"gp.nvim",
|
||||
event = "BufEnter",
|
||||
after = function()
|
||||
require("gp").setup({
|
||||
providers = {
|
||||
openai = {
|
||||
disable = true,
|
||||
},
|
||||
ollama = {
|
||||
disable = false,
|
||||
endpoint = vim.g.ollama_chat_endpoint,
|
||||
},
|
||||
},
|
||||
whisper = {
|
||||
disable = true,
|
||||
},
|
||||
agents = {
|
||||
{
|
||||
name = "GPT-OSS",
|
||||
chat = true,
|
||||
command = true,
|
||||
provider = "ollama",
|
||||
model = {
|
||||
model = "gpt-oss-safeguard:20b",
|
||||
num_ctx = 1024 * 8,
|
||||
},
|
||||
system_prompt = require("gp.defaults").code_system_prompt,
|
||||
},
|
||||
{
|
||||
name = "Gemma",
|
||||
chat = true,
|
||||
command = true,
|
||||
provider = "ollama",
|
||||
model = { model = "orieg/gemma3-tools:4b" },
|
||||
system_prompt = require("gp.defaults").code_system_prompt,
|
||||
},
|
||||
{
|
||||
name = "Cogito",
|
||||
chat = false,
|
||||
command = true,
|
||||
provider = "ollama",
|
||||
model = {
|
||||
model = "cogito:14b",
|
||||
num_ctx = 1024 * 8,
|
||||
},
|
||||
system_prompt = require("gp.defaults").code_system_prompt,
|
||||
},
|
||||
{
|
||||
name = "Amoral",
|
||||
chat = true,
|
||||
command = true,
|
||||
provider = "ollama",
|
||||
model = {
|
||||
model = "hf.co/mradermacher/amoral-gemma3-12B-v2-qat-i1-GGUF:Q4_K_M ",
|
||||
num_ctx = 1024 * 8,
|
||||
},
|
||||
system_prompt = require("gp.defaults").code_system_prompt,
|
||||
},
|
||||
{
|
||||
name = "Qwen3-Coder",
|
||||
chat = false,
|
||||
command = true,
|
||||
provider = "ollama",
|
||||
model = {
|
||||
model = "danielsheep/Qwen3-Coder-30B-A3B-Instruct-1M-Unsloth:UD-IQ3_XXS",
|
||||
num_ctx = 1024 * 8,
|
||||
},
|
||||
system_prompt = "Please return ONLY code snippets.\nSTART AND END YOUR ANSWER WITH:\n\n```",
|
||||
},
|
||||
},
|
||||
default_chat_agent = "GPT-OSS",
|
||||
default_command_agent = "Gemma",
|
||||
hooks = {
|
||||
-- GpImplement rewrites the provided selection/range based on comments in it
|
||||
Implement = function(gp, params)
|
||||
local template = "Having following from {{filename}}:\n\n"
|
||||
.. "```{{filetype}}\n{{selection}}\n```\n\n"
|
||||
.. "Please rewrite this according to the contained instructions."
|
||||
.. "\n\nRespond exclusively with the snippet that should replace the selection above."
|
||||
|
||||
local agent = gp.get_command_agent()
|
||||
gp.Prompt(params, gp.Target.append, agent, template)
|
||||
end,
|
||||
UnitTests = function(gp, params)
|
||||
local template = "I have the following code from {{filename}}:\n\n"
|
||||
.. "```{{filetype}}\n{{selection}}\n```\n\n"
|
||||
.. "Please respond by writing table driven unit tests for the code above."
|
||||
local agent = gp.get_command_agent()
|
||||
gp.Prompt(params, gp.Target.vnew, agent, template)
|
||||
end,
|
||||
Explain = function(gp, params)
|
||||
local template = "I have the following code from {{filename}}:\n\n"
|
||||
.. "```{{filetype}}\n{{selection}}\n```\n\n"
|
||||
.. "Please respond by explaining the code above."
|
||||
local agent = gp.get_chat_agent()
|
||||
gp.Prompt(params, gp.Target.popup, agent, template)
|
||||
end,
|
||||
TranslateRu = function(gp, params)
|
||||
local chat_system_prompt = "You are a Translator, please translate to Russian."
|
||||
local agent = gp.get_chat_agent("GPT-OSS")
|
||||
gp.cmd.ChatNew(params, chat_system_prompt, agent)
|
||||
end,
|
||||
TranslateEn = function(gp, params)
|
||||
local chat_system_prompt = "You are a Translator, please translate to English."
|
||||
local agent = gp.get_chat_agent("GPT-OSS")
|
||||
gp.cmd.ChatNew(params, chat_system_prompt, agent)
|
||||
end,
|
||||
CodeReview = function(gp, params)
|
||||
local template = "I have the following code from {{filename}}:\n\n"
|
||||
.. "```{{filetype}}\n{{selection}}\n```\n\n"
|
||||
.. "Please analyze for code smells and suggest improvements."
|
||||
local agent = gp.get_chat_agent()
|
||||
gp.Prompt(params, gp.Target.enew("markdown"), agent, template)
|
||||
end,
|
||||
-- example of making :%GpChatNew a dedicated command which
|
||||
-- opens new chat with the entire current buffer as a context
|
||||
BufferChatNew = function(gp, _)
|
||||
-- call GpChatNew command in range mode on whole buffer
|
||||
vim.api.nvim_command("%" .. gp.config.cmd_prefix .. "ChatNew")
|
||||
end,
|
||||
},
|
||||
})
|
||||
end,
|
||||
})
|
||||
Loading…
Reference in a new issue