aboutsummaryrefslogtreecommitdiffstats
path: root/lua/plugins/codecompanion.lua
diff options
context:
space:
mode:
authorElvis Claros Castro <elvis@claros.ar>2025-01-09 10:33:28 -0300
committerElvis Claros Castro <elvis@claros.ar>2025-01-09 10:33:28 -0300
commitf27115f7c053d1d8e4b2af4b7506210fffc51c95 (patch)
tree7eb8b43a6b4f9bb5555eeec9073cf339ccb580b6 /lua/plugins/codecompanion.lua
parent4439edc5a91582f570551e5e849347a80bde40ee (diff)
downloadnvim-conf-f27115f7c053d1d8e4b2af4b7506210fffc51c95.tar.gz
nvim-conf-f27115f7c053d1d8e4b2af4b7506210fffc51c95.zip
Feat: agrego más plugins
Diffstat (limited to 'lua/plugins/codecompanion.lua')
-rw-r--r--lua/plugins/codecompanion.lua146
1 files changed, 135 insertions, 11 deletions
diff --git a/lua/plugins/codecompanion.lua b/lua/plugins/codecompanion.lua
index a98a7af..324f4d2 100644
--- a/lua/plugins/codecompanion.lua
+++ b/lua/plugins/codecompanion.lua
@@ -1,15 +1,139 @@
+local IS_DEV = false
return {
- "olimorris/codecompanion.nvim",
- dependencies = {
- "nvim-lua/plenary.nvim",
+ {
"nvim-treesitter/nvim-treesitter",
- "hrsh7th/nvim-cmp", -- Optional: For using slash commands and variables in the chat buffer
- "nvim-telescope/telescope.nvim", -- Optional: For using slash commands
- {
- "MeanderingProgrammer/render-markdown.nvim",
- ft = { "markdown", "codecompanion" },
- }, -- Optional: For prettier markdown rendering
- { "stevearc/dressing.nvim", opts = {} }, -- Optional: Improves `vim.ui.select`
+ opts = { ensure_installed = { "yaml", "markdown" } },
+ },
+ {
+ dir = IS_DEV and "~/Projects/research/codecompanion.nvim" or nil,
+ "olimorris/codecompanion.nvim",
+ dependencies = {
+ "nvim-lua/plenary.nvim",
+ "nvim-treesitter/nvim-treesitter",
+ "ibhagwan/fzf-lua", -- For fzf provider, file or buffer picker
+ "jellydn/spinner.nvim", -- Show loading spinner when request is started
+ },
+ opts = {
+ adapters = {
+ ollama = function()
+ return require("codecompanion.adapters").extend("ollama", {
+ name = "tinyllama",
+ env = {
+ url = "http://127.0.0.1:11434",
+ -- api_key = "",
+ },
+ headers = {
+ ["Content-Type"] = "application/json",
+ -- ["Authorization"] = "Bearer ${api_key}",
+ },
+ parameters = {
+ sync = true,
+ },
+ schema = {
+ model = {
+ default = "tinyllama:1.1b",
+ },
+ },
+ })
+ end,
+ anthropic = function()
+ return require("codecompanion.adapters").extend("anthropic", {
+ env = {
+ api_key = "cmd:echo $ANTHROPIC_API_KEY",
+ },
+ schema = {
+ model = {
+ default = "claude-3-opus-20240229",
+ },
+ },
+ })
+ end,
+ copilot = function()
+ return require("codecompanion.adapters").extend("copilot", {
+ schema = {
+ model = {
+ default = "claude-3.5-sonnet",
+ },
+ },
+ })
+ end,
+ gemini = function()
+ return require("codecompanion.adapters").extend("gemini", {
+ env = {
+ api_key = "cmd:op read op://personal/Gemini_API/credential --no-newline",
+ },
+ })
+ end,
+ openai = function()
+ return require("codecompanion.adapters").extend("openai", {
+ env = {
+ api_key = "cmd:echo $OPENAI_API_KEY",
+ chat_url = "/v1/chat/completions",
+ url = "https://api.openai.com",
+ },
+ schema = {
+ model = {
+ default = function()
+ return "gpt-4o-mini"
+ end,
+ },
+ },
+ })
+ end,
+ openai_compatible = function()
+ return require("codecompanion.adapters").extend("openai_compatible", {
+ env = {
+ api_key = "cmd:echo $OPENAI_API_KEY",
+ chat_url = "/v1/chat/completions",
+ url = "http://127.0.0.1:8080",
+ },
+ headers = {
+ ["Content-Type"] = "application/json",
+ },
+ schema = {
+ model = {
+ default = function()
+ return "davinci"
+ end,
+ },
+ },
+ })
+ end,
+ xai = function()
+ return require("codecompanion.adapters").extend("xai", {
+ env = {
+ api_key = "cmd:op read op://personal/xAI_API/credential --no-newline",
+ },
+ })
+ end,
+ },
+ strategies = {
+ chat = {
+ adapter = "copilot",
+ -- roles = { llm = " Copilot Chat", user = "IT Man" },
+ },
+ inline = { adapter = "copilot" },
+ agent = { adapter = "copilot" },
+ },
+ },
+ config = function(_, options)
+ require("codecompanion").setup(options)
+
+ -- Show loading spinner when request is started
+ local spinner = require("spinner")
+ local group = vim.api.nvim_create_augroup("CodeCompanionHooks", {})
+ vim.api.nvim_create_autocmd({ "User" }, {
+ pattern = "CodeCompanionRequest*",
+ group = group,
+ callback = function(request)
+ if request.match == "CodeCompanionRequestStarted" then
+ spinner.show()
+ end
+ if request.match == "CodeCompanionRequestFinished" then
+ spinner.hide()
+ end
+ end,
+ })
+ end,
},
- config = true,
}