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
local M = {}
---@class avante.Config
---@field custom_tools AvanteLLMToolPublic[]
M._defaults = {
debug = false,
---@alias Provider "claude" | "openai" | "azure" | "gemini" | "vertex" | "cohere" | "copilot" | string
@@ -409,6 +410,8 @@ M._defaults = {
throttle = 600,
},
disabled_tools = {}, ---@type string[]
---@type AvanteLLMToolPublic[]
custom_tools = {},
}
---@type avante.Config

View File

@@ -573,8 +573,10 @@ end
---@return AvanteLLMTool[]
function M.get_tools()
---@type AvanteLLMTool[]
local unfiltered_tools = vim.list_extend(vim.list_extend({}, M._tools), Config.custom_tools)
return vim
.iter(M._tools)
.iter(unfiltered_tools)
:filter(function(tool) ---@param tool AvanteLLMTool
-- Always disable tools that are explicitly disabled
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 enabled? fun(): boolean
---@class AvanteLLMToolPublic : AvanteLLMTool
---@field func AvanteLLMToolFunc
---@class AvanteLLMToolParam
---@field type string
---@field type 'table'
---@field fields AvanteLLMToolParamField[]
---@class AvanteLLMToolParamField
---@field name string
---@field description string
---@field type string
---@field type 'string' | 'integer'
---@field optional? boolean
---@class AvanteLLMToolReturn
---@field name string
---@field description string
---@field type string
---@field type 'string' | 'string[]' | 'boolean'
---@field optional? boolean