feat: add custom tools config (#1461)

* chore: add string literal types for tool params, and returns

* feat: add custom tools config
This commit is contained in:
Peter Cardenas
2025-03-02 23:06:13 -08:00
committed by GitHub
parent 6bbf9b3c42
commit de1e6a4212
3 changed files with 12 additions and 4 deletions

View File

@@ -17,6 +17,7 @@ local Utils = require("avante.utils")
---@class avante.CoreConfig: avante.Config ---@class avante.CoreConfig: avante.Config
local M = {} local M = {}
---@class avante.Config ---@class avante.Config
---@field custom_tools AvanteLLMToolPublic[]
M._defaults = { M._defaults = {
debug = false, debug = false,
---@alias Provider "claude" | "openai" | "azure" | "gemini" | "vertex" | "cohere" | "copilot" | string ---@alias Provider "claude" | "openai" | "azure" | "gemini" | "vertex" | "cohere" | "copilot" | string
@@ -409,6 +410,8 @@ M._defaults = {
throttle = 600, throttle = 600,
}, },
disabled_tools = {}, ---@type string[] disabled_tools = {}, ---@type string[]
---@type AvanteLLMToolPublic[]
custom_tools = {},
} }
---@type avante.Config ---@type avante.Config

View File

@@ -573,8 +573,10 @@ end
---@return AvanteLLMTool[] ---@return AvanteLLMTool[]
function M.get_tools() function M.get_tools()
---@type AvanteLLMTool[]
local unfiltered_tools = vim.list_extend(vim.list_extend({}, M._tools), Config.custom_tools)
return vim return vim
.iter(M._tools) .iter(unfiltered_tools)
:filter(function(tool) ---@param tool AvanteLLMTool :filter(function(tool) ---@param tool AvanteLLMTool
-- Always disable tools that are explicitly disabled -- Always disable tools that are explicitly disabled
if vim.tbl_contains(Config.disabled_tools, tool.name) then return false end if vim.tbl_contains(Config.disabled_tools, tool.name) then return false end

View File

@@ -328,18 +328,21 @@ vim.g.avante_login = vim.g.avante_login
---@field returns AvanteLLMToolReturn[] ---@field returns AvanteLLMToolReturn[]
---@field enabled? fun(): boolean ---@field enabled? fun(): boolean
---@class AvanteLLMToolPublic : AvanteLLMTool
---@field func AvanteLLMToolFunc
---@class AvanteLLMToolParam ---@class AvanteLLMToolParam
---@field type string ---@field type 'table'
---@field fields AvanteLLMToolParamField[] ---@field fields AvanteLLMToolParamField[]
---@class AvanteLLMToolParamField ---@class AvanteLLMToolParamField
---@field name string ---@field name string
---@field description string ---@field description string
---@field type string ---@field type 'string' | 'integer'
---@field optional? boolean ---@field optional? boolean
---@class AvanteLLMToolReturn ---@class AvanteLLMToolReturn
---@field name string ---@field name string
---@field description string ---@field description string
---@field type string ---@field type 'string' | 'string[]' | 'boolean'
---@field optional? boolean ---@field optional? boolean