tools

package
v1.2.10 Latest Latest
Warning

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

Go to latest
Published: May 11, 2026 License: MIT Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RuntimeStatusPending   = "pending"
	RuntimeStatusRouting   = "routing"
	RuntimeStatusRunning   = "running"
	RuntimeStatusWaiting   = "waiting"
	RuntimeStatusCompleted = "completed"
	RuntimeStatusFailed    = "failed"
	RuntimeStatusCancelled = "cancelled"
	RuntimeStatusRecovered = "recovered"
)

Variables

View Source
var (
	ErrUnsupportedAction = errors.New("unsupported action")
	ErrMissingField      = errors.New("missing required field")
)

Functions

func EventRecordID added in v0.0.3

func EventRecordID(runID, eventType string, at int64) string

func ExpandToolAllowlistEntries

func ExpandToolAllowlistEntries(entries []string) []string

func IsTerminalRuntimeStatus added in v0.0.3

func IsTerminalRuntimeStatus(status string) bool

func MapBoolArg added in v0.0.3

func MapBoolArg(args map[string]interface{}, key string) (bool, bool)

func MapIntArg added in v0.0.3

func MapIntArg(args map[string]interface{}, key string, fallback int) int

func MapObjectArg added in v0.0.3

func MapObjectArg(args map[string]interface{}, key string) map[string]interface{}

func MapRawStringArg added in v0.0.3

func MapRawStringArg(args map[string]interface{}, key string) string

func MapStringArg added in v0.0.3

func MapStringArg(args map[string]interface{}, key string) string

func MapStringListArg added in v0.0.3

func MapStringListArg(args map[string]interface{}, key string) []string

func RecordSubagentExecutionStats added in v1.1.0

func RecordSubagentExecutionStats(ctx context.Context, delta SubagentExecutionStats)

func SubagentIterationBudget added in v1.1.0

func SubagentIterationBudget(ctx context.Context) (int, bool)

func ToolToSchema

func ToolToSchema(tool Tool) map[string]interface{}

func WithSubagentExecutionStats added in v1.1.0

func WithSubagentExecutionStats(ctx context.Context, stats *SubagentExecutionStats) context.Context

func WithSubagentIterationBudget added in v1.1.0

func WithSubagentIterationBudget(ctx context.Context, budget int) context.Context

Types

type AgentMailboxStore

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

func NewAgentMailboxStore

func NewAgentMailboxStore(workspace string) *AgentMailboxStore

func (*AgentMailboxStore) AppendMessage

func (s *AgentMailboxStore) AppendMessage(msg AgentMessage) (AgentMessage, error)

func (*AgentMailboxStore) EnsureThread

func (s *AgentMailboxStore) EnsureThread(thread AgentThread) (AgentThread, error)

func (*AgentMailboxStore) Inbox

func (s *AgentMailboxStore) Inbox(agentID string, limit int) ([]AgentMessage, error)

func (*AgentMailboxStore) Message

func (s *AgentMailboxStore) Message(messageID string) (*AgentMessage, bool)

func (*AgentMailboxStore) MessagesByThread

func (s *AgentMailboxStore) MessagesByThread(threadID string, limit int) ([]AgentMessage, error)

func (*AgentMailboxStore) Thread

func (s *AgentMailboxStore) Thread(threadID string) (*AgentThread, bool)

func (*AgentMailboxStore) ThreadInbox

func (s *AgentMailboxStore) ThreadInbox(threadID, agentID string, limit int) ([]AgentMessage, error)

func (*AgentMailboxStore) UpdateMessageStatus

func (s *AgentMailboxStore) UpdateMessageStatus(messageID, status string, at int64) (*AgentMessage, error)

type AgentMessage

type AgentMessage struct {
	MessageID     string `json:"message_id"`
	ThreadID      string `json:"thread_id"`
	FromAgent     string `json:"from_agent"`
	ToAgent       string `json:"to_agent"`
	ReplyTo       string `json:"reply_to,omitempty"`
	CorrelationID string `json:"correlation_id,omitempty"`
	Type          string `json:"type"`
	Content       string `json:"content"`
	RequiresReply bool   `json:"requires_reply,omitempty"`
	Status        string `json:"status"`
	CreatedAt     int64  `json:"created_at"`
}

type AgentThread

type AgentThread struct {
	ThreadID     string   `json:"thread_id"`
	Owner        string   `json:"owner"`
	Participants []string `json:"participants,omitempty"`
	Status       string   `json:"status"`
	Topic        string   `json:"topic,omitempty"`
	CreatedAt    int64    `json:"created_at"`
	UpdatedAt    int64    `json:"updated_at"`
}

type ArtifactRecord added in v0.0.3

type ArtifactRecord struct {
	ID            string `json:"id,omitempty"`
	RunID         string `json:"run_id,omitempty"`
	RequestID     string `json:"request_id,omitempty"`
	ThreadID      string `json:"thread_id,omitempty"`
	Kind          string `json:"kind,omitempty"`
	Name          string `json:"name,omitempty"`
	Content       string `json:"content,omitempty"`
	AgentID       string `json:"agent_id,omitempty"`
	FromAgent     string `json:"from_agent,omitempty"`
	ToAgent       string `json:"to_agent,omitempty"`
	ReplyTo       string `json:"reply_to,omitempty"`
	CorrelationID string `json:"correlation_id,omitempty"`
	Status        string `json:"status,omitempty"`
	RequiresReply bool   `json:"requires_reply,omitempty"`
	CreatedAt     int64  `json:"created_at"`
	Visible       bool   `json:"visible"`
	SourceType    string `json:"source_type,omitempty"`
}

type BootstrapOptions added in v1.2.1

type BootstrapOptions struct {
	Config         *config.Config
	Workspace      string
	MessageBus     *bus.MessageBus
	CronService    *cron.CronService
	Provider       providers.LLMProvider
	ProcessManager *ProcessManager
	SessionManager *session.SessionManager
	SessionList    SessionListFunc
	SessionHistory SessionHistoryFunc
}

type BootstrapResult added in v1.2.1

type BootstrapResult struct {
	Registry        *ToolRegistry
	ProcessManager  *ProcessManager
	SubagentManager *SubagentManager
	SubagentRouter  *SubagentRouter
}

func BootstrapDefaultTools added in v1.2.1

func BootstrapDefaultTools(ctx context.Context, opts BootstrapOptions) (*BootstrapResult, error)

type BrowserTool

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

func NewBrowserTool

func NewBrowserTool() *BrowserTool

func (*BrowserTool) Description

func (t *BrowserTool) Description() string

func (*BrowserTool) Execute

func (t *BrowserTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*BrowserTool) Name

func (t *BrowserTool) Name() string

func (*BrowserTool) Parameters

func (t *BrowserTool) Parameters() map[string]interface{}

type CameraTool

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

func NewCameraTool

func NewCameraTool(workspace string) *CameraTool

func (*CameraTool) Description

func (t *CameraTool) Description() string

func (*CameraTool) Execute

func (t *CameraTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*CameraTool) Name

func (t *CameraTool) Name() string

func (*CameraTool) Parameters

func (t *CameraTool) Parameters() map[string]interface{}

type CatalogTool

type CatalogTool interface {
	CatalogEntry() map[string]interface{}
}

type CronTool

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

func NewCronTool

func NewCronTool(cs *cron.CronService) *CronTool

func (*CronTool) Description

func (t *CronTool) Description() string

func (*CronTool) Execute

func (t *CronTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*CronTool) Name

func (t *CronTool) Name() string

func (*CronTool) Parameters

func (t *CronTool) Parameters() map[string]interface{}

type DispatchDecision added in v0.0.3

type DispatchDecision struct {
	TargetAgent string  `json:"target_agent,omitempty"`
	Reason      string  `json:"reason,omitempty"`
	Confidence  float64 `json:"confidence,omitempty"`
	TaskText    string  `json:"task_text,omitempty"`
	RouteSource string  `json:"route_source,omitempty"`
}

func (DispatchDecision) Valid added in v0.0.3

func (d DispatchDecision) Valid() bool

type EditFileTool

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

EditFileTool edits a file by replacing old_text with new_text. The old_text must exist exactly in the file.

func NewEditFileTool

func NewEditFileTool(allowedDir string) *EditFileTool

func (*EditFileTool) Description

func (t *EditFileTool) Description() string

func (*EditFileTool) Execute

func (t *EditFileTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*EditFileTool) Name

func (t *EditFileTool) Name() string

func (*EditFileTool) Parameters

func (t *EditFileTool) Parameters() map[string]interface{}

type EventRecord added in v0.0.3

type EventRecord struct {
	ID          string        `json:"id,omitempty"`
	RunID       string        `json:"run_id,omitempty"`
	RequestID   string        `json:"request_id,omitempty"`
	AgentID     string        `json:"agent_id,omitempty"`
	Type        string        `json:"type"`
	Status      string        `json:"status,omitempty"`
	FailureCode string        `json:"failure_code,omitempty"`
	Message     string        `json:"message,omitempty"`
	RetryCount  int           `json:"retry_count,omitempty"`
	Error       *RuntimeError `json:"error,omitempty"`
	At          int64         `json:"ts"`
}

type ExecTool

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

func NewExecTool

func NewExecTool(cfg config.ShellConfig, workspace string, pm *ProcessManager) *ExecTool

func (*ExecTool) Description

func (t *ExecTool) Description() string

func (*ExecTool) Execute

func (t *ExecTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*ExecTool) Name

func (t *ExecTool) Name() string

func (*ExecTool) Parameters

func (t *ExecTool) Parameters() map[string]interface{}

func (*ExecTool) SetTimeout

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

type ExecutionRun added in v0.0.3

type ExecutionRun struct {
	Run      RunRecord        `json:"run"`
	Request  RequestRecord    `json:"request"`
	Decision DispatchDecision `json:"decision,omitempty"`
}

type FunctionCall

type FunctionCall struct {
	Name      string `json:"name"`
	Arguments string `json:"arguments"`
}

type LLMProvider

type LLMProvider interface {
	Chat(ctx context.Context, messages []Message, tools []ToolDefinition, model string, options map[string]interface{}) (*LLMResponse, error)
	GetDefaultModel() string
}

type LLMResponse

type LLMResponse struct {
	Content      string     `json:"content"`
	ToolCalls    []ToolCall `json:"tool_calls,omitempty"`
	FinishReason string     `json:"finish_reason"`
	Usage        *UsageInfo `json:"usage,omitempty"`
}

type ListDirTool

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

ListDirTool lists files and directories in a path.

func NewListDirTool

func NewListDirTool(allowedDir string) *ListDirTool

func (*ListDirTool) Description

func (t *ListDirTool) Description() string

func (*ListDirTool) Execute

func (t *ListDirTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*ListDirTool) Name

func (t *ListDirTool) Name() string

func (*ListDirTool) Parameters

func (t *ListDirTool) Parameters() map[string]interface{}

type MCPRemoteTool

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

func (*MCPRemoteTool) CatalogEntry

func (t *MCPRemoteTool) CatalogEntry() map[string]interface{}

func (*MCPRemoteTool) Description

func (t *MCPRemoteTool) Description() string

func (*MCPRemoteTool) Execute

func (t *MCPRemoteTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*MCPRemoteTool) Name

func (t *MCPRemoteTool) Name() string

func (*MCPRemoteTool) Parameters

func (t *MCPRemoteTool) Parameters() map[string]interface{}

type MCPTool

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

func NewMCPTool

func NewMCPTool(workspace string, cfg config.MCPToolsConfig) *MCPTool

func (*MCPTool) Description

func (t *MCPTool) Description() string

func (*MCPTool) DiscoverTools

func (t *MCPTool) DiscoverTools(ctx context.Context) []Tool

func (*MCPTool) Execute

func (t *MCPTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*MCPTool) Name

func (t *MCPTool) Name() string

func (*MCPTool) Parameters

func (t *MCPTool) Parameters() map[string]interface{}

type MemoryGetTool

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

func NewMemoryGetTool

func NewMemoryGetTool(workspace string) *MemoryGetTool

func (*MemoryGetTool) Description

func (t *MemoryGetTool) Description() string

func (*MemoryGetTool) Execute

func (t *MemoryGetTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*MemoryGetTool) Name

func (t *MemoryGetTool) Name() string

func (*MemoryGetTool) Parameters

func (t *MemoryGetTool) Parameters() map[string]interface{}

type MemorySearchTool

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

func NewMemorySearchTool

func NewMemorySearchTool(workspace string) *MemorySearchTool

func (*MemorySearchTool) Description

func (t *MemorySearchTool) Description() string

func (*MemorySearchTool) Execute

func (t *MemorySearchTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*MemorySearchTool) Name

func (t *MemorySearchTool) Name() string

func (*MemorySearchTool) Parameters

func (t *MemorySearchTool) Parameters() map[string]interface{}

type MemoryWriteTool

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

func NewMemoryWriteTool

func NewMemoryWriteTool(workspace string) *MemoryWriteTool

func (*MemoryWriteTool) Description

func (t *MemoryWriteTool) Description() string

func (*MemoryWriteTool) Execute

func (t *MemoryWriteTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*MemoryWriteTool) Name

func (t *MemoryWriteTool) Name() string

func (*MemoryWriteTool) Parameters

func (t *MemoryWriteTool) Parameters() map[string]interface{}

type Message

type Message struct {
	Role       string     `json:"role"`
	Content    string     `json:"content"`
	ToolCalls  []ToolCall `json:"tool_calls,omitempty"`
	ToolCallID string     `json:"tool_call_id,omitempty"`
}

type MessageTool

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

func NewMessageTool

func NewMessageTool() *MessageTool

func (*MessageTool) Description

func (t *MessageTool) Description() string

func (*MessageTool) Execute

func (t *MessageTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*MessageTool) Name

func (t *MessageTool) Name() string

func (*MessageTool) Parameters

func (t *MessageTool) Parameters() map[string]interface{}

func (*MessageTool) SetContext

func (t *MessageTool) SetContext(channel, chatID string)

func (*MessageTool) SetSendCallback

func (t *MessageTool) SetSendCallback(callback SendCallback)

type ParallelFetchTool

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

func NewParallelFetchTool

func NewParallelFetchTool(fetcher *WebFetchTool, maxParallelCalls int, parallelSafe map[string]struct{}) *ParallelFetchTool

func (*ParallelFetchTool) Description

func (t *ParallelFetchTool) Description() string

func (*ParallelFetchTool) Execute

func (t *ParallelFetchTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*ParallelFetchTool) Name

func (t *ParallelFetchTool) Name() string

func (*ParallelFetchTool) Parameters

func (t *ParallelFetchTool) Parameters() map[string]interface{}

type ParallelSafeTool

type ParallelSafeTool interface {
	ParallelSafe() bool
}

ParallelSafeTool is an optional capability interface. If implemented by a tool, AgentLoop should trust this declaration over name-based whitelist when deciding parallel execution safety.

type ParallelTool

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

func NewParallelTool

func NewParallelTool(registry *ToolRegistry, maxParallelCalls int, parallelSafe map[string]struct{}) *ParallelTool

func (*ParallelTool) Description

func (t *ParallelTool) Description() string

func (*ParallelTool) Execute

func (t *ParallelTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*ParallelTool) Name

func (t *ParallelTool) Name() string

func (*ParallelTool) Parameters

func (t *ParallelTool) Parameters() map[string]interface{}

type ProcessEvent

type ProcessEvent struct {
	Type      string    `json:"type"`
	SessionID string    `json:"session_id"`
	Command   string    `json:"command,omitempty"`
	At        time.Time `json:"at"`
	ExitCode  *int      `json:"exit_code,omitempty"`
}

ProcessEvent is a typed lifecycle event for process sessions.

type ProcessManager

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

func NewProcessManager

func NewProcessManager(workspace string) *ProcessManager

func (*ProcessManager) Get

func (m *ProcessManager) Get(id string) (*processSession, bool)

func (*ProcessManager) Kill

func (m *ProcessManager) Kill(id string) error

func (*ProcessManager) List

func (m *ProcessManager) List() []map[string]interface{}

func (*ProcessManager) Log

func (m *ProcessManager) Log(id string, offset, limit int) (string, error)

func (*ProcessManager) Start

func (m *ProcessManager) Start(parent context.Context, command, cwd string) (string, error)

func (*ProcessManager) SubscribeEvents

func (m *ProcessManager) SubscribeEvents(buffer int) <-chan ProcessEvent

type ProcessTool

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

func NewProcessTool

func NewProcessTool(m *ProcessManager) *ProcessTool

func (*ProcessTool) Description

func (t *ProcessTool) Description() string

func (*ProcessTool) Execute

func (t *ProcessTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*ProcessTool) Name

func (t *ProcessTool) Name() string

func (*ProcessTool) Parameters

func (t *ProcessTool) Parameters() map[string]interface{}

type ReadFileTool

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

ReadFileTool reads the contents of a file.

func NewReadFileTool

func NewReadFileTool(allowedDir string) *ReadFileTool

func (*ReadFileTool) Description

func (t *ReadFileTool) Description() string

func (*ReadFileTool) Execute

func (t *ReadFileTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*ReadFileTool) Name

func (t *ReadFileTool) Name() string

func (*ReadFileTool) Parameters

func (t *ReadFileTool) Parameters() map[string]interface{}

type RemindTool

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

func NewRemindTool

func NewRemindTool(cs *cron.CronService) *RemindTool

func (*RemindTool) Description

func (t *RemindTool) Description() string

func (*RemindTool) Execute

func (t *RemindTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*RemindTool) Name

func (t *RemindTool) Name() string

func (*RemindTool) Parameters

func (t *RemindTool) Parameters() map[string]interface{}

func (*RemindTool) SetContext

func (t *RemindTool) SetContext(channel, chatID string)

type RequestRecord added in v1.0.0

type RequestRecord struct {
	ID            string `json:"id"`
	ThreadID      string `json:"thread_id,omitempty"`
	CorrelationID string `json:"correlation_id,omitempty"`
	OwnerAgentID  string `json:"owner_agent_id,omitempty"`
	Status        string `json:"status"`
	Input         string `json:"input,omitempty"`
	OriginChannel string `json:"origin_channel,omitempty"`
	OriginChatID  string `json:"origin_chat_id,omitempty"`
	CreatedAt     int64  `json:"created_at"`
	UpdatedAt     int64  `json:"updated_at"`
}

type ResourceScopedTool

type ResourceScopedTool interface {
	ResourceKeys(args map[string]interface{}) []string
}

ResourceScopedTool is an optional capability interface. If implemented by a tool, AgentLoop can avoid running calls that touch the same resource keys in parallel.

type RouterDispatchRequest

type RouterDispatchRequest struct {
	Task             string
	Label            string
	Role             string
	AgentID          string
	Decision         *DispatchDecision
	NotifyMainPolicy string
	ThreadID         string
	CorrelationID    string
	ParentRunID      string
	OriginChannel    string
	OriginChatID     string
	MaxRetries       int
	RetryBackoff     int
	TimeoutSec       int
	MaxTaskChars     int
	MaxResultChars   int
}

type RouterReply

type RouterReply struct {
	RunID         string
	ThreadID      string
	CorrelationID string
	AgentID       string
	Status        string
	Result        string
	Run           RunRecord
	Error         *RuntimeError
}

type RunRecord added in v0.0.3

type RunRecord struct {
	ID            string        `json:"id"`
	RequestID     string        `json:"request_id,omitempty"`
	ThreadID      string        `json:"thread_id,omitempty"`
	CorrelationID string        `json:"correlation_id,omitempty"`
	AgentID       string        `json:"agent_id,omitempty"`
	ParentRunID   string        `json:"parent_run_id,omitempty"`
	Kind          string        `json:"kind,omitempty"`
	Status        string        `json:"status"`
	Input         string        `json:"input,omitempty"`
	Output        string        `json:"output,omitempty"`
	Error         *RuntimeError `json:"error,omitempty"`
	CreatedAt     int64         `json:"created_at"`
	UpdatedAt     int64         `json:"updated_at"`
}

type RuntimeError added in v0.0.3

type RuntimeError struct {
	Code      string `json:"code,omitempty"`
	Message   string `json:"message,omitempty"`
	Stage     string `json:"stage,omitempty"`
	Retryable bool   `json:"retryable,omitempty"`
	Source    string `json:"source,omitempty"`
}

func NewRuntimeError added in v0.0.3

func NewRuntimeError(code, message, stage string, retryable bool, source string) *RuntimeError

type RuntimeSnapshot added in v0.0.3

type RuntimeSnapshot struct {
	Requests  []RequestRecord  `json:"requests,omitempty"`
	Runs      []RunRecord      `json:"runs,omitempty"`
	Events    []EventRecord    `json:"events,omitempty"`
	Threads   []ThreadRecord   `json:"threads,omitempty"`
	Artifacts []ArtifactRecord `json:"artifacts,omitempty"`
}

type SendCallback

type SendCallback func(channel, chatID, action, content, media, messageID, emoji string, buttons [][]bus.Button) error

type SessionHistoryFunc added in v1.2.1

type SessionHistoryFunc func(key string, limit int) []providers.Message

type SessionInfo

type SessionInfo struct {
	Key             string
	Kind            string
	Summary         string
	CompactionCount int
	UpdatedAt       time.Time
}

type SessionListFunc added in v1.2.1

type SessionListFunc func(limit int) []SessionInfo

type SessionSearchTool added in v1.1.0

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

func NewSessionSearchTool added in v1.1.0

func NewSessionSearchTool(manager *session.SessionManager) *SessionSearchTool

func (*SessionSearchTool) Description added in v1.1.0

func (t *SessionSearchTool) Description() string

func (*SessionSearchTool) Execute added in v1.1.0

func (t *SessionSearchTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*SessionSearchTool) Name added in v1.1.0

func (t *SessionSearchTool) Name() string

func (*SessionSearchTool) ParallelSafe added in v1.1.0

func (t *SessionSearchTool) ParallelSafe() bool

func (*SessionSearchTool) Parameters added in v1.1.0

func (t *SessionSearchTool) Parameters() map[string]interface{}

type SessionsTool

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

func NewSessionsTool

func NewSessionsTool(listFn func(limit int) []SessionInfo, historyFn func(key string, limit int) []providers.Message) *SessionsTool

func (*SessionsTool) Description

func (t *SessionsTool) Description() string

func (*SessionsTool) Execute

func (t *SessionsTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*SessionsTool) Name

func (t *SessionsTool) Name() string

func (*SessionsTool) Parameters

func (t *SessionsTool) Parameters() map[string]interface{}

type SkillExecTool

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

func NewSkillExecTool

func NewSkillExecTool(workspace string) *SkillExecTool

func (*SkillExecTool) Description

func (t *SkillExecTool) Description() string

func (*SkillExecTool) Execute

func (t *SkillExecTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*SkillExecTool) Name

func (t *SkillExecTool) Name() string

func (*SkillExecTool) Parameters

func (t *SkillExecTool) Parameters() map[string]interface{}

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]interface{}) (string, error)

func (*SpawnTool) Name

func (t *SpawnTool) Name() string

func (*SpawnTool) Parameters

func (t *SpawnTool) Parameters() map[string]interface{}

func (*SpawnTool) SetContext

func (t *SpawnTool) SetContext(channel, chatID string)

type SubagentExecutionStats added in v1.1.0

type SubagentExecutionStats struct {
	Iterations       int
	Attempts         int
	Restarts         int
	PromptTokens     int
	CompletionTokens int
	TotalTokens      int
	FailureCode      string
}

type SubagentManager

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

func NewSubagentManager

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

func (*SubagentManager) Events

func (sm *SubagentManager) Events(runID string, limit int) ([]SubagentRunEvent, error)

func (*SubagentManager) Inbox

func (sm *SubagentManager) Inbox(agentID string, limit int) ([]AgentMessage, error)

func (*SubagentManager) Message

func (sm *SubagentManager) Message(messageID string) (*AgentMessage, bool)

func (*SubagentManager) NextRunSequence added in v1.0.0

func (sm *SubagentManager) NextRunSequence() int

func (*SubagentManager) ProfileStore

func (sm *SubagentManager) ProfileStore() *SubagentProfileStore

func (*SubagentManager) RuntimeSnapshot added in v0.0.3

func (sm *SubagentManager) RuntimeSnapshot(limit int) RuntimeSnapshot

func (*SubagentManager) SetRunFunc

func (sm *SubagentManager) SetRunFunc(f SubagentRunFunc)

func (*SubagentManager) Spawn

func (*SubagentManager) SpawnRun added in v1.0.0

func (*SubagentManager) Thread

func (sm *SubagentManager) Thread(threadID string) (*AgentThread, bool)

func (*SubagentManager) ThreadMessages

func (sm *SubagentManager) ThreadMessages(threadID string, limit int) ([]AgentMessage, error)

type SubagentProfile

type SubagentProfile struct {
	AgentID           string   `json:"agent_id"`
	Name              string   `json:"name"`
	Transport         string   `json:"transport,omitempty"`
	ParentAgentID     string   `json:"parent_agent_id,omitempty"`
	NotifyMainPolicy  string   `json:"notify_main_policy,omitempty"`
	Role              string   `json:"role,omitempty"`
	SystemPromptFile  string   `json:"system_prompt_file,omitempty"`
	ToolAllowlist     []string `json:"tool_allowlist,omitempty"`
	MemoryNamespace   string   `json:"memory_namespace,omitempty"`
	MaxRetries        int      `json:"max_retries,omitempty"`
	RetryBackoff      int      `json:"retry_backoff_ms,omitempty"`
	TimeoutSec        int      `json:"timeout_sec,omitempty"`
	MaxToolIterations int      `json:"max_tool_iterations,omitempty"`
	MaxTaskChars      int      `json:"max_task_chars,omitempty"`
	MaxResultChars    int      `json:"max_result_chars,omitempty"`
	Status            string   `json:"status"`
	CreatedAt         int64    `json:"created_at"`
	UpdatedAt         int64    `json:"updated_at"`
	ManagedBy         string   `json:"managed_by,omitempty"`
}

type SubagentProfileStore

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

func NewSubagentProfileStore

func NewSubagentProfileStore(workspace string) *SubagentProfileStore

func (*SubagentProfileStore) Delete

func (s *SubagentProfileStore) Delete(agentID string) error

func (*SubagentProfileStore) FindByRole

func (s *SubagentProfileStore) FindByRole(role string) (*SubagentProfile, bool, error)

func (*SubagentProfileStore) Get

func (s *SubagentProfileStore) Get(agentID string) (*SubagentProfile, bool, error)

func (*SubagentProfileStore) List

func (*SubagentProfileStore) Upsert

type SubagentProfileTool

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

func NewSubagentProfileTool

func NewSubagentProfileTool(store *SubagentProfileStore) *SubagentProfileTool

func (*SubagentProfileTool) Description

func (t *SubagentProfileTool) Description() string

func (*SubagentProfileTool) Execute

func (t *SubagentProfileTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*SubagentProfileTool) Name

func (t *SubagentProfileTool) Name() string

func (*SubagentProfileTool) Parameters

func (t *SubagentProfileTool) Parameters() map[string]interface{}

type SubagentRouter

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

func NewSubagentRouter

func NewSubagentRouter(manager *SubagentManager) *SubagentRouter

func (*SubagentRouter) DispatchRun added in v1.0.0

func (*SubagentRouter) MergeResults

func (r *SubagentRouter) MergeResults(replies []*RouterReply) string

func (*SubagentRouter) WaitRun added in v1.0.0

func (r *SubagentRouter) WaitRun(ctx context.Context, runID string, interval time.Duration) (*RouterReply, error)

type SubagentRun added in v1.0.0

type SubagentRun struct {
	ID                string                 `json:"id"`
	Task              string                 `json:"task"`
	Label             string                 `json:"label"`
	Role              string                 `json:"role"`
	AgentID           string                 `json:"agent_id"`
	Transport         string                 `json:"transport,omitempty"`
	ParentAgentID     string                 `json:"parent_agent_id,omitempty"`
	NotifyMainPolicy  string                 `json:"notify_main_policy,omitempty"`
	SessionKey        string                 `json:"session_key"`
	MemoryNS          string                 `json:"memory_ns"`
	SystemPromptFile  string                 `json:"system_prompt_file,omitempty"`
	ToolAllowlist     []string               `json:"tool_allowlist,omitempty"`
	MaxRetries        int                    `json:"max_retries,omitempty"`
	RetryBackoff      int                    `json:"retry_backoff,omitempty"`
	TimeoutSec        int                    `json:"timeout_sec,omitempty"`
	MaxToolIterations int                    `json:"max_tool_iterations,omitempty"`
	MaxTaskChars      int                    `json:"max_task_chars,omitempty"`
	MaxResultChars    int                    `json:"max_result_chars,omitempty"`
	RetryCount        int                    `json:"retry_count,omitempty"`
	IterationCount    int                    `json:"iteration_count,omitempty"`
	AttemptCount      int                    `json:"attempt_count,omitempty"`
	RestartCount      int                    `json:"restart_count,omitempty"`
	PromptTokens      int                    `json:"prompt_tokens,omitempty"`
	CompletionTokens  int                    `json:"completion_tokens,omitempty"`
	TotalTokens       int                    `json:"total_tokens,omitempty"`
	LastFailureCode   string                 `json:"last_failure_code,omitempty"`
	ThreadID          string                 `json:"thread_id,omitempty"`
	CorrelationID     string                 `json:"correlation_id,omitempty"`
	ParentRunID       string                 `json:"parent_run_id,omitempty"`
	LastMessageID     string                 `json:"last_message_id,omitempty"`
	WaitingReply      bool                   `json:"waiting_for_reply,omitempty"`
	SharedState       map[string]interface{} `json:"shared_state,omitempty"`
	OriginChannel     string                 `json:"origin_channel,omitempty"`
	OriginChatID      string                 `json:"origin_chat_id,omitempty"`
	Status            string                 `json:"status"`
	Result            string                 `json:"result,omitempty"`
	Steering          []string               `json:"steering,omitempty"`
	Created           int64                  `json:"created"`
	Updated           int64                  `json:"updated"`
}

type SubagentRunEvent

type SubagentRunEvent struct {
	RunID       string `json:"run_id"`
	AgentID     string `json:"agent_id,omitempty"`
	Type        string `json:"type"`
	Status      string `json:"status,omitempty"`
	FailureCode string `json:"failure_code,omitempty"`
	Message     string `json:"message,omitempty"`
	RetryCount  int    `json:"retry_count,omitempty"`
	At          int64  `json:"ts"`
}

type SubagentRunFunc

type SubagentRunFunc func(ctx context.Context, run *SubagentRun) (string, error)

type SubagentRunStore

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

func NewSubagentRunStore

func NewSubagentRunStore(workspace string) *SubagentRunStore

func (*SubagentRunStore) AppendEvent

func (s *SubagentRunStore) AppendEvent(evt SubagentRunEvent) error

func (*SubagentRunStore) AppendRun

func (s *SubagentRunStore) AppendRun(run *SubagentRun) error

func (*SubagentRunStore) Events

func (s *SubagentRunStore) Events(runID string, limit int) ([]SubagentRunEvent, error)

func (*SubagentRunStore) Get

func (s *SubagentRunStore) Get(runID string) (*SubagentRun, bool)

func (*SubagentRunStore) List

func (s *SubagentRunStore) List() []*SubagentRun

func (*SubagentRunStore) NextIDSeed

func (s *SubagentRunStore) NextIDSeed() int

type SubagentSpawnOptions

type SubagentSpawnOptions struct {
	Task              string
	Label             string
	Role              string
	AgentID           string
	NotifyMainPolicy  string
	MaxRetries        int
	RetryBackoff      int
	TimeoutSec        int
	MaxToolIterations int
	MaxTaskChars      int
	MaxResultChars    int
	OriginChannel     string
	OriginChatID      string
	ThreadID          string
	CorrelationID     string
	ParentRunID       string
}

type SystemInfoTool

type SystemInfoTool struct{}

func NewSystemInfoTool

func NewSystemInfoTool() *SystemInfoTool

func (*SystemInfoTool) Description

func (t *SystemInfoTool) Description() string

func (*SystemInfoTool) Execute

func (t *SystemInfoTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*SystemInfoTool) Name

func (t *SystemInfoTool) Name() string

func (*SystemInfoTool) Parameters

func (t *SystemInfoTool) Parameters() map[string]interface{}

type ThreadRecord added in v0.0.3

type ThreadRecord struct {
	ID           string   `json:"id"`
	OwnerAgentID string   `json:"owner_agent_id,omitempty"`
	Participants []string `json:"participants,omitempty"`
	Status       string   `json:"status"`
	Topic        string   `json:"topic,omitempty"`
	CreatedAt    int64    `json:"created_at"`
	UpdatedAt    int64    `json:"updated_at"`
}

type Tool

type Tool interface {
	Name() string
	Description() string
	Parameters() map[string]interface{}
	Execute(ctx context.Context, args map[string]interface{}) (string, error)
}

type ToolAllowlistGroup

type ToolAllowlistGroup struct {
	Name        string   `json:"name"`
	Description string   `json:"description"`
	Aliases     []string `json:"aliases,omitempty"`
	Tools       []string `json:"tools"`
}

func ToolAllowlistGroups

func ToolAllowlistGroups() []ToolAllowlistGroup

type ToolCall

type ToolCall struct {
	ID        string                 `json:"id"`
	Type      string                 `json:"type"`
	Function  *FunctionCall          `json:"function,omitempty"`
	Name      string                 `json:"name,omitempty"`
	Arguments map[string]interface{} `json:"arguments,omitempty"`
}

type ToolDefinition

type ToolDefinition struct {
	Type     string                 `json:"type"`
	Function ToolFunctionDefinition `json:"function"`
}

type ToolFunctionDefinition

type ToolFunctionDefinition struct {
	Name        string                 `json:"name"`
	Description string                 `json:"description"`
	Parameters  map[string]interface{} `json:"parameters"`
}

type ToolRegistry

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

func NewToolRegistry

func NewToolRegistry() *ToolRegistry

func (*ToolRegistry) Catalog

func (r *ToolRegistry) Catalog() []map[string]interface{}

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]interface{}) (string, error)

func (*ToolRegistry) Get

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

func (*ToolRegistry) GetDefinitions

func (r *ToolRegistry) GetDefinitions() []map[string]interface{}

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) List

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

List returns a list of all registered tool names.

func (*ToolRegistry) Register

func (r *ToolRegistry) Register(tool Tool)

type UsageInfo

type UsageInfo struct {
	PromptTokens     int `json:"prompt_tokens"`
	CompletionTokens int `json:"completion_tokens"`
	TotalTokens      int `json:"total_tokens"`
}

type WebFetchTool

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

func NewWebFetchTool

func NewWebFetchTool(maxChars int) *WebFetchTool

func (*WebFetchTool) Description

func (t *WebFetchTool) Description() string

func (*WebFetchTool) Execute

func (t *WebFetchTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*WebFetchTool) Name

func (t *WebFetchTool) Name() string

func (*WebFetchTool) ParallelSafe

func (t *WebFetchTool) ParallelSafe() bool

func (*WebFetchTool) Parameters

func (t *WebFetchTool) Parameters() map[string]interface{}

type WebSearchTool

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

func NewWebSearchTool

func NewWebSearchTool(apiKey string, maxResults int) *WebSearchTool

func (*WebSearchTool) Description

func (t *WebSearchTool) Description() string

func (*WebSearchTool) Execute

func (t *WebSearchTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*WebSearchTool) Name

func (t *WebSearchTool) Name() string

func (*WebSearchTool) Parameters

func (t *WebSearchTool) Parameters() map[string]interface{}

type WriteFileTool

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

WriteFileTool writes content to a file.

func NewWriteFileTool

func NewWriteFileTool(allowedDir string) *WriteFileTool

func (*WriteFileTool) Description

func (t *WriteFileTool) Description() string

func (*WriteFileTool) Execute

func (t *WriteFileTool) Execute(ctx context.Context, args map[string]interface{}) (string, error)

func (*WriteFileTool) Name

func (t *WriteFileTool) Name() string

func (*WriteFileTool) Parameters

func (t *WriteFileTool) Parameters() map[string]interface{}

Jump to

Keyboard shortcuts

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