tools

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 16, 2026 License: MIT Imports: 44 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxRegexPatternLength = 200
	RegexSearchToolName   = "tool_search_tool_regex"
	BM25SearchToolName    = "tool_search_tool_bm25"
)
View Source
const (
	ToolPromptLayerCapability = toolshared.ToolPromptLayerCapability
	ToolPromptSlotTooling     = toolshared.ToolPromptSlotTooling
	ToolPromptSlotMCP         = toolshared.ToolPromptSlotMCP
	ToolPromptSourceRegistry  = toolshared.ToolPromptSourceRegistry
	ToolPromptSourceDiscovery = toolshared.ToolPromptSourceDiscovery
)
View Source
const MaxReadFileSize = fstools.MaxReadFileSize

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 ResolveWebSearchProviderName

func ResolveWebSearchProviderName(opts WebSearchToolOptions, query string) (string, error)

func ToolAgentID

func ToolAgentID(ctx context.Context) string

func ToolChannel

func ToolChannel(ctx context.Context) string

func ToolChatID

func ToolChatID(ctx context.Context) string

func ToolMessageID

func ToolMessageID(ctx context.Context) string

func ToolReplyToMessageID

func ToolReplyToMessageID(ctx context.Context) string

func ToolSessionKey

func ToolSessionKey(ctx context.Context) string

func ToolSessionScope

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

func ToolToSchema

func ToolToSchema(tool Tool) map[string]any

func WebSearchProviderReady

func WebSearchProviderReady(opts WebSearchToolOptions, name string) bool

func WithToolContext

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

func WithToolInboundContext

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

func WithToolMessageContext

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

func WithToolSessionContext

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

Types

type APIKeyIterator

type APIKeyIterator = integrationtools.APIKeyIterator

type APIKeyPool

type APIKeyPool = integrationtools.APIKeyPool

func NewAPIKeyPool

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

type AsyncCallback = toolshared.AsyncCallback

type AsyncExecutor

type AsyncExecutor = toolshared.AsyncExecutor

type BM25SearchTool

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

func NewBM25SearchTool

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

func (*BM25SearchTool) Description

func (t *BM25SearchTool) Description() string

func (*BM25SearchTool) Execute

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

func (*BM25SearchTool) Name

func (t *BM25SearchTool) Name() string

func (*BM25SearchTool) Parameters

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

func (*BM25SearchTool) PromptMetadata

func (t *BM25SearchTool) PromptMetadata() PromptMetadata

type CronTool

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

CronTool provides scheduling capabilities for the agent

func NewCronTool

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

func (t *CronTool) Description() string

Description returns the tool description

func (*CronTool) Execute

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

Execute runs the tool with the given arguments

func (*CronTool) ExecuteJob

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

ExecuteJob executes a cron job through the agent

func (*CronTool) Name

func (t *CronTool) Name() string

Name returns the tool name

func (*CronTool) Parameters

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

Parameters returns the tool parameters schema

type DelegateTool

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

DelegateTool delegates a task to a specific named agent and waits for the result. Unlike spawn (async, fire-and-forget) or subagent (sync but generic), delegate targets a named agent and runs the task using that agent's own workspace, model, and tools.

func NewDelegateTool

func NewDelegateTool() *DelegateTool

func (*DelegateTool) Description

func (t *DelegateTool) Description() string

func (*DelegateTool) Execute

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

func (*DelegateTool) Name

func (t *DelegateTool) Name() string

func (*DelegateTool) Parameters

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

func (*DelegateTool) SetAllowlistChecker

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

func (*DelegateTool) SetSelfAgentID

func (t *DelegateTool) SetSelfAgentID(id string)

func (*DelegateTool) SetSpawner

func (t *DelegateTool) SetSpawner(spawner SubTurnSpawner)

type EditFileTool

type EditFileTool = fstools.EditFileTool

func NewEditFileTool

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

type ExecRequest

type ExecRequest = toolshared.ExecRequest

type ExecResponse

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

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

type FindSkillsTool = integrationtools.FindSkillsTool

func NewFindSkillsTool

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

type FunctionCall

type FunctionCall = toolshared.FunctionCall

type GLMSearchProvider

type GLMSearchProvider = integrationtools.GLMSearchProvider

type HiddenToolDoc

type HiddenToolDoc struct {
	Name        string
	Description string
}

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

type HiddenToolSnapshot

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

type I2CTool = hardwaretools.I2CTool

func NewI2CTool

func NewI2CTool() *I2CTool

type InstallSkillTool

type InstallSkillTool = integrationtools.InstallSkillTool

func NewInstallSkillTool

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

type JobExecutor

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

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

type LoadImageTool

type LoadImageTool = fstools.LoadImageTool

func NewLoadImageTool

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

type MCPManager

type MCPManager = integrationtools.MCPManager

type MCPTool

type MCPTool = integrationtools.MCPTool

func NewMCPTool

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 ProcessSession

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

func (s *ProcessSession) GetExitCode() int

func (*ProcessSession) GetPtyKeyMode

func (s *ProcessSession) GetPtyKeyMode() PtyKeyMode

func (*ProcessSession) GetStatus

func (s *ProcessSession) GetStatus() string

func (*ProcessSession) IsDone

func (s *ProcessSession) IsDone() bool

func (*ProcessSession) Kill

func (s *ProcessSession) Kill() error

func (*ProcessSession) Read

func (s *ProcessSession) Read() string

func (*ProcessSession) SetExitCode

func (s *ProcessSession) SetExitCode(code int)

func (*ProcessSession) SetPtyKeyMode

func (s *ProcessSession) SetPtyKeyMode(mode PtyKeyMode)

func (*ProcessSession) SetStatus

func (s *ProcessSession) SetStatus(status string)

func (*ProcessSession) ToSessionInfo

func (s *ProcessSession) ToSessionInfo() SessionInfo

func (*ProcessSession) Write

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

type PromptMetadata

type PromptMetadata = toolshared.PromptMetadata

type PromptMetadataProvider

type PromptMetadataProvider = toolshared.PromptMetadataProvider

type PtyKeyMode

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

type ReactionCallback = integrationtools.ReactionCallback

type ReactionTool

type ReactionTool = integrationtools.ReactionTool

func NewReactionTool

func NewReactionTool() *ReactionTool

type ReadFileLinesTool

type ReadFileLinesTool = fstools.ReadFileLinesTool

func NewReadFileLinesTool

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

type ReadFileTool

type ReadFileTool = fstools.ReadFileTool

func NewReadFileBytesTool

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

func NewReadFileTool

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

type RegexSearchTool

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

func NewRegexSearchTool

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

func (*RegexSearchTool) Description

func (t *RegexSearchTool) Description() string

func (*RegexSearchTool) Execute

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

func (*RegexSearchTool) Name

func (t *RegexSearchTool) Name() string

func (*RegexSearchTool) Parameters

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

func (*RegexSearchTool) PromptMetadata

func (t *RegexSearchTool) PromptMetadata() PromptMetadata

type SPITool

type SPITool = hardwaretools.SPITool

func NewSPITool

func NewSPITool() *SPITool

type SearchProvider

type SearchProvider = integrationtools.SearchProvider

type SearchResultItem

type SearchResultItem = integrationtools.SearchResultItem

type SendFileTool

type SendFileTool = fstools.SendFileTool

func NewSendFileTool

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

type SendTTSTool

type SendTTSTool = integrationtools.SendTTSTool

func NewSendTTSTool

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

type SerialTool

type SerialTool = hardwaretools.SerialTool

func NewSerialTool

func NewSerialTool() *SerialTool

type SessionInfo

type SessionInfo = toolshared.SessionInfo

type SessionManager

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

func NewSessionManager

func NewSessionManager() *SessionManager

func (*SessionManager) Add

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

func (*SessionManager) Get

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

func (*SessionManager) List

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

func (*SessionManager) Remove

func (sm *SessionManager) Remove(sessionID string)

func (*SessionManager) Stop

func (sm *SessionManager) Stop()

Stop shuts down the background cleanup goroutine. Safe to call multiple times from concurrent goroutines. After Stop returns, the SessionManager is still usable — only the cleanup goroutine is terminated.

type SpawnStatusTool

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

func NewSpawnStatusTool(manager *SubagentManager) *SpawnStatusTool

NewSpawnStatusTool creates a SpawnStatusTool backed by the given manager.

func (*SpawnStatusTool) Description

func (t *SpawnStatusTool) Description() string

func (*SpawnStatusTool) Execute

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

func (*SpawnStatusTool) Name

func (t *SpawnStatusTool) Name() string

func (*SpawnStatusTool) Parameters

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

type SpawnSubTurnFunc

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

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

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

func (*SpawnTool) SetSpawner

func (t *SpawnTool) SetSpawner(spawner SubTurnSpawner)

SetSpawner sets the SubTurnSpawner for direct sub-turn execution.

type SubTurnConfig

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
	TargetAgentID      string        // If set, run as this agent (its workspace, model, tools)
}

SubTurnConfig holds configuration for spawning a sub-turn.

type SubTurnSpawner

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

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

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

func (sm *SubagentManager) RegisterTool(tool Tool)

RegisterTool registers a tool for subagent execution.

func (*SubagentManager) SetLLMOptions

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

SetLLMOptions sets max tokens and temperature for subagent LLM calls.

func (*SubagentManager) SetMediaResolver

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

func (sm *SubagentManager) SetSpawner(spawner SpawnSubTurnFunc)

func (*SubagentManager) SetTools

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

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

func NewSubagentTool(manager *SubagentManager) *SubagentTool

func (*SubagentTool) Description

func (t *SubagentTool) Description() string

func (*SubagentTool) Execute

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

func (*SubagentTool) Name

func (t *SubagentTool) Name() string

func (*SubagentTool) Parameters

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

func (*SubagentTool) SetSpawner

func (t *SubagentTool) SetSpawner(spawner SubTurnSpawner)

SetSpawner sets the SubTurnSpawner for direct sub-turn execution.

type Tool

type Tool = toolshared.Tool

type ToolCall

type ToolCall = toolshared.ToolCall

type ToolDefinition

type ToolDefinition = toolshared.ToolDefinition

type ToolEntry

type ToolEntry struct {
	Tool   Tool
	IsCore bool
	TTL    int
}

type ToolFunctionDefinition

type ToolFunctionDefinition = toolshared.ToolFunctionDefinition

type ToolLoopConfig

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

type ToolLoopResult struct {
	Content    string
	Iterations int
}

ToolLoopResult contains the result of running the tool loop.

func RunToolLoop

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

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

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

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

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

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

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

func (*ToolRegistry) HasRegistered

func (r *ToolRegistry) HasRegistered(name string) bool

HasRegistered reports whether a tool name is present in the registry, including hidden tools whose TTL is currently zero.

func (*ToolRegistry) List

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

List returns a list of all registered tool names.

func (*ToolRegistry) PromoteTools

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

func (r *ToolRegistry) RegisterHidden(tool Tool)

RegisterHidden saves hidden tools (visible only via TTL)

func (*ToolRegistry) SearchBM25

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

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

func (*ToolRegistry) SetAllowlist

func (r *ToolRegistry) SetAllowlist(names []string)

SetAllowlist restricts registrations to the provided runtime tool names. A nil slice means "allow all". An empty-but-non-nil slice means "allow none".

func (*ToolRegistry) SetMediaStore

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

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

func (r *ToolRegistry) TickTTL()

TickTTL decreases TTL only for non-core tools

func (*ToolRegistry) ToProviderDefs

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

func (r *ToolRegistry) Version() uint64

Version returns the current registry version (atomically).

type ToolResult

type ToolResult = toolshared.ToolResult

func AsyncResult

func AsyncResult(forLLM string) *ToolResult

func DiffResult

func DiffResult(path string, before, after []byte) *ToolResult

func ErrorResult

func ErrorResult(message string) *ToolResult

func MediaResult

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

func NewToolResult

func NewToolResult(forLLM string) *ToolResult

func SilentResult

func SilentResult(forLLM string) *ToolResult

func UserResult

func UserResult(content string) *ToolResult

type ToolSearchResult

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

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

func NewWebFetchToolWithProxy

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

type WebSearchToolOptions = integrationtools.WebSearchToolOptions

func WebSearchToolOptionsFromConfig

func WebSearchToolOptionsFromConfig(cfg *config.Config) WebSearchToolOptions

type WriteFileTool

type WriteFileTool = fstools.WriteFileTool

func NewWriteFileTool

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