Documentation
¶
Index ¶
- Constants
- Variables
- func GetPreferredWebSearchLanguage() string
- func SetPreferredWebSearchLanguage(lang string)
- func ToolAgentID(ctx context.Context) string
- func ToolChannel(ctx context.Context) string
- func ToolChatID(ctx context.Context) string
- func ToolMessageID(ctx context.Context) string
- func ToolReplyToMessageID(ctx context.Context) string
- func ToolSessionKey(ctx context.Context) string
- func ToolSessionScope(ctx context.Context) *session.SessionScope
- func ToolToSchema(tool Tool) map[string]any
- func WithToolContext(ctx context.Context, channel, chatID string) context.Context
- func WithToolInboundContext(ctx context.Context, channel, chatID, messageID, replyToMessageID string) context.Context
- func WithToolMessageContext(ctx context.Context, messageID, replyToMessageID string) context.Context
- func WithToolSessionContext(ctx context.Context, agentID, sessionKey string, scope *session.SessionScope) context.Context
- type APIKeyIterator
- type APIKeyPool
- type AppendFileTool
- type AsyncCallback
- type AsyncExecutor
- type BM25SearchTool
- type BaiduSearchProvider
- type BraveSearchProvider
- type CronTool
- type DuckDuckGoSearchProvider
- type EditFileTool
- type ExecRequest
- type ExecResponse
- type ExecTool
- func (t *ExecTool) Description() string
- func (t *ExecTool) Execute(ctx context.Context, args map[string]any) *ToolResult
- func (t *ExecTool) Name() string
- func (t *ExecTool) Parameters() map[string]any
- func (t *ExecTool) SetAllowPatterns(patterns []string) error
- func (t *ExecTool) SetRestrictToWorkspace(restrict bool)
- func (t *ExecTool) SetTimeout(timeout time.Duration)
- type FindSkillsTool
- type FunctionCall
- type GLMSearchProvider
- type HiddenToolDoc
- type HiddenToolSnapshot
- type I2CTool
- type InstallSkillTool
- type JobExecutor
- type LLMProvider
- type LLMResponse
- type ListDirTool
- type LoadImageTool
- type MCPManager
- type MCPTool
- type Message
- type MessageTool
- type PerplexitySearchProvider
- type ProcessSession
- func (s *ProcessSession) GetExitCode() int
- func (s *ProcessSession) GetPtyKeyMode() PtyKeyMode
- func (s *ProcessSession) GetStatus() string
- func (s *ProcessSession) IsDone() bool
- func (s *ProcessSession) Kill() error
- func (s *ProcessSession) Read() string
- func (s *ProcessSession) SetExitCode(code int)
- func (s *ProcessSession) SetPtyKeyMode(mode PtyKeyMode)
- func (s *ProcessSession) SetStatus(status string)
- func (s *ProcessSession) ToSessionInfo() SessionInfo
- func (s *ProcessSession) Write(data string) error
- type PtyKeyMode
- type ReactionCallback
- type ReactionTool
- type ReadFileLinesTool
- type ReadFileTool
- type RegexSearchTool
- type SPITool
- type SearXNGSearchProvider
- type SearchProvider
- type SearchResultItem
- type SendCallbackWithContext
- type SendFileTool
- type SendTTSTool
- type SessionInfo
- type SessionManager
- type SogouSearchProvider
- type SpawnStatusTool
- type SpawnSubTurnFunc
- type SpawnTool
- func (t *SpawnTool) Description() string
- func (t *SpawnTool) Execute(ctx context.Context, args map[string]any) *ToolResult
- func (t *SpawnTool) ExecuteAsync(ctx context.Context, args map[string]any, cb AsyncCallback) *ToolResult
- func (t *SpawnTool) Name() string
- func (t *SpawnTool) Parameters() map[string]any
- func (t *SpawnTool) SetAllowlistChecker(check func(targetAgentID string) bool)
- func (t *SpawnTool) SetSpawner(spawner SubTurnSpawner)
- type SubTurnConfig
- type SubTurnSpawner
- type SubagentManager
- func (sm *SubagentManager) GetTask(taskID string) (*SubagentTask, bool)
- func (sm *SubagentManager) GetTaskCopy(taskID string) (SubagentTask, bool)
- func (sm *SubagentManager) ListTaskCopies() []SubagentTask
- func (sm *SubagentManager) ListTasks() []*SubagentTask
- func (sm *SubagentManager) RegisterTool(tool Tool)
- func (sm *SubagentManager) SetLLMOptions(maxTokens int, temperature float64)
- func (sm *SubagentManager) SetMediaResolver(resolver func([]providers.Message) []providers.Message)
- func (sm *SubagentManager) SetSpawner(spawner SpawnSubTurnFunc)
- func (sm *SubagentManager) SetTools(tools *ToolRegistry)
- func (sm *SubagentManager) Spawn(ctx context.Context, task, label, agentID, originChannel, originChatID string, ...) (string, error)
- type SubagentTask
- type SubagentTool
- type TavilySearchProvider
- type Tool
- type ToolCall
- type ToolDefinition
- type ToolEntry
- type ToolFunctionDefinition
- type ToolLoopConfig
- type ToolLoopResult
- type ToolRegistry
- func (r *ToolRegistry) Clone() *ToolRegistry
- func (r *ToolRegistry) Count() int
- func (r *ToolRegistry) Execute(ctx context.Context, name string, args map[string]any) *ToolResult
- func (r *ToolRegistry) ExecuteWithContext(ctx context.Context, name string, args map[string]any, channel, chatID string, ...) *ToolResult
- func (r *ToolRegistry) Get(name string) (Tool, bool)
- func (r *ToolRegistry) GetAll() []Tool
- func (r *ToolRegistry) GetDefinitions() []map[string]any
- func (r *ToolRegistry) GetSummaries() []string
- func (r *ToolRegistry) List() []string
- func (r *ToolRegistry) PromoteTools(names []string, ttl int)
- func (r *ToolRegistry) Register(tool Tool)
- func (r *ToolRegistry) RegisterHidden(tool Tool)
- func (r *ToolRegistry) SearchBM25(query string, maxSearchResults int) []ToolSearchResult
- func (r *ToolRegistry) SearchRegex(pattern string, maxSearchResults int) ([]ToolSearchResult, error)
- func (r *ToolRegistry) SetMediaStore(store media.MediaStore)
- func (r *ToolRegistry) SnapshotHiddenTools() HiddenToolSnapshot
- func (r *ToolRegistry) TickTTL()
- func (r *ToolRegistry) ToProviderDefs() []providers.ToolDefinition
- func (r *ToolRegistry) Version() uint64
- type ToolResult
- type ToolSearchResult
- type UsageInfo
- type WebFetchTool
- func NewWebFetchTool(maxChars int, format string, fetchLimitBytes int64) (*WebFetchTool, error)
- func NewWebFetchToolWithConfig(maxChars int, proxy string, format string, fetchLimitBytes int64, ...) (*WebFetchTool, error)
- func NewWebFetchToolWithProxy(maxChars int, proxy string, format string, fetchLimitBytes int64, ...) (*WebFetchTool, error)
- type WebSearchTool
- type WebSearchToolOptions
- type WriteFileTool
Constants ¶
const MaxReadFileSize = fstools.MaxReadFileSize
const (
MaxRegexPatternLength = 200
)
Variables ¶
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 ToolChannel ¶ added in v0.2.1
func ToolChatID ¶ added in v0.2.1
func ToolMessageID ¶ added in v0.2.5
func ToolReplyToMessageID ¶ added in v0.2.5
func ToolSessionKey ¶ added in v0.2.7
func ToolSessionScope ¶ added in v0.2.7
func ToolSessionScope(ctx context.Context) *session.SessionScope
func ToolToSchema ¶
func WithToolContext ¶ added in v0.2.1
func WithToolInboundContext ¶ added in v0.2.5
func WithToolMessageContext ¶ added in v0.2.5
func WithToolSessionContext ¶ added in v0.2.7
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
Description returns the tool description
func (*CronTool) ExecuteJob ¶ added in v0.1.1
ExecuteJob executes a cron job through the agent
func (*CronTool) Parameters ¶ added in v0.1.1
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 NewExecToolWithConfig ¶ added in v0.2.0
func (*ExecTool) Description ¶
func (*ExecTool) Parameters ¶
func (*ExecTool) SetAllowPatterns ¶
func (*ExecTool) SetRestrictToWorkspace ¶
func (*ExecTool) SetTimeout ¶
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
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
type ReadFileTool ¶
type ReadFileTool = fstools.ReadFileTool
func NewReadFileBytesTool ¶ added in v0.2.5
func NewReadFileTool ¶ added in v0.1.1
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 (*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) Parameters ¶
func (*SpawnTool) SetAllowlistChecker ¶ added in v0.2.0
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 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 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
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) 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
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 NewWebFetchToolWithProxy ¶ added in v0.2.0
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