tools

package
v0.2.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2026 License: MIT Imports: 40 Imported by: 1

Documentation

Index

Constants

View Source
const MaxReadFileSize = fstools.MaxReadFileSize
View Source
const (
	MaxRegexPatternLength = 200
)

Variables

View Source
var (
	ErrSessionNotFound = errors.New("session not found")
	ErrSessionDone     = errors.New("session already completed")
	ErrPTYNotSupported = errors.New("PTY is not supported on this platform")
	ErrNoStdin         = errors.New("no stdin available")
)

Functions

func GetPreferredWebSearchLanguage added in v0.2.7

func GetPreferredWebSearchLanguage() string

func SetPreferredWebSearchLanguage added in v0.2.7

func SetPreferredWebSearchLanguage(lang string)

func ToolAgentID added in v0.2.7

func ToolAgentID(ctx context.Context) string

func ToolChannel added in v0.2.1

func ToolChannel(ctx context.Context) string

func ToolChatID added in v0.2.1

func ToolChatID(ctx context.Context) string

func ToolMessageID added in v0.2.5

func ToolMessageID(ctx context.Context) string

func ToolReplyToMessageID added in v0.2.5

func ToolReplyToMessageID(ctx context.Context) string

func ToolSessionKey added in v0.2.7

func ToolSessionKey(ctx context.Context) string

func ToolSessionScope added in v0.2.7

func ToolSessionScope(ctx context.Context) *session.SessionScope

func ToolToSchema

func ToolToSchema(tool Tool) map[string]any

func WithToolContext added in v0.2.1

func WithToolContext(ctx context.Context, channel, chatID string) context.Context

func WithToolInboundContext added in v0.2.5

func WithToolInboundContext(
	ctx context.Context,
	channel, chatID, messageID, replyToMessageID string,
) context.Context

func WithToolMessageContext added in v0.2.5

func WithToolMessageContext(ctx context.Context, messageID, replyToMessageID string) context.Context

func WithToolSessionContext added in v0.2.7

func WithToolSessionContext(
	ctx context.Context,
	agentID, sessionKey string,
	scope *session.SessionScope,
) context.Context

Types

type APIKeyIterator added in v0.2.2

type APIKeyIterator = integrationtools.APIKeyIterator

type APIKeyPool added in v0.2.2

type APIKeyPool = integrationtools.APIKeyPool

func NewAPIKeyPool added in v0.2.2

func NewAPIKeyPool(keys []string) *APIKeyPool

type AppendFileTool

type AppendFileTool = fstools.AppendFileTool

func NewAppendFileTool

func NewAppendFileTool(
	workspace string,
	restrict bool,
	allowPaths ...[]*regexp.Regexp,
) *AppendFileTool

type AsyncCallback added in v0.1.2

type AsyncCallback = toolshared.AsyncCallback

type AsyncExecutor added in v0.2.1

type AsyncExecutor = toolshared.AsyncExecutor

type BM25SearchTool added in v0.2.2

type BM25SearchTool struct {
	// contains filtered or unexported fields
}

func NewBM25SearchTool added in v0.2.2

func NewBM25SearchTool(r *ToolRegistry, ttl int, maxSearchResults int) *BM25SearchTool

func (*BM25SearchTool) Description added in v0.2.2

func (t *BM25SearchTool) Description() string

func (*BM25SearchTool) Execute added in v0.2.2

func (t *BM25SearchTool) Execute(ctx context.Context, args map[string]any) *ToolResult

func (*BM25SearchTool) Name added in v0.2.2

func (t *BM25SearchTool) Name() string

func (*BM25SearchTool) Parameters added in v0.2.2

func (t *BM25SearchTool) Parameters() map[string]any

type BaiduSearchProvider added in v0.2.4

type BaiduSearchProvider = integrationtools.BaiduSearchProvider

type BraveSearchProvider added in v0.1.2

type BraveSearchProvider = integrationtools.BraveSearchProvider

type CronTool added in v0.1.1

type CronTool struct {
	// contains filtered or unexported fields
}

CronTool provides scheduling capabilities for the agent

func NewCronTool added in v0.1.1

func NewCronTool(
	cronService *cron.CronService, executor JobExecutor, msgBus *bus.MessageBus, workspace string, restrict bool,
	execTimeout time.Duration, config *config.Config,
) (*CronTool, error)

NewCronTool creates a new CronTool execTimeout: 0 means no timeout, >0 sets the timeout duration

func (*CronTool) Description added in v0.1.1

func (t *CronTool) Description() string

Description returns the tool description

func (*CronTool) Execute added in v0.1.1

func (t *CronTool) Execute(ctx context.Context, args map[string]any) *ToolResult

Execute runs the tool with the given arguments

func (*CronTool) ExecuteJob added in v0.1.1

func (t *CronTool) ExecuteJob(ctx context.Context, job *cron.CronJob) string

ExecuteJob executes a cron job through the agent

func (*CronTool) Name added in v0.1.1

func (t *CronTool) Name() string

Name returns the tool name

func (*CronTool) Parameters added in v0.1.1

func (t *CronTool) Parameters() map[string]any

Parameters returns the tool parameters schema

type DuckDuckGoSearchProvider added in v0.1.2

type DuckDuckGoSearchProvider = integrationtools.DuckDuckGoSearchProvider

type EditFileTool

type EditFileTool = fstools.EditFileTool

func NewEditFileTool

func NewEditFileTool(
	workspace string,
	restrict bool,
	allowPaths ...[]*regexp.Regexp,
) *EditFileTool

type ExecRequest added in v0.2.5

type ExecRequest = toolshared.ExecRequest

type ExecResponse added in v0.2.5

type ExecResponse = toolshared.ExecResponse

type ExecTool

type ExecTool struct {
	// contains filtered or unexported fields
}

func NewExecTool

func NewExecTool(workingDir string, restrict bool, allowPaths ...[]*regexp.Regexp) (*ExecTool, error)

func NewExecToolWithConfig added in v0.2.0

func NewExecToolWithConfig(
	workingDir string,
	restrict bool,
	cfg *config.Config,
	allowPaths ...[]*regexp.Regexp,
) (*ExecTool, error)

func (*ExecTool) Description

func (t *ExecTool) Description() string

func (*ExecTool) Execute

func (t *ExecTool) Execute(ctx context.Context, args map[string]any) *ToolResult

func (*ExecTool) Name

func (t *ExecTool) Name() string

func (*ExecTool) Parameters

func (t *ExecTool) Parameters() map[string]any

func (*ExecTool) SetAllowPatterns

func (t *ExecTool) SetAllowPatterns(patterns []string) error

func (*ExecTool) SetRestrictToWorkspace

func (t *ExecTool) SetRestrictToWorkspace(restrict bool)

func (*ExecTool) SetTimeout

func (t *ExecTool) SetTimeout(timeout time.Duration)

type FindSkillsTool added in v0.2.0

type FindSkillsTool = integrationtools.FindSkillsTool

func NewFindSkillsTool added in v0.2.0

func NewFindSkillsTool(registryMgr *skills.RegistryManager, cache *skills.SearchCache) *FindSkillsTool

type FunctionCall

type FunctionCall = toolshared.FunctionCall

type GLMSearchProvider added in v0.2.1

type GLMSearchProvider = integrationtools.GLMSearchProvider

type HiddenToolDoc added in v0.2.2

type HiddenToolDoc struct {
	Name        string
	Description string
}

HiddenToolDoc is a lightweight representation of a hidden tool for search indexing.

type HiddenToolSnapshot added in v0.2.2

type HiddenToolSnapshot struct {
	Docs    []HiddenToolDoc
	Version uint64
}

HiddenToolSnapshot holds a consistent snapshot of hidden tools and the registry version at which it was taken. Used by BM25SearchTool cache.

type I2CTool added in v0.1.2

type I2CTool = hardwaretools.I2CTool

func NewI2CTool added in v0.1.2

func NewI2CTool() *I2CTool

type InstallSkillTool added in v0.2.0

type InstallSkillTool = integrationtools.InstallSkillTool

func NewInstallSkillTool added in v0.2.0

func NewInstallSkillTool(registryMgr *skills.RegistryManager, workspace string) *InstallSkillTool

type JobExecutor added in v0.1.1

type JobExecutor interface {
	ProcessDirectWithChannel(ctx context.Context, content, sessionKey, channel, chatID string) (string, error)
	// PublishResponseIfNeeded sends response to the outbound bus only when the
	// agent did not already deliver content through the message tool in this round.
	PublishResponseIfNeeded(ctx context.Context, channel, chatID, sessionKey, response string)
}

JobExecutor is the interface for executing cron jobs through the agent

type LLMProvider

type LLMProvider = toolshared.LLMProvider

type LLMResponse

type LLMResponse = toolshared.LLMResponse

type ListDirTool

type ListDirTool = fstools.ListDirTool

func NewListDirTool added in v0.1.1

func NewListDirTool(
	workspace string,
	restrict bool,
	allowPaths ...[]*regexp.Regexp,
) *ListDirTool

type LoadImageTool added in v0.2.5

type LoadImageTool = fstools.LoadImageTool

func NewLoadImageTool added in v0.2.5

func NewLoadImageTool(
	workspace string,
	restrict bool,
	maxFileSize int,
	store media.MediaStore,
	allowPaths ...[]*regexp.Regexp,
) *LoadImageTool

type MCPManager added in v0.2.1

type MCPManager = integrationtools.MCPManager

type MCPTool added in v0.2.1

type MCPTool = integrationtools.MCPTool

func NewMCPTool added in v0.2.1

func NewMCPTool(manager MCPManager, serverName string, tool *mcp.Tool) *MCPTool

type Message

type Message = toolshared.Message

type MessageTool

type MessageTool = integrationtools.MessageTool

func NewMessageTool

func NewMessageTool() *MessageTool

type PerplexitySearchProvider added in v0.2.0

type PerplexitySearchProvider = integrationtools.PerplexitySearchProvider

type ProcessSession added in v0.2.5

type ProcessSession struct {
	ID         string
	PID        int
	Command    string
	PTY        bool
	Background bool
	StartTime  int64
	ExitCode   int
	Status     string
	// contains filtered or unexported fields
}

func (*ProcessSession) GetExitCode added in v0.2.5

func (s *ProcessSession) GetExitCode() int

func (*ProcessSession) GetPtyKeyMode added in v0.2.5

func (s *ProcessSession) GetPtyKeyMode() PtyKeyMode

func (*ProcessSession) GetStatus added in v0.2.5

func (s *ProcessSession) GetStatus() string

func (*ProcessSession) IsDone added in v0.2.5

func (s *ProcessSession) IsDone() bool

func (*ProcessSession) Kill added in v0.2.5

func (s *ProcessSession) Kill() error

func (*ProcessSession) Read added in v0.2.5

func (s *ProcessSession) Read() string

func (*ProcessSession) SetExitCode added in v0.2.5

func (s *ProcessSession) SetExitCode(code int)

func (*ProcessSession) SetPtyKeyMode added in v0.2.5

func (s *ProcessSession) SetPtyKeyMode(mode PtyKeyMode)

func (*ProcessSession) SetStatus added in v0.2.5

func (s *ProcessSession) SetStatus(status string)

func (*ProcessSession) ToSessionInfo added in v0.2.5

func (s *ProcessSession) ToSessionInfo() SessionInfo

func (*ProcessSession) Write added in v0.2.5

func (s *ProcessSession) Write(data string) error

type PtyKeyMode added in v0.2.5

type PtyKeyMode uint8

PtyKeyMode represents arrow key encoding mode for PTY sessions. Programs send smkx/rmkx sequences to switch between CSI and SS3 modes.

const (
	PtyKeyModeCSI PtyKeyMode = iota // triggered by rmkx (\x1b[?1l)
	PtyKeyModeSS3                   // triggered by smkx (\x1b[?1h)
)
const PtyKeyModeNotFound PtyKeyMode = 255

type ReactionCallback added in v0.2.5

type ReactionCallback = integrationtools.ReactionCallback

type ReactionTool added in v0.2.5

type ReactionTool = integrationtools.ReactionTool

func NewReactionTool added in v0.2.5

func NewReactionTool() *ReactionTool

type ReadFileLinesTool added in v0.2.5

type ReadFileLinesTool = fstools.ReadFileLinesTool

func NewReadFileLinesTool added in v0.2.5

func NewReadFileLinesTool(
	workspace string,
	restrict bool,
	maxReadFileSize int,
	allowPaths ...[]*regexp.Regexp,
) *ReadFileLinesTool

type ReadFileTool

type ReadFileTool = fstools.ReadFileTool

func NewReadFileBytesTool added in v0.2.5

func NewReadFileBytesTool(
	workspace string,
	restrict bool,
	maxReadFileSize int,
	allowPaths ...[]*regexp.Regexp,
) *ReadFileTool

func NewReadFileTool added in v0.1.1

func NewReadFileTool(
	workspace string,
	restrict bool,
	maxReadFileSize int,
	allowPaths ...[]*regexp.Regexp,
) *ReadFileTool

type RegexSearchTool added in v0.2.2

type RegexSearchTool struct {
	// contains filtered or unexported fields
}

func NewRegexSearchTool added in v0.2.2

func NewRegexSearchTool(r *ToolRegistry, ttl int, maxSearchResults int) *RegexSearchTool

func (*RegexSearchTool) Description added in v0.2.2

func (t *RegexSearchTool) Description() string

func (*RegexSearchTool) Execute added in v0.2.2

func (t *RegexSearchTool) Execute(ctx context.Context, args map[string]any) *ToolResult

func (*RegexSearchTool) Name added in v0.2.2

func (t *RegexSearchTool) Name() string

func (*RegexSearchTool) Parameters added in v0.2.2

func (t *RegexSearchTool) Parameters() map[string]any

type SPITool added in v0.1.2

type SPITool = hardwaretools.SPITool

func NewSPITool added in v0.1.2

func NewSPITool() *SPITool

type SearXNGSearchProvider added in v0.2.1

type SearXNGSearchProvider = integrationtools.SearXNGSearchProvider

type SearchProvider added in v0.1.2

type SearchProvider = integrationtools.SearchProvider

type SearchResultItem added in v0.2.7

type SearchResultItem = integrationtools.SearchResultItem

type SendCallbackWithContext added in v0.2.7

type SendCallbackWithContext = integrationtools.SendCallbackWithContext

type SendFileTool added in v0.2.1

type SendFileTool = fstools.SendFileTool

func NewSendFileTool added in v0.2.1

func NewSendFileTool(
	workspace string,
	restrict bool,
	maxFileSize int,
	store media.MediaStore,
	allowPaths ...[]*regexp.Regexp,
) *SendFileTool

type SendTTSTool added in v0.2.5

type SendTTSTool = integrationtools.SendTTSTool

func NewSendTTSTool added in v0.2.5

func NewSendTTSTool(provider tts.TTSProvider, store media.MediaStore) *SendTTSTool

type SessionInfo added in v0.2.5

type SessionInfo = toolshared.SessionInfo

type SessionManager added in v0.2.5

type SessionManager struct {
	// contains filtered or unexported fields
}

func NewSessionManager added in v0.2.5

func NewSessionManager() *SessionManager

func (*SessionManager) Add added in v0.2.5

func (sm *SessionManager) Add(session *ProcessSession)

func (*SessionManager) Get added in v0.2.5

func (sm *SessionManager) Get(sessionID string) (*ProcessSession, error)

func (*SessionManager) List added in v0.2.5

func (sm *SessionManager) List() []SessionInfo

func (*SessionManager) Remove added in v0.2.5

func (sm *SessionManager) Remove(sessionID string)

type SogouSearchProvider added in v0.2.7

type SogouSearchProvider = integrationtools.SogouSearchProvider

type SpawnStatusTool added in v0.2.4

type SpawnStatusTool struct {
	// contains filtered or unexported fields
}

SpawnStatusTool reports the status of subagents that were spawned via the spawn tool. It can query a specific task by ID, or list every known task with a summary count broken-down by status.

func NewSpawnStatusTool added in v0.2.4

func NewSpawnStatusTool(manager *SubagentManager) *SpawnStatusTool

NewSpawnStatusTool creates a SpawnStatusTool backed by the given manager.

func (*SpawnStatusTool) Description added in v0.2.4

func (t *SpawnStatusTool) Description() string

func (*SpawnStatusTool) Execute added in v0.2.4

func (t *SpawnStatusTool) Execute(ctx context.Context, args map[string]any) *ToolResult

func (*SpawnStatusTool) Name added in v0.2.4

func (t *SpawnStatusTool) Name() string

func (*SpawnStatusTool) Parameters added in v0.2.4

func (t *SpawnStatusTool) Parameters() map[string]any

type SpawnSubTurnFunc added in v0.2.4

type SpawnSubTurnFunc func(
	ctx context.Context,
	task, label, agentID string,
	tools *ToolRegistry,
	maxTokens int,
	temperature float64,
	hasMaxTokens, hasTemperature bool,
) (*ToolResult, error)

type SpawnTool

type SpawnTool struct {
	// contains filtered or unexported fields
}

func NewSpawnTool

func NewSpawnTool(manager *SubagentManager) *SpawnTool

func (*SpawnTool) Description

func (t *SpawnTool) Description() string

func (*SpawnTool) Execute

func (t *SpawnTool) Execute(ctx context.Context, args map[string]any) *ToolResult

func (*SpawnTool) ExecuteAsync added in v0.2.1

func (t *SpawnTool) ExecuteAsync(
	ctx context.Context,
	args map[string]any,
	cb AsyncCallback,
) *ToolResult

ExecuteAsync implements AsyncExecutor. The callback is passed through to the subagent manager as a call parameter — never stored on the SpawnTool instance.

func (*SpawnTool) Name

func (t *SpawnTool) Name() string

func (*SpawnTool) Parameters

func (t *SpawnTool) Parameters() map[string]any

func (*SpawnTool) SetAllowlistChecker added in v0.2.0

func (t *SpawnTool) SetAllowlistChecker(check func(targetAgentID string) bool)

func (*SpawnTool) SetSpawner added in v0.2.4

func (t *SpawnTool) SetSpawner(spawner SubTurnSpawner)

SetSpawner sets the SubTurnSpawner for direct sub-turn execution.

type SubTurnConfig added in v0.2.4

type SubTurnConfig struct {
	Model              string
	Tools              []Tool
	SystemPrompt       string
	MaxTokens          int
	Temperature        float64
	Async              bool          // true for async (spawn), false for sync (subagent)
	Critical           bool          // continue running after parent finishes gracefully
	Timeout            time.Duration // 0 = use default (5 minutes)
	MaxContextRunes    int           // 0 = auto, -1 = no limit, >0 = explicit limit
	ActualSystemPrompt string
	InitialMessages    []providers.Message
	InitialTokenBudget *atomic.Int64 // Shared token budget for team members; nil if no budget
}

SubTurnConfig holds configuration for spawning a sub-turn.

type SubTurnSpawner added in v0.2.4

type SubTurnSpawner interface {
	SpawnSubTurn(ctx context.Context, cfg SubTurnConfig) (*ToolResult, error)
}

SubTurnSpawner is an interface for spawning sub-turns. This avoids circular dependency between tools and agent packages.

type SubagentManager

type SubagentManager struct {
	// contains filtered or unexported fields
}

func NewSubagentManager

func NewSubagentManager(
	provider providers.LLMProvider,
	defaultModel, workspace string,
) *SubagentManager

func (*SubagentManager) GetTask

func (sm *SubagentManager) GetTask(taskID string) (*SubagentTask, bool)

func (*SubagentManager) GetTaskCopy added in v0.2.4

func (sm *SubagentManager) GetTaskCopy(taskID string) (SubagentTask, bool)

GetTaskCopy returns a copy of the task with the given ID, taken under the read lock, so the caller receives a consistent snapshot with no data race.

func (*SubagentManager) ListTaskCopies added in v0.2.4

func (sm *SubagentManager) ListTaskCopies() []SubagentTask

ListTaskCopies returns value copies of all tasks, taken under the read lock, so callers receive consistent snapshots with no data race.

func (*SubagentManager) ListTasks

func (sm *SubagentManager) ListTasks() []*SubagentTask

func (*SubagentManager) RegisterTool added in v0.1.2

func (sm *SubagentManager) RegisterTool(tool Tool)

RegisterTool registers a tool for subagent execution.

func (*SubagentManager) SetLLMOptions added in v0.2.0

func (sm *SubagentManager) SetLLMOptions(maxTokens int, temperature float64)

SetLLMOptions sets max tokens and temperature for subagent LLM calls.

func (*SubagentManager) SetMediaResolver added in v0.2.5

func (sm *SubagentManager) SetMediaResolver(
	resolver func([]providers.Message) []providers.Message,
)

SetMediaResolver injects a message preprocessor that resolves media:// refs into LLM-ready content before each tool-loop iteration. This is only used by the legacy RunToolLoop fallback path.

func (*SubagentManager) SetSpawner added in v0.2.4

func (sm *SubagentManager) SetSpawner(spawner SpawnSubTurnFunc)

func (*SubagentManager) SetTools added in v0.1.2

func (sm *SubagentManager) SetTools(tools *ToolRegistry)

SetTools sets the tool registry for subagent execution. If not set, subagent will have access to the provided tools.

func (*SubagentManager) Spawn

func (sm *SubagentManager) Spawn(
	ctx context.Context,
	task, label, agentID, originChannel, originChatID string,
	callback AsyncCallback,
) (string, error)

type SubagentTask

type SubagentTask struct {
	ID            string
	Task          string
	Label         string
	AgentID       string
	OriginChannel string
	OriginChatID  string
	Status        string
	Result        string
	Created       int64
}

type SubagentTool added in v0.1.2

type SubagentTool struct {
	// contains filtered or unexported fields
}

SubagentTool executes a subagent task synchronously and returns the result. It directly calls SubTurnSpawner with Async=false for synchronous execution.

func NewSubagentTool added in v0.1.2

func NewSubagentTool(manager *SubagentManager) *SubagentTool

func (*SubagentTool) Description added in v0.1.2

func (t *SubagentTool) Description() string

func (*SubagentTool) Execute added in v0.1.2

func (t *SubagentTool) Execute(ctx context.Context, args map[string]any) *ToolResult

func (*SubagentTool) Name added in v0.1.2

func (t *SubagentTool) Name() string

func (*SubagentTool) Parameters added in v0.1.2

func (t *SubagentTool) Parameters() map[string]any

func (*SubagentTool) SetSpawner added in v0.2.4

func (t *SubagentTool) SetSpawner(spawner SubTurnSpawner)

SetSpawner sets the SubTurnSpawner for direct sub-turn execution.

type TavilySearchProvider added in v0.2.0

type TavilySearchProvider = integrationtools.TavilySearchProvider

type Tool

type Tool = toolshared.Tool

type ToolCall

type ToolCall = toolshared.ToolCall

type ToolDefinition

type ToolDefinition = toolshared.ToolDefinition

type ToolEntry added in v0.2.2

type ToolEntry struct {
	Tool   Tool
	IsCore bool
	TTL    int
}

type ToolFunctionDefinition

type ToolFunctionDefinition = toolshared.ToolFunctionDefinition

type ToolLoopConfig added in v0.1.2

type ToolLoopConfig struct {
	Provider      providers.LLMProvider
	Model         string
	Tools         *ToolRegistry
	MaxIterations int
	LLMOptions    map[string]any

	// MediaResolver resolves media:// refs in messages before each LLM call.
	// This is optional and is mainly used by subagent legacy fallback execution
	// so subagents can reuse the same multimodal media handling as the main loop.
	MediaResolver func(messages []providers.Message) []providers.Message
}

ToolLoopConfig configures the tool execution loop.

type ToolLoopResult added in v0.1.2

type ToolLoopResult struct {
	Content    string
	Iterations int
}

ToolLoopResult contains the result of running the tool loop.

func RunToolLoop added in v0.1.2

func RunToolLoop(
	ctx context.Context,
	config ToolLoopConfig,
	messages []providers.Message,
	channel, chatID string,
) (*ToolLoopResult, error)

RunToolLoop executes the LLM + tool call iteration loop. This is the core agent logic that can be reused by both main agent and subagents.

type ToolRegistry

type ToolRegistry struct {
	// contains filtered or unexported fields
}

func NewToolRegistry

func NewToolRegistry() *ToolRegistry

func (*ToolRegistry) Clone added in v0.2.4

func (r *ToolRegistry) Clone() *ToolRegistry

Clone creates an independent copy of the registry containing the same tool entries (shallow copy of each ToolEntry). This is used to give subagents a snapshot of the parent agent's tools without sharing the same registry — tools registered on the parent after cloning (e.g. spawn, spawn_status) will NOT be visible to the clone, preventing recursive subagent spawning. The version counter is reset to 0 in the clone as it's a new independent registry.

func (*ToolRegistry) Count added in v0.1.1

func (r *ToolRegistry) Count() int

Count returns the number of registered tools.

func (*ToolRegistry) Execute

func (r *ToolRegistry) Execute(ctx context.Context, name string, args map[string]any) *ToolResult

func (*ToolRegistry) ExecuteWithContext added in v0.1.1

func (r *ToolRegistry) ExecuteWithContext(
	ctx context.Context,
	name string,
	args map[string]any,
	channel, chatID string,
	asyncCallback AsyncCallback,
) *ToolResult

ExecuteWithContext executes a tool with channel/chatID context and optional async callback. If the tool implements AsyncExecutor and a non-nil callback is provided, ExecuteAsync is called instead of Execute — the callback is a parameter, never stored as mutable state on the tool.

func (*ToolRegistry) Get

func (r *ToolRegistry) Get(name string) (Tool, bool)

func (*ToolRegistry) GetAll added in v0.2.4

func (r *ToolRegistry) GetAll() []Tool

GetAll returns all registered tools (both core and non-core with TTL > 0). Used by SubTurn to inherit parent's tool set.

func (*ToolRegistry) GetDefinitions

func (r *ToolRegistry) GetDefinitions() []map[string]any

func (*ToolRegistry) GetSummaries added in v0.1.1

func (r *ToolRegistry) GetSummaries() []string

GetSummaries returns human-readable summaries of all registered tools. Returns a slice of "name - description" strings.

func (*ToolRegistry) List added in v0.1.1

func (r *ToolRegistry) List() []string

List returns a list of all registered tool names.

func (*ToolRegistry) PromoteTools added in v0.2.2

func (r *ToolRegistry) PromoteTools(names []string, ttl int)

PromoteTools atomically sets the TTL for multiple non-core tools. This prevents a concurrent TickTTL from decrementing between promotions.

func (*ToolRegistry) Register

func (r *ToolRegistry) Register(tool Tool)

func (*ToolRegistry) RegisterHidden added in v0.2.2

func (r *ToolRegistry) RegisterHidden(tool Tool)

RegisterHidden saves hidden tools (visible only via TTL)

func (*ToolRegistry) SearchBM25 added in v0.2.2

func (r *ToolRegistry) SearchBM25(query string, maxSearchResults int) []ToolSearchResult

SearchBM25 ranks hidden tools against query using BM25 via utils.BM25Engine. This non-cached variant rebuilds the engine on every call. Used by tests and any code that doesn't hold a BM25SearchTool instance.

func (*ToolRegistry) SearchRegex added in v0.2.2

func (r *ToolRegistry) SearchRegex(pattern string, maxSearchResults int) ([]ToolSearchResult, error)

func (*ToolRegistry) SetMediaStore added in v0.2.4

func (r *ToolRegistry) SetMediaStore(store media.MediaStore)

SetMediaStore injects a MediaStore into all registered tools that can consume it, and remembers it for future registrations.

func (*ToolRegistry) SnapshotHiddenTools added in v0.2.2

func (r *ToolRegistry) SnapshotHiddenTools() HiddenToolSnapshot

SnapshotHiddenTools returns all non-core tools and the current registry version under a single read-lock, guaranteeing consistency between the two values.

func (*ToolRegistry) TickTTL added in v0.2.2

func (r *ToolRegistry) TickTTL()

TickTTL decreases TTL only for non-core tools

func (*ToolRegistry) ToProviderDefs added in v0.1.2

func (r *ToolRegistry) ToProviderDefs() []providers.ToolDefinition

ToProviderDefs converts tool definitions to provider-compatible format. This is the format expected by LLM provider APIs.

func (*ToolRegistry) Version added in v0.2.2

func (r *ToolRegistry) Version() uint64

Version returns the current registry version (atomically).

type ToolResult added in v0.1.2

type ToolResult = toolshared.ToolResult

func AsyncResult added in v0.1.2

func AsyncResult(forLLM string) *ToolResult

func ErrorResult added in v0.1.2

func ErrorResult(message string) *ToolResult

func MediaResult added in v0.2.0

func MediaResult(forLLM string, mediaRefs []string) *ToolResult

func NewToolResult added in v0.1.2

func NewToolResult(forLLM string) *ToolResult

func SilentResult added in v0.1.2

func SilentResult(forLLM string) *ToolResult

func UserResult added in v0.1.2

func UserResult(content string) *ToolResult

type ToolSearchResult added in v0.2.2

type ToolSearchResult struct {
	Name        string `json:"name"`
	Description string `json:"description"`
}

ToolSearchResult represents the result returned to the LLM. Parameters are omitted from the JSON response to save context tokens; the LLM will see full schemas via ToProviderDefs after promotion.

type UsageInfo

type UsageInfo = toolshared.UsageInfo

type WebFetchTool

type WebFetchTool = integrationtools.WebFetchTool

func NewWebFetchTool

func NewWebFetchTool(maxChars int, format string, fetchLimitBytes int64) (*WebFetchTool, error)

func NewWebFetchToolWithConfig added in v0.2.4

func NewWebFetchToolWithConfig(
	maxChars int,
	proxy string,
	format string,
	fetchLimitBytes int64,
	privateHostWhitelist []string,
) (*WebFetchTool, error)

func NewWebFetchToolWithProxy added in v0.2.0

func NewWebFetchToolWithProxy(
	maxChars int,
	proxy string,
	format string,
	fetchLimitBytes int64,
	privateHostWhitelist []string,
) (*WebFetchTool, error)

type WebSearchTool

type WebSearchTool = integrationtools.WebSearchTool

func NewWebSearchTool

func NewWebSearchTool(opts WebSearchToolOptions) (*WebSearchTool, error)

type WebSearchToolOptions added in v0.1.2

type WebSearchToolOptions = integrationtools.WebSearchToolOptions

type WriteFileTool

type WriteFileTool = fstools.WriteFileTool

func NewWriteFileTool added in v0.1.1

func NewWriteFileTool(
	workspace string,
	restrict bool,
	allowPaths ...[]*regexp.Regexp,
) *WriteFileTool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL