subagent

package
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: May 26, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ToJSONRPCMessage

func ToJSONRPCMessage(msg provider.Message) types.Message

ToJSONRPCMessage converts a provider message to JSON-RPC format

Types

type AgentFactory added in v0.3.0

type AgentFactory func(provider provider.Provider, registry ToolRegistry, toolsSchema []map[string]interface{}, systemPrompt string) AgentRunner

AgentFactory is a function type for creating agents

type AgentRunner added in v0.3.0

type AgentRunner interface {
	RunConversation(ctx context.Context, input string) (string, error)
}

AgentRunner is an interface for running agent conversations

type Config

type Config struct {
	MaxConcurrent int           `json:"max_concurrent"` // Max parallel subagents
	MaxDepth      int           `json:"max_depth"`      // Max recursion depth
	Timeout       time.Duration `json:"timeout"`        // Task timeout
	EnableNested  bool          `json:"enable_nested"`  // Enable nested subagents
}

Config holds subagent configuration

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig returns default subagent configuration

type Manager

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

Manager manages all subagents

func NewManager

func NewManager(cfg *Config, prov provider.Provider, registry ToolRegistry, factory AgentFactory) *Manager

NewManager creates a new subagent manager

func (*Manager) CancelTask added in v0.3.0

func (m *Manager) CancelTask(id string) error

CancelTask cancels a task by ID

func (*Manager) GetResult

func (m *Manager) GetResult(id string) *Result

GetResult returns a result by task ID

func (*Manager) GetStats

func (m *Manager) GetStats() map[string]interface{}

GetStats returns manager statistics

func (*Manager) GetTask

func (m *Manager) GetTask(id string) *Task

GetTask returns a task by ID

func (*Manager) KillSubAgent

func (m *Manager) KillSubAgent(id string) error

KillSubAgent terminates a subagent

func (*Manager) ListSubAgents

func (m *Manager) ListSubAgents() []map[string]interface{}

ListSubAgents returns all active subagents

func (*Manager) ListTasks added in v0.3.0

func (m *Manager) ListTasks(statusFilter TaskStatus) []*Task

ListTasks returns all tasks with optional status filter

func (*Manager) SpawnMultiple

func (m *Manager) SpawnMultiple(tasks []struct {
	Description string
	Input       string
	Tools       []string
}) ([]Result, error)

SpawnMultiple spawns multiple tasks and waits for all results

func (*Manager) SpawnNestedTask added in v0.3.0

func (m *Manager) SpawnNestedTask(parentTaskID, description, input string, tools []string, ctx map[string]interface{}) (string, error)

SpawnNestedTask spawns a nested subagent task from a parent task

func (*Manager) SpawnTask

func (m *Manager) SpawnTask(description, input string, tools []string) (string, error)

SpawnTask spawns a new subagent task

func (*Manager) SpawnTaskWithContext

func (m *Manager) SpawnTaskWithContext(description, input string, tools []string, ctx map[string]interface{}) (string, error)

SpawnTaskWithContext spawns a task with additional context

func (*Manager) Start

func (m *Manager) Start()

Start starts the subagent manager

func (*Manager) Stop

func (m *Manager) Stop()

Stop stops the subagent manager

func (*Manager) SubmitTask

func (m *Manager) SubmitTask(task *Task) error

SubmitTask submits a task to the queue

func (*Manager) WaitForResult

func (m *Manager) WaitForResult(taskID string, timeout time.Duration) (*Result, error)

WaitForResult waits for a task result with timeout

type Result

type Result struct {
	TaskID     string        `json:"task_id"`
	Success    bool          `json:"success"`
	Output     string        `json:"output"`
	Error      string        `json:"error,omitempty"`
	Duration   time.Duration `json:"duration"`
	SubResults []Result      `json:"sub_results,omitempty"`
	CreatedAt  time.Time     `json:"created_at"`
}

Result represents the result of a subagent task

type SubAgent

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

SubAgent represents a subagent that can execute tasks

func (*SubAgent) Run

func (s *SubAgent) Run(ctx context.Context, input string) (string, error)

Run executes the subagent

type Task

type Task struct {
	ID          string                 `json:"id"`
	Description string                 `json:"description"`
	Input       string                 `json:"input"`
	Tools       []string               `json:"tools,omitempty"` // Tools to enable for this task
	Context     map[string]interface{} `json:"context,omitempty"`
	ParentID    string                 `json:"parent_id,omitempty"`
	Depth       int                    `json:"depth"`
	Status      TaskStatus             `json:"status"`
	CreatedAt   time.Time              `json:"created_at"`
	StartedAt   *time.Time             `json:"started_at,omitempty"`
	CompletedAt *time.Time             `json:"completed_at,omitempty"`
	Cancelled   bool                   `json:"cancelled"`
	// contains filtered or unexported fields
}

Task represents a task to be executed by a subagent

func (*Task) Cancel added in v0.3.0

func (t *Task) Cancel()

Cancel marks the task as cancelled

func (*Task) GetStatus added in v0.3.0

func (t *Task) GetStatus() TaskStatus

GetStatus gets the task status thread-safely

func (*Task) IsCancelled added in v0.3.0

func (t *Task) IsCancelled() bool

IsCancelled checks if the task is cancelled

func (*Task) SetStatus added in v0.3.0

func (t *Task) SetStatus(status TaskStatus)

SetStatus sets the task status thread-safely

type TaskStatus added in v0.3.0

type TaskStatus string

TaskStatus represents the status of a task

const (
	TaskStatusPending   TaskStatus = "pending"
	TaskStatusRunning   TaskStatus = "running"
	TaskStatusCompleted TaskStatus = "completed"
	TaskStatusFailed    TaskStatus = "failed"
	TaskStatusCancelled TaskStatus = "cancelled"
)

type Tool added in v0.3.0

type Tool interface {
	Name() string
	Description() string
	Schema() map[string]interface{}
}

Tool is an interface for tools

type ToolRegistry added in v0.3.0

type ToolRegistry interface {
	List() []string
	Get(name string) (Tool, error)
}

ToolRegistry is an interface for tool registry to avoid circular imports

Jump to

Keyboard shortcuts

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