Documentation
¶
Overview ¶
Package vega provides fault-tolerant AI agent orchestration with Erlang-style supervision.
Vega is a Go library for building reliable AI agent systems. It provides:
- Agent definitions with configurable LLM backends
- Process management with lifecycle control
- Erlang-style supervision trees for fault tolerance
- Tool registration with sandboxing
- Rate limiting and circuit breakers
- Budget management for cost control
- A YAML-based DSL for non-programmers
Quick Start ¶
Create an agent and spawn a process:
// Create an orchestrator with Anthropic backend
llm := llm.NewAnthropic()
orch := vega.NewOrchestrator(vega.WithLLM(llm))
// Define an agent
agent := vega.Agent{
Name: "assistant",
Model: "claude-sonnet-4-20250514",
System: vega.StaticPrompt("You are a helpful assistant."),
}
// Spawn a process
proc, err := orch.Spawn(agent)
if err != nil {
log.Fatal(err)
}
// Send a message
response, err := proc.Send(ctx, "Hello!")
if err != nil {
log.Fatal(err)
}
fmt.Println(response)
Supervision ¶
Add fault tolerance with supervision strategies:
proc, err := orch.Spawn(agent, vega.WithSupervision(vega.Supervision{
Strategy: vega.Restart,
MaxRestarts: 3,
Window: 5 * time.Minute,
}))
Supervision strategies:
- Restart: Automatically restart the process on failure
- Stop: Stop the process permanently on failure
- Escalate: Pass the failure to a supervisor agent
Tools ¶
Register tools for agents to use:
tools := tools.NewTools()
tools.RegisterBuiltins() // read_file, write_file, run_command
tools.Register("greet", func(name string) string {
return "Hello, " + name + "!"
})
agent := vega.Agent{
Name: "greeter",
Tools: tools,
}
DSL ¶
For non-programmers, use the YAML-based DSL in the dsl package:
parser := dsl.NewParser()
doc, err := parser.ParseFile("team.vega.yaml")
interp, err := dsl.NewInterpreter(doc)
result, err := interp.Execute(ctx, "workflow-name", inputs)
See the examples/ directory for complete DSL examples.
Architecture ¶
The main components are:
- Agent: Blueprint defining model, system prompt, tools, and configuration
- Process: A running agent instance with state and lifecycle
- Orchestrator: Manages processes, enforces limits, coordinates shutdown
- Supervision: Fault tolerance configuration with restart strategies
- Tools: Tool registration with schema generation and sandboxing
- LLM: Interface for language model backends (Anthropic provided)
Thread Safety ¶
All exported types are safe for concurrent use. The Orchestrator and Process types use internal synchronization to protect shared state.
Index ¶
- Constants
- Variables
- func ContextWithEventSink(ctx context.Context, ch chan<- ChatEvent) context.Context
- func ContextWithProcess(ctx context.Context, p *Process) context.Context
- func DefaultDBPath() string
- func EnsureHome() error
- func EventSinkFromContext(ctx context.Context) chan<- ChatEvent
- func Home() string
- func IsRetryable(class ErrorClass) bool
- func PublishEvent(ctx context.Context, event Event, config *CallbackConfig) error
- func ShouldRetry(err error, policy *RetryPolicy, attempt int) bool
- func WorkspacePath() string
- type APIError
- type Agent
- type Alert
- type AlertType
- type BackoffConfig
- type BackoffType
- type Budget
- type BudgetAction
- type CallMetrics
- type CallbackConfig
- type ChatEvent
- type ChatEventType
- type ChatStream
- type ChildInfo
- type ChildRestart
- type ChildSpec
- type CircuitBreaker
- type CombinedPrompt
- type DynamicPrompt
- type ErrorClass
- type Event
- type EventPoller
- type EventType
- type ExitReason
- type ExitSignal
- type Future
- type GroupMember
- type HealthConfig
- type HealthMonitor
- type JSONPersistence
- type LinkedProcessError
- type MonitorRef
- type Orchestrator
- func (o *Orchestrator) BroadcastToGroup(ctx context.Context, groupName, message string) (map[string]error, error)
- func (o *Orchestrator) CallbackDir() string
- func (o *Orchestrator) CallbackURL() string
- func (o *Orchestrator) DeleteGroup(name string) error
- func (o *Orchestrator) Get(id string) *Process
- func (o *Orchestrator) GetAgent(name string) (Agent, bool)
- func (o *Orchestrator) GetByName(name string) *Process
- func (o *Orchestrator) GetContainerManager() *container.Manager
- func (o *Orchestrator) GetGroup(name string) (*ProcessGroup, bool)
- func (o *Orchestrator) GetOrCreateGroup(name string) *ProcessGroup
- func (o *Orchestrator) GetProjectRegistry() *container.ProjectRegistry
- func (o *Orchestrator) GetSpawnTree() []*SpawnTreeNode
- func (o *Orchestrator) GroupMembers(groupName string) ([]*Process, error)
- func (o *Orchestrator) HandleEventCallback() http.HandlerFunc
- func (o *Orchestrator) JoinGroup(groupName string, p *Process)
- func (o *Orchestrator) Kill(id string) error
- func (o *Orchestrator) LeaveAllGroups(p *Process)
- func (o *Orchestrator) LeaveGroup(groupName string, p *Process) error
- func (o *Orchestrator) List() []*Process
- func (o *Orchestrator) ListGroups() []string
- func (o *Orchestrator) NewSupervisor(spec SupervisorSpec) *Supervisor
- func (o *Orchestrator) OnHealthAlert(fn func(Alert))
- func (o *Orchestrator) OnProcessComplete(fn func(*Process, string))
- func (o *Orchestrator) OnProcessFailed(fn func(*Process, error))
- func (o *Orchestrator) OnProcessStarted(fn func(*Process))
- func (o *Orchestrator) Register(name string, p *Process) error
- func (o *Orchestrator) RegisterAgent(agent Agent)
- func (o *Orchestrator) Shutdown(ctx context.Context) error
- func (o *Orchestrator) Spawn(agent Agent, opts ...SpawnOption) (*Process, error)
- func (o *Orchestrator) SpawnSupervised(agent Agent, restart ChildRestart, opts ...SpawnOption) (*Process, error)
- func (o *Orchestrator) Unregister(name string)
- type OrchestratorOption
- func WithCallbackDir(dir string) OrchestratorOption
- func WithCallbackURL(url string) OrchestratorOption
- func WithContainerManager(cm *container.Manager, baseDir string) OrchestratorOption
- func WithHealthCheck(config HealthConfig) OrchestratorOption
- func WithLLM(l llm.LLM) OrchestratorOption
- func WithMaxProcesses(n int) OrchestratorOption
- func WithPersistence(p Persistence) OrchestratorOption
- func WithRateLimits(limits map[string]RateLimitConfig) OrchestratorOption
- func WithRecovery(enabled bool) OrchestratorOption
- type Persistence
- type Process
- func (p *Process) Complete(result string)
- func (p *Process) Demonitor(ref MonitorRef)
- func (p *Process) ExitSignals() <-chan ExitSignal
- func (p *Process) Fail(err error)
- func (p *Process) Groups() []string
- func (p *Process) HydrateMessages(msgs []llm.Message)
- func (p *Process) Link(other *Process)
- func (p *Process) Links() []string
- func (p *Process) Messages() []llm.Message
- func (p *Process) Metrics() ProcessMetrics
- func (p *Process) Monitor(other *Process) MonitorRef
- func (p *Process) Name() string
- func (p *Process) Result() string
- func (p *Process) Send(ctx context.Context, message string) (string, error)
- func (p *Process) SendAsync(message string) *Future
- func (p *Process) SendStream(ctx context.Context, message string) (*Stream, error)
- func (p *Process) SendStreamRich(ctx context.Context, message string) (*ChatStream, error)
- func (p *Process) SetExtraSystem(content string)
- func (p *Process) SetTrapExit(trap bool)
- func (p *Process) Status() Status
- func (p *Process) Stop()
- func (p *Process) TrapExit() bool
- func (p *Process) Unlink(other *Process)
- type ProcessError
- type ProcessEvent
- type ProcessEventType
- type ProcessGroup
- func (g *ProcessGroup) BBDelete(key string)
- func (g *ProcessGroup) BBGet(key string) (any, bool)
- func (g *ProcessGroup) BBKeys() []string
- func (g *ProcessGroup) BBSet(key string, value any)
- func (g *ProcessGroup) BBSnapshot() map[string]any
- func (g *ProcessGroup) Broadcast(ctx context.Context, message string) map[string]error
- func (g *ProcessGroup) Count() int
- func (g *ProcessGroup) Has(p *Process) bool
- func (g *ProcessGroup) Join(p *Process) bool
- func (g *ProcessGroup) Leave(p *Process) bool
- func (g *ProcessGroup) MemberInfo() []GroupMember
- func (g *ProcessGroup) Members() []*Process
- func (g *ProcessGroup) Name() string
- func (g *ProcessGroup) OnJoin(fn func(*Process))
- func (g *ProcessGroup) OnLeave(fn func(*Process))
- type ProcessMetrics
- type ProcessState
- type RateLimit
- type RateLimitConfig
- type RateLimitStrategy
- type RetryPolicy
- type SendResult
- type SkillMatch
- type SkillSummary
- type SkillsConfig
- type SkillsPrompt
- func (s *SkillsPrompt) AvailableSkills() []string
- func (s *SkillsPrompt) GetMatchedSkills() []skills.SkillMatch
- func (s *SkillsPrompt) ListSkillSummaries() []SkillSummary
- func (s *SkillsPrompt) Loader() *skills.Loader
- func (s *SkillsPrompt) Prompt() string
- func (s *SkillsPrompt) SetContext(message string)
- type SkillsPromptOption
- type SpawnOption
- func WithMaxIterations(n int) SpawnOption
- func WithMessages(messages []llm.Message) SpawnOption
- func WithParent(parent *Process) SpawnOption
- func WithProcessContext(ctx context.Context) SpawnOption
- func WithProject(name string) SpawnOption
- func WithSpawnReason(reason string) SpawnOption
- func WithSupervision(s Supervision) SpawnOption
- func WithTask(task string) SpawnOption
- func WithTimeout(d time.Duration) SpawnOption
- func WithWorkDir(dir string) SpawnOption
- type SpawnTreeNode
- type StaticPrompt
- type Status
- type Strategy
- type Stream
- type Supervision
- type Supervisor
- func (s *Supervisor) Children() []*Process
- func (s *Supervisor) CountChildren() (total, running, failed int)
- func (s *Supervisor) DeleteChild(name string) error
- func (s *Supervisor) GetChild(name string) *Process
- func (s *Supervisor) RestartChild(name string) error
- func (s *Supervisor) Start() error
- func (s *Supervisor) StartChild(spec ChildSpec) (*Process, error)
- func (s *Supervisor) Stop()
- func (s *Supervisor) TerminateChild(name string) error
- func (s *Supervisor) WhichChildren() []ChildInfo
- type SupervisorSpec
- type SupervisorStrategy
- type SystemPrompt
- type ValidationError
Constants ¶
const ( // DefaultMaxIterations is the default maximum tool call loop iterations DefaultMaxIterations = 50 // DefaultMaxContextTokens is the default context window size DefaultMaxContextTokens = 100000 // DefaultLLMTimeout is the default timeout for LLM API calls DefaultLLMTimeout = 5 * time.Minute // DefaultStreamBufferSize is the default buffer size for streaming responses DefaultStreamBufferSize = 100 // DefaultSupervisorPollInterval is the default interval for supervisor health checks DefaultSupervisorPollInterval = 100 * time.Millisecond )
Default configuration values
Variables ¶
var ( // ErrProcessNotRunning is returned when trying to send to a stopped process ErrProcessNotRunning = errors.New("process is not running") // ErrNotCompleted is returned when accessing Future result before completion ErrNotCompleted = errors.New("operation not completed") // ErrMaxIterationsExceeded is returned when tool loop exceeds safety limit ErrMaxIterationsExceeded = errors.New("maximum iterations exceeded") // ErrBudgetExceeded is returned when cost would exceed budget ErrBudgetExceeded = errors.New("budget exceeded") // ErrRateLimited is returned when rate limit is hit ErrRateLimited = errors.New("rate limited") // ErrCircuitOpen is returned when circuit breaker is open ErrCircuitOpen = errors.New("circuit breaker is open") // ErrSandboxViolation is returned when file access escapes sandbox ErrSandboxViolation = errors.New("sandbox violation: path escapes allowed directory") // ErrMaxProcessesReached is returned when orchestrator is at capacity ErrMaxProcessesReached = errors.New("maximum number of processes reached") // ErrProcessNotFound is returned when process ID is not found ErrProcessNotFound = errors.New("process not found") // ErrAgentNotFound is returned when agent name is not found ErrAgentNotFound = errors.New("agent not found") // ErrWorkflowNotFound is returned when workflow name is not found ErrWorkflowNotFound = errors.New("workflow not found") // ErrInvalidInput is returned for invalid workflow inputs ErrInvalidInput = errors.New("invalid input") // ErrTimeout is returned when an operation times out ErrTimeout = errors.New("operation timed out") // ErrLinkedProcessDied is returned when a process dies due to a linked process dying ErrLinkedProcessDied = errors.New("linked process died") // ErrNameTaken is returned when trying to register a name that's already in use ErrNameTaken = errors.New("name already registered") // ErrGroupNotFound is returned when a process group doesn't exist ErrGroupNotFound = errors.New("process group not found") )
Standard errors
Functions ¶
func ContextWithEventSink ¶ added in v0.2.0
ContextWithEventSink returns a new context with a ChatEvent sink attached.
func ContextWithProcess ¶
ContextWithProcess returns a new context with the process attached.
func DefaultDBPath ¶ added in v0.2.0
func DefaultDBPath() string
DefaultDBPath returns the default SQLite database path (~/.vega/vega.db).
func EnsureHome ¶
func EnsureHome() error
EnsureHome creates the Vega home and workspace directories if they don't exist.
func EventSinkFromContext ¶ added in v0.2.0
EventSinkFromContext retrieves the ChatEvent sink from the context, if present.
func Home ¶
func Home() string
Home returns the Vega home directory. It defaults to ~/.vega but can be overridden with the VEGA_HOME environment variable.
func IsRetryable ¶
func IsRetryable(class ErrorClass) bool
IsRetryable returns true if the error class should typically be retried.
func PublishEvent ¶
func PublishEvent(ctx context.Context, event Event, config *CallbackConfig) error
PublishEvent sends an event to the orchestrator. Used by workers to report their status.
func ShouldRetry ¶
func ShouldRetry(err error, policy *RetryPolicy, attempt int) bool
ShouldRetry checks if an error should be retried based on the retry policy.
func WorkspacePath ¶
func WorkspacePath() string
WorkspacePath returns the default shared workspace directory.
Types ¶
type Agent ¶
type Agent struct {
// Name is a human-readable identifier for this agent
Name string
// Model is the LLM model ID (e.g., "claude-sonnet-4-20250514")
Model string
// FallbackModel is used when all retries with the primary model are exhausted (optional)
FallbackModel string
// System is the system prompt (static or dynamic)
System SystemPrompt
// Tools available to this agent
Tools *tools.Tools
// Memory provides persistent storage (optional)
Memory memory.Memory
// Context manages conversation history (optional)
Context memory.ContextManager
// Budget sets cost limits (optional)
Budget *Budget
// Retry configures retry behavior for transient failures (optional)
Retry *RetryPolicy
// RateLimit throttles requests (optional)
RateLimit *RateLimit
// CircuitBreaker isolates failures (optional)
CircuitBreaker *CircuitBreaker
// LLM is the backend to use (optional, uses default if not set)
LLM llm.LLM
// Temperature for generation (0.0-1.0, optional)
Temperature *float64
// MaxTokens limits response length (optional)
MaxTokens int
// MaxIterations limits tool call loop iterations (default: DefaultMaxIterations)
MaxIterations int
}
Agent defines an AI agent. It's a blueprint, not a running process. Spawn an Agent with an Orchestrator to get a running Process.
type Alert ¶
type Alert struct {
ProcessID string
AgentName string
Type AlertType
Message string
Timestamp time.Time
}
Alert represents a health alert.
type BackoffConfig ¶
type BackoffConfig struct {
// Initial delay before first retry
Initial time.Duration
// Multiplier for exponential backoff
Multiplier float64
// Max delay between retries
Max time.Duration
// Jitter adds randomness (0.0-1.0)
Jitter float64
// Type of backoff (linear, exponential, constant)
Type BackoffType
}
BackoffConfig configures retry delays.
type BackoffType ¶
type BackoffType int
BackoffType specifies the backoff algorithm.
const ( BackoffExponential BackoffType = iota BackoffLinear BackoffConstant )
type Budget ¶
type Budget struct {
// Limit is the maximum cost in USD
Limit float64
// OnExceed determines behavior when budget is exceeded
OnExceed BudgetAction
}
Budget configures cost limits for an agent.
type BudgetAction ¶
type BudgetAction int
BudgetAction determines what happens when a budget is exceeded.
const ( // BudgetBlock prevents the request from executing BudgetBlock BudgetAction = iota // BudgetWarn logs a warning but allows the request BudgetWarn // BudgetAllow silently allows the request BudgetAllow )
type CallMetrics ¶
type CallMetrics struct {
InputTokens int
OutputTokens int
CostUSD float64
LatencyMs int64
ToolCalls []string
Retries int
}
CallMetrics tracks a single LLM call.
type CallbackConfig ¶
type CallbackConfig struct {
// Dir is the directory for file-based callbacks (local mode)
Dir string
// URL is the endpoint for HTTP-based callbacks (distributed mode)
URL string
// contains filtered or unexported fields
}
CallbackConfig holds callback configuration for an orchestrator.
func NewCallbackConfig ¶
func NewCallbackConfig(dir, url string) *CallbackConfig
NewCallbackConfig creates a callback config for use by workers. Pass this to workers so they can report events back.
type ChatEvent ¶
type ChatEvent struct {
Type ChatEventType `json:"type"`
Delta string `json:"delta,omitempty"`
ToolCallID string `json:"tool_call_id,omitempty"`
ToolName string `json:"tool_name,omitempty"`
Arguments map[string]any `json:"arguments,omitempty"`
Result string `json:"result,omitempty"`
DurationMs int64 `json:"duration_ms,omitempty"`
Error string `json:"error,omitempty"`
NestedAgent string `json:"nested_agent,omitempty"`
}
ChatEvent is a structured event emitted during a streaming chat response. It carries text deltas alongside tool call lifecycle events so that callers can render tool activity inline with the response text.
type ChatEventType ¶
type ChatEventType string
ChatEventType categorizes chat stream events.
const ( ChatEventTextDelta ChatEventType = "text_delta" ChatEventToolStart ChatEventType = "tool_start" ChatEventToolEnd ChatEventType = "tool_end" ChatEventError ChatEventType = "error" ChatEventDone ChatEventType = "done" )
type ChatStream ¶
type ChatStream struct {
// contains filtered or unexported fields
}
ChatStream represents a streaming chat response with structured events.
func (*ChatStream) Err ¶
func (cs *ChatStream) Err() error
Err returns any error that occurred during streaming.
func (*ChatStream) Events ¶
func (cs *ChatStream) Events() <-chan ChatEvent
Events returns the channel of chat events.
func (*ChatStream) Response ¶
func (cs *ChatStream) Response() string
Response returns the complete text response after the stream is done.
type ChildInfo ¶
type ChildInfo struct {
Name string
ID string
Status Status
Restart ChildRestart
Agent string
}
ChildInfo contains information about a supervised child.
type ChildRestart ¶
type ChildRestart int
ChildRestart determines when a child should be restarted.
const ( // Permanent children are always restarted Permanent ChildRestart = iota // Transient children are restarted only on abnormal exit Transient // Temporary children are never restarted Temporary )
func (ChildRestart) String ¶
func (r ChildRestart) String() string
String returns the restart type name.
type ChildSpec ¶
type ChildSpec struct {
// Name is the registered name for this child (optional)
Name string
// Agent is the agent definition to spawn
Agent Agent
// Restart determines when to restart this child
Restart ChildRestart
// Task is the initial task for the child
Task string
// SpawnOpts are additional options for spawning
SpawnOpts []SpawnOption
}
ChildSpec defines how to start and supervise a child process.
type CircuitBreaker ¶
type CircuitBreaker struct {
// Threshold is failures before opening the circuit
Threshold int
// ResetAfter is time before trying again (half-open)
ResetAfter time.Duration
// HalfOpenMax is requests allowed in half-open state
HalfOpenMax int
// OnOpen is called when circuit opens
OnOpen func()
// OnClose is called when circuit closes
OnClose func()
}
CircuitBreaker isolates failures to prevent cascading.
type CombinedPrompt ¶
type CombinedPrompt struct {
// contains filtered or unexported fields
}
CombinedPrompt combines multiple SystemPrompts into one.
func NewCombinedPrompt ¶
func NewCombinedPrompt(prompts ...SystemPrompt) *CombinedPrompt
NewCombinedPrompt creates a prompt that combines multiple prompts.
func (*CombinedPrompt) Prompt ¶
func (c *CombinedPrompt) Prompt() string
Prompt returns the combined prompt from all sources.
type DynamicPrompt ¶
type DynamicPrompt func() string
DynamicPrompt is a function that generates a system prompt. It's called each turn, allowing the prompt to include current state.
func (DynamicPrompt) Prompt ¶
func (d DynamicPrompt) Prompt() string
Prompt calls the function to generate the prompt.
type ErrorClass ¶
type ErrorClass int
ErrorClass categorizes errors for retry decisions.
const ( ErrClassRateLimit ErrorClass = iota ErrClassOverloaded ErrClassTimeout ErrClassTemporary ErrClassInvalidRequest ErrClassAuthentication ErrClassBudgetExceeded )
func ClassifyError ¶
func ClassifyError(err error) ErrorClass
ClassifyError determines the ErrorClass for an error. This enables intelligent retry decisions based on error type.
type Event ¶
type Event struct {
Type EventType `json:"type"`
ProcessID string `json:"process_id"`
AgentName string `json:"agent_name"`
Timestamp time.Time `json:"timestamp"`
Data map[string]string `json:"data,omitempty"`
// For completion events
Result string `json:"result,omitempty"`
// For failure events
Error string `json:"error,omitempty"`
// For progress events
Progress float64 `json:"progress,omitempty"`
Message string `json:"message,omitempty"`
Iteration int `json:"iteration,omitempty"`
}
Event represents a worker lifecycle event.
type EventPoller ¶
type EventPoller struct {
// contains filtered or unexported fields
}
EventPoller polls a directory for event files.
func (*EventPoller) Start ¶
func (p *EventPoller) Start() <-chan Event
Start begins polling for events.
type ExitReason ¶
type ExitReason string
ExitReason describes why a process exited.
const ( // ExitNormal means the process completed successfully ExitNormal ExitReason = "normal" // ExitError means the process failed with an error ExitError ExitReason = "error" // ExitKilled means the process was explicitly killed ExitKilled ExitReason = "killed" // ExitLinked means the process died because a linked process died ExitLinked ExitReason = "linked" )
type ExitSignal ¶
type ExitSignal struct {
// ProcessID is the ID of the process that exited
ProcessID string
// AgentName is the name of the agent that was running
AgentName string
// Reason explains why the process exited
Reason ExitReason
// Error is set if Reason is ExitError
Error error
// Result is set if Reason is ExitNormal
Result string
// Timestamp is when the exit occurred
Timestamp time.Time
}
ExitSignal is sent to linked/monitoring processes when a process exits. When trapExit is true, these are delivered via the ExitSignals channel. When trapExit is false, linked process deaths cause this process to die.
type Future ¶
type Future struct {
// contains filtered or unexported fields
}
Future represents an asynchronous operation result.
type GroupMember ¶
type GroupMember struct {
ID string
Name string // Registered name, if any
Agent string
Status Status
}
GroupMember contains information about a group member.
type HealthConfig ¶
type HealthConfig struct {
// CheckInterval is how often to check health
CheckInterval time.Duration
// StaleProgressMinutes warns if no progress
StaleProgressMinutes int
// MaxIterationsWarning warns if iterations exceed this
MaxIterationsWarning int
// ErrorLoopCount is consecutive errors before alert
ErrorLoopCount int
// CostAlertUSD alerts when cost exceeds this
CostAlertUSD float64
}
HealthConfig configures health monitoring.
type HealthMonitor ¶
type HealthMonitor struct {
// contains filtered or unexported fields
}
HealthMonitor monitors process health.
func NewHealthMonitor ¶
func NewHealthMonitor(config HealthConfig) *HealthMonitor
NewHealthMonitor creates a new health monitor.
func (*HealthMonitor) Alerts ¶
func (h *HealthMonitor) Alerts() <-chan Alert
Alerts returns the channel of health alerts.
func (*HealthMonitor) Start ¶
func (h *HealthMonitor) Start(getProcesses func() []*Process)
Start begins health monitoring.
type JSONPersistence ¶
type JSONPersistence struct {
// contains filtered or unexported fields
}
JSONPersistence saves state to a JSON file.
func NewJSONPersistence ¶
func NewJSONPersistence(path string) *JSONPersistence
NewJSONPersistence creates a new JSON file persistence.
func (*JSONPersistence) Load ¶
func (p *JSONPersistence) Load() ([]ProcessState, error)
Load reads state from the file.
func (*JSONPersistence) Save ¶
func (p *JSONPersistence) Save(states []ProcessState) error
Save writes state to the file.
type LinkedProcessError ¶
LinkedProcessError is the error set when a process dies due to a linked process dying.
func (*LinkedProcessError) Error ¶
func (e *LinkedProcessError) Error() string
func (*LinkedProcessError) Unwrap ¶
func (e *LinkedProcessError) Unwrap() error
type MonitorRef ¶
type MonitorRef struct {
// contains filtered or unexported fields
}
MonitorRef is a reference to an active monitor, used for demonitoring.
type Orchestrator ¶
type Orchestrator struct {
// contains filtered or unexported fields
}
Orchestrator manages multiple processes.
func NewOrchestrator ¶
func NewOrchestrator(opts ...OrchestratorOption) *Orchestrator
NewOrchestrator creates a new Orchestrator.
func (*Orchestrator) BroadcastToGroup ¶
func (o *Orchestrator) BroadcastToGroup(ctx context.Context, groupName, message string) (map[string]error, error)
BroadcastToGroup sends a message to all members of a group.
func (*Orchestrator) CallbackDir ¶
func (o *Orchestrator) CallbackDir() string
CallbackDir returns the callback directory if configured.
func (*Orchestrator) CallbackURL ¶
func (o *Orchestrator) CallbackURL() string
CallbackURL returns the callback URL if configured.
func (*Orchestrator) DeleteGroup ¶
func (o *Orchestrator) DeleteGroup(name string) error
DeleteGroup removes an empty group. Returns error if the group has members.
func (*Orchestrator) Get ¶
func (o *Orchestrator) Get(id string) *Process
Get returns a process by ID.
func (*Orchestrator) GetAgent ¶
func (o *Orchestrator) GetAgent(name string) (Agent, bool)
GetAgent returns a registered agent by name.
func (*Orchestrator) GetByName ¶
func (o *Orchestrator) GetByName(name string) *Process
GetByName returns a process by its registered name. Returns nil if no process is registered with that name.
func (*Orchestrator) GetContainerManager ¶
func (o *Orchestrator) GetContainerManager() *container.Manager
GetContainerManager returns the container manager, if configured.
func (*Orchestrator) GetGroup ¶
func (o *Orchestrator) GetGroup(name string) (*ProcessGroup, bool)
GetGroup returns a process group by name.
func (*Orchestrator) GetOrCreateGroup ¶
func (o *Orchestrator) GetOrCreateGroup(name string) *ProcessGroup
GetOrCreateGroup returns a group, creating it if necessary.
func (*Orchestrator) GetProjectRegistry ¶
func (o *Orchestrator) GetProjectRegistry() *container.ProjectRegistry
GetProjectRegistry returns the project registry, if configured.
func (*Orchestrator) GetSpawnTree ¶
func (o *Orchestrator) GetSpawnTree() []*SpawnTreeNode
GetSpawnTree returns the hierarchical spawn tree of all processes. Root processes (those with no parent) are returned as top-level nodes.
func (*Orchestrator) GroupMembers ¶
func (o *Orchestrator) GroupMembers(groupName string) ([]*Process, error)
GroupMembers returns members of a named group.
func (*Orchestrator) HandleEventCallback ¶
func (o *Orchestrator) HandleEventCallback() http.HandlerFunc
HandleEventCallback returns an http.HandlerFunc for receiving HTTP callbacks. Mount this at your callback URL endpoint.
Example:
http.HandleFunc("/events", orch.HandleEventCallback())
func (*Orchestrator) JoinGroup ¶
func (o *Orchestrator) JoinGroup(groupName string, p *Process)
JoinGroup adds a process to a named group. Creates the group if it doesn't exist.
func (*Orchestrator) LeaveAllGroups ¶
func (o *Orchestrator) LeaveAllGroups(p *Process)
LeaveAllGroups removes a process from all groups. This is called automatically when a process exits.
func (*Orchestrator) LeaveGroup ¶
func (o *Orchestrator) LeaveGroup(groupName string, p *Process) error
LeaveGroup removes a process from a named group.
func (*Orchestrator) ListGroups ¶
func (o *Orchestrator) ListGroups() []string
ListGroups returns the names of all groups.
func (*Orchestrator) NewSupervisor ¶
func (o *Orchestrator) NewSupervisor(spec SupervisorSpec) *Supervisor
NewSupervisor creates a new supervisor with the given spec.
func (*Orchestrator) OnHealthAlert ¶
func (o *Orchestrator) OnHealthAlert(fn func(Alert))
OnHealthAlert registers a callback for health alerts.
func (*Orchestrator) OnProcessComplete ¶
func (o *Orchestrator) OnProcessComplete(fn func(*Process, string))
OnProcessComplete registers a callback for when a process completes successfully. The callback receives the process and its final result.
func (*Orchestrator) OnProcessFailed ¶
func (o *Orchestrator) OnProcessFailed(fn func(*Process, error))
OnProcessFailed registers a callback for when a process fails. The callback receives the process and the error.
func (*Orchestrator) OnProcessStarted ¶
func (o *Orchestrator) OnProcessStarted(fn func(*Process))
OnProcessStarted registers a callback for when a process starts.
func (*Orchestrator) Register ¶
func (o *Orchestrator) Register(name string, p *Process) error
Register associates a name with a process. Returns error if name is already taken. The process will be automatically unregistered when it exits.
func (*Orchestrator) RegisterAgent ¶
func (o *Orchestrator) RegisterAgent(agent Agent)
RegisterAgent registers an agent definition for later respawning. This is required for automatic restart to work.
func (*Orchestrator) Shutdown ¶
func (o *Orchestrator) Shutdown(ctx context.Context) error
Shutdown gracefully shuts down all processes.
func (*Orchestrator) Spawn ¶
func (o *Orchestrator) Spawn(agent Agent, opts ...SpawnOption) (*Process, error)
Spawn creates and starts a new process from an agent.
func (*Orchestrator) SpawnSupervised ¶
func (o *Orchestrator) SpawnSupervised(agent Agent, restart ChildRestart, opts ...SpawnOption) (*Process, error)
SpawnSupervised spawns a process with automatic restart on failure. The agent must be registered with RegisterAgent for restart to work.
func (*Orchestrator) Unregister ¶
func (o *Orchestrator) Unregister(name string)
Unregister removes a name association.
type OrchestratorOption ¶
type OrchestratorOption func(*Orchestrator)
OrchestratorOption configures an Orchestrator.
func WithCallbackDir ¶
func WithCallbackDir(dir string) OrchestratorOption
WithCallbackDir configures file-based callbacks for local workers. Events are written as JSON files to the specified directory. The orchestrator polls this directory for events from workers.
Example:
orch := vega.NewOrchestrator(
vega.WithCallbackDir("~/.vega/events"),
)
func WithCallbackURL ¶
func WithCallbackURL(url string) OrchestratorOption
WithCallbackURL configures HTTP-based callbacks for distributed workers. Workers POST events to this URL. The orchestrator must expose this endpoint.
Example:
orch := vega.NewOrchestrator(
vega.WithCallbackURL("http://orchestrator:3001/events"),
)
func WithContainerManager ¶
func WithContainerManager(cm *container.Manager, baseDir string) OrchestratorOption
WithContainerManager enables container-based project isolation. If baseDir is provided, a ProjectRegistry will also be created.
func WithHealthCheck ¶
func WithHealthCheck(config HealthConfig) OrchestratorOption
WithHealthCheck enables health monitoring.
func WithMaxProcesses ¶
func WithMaxProcesses(n int) OrchestratorOption
WithMaxProcesses sets the maximum number of concurrent processes.
func WithPersistence ¶
func WithPersistence(p Persistence) OrchestratorOption
WithPersistence enables process state persistence.
func WithRateLimits ¶
func WithRateLimits(limits map[string]RateLimitConfig) OrchestratorOption
WithRateLimits configures per-model rate limiting.
func WithRecovery ¶
func WithRecovery(enabled bool) OrchestratorOption
WithRecovery enables process recovery on startup.
type Persistence ¶
type Persistence interface {
Save(states []ProcessState) error
Load() ([]ProcessState, error)
}
Persistence interface for saving process state.
type Process ¶
type Process struct {
// ID is the unique identifier for this process
ID string
// Agent is the agent definition this process is running
Agent *Agent
// Task describes what this process is working on
Task string
// WorkDir is the isolated workspace directory
WorkDir string
// Project is the container project name for isolated execution
Project string
// StartedAt is when the process was spawned
StartedAt time.Time
// Supervision configures fault tolerance
Supervision *Supervision
// Spawn tree tracking
ParentID string // ID of spawning process (empty if root)
ParentAgent string // Agent name of parent
ChildIDs []string // Child process IDs
SpawnDepth int // Depth in tree (0 = root)
SpawnReason string // Task/context for spawn
// contains filtered or unexported fields
}
Process is a running Agent with state and lifecycle.
func ProcessFromContext ¶
ProcessFromContext retrieves the process from the context, if present.
func (*Process) Complete ¶
Complete marks the process as successfully completed with a result. This triggers OnProcessComplete callbacks and notifies linked/monitoring processes. Normal completion does NOT cause linked processes to die.
func (*Process) Demonitor ¶
func (p *Process) Demonitor(ref MonitorRef)
Demonitor stops monitoring a process. The MonitorRef must be one returned by a previous Monitor call.
func (*Process) ExitSignals ¶
func (p *Process) ExitSignals() <-chan ExitSignal
ExitSignals returns the channel for receiving exit signals. Only receives signals when trapExit is true, or for monitored processes. Returns nil if no exit signal channel has been created.
func (*Process) Fail ¶
Fail marks the process as failed with an error. This triggers OnProcessFailed callbacks and notifies linked/monitoring processes. Failed processes cause linked processes to die too (unless they trap exits).
func (*Process) HydrateMessages ¶ added in v0.2.0
HydrateMessages loads historical messages into a process that has no conversation history yet (e.g. after a restart). This is a no-op if the process already has messages.
func (*Process) Link ¶
Link creates a bidirectional link between this process and another. If either process dies, the other will also die (unless trapExit is set). Linking is idempotent - linking to an already-linked process is a no-op.
func (*Process) Metrics ¶
func (p *Process) Metrics() ProcessMetrics
Metrics returns the current process metrics.
func (*Process) Monitor ¶
func (p *Process) Monitor(other *Process) MonitorRef
Monitor starts monitoring another process. When the monitored process exits, this process receives an ExitSignal on its ExitSignals channel (does not cause death, unlike Link). Returns a MonitorRef that can be used to stop monitoring.
func (*Process) Name ¶
Name returns the registered name of the process, or empty string if not named.
func (*Process) SendStream ¶
SendStream sends a message and returns a streaming response.
func (*Process) SendStreamRich ¶
SendStreamRich sends a message and returns a ChatStream with structured events (text deltas, tool start/end) instead of raw text chunks.
func (*Process) SetExtraSystem ¶
SetExtraSystem sets additional system prompt content that is appended after the main system prompt. Use this to inject per-process context (e.g. user memory) without modifying the agent's shared System prompt.
func (*Process) SetTrapExit ¶
SetTrapExit enables or disables exit trapping. When trapExit is true, linked process deaths deliver ExitSignals instead of killing this process. This is how supervisors survive their children dying.
func (*Process) Stop ¶
func (p *Process) Stop()
Stop terminates the process. This is equivalent to killing the process - linked processes will be notified.
type ProcessError ¶
ProcessError wraps errors with process context.
func (*ProcessError) Error ¶
func (e *ProcessError) Error() string
func (*ProcessError) Unwrap ¶
func (e *ProcessError) Unwrap() error
type ProcessEvent ¶
type ProcessEvent struct {
Type ProcessEventType
Process *Process
Result string // For complete events
Error error // For failed events
Timestamp time.Time
}
ProcessEvent represents a process lifecycle event.
type ProcessEventType ¶
type ProcessEventType int
ProcessEventType is the type of lifecycle event.
const ( ProcessStarted ProcessEventType = iota ProcessCompleted ProcessFailed )
type ProcessGroup ¶
type ProcessGroup struct {
// contains filtered or unexported fields
}
ProcessGroup enables multi-agent collaboration by grouping related processes. Processes can join multiple groups and groups support broadcast operations.
func NewGroup ¶
func NewGroup(name string) *ProcessGroup
NewGroup creates a new process group. Groups are typically accessed via the orchestrator's Join/Leave methods.
func (*ProcessGroup) BBDelete ¶
func (g *ProcessGroup) BBDelete(key string)
BBDelete removes a key from the group's shared blackboard.
func (*ProcessGroup) BBGet ¶
func (g *ProcessGroup) BBGet(key string) (any, bool)
BBGet reads a value from the group's shared blackboard.
func (*ProcessGroup) BBKeys ¶
func (g *ProcessGroup) BBKeys() []string
BBKeys returns all keys on the group's shared blackboard.
func (*ProcessGroup) BBSet ¶
func (g *ProcessGroup) BBSet(key string, value any)
BBSet writes a key/value pair to the group's shared blackboard.
func (*ProcessGroup) BBSnapshot ¶
func (g *ProcessGroup) BBSnapshot() map[string]any
BBSnapshot returns a shallow copy of the entire blackboard.
func (*ProcessGroup) Broadcast ¶
Broadcast sends a message to all group members. Returns a map of process ID to result/error.
func (*ProcessGroup) Count ¶
func (g *ProcessGroup) Count() int
Count returns the number of members in the group.
func (*ProcessGroup) Has ¶
func (g *ProcessGroup) Has(p *Process) bool
Has checks if a process is a member of this group.
func (*ProcessGroup) Join ¶
func (g *ProcessGroup) Join(p *Process) bool
Join adds a process to this group. Returns true if the process was added, false if already a member.
func (*ProcessGroup) Leave ¶
func (g *ProcessGroup) Leave(p *Process) bool
Leave removes a process from this group. Returns true if the process was removed, false if not a member.
func (*ProcessGroup) MemberInfo ¶
func (g *ProcessGroup) MemberInfo() []GroupMember
MemberInfo returns information about all members.
func (*ProcessGroup) Members ¶
func (g *ProcessGroup) Members() []*Process
Members returns all processes in this group.
func (*ProcessGroup) OnJoin ¶
func (g *ProcessGroup) OnJoin(fn func(*Process))
OnJoin registers a callback for when processes join.
func (*ProcessGroup) OnLeave ¶
func (g *ProcessGroup) OnLeave(fn func(*Process))
OnLeave registers a callback for when processes leave.
type ProcessMetrics ¶
type ProcessMetrics struct {
Iterations int
InputTokens int
OutputTokens int
CostUSD float64
StartedAt time.Time
CompletedAt time.Time
LastActiveAt time.Time
ToolCalls int
Errors int
}
ProcessMetrics tracks process usage.
type ProcessState ¶
type ProcessState struct {
ID string `json:"id"`
AgentName string `json:"agent_name"`
Task string `json:"task"`
WorkDir string `json:"work_dir"`
Status Status `json:"status"`
StartedAt time.Time `json:"started_at"`
Metrics ProcessMetrics `json:"metrics"`
}
ProcessState is the persisted state of a process.
type RateLimit ¶
type RateLimit struct {
// RequestsPerMinute limits request rate
RequestsPerMinute int
// TokensPerMinute limits token throughput
TokensPerMinute int
}
RateLimit configures request throttling.
type RateLimitConfig ¶
type RateLimitConfig struct {
RequestsPerMinute int
TokensPerMinute int
Strategy RateLimitStrategy
}
RateLimitConfig configures rate limiting for a model.
type RateLimitStrategy ¶
type RateLimitStrategy int
RateLimitStrategy determines rate limit behavior.
const ( RateLimitQueue RateLimitStrategy = iota RateLimitReject RateLimitBackpressure )
type RetryPolicy ¶
type RetryPolicy struct {
// MaxAttempts is the maximum number of retry attempts
MaxAttempts int
// Backoff configures delay between retries
Backoff BackoffConfig
// RetryOn specifies which error classes to retry
RetryOn []ErrorClass
}
RetryPolicy configures retry behavior for transient failures.
type SendResult ¶
type SendResult struct {
Response string
Error error
Metrics CallMetrics
}
SendResult is the result of a Send operation.
type SkillMatch ¶
type SkillMatch = skills.SkillMatch
SkillMatch is a type alias for skills.SkillMatch, keeping it in the public API.
type SkillSummary ¶
SkillSummary provides a brief summary of a skill.
type SkillsConfig ¶
type SkillsConfig struct {
// Directories to load skills from.
Directories []string
// Include filters skills by name pattern.
Include []string
// Exclude filters out skills by name pattern.
Exclude []string
// MaxActive is the maximum number of skills to inject.
MaxActive int
}
SkillsConfig configures skills for an agent.
type SkillsPrompt ¶
type SkillsPrompt struct {
// contains filtered or unexported fields
}
SkillsPrompt wraps a base SystemPrompt and dynamically injects relevant skills.
func NewSkillsPrompt ¶
func NewSkillsPrompt(base SystemPrompt, loader *skills.Loader, opts ...SkillsPromptOption) *SkillsPrompt
NewSkillsPrompt creates a new SkillsPrompt that wraps a base prompt.
func SkillsPromptFromConfig ¶
func SkillsPromptFromConfig(base SystemPrompt, config SkillsConfig) (*SkillsPrompt, error)
SkillsPromptFromConfig creates a SkillsPrompt from configuration.
func (*SkillsPrompt) AvailableSkills ¶
func (s *SkillsPrompt) AvailableSkills() []string
AvailableSkills returns a list of all available skills.
func (*SkillsPrompt) GetMatchedSkills ¶
func (s *SkillsPrompt) GetMatchedSkills() []skills.SkillMatch
GetMatchedSkills returns the skills that would be matched for the current context.
func (*SkillsPrompt) ListSkillSummaries ¶
func (s *SkillsPrompt) ListSkillSummaries() []SkillSummary
ListSkillSummaries returns summaries of all available skills.
func (*SkillsPrompt) Loader ¶
func (s *SkillsPrompt) Loader() *skills.Loader
Loader returns the underlying skills loader.
func (*SkillsPrompt) Prompt ¶
func (s *SkillsPrompt) Prompt() string
Prompt generates the system prompt with injected skills.
func (*SkillsPrompt) SetContext ¶
func (s *SkillsPrompt) SetContext(message string)
SetContext sets the context message for skill matching. This should be called with the user's message before Prompt() is called.
type SkillsPromptOption ¶
type SkillsPromptOption func(*SkillsPrompt)
SkillsPromptOption configures a SkillsPrompt.
func WithMaxActiveSkills ¶
func WithMaxActiveSkills(n int) SkillsPromptOption
WithMaxActiveSkills sets the maximum number of skills to inject.
type SpawnOption ¶
type SpawnOption func(*Process)
SpawnOption configures a spawned process.
func WithMaxIterations ¶
func WithMaxIterations(n int) SpawnOption
WithMaxIterations sets the maximum iteration count.
func WithMessages ¶
func WithMessages(messages []llm.Message) SpawnOption
WithMessages initializes the process with existing conversation history. This is useful for resuming conversations or providing context from previous interactions.
func WithParent ¶
func WithParent(parent *Process) SpawnOption
WithParent sets the parent process for spawn tree tracking. This establishes the parent-child relationship for visualization.
func WithProcessContext ¶
func WithProcessContext(ctx context.Context) SpawnOption
WithProcessContext sets a parent context.
func WithProject ¶
func WithProject(name string) SpawnOption
WithProject sets the container project for isolated execution.
func WithSpawnReason ¶
func WithSpawnReason(reason string) SpawnOption
WithSpawnReason sets the reason/task for spawning this process. This provides context for why the process was created.
func WithSupervision ¶
func WithSupervision(s Supervision) SpawnOption
WithSupervision sets the supervision configuration.
func WithTimeout ¶
func WithTimeout(d time.Duration) SpawnOption
WithTimeout sets a timeout for the process.
type SpawnTreeNode ¶
type SpawnTreeNode struct {
ProcessID string `json:"process_id"`
AgentName string `json:"agent_name"`
Task string `json:"task"`
Status Status `json:"status"`
SpawnDepth int `json:"spawn_depth"`
SpawnReason string `json:"spawn_reason,omitempty"`
StartedAt time.Time `json:"started_at"`
Children []*SpawnTreeNode `json:"children,omitempty"`
}
SpawnTreeNode represents a node in the process spawn tree.
type StaticPrompt ¶
type StaticPrompt string
StaticPrompt is a fixed system prompt string.
func (StaticPrompt) Prompt ¶
func (s StaticPrompt) Prompt() string
Prompt returns the static prompt string.
type Stream ¶
type Stream struct {
// contains filtered or unexported fields
}
Stream represents a streaming response.
type Supervision ¶
type Supervision struct {
// Strategy determines what happens when a process fails
Strategy Strategy
// MaxRestarts is the maximum restart count within Window (-1 for unlimited)
MaxRestarts int
// Window is the time window for counting restarts
Window time.Duration
// Backoff configures delay between restarts
Backoff BackoffConfig
// OnFailure is called when the process fails
OnFailure func(p *Process, err error)
// OnRestart is called before restarting
OnRestart func(p *Process, attempt int)
// OnGiveUp is called when max restarts exceeded
OnGiveUp func(p *Process, err error)
// contains filtered or unexported fields
}
Supervision configures fault tolerance for a process.
type Supervisor ¶
type Supervisor struct {
// contains filtered or unexported fields
}
Supervisor manages a group of child processes with automatic restart.
func (*Supervisor) Children ¶
func (s *Supervisor) Children() []*Process
Children returns the current supervised processes.
func (*Supervisor) CountChildren ¶
func (s *Supervisor) CountChildren() (total, running, failed int)
CountChildren returns the number of children (total, running, failed).
func (*Supervisor) DeleteChild ¶
func (s *Supervisor) DeleteChild(name string) error
DeleteChild removes a child from the supervisor entirely. The child is stopped if running and will not be restarted.
func (*Supervisor) GetChild ¶
func (s *Supervisor) GetChild(name string) *Process
GetChild returns the process for a specific child by name.
func (*Supervisor) RestartChild ¶
func (s *Supervisor) RestartChild(name string) error
RestartChild forces a restart of a specific child by name.
func (*Supervisor) Start ¶
func (s *Supervisor) Start() error
Start spawns all children and begins supervision.
func (*Supervisor) StartChild ¶
func (s *Supervisor) StartChild(spec ChildSpec) (*Process, error)
StartChild dynamically adds and starts a new child to the supervisor. Returns the new process or an error if the child couldn't be started.
func (*Supervisor) Stop ¶
func (s *Supervisor) Stop()
Stop stops the supervisor and all its children.
func (*Supervisor) TerminateChild ¶
func (s *Supervisor) TerminateChild(name string) error
TerminateChild stops a specific child by name. The child will be restarted according to its restart policy unless DeleteChild is called.
func (*Supervisor) WhichChildren ¶
func (s *Supervisor) WhichChildren() []ChildInfo
WhichChildren returns information about all current children.
type SupervisorSpec ¶
type SupervisorSpec struct {
// Strategy determines how failures affect siblings
Strategy SupervisorStrategy
// MaxRestarts is the maximum restarts within Window (0 = unlimited)
MaxRestarts int
// Window is the time window for counting restarts
Window time.Duration
// Children are the child specifications
Children []ChildSpec
// Backoff configures delay between restarts
Backoff BackoffConfig
}
SupervisorSpec defines a supervision tree configuration.
type SupervisorStrategy ¶
type SupervisorStrategy int
SupervisorStrategy determines how failures affect siblings.
const ( // OneForOne restarts only the failed child OneForOne SupervisorStrategy = iota // OneForAll restarts all children when one fails OneForAll // RestForOne restarts the failed child and all children started after it RestForOne )
func (SupervisorStrategy) String ¶
func (s SupervisorStrategy) String() string
String returns the strategy name.
type SystemPrompt ¶
type SystemPrompt interface {
Prompt() string
}
SystemPrompt provides the system prompt for an agent. It can be static (StaticPrompt) or dynamic (DynamicPrompt).
type ValidationError ¶
ValidationError provides detailed validation failure information.
func (*ValidationError) Error ¶
func (e *ValidationError) Error() string
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
vega
command
Package main provides the Vega CLI.
|
Package main provides the Vega CLI. |
|
Package dsl provides a YAML-based domain-specific language for defining AI agent teams and workflows without writing Go code.
|
Package dsl provides a YAML-based domain-specific language for defining AI agent teams and workflows without writing Go code. |
|
internal
|
|
|
container
Package container provides Docker container management for project isolation.
|
Package container provides Docker container management for project isolation. |
|
skills
Package skills provides skill loading and matching for agents.
|
Package skills provides skill loading and matching for agents. |
|
Package llm provides LLM backend implementations.
|
Package llm provides LLM backend implementations. |
|
Package mcp provides a client for the Model Context Protocol.
|
Package mcp provides a client for the Model Context Protocol. |
|
Package serve provides an HTTP server with a web dashboard and REST API for monitoring and controlling Vega agent orchestration.
|
Package serve provides an HTTP server with a web dashboard and REST API for monitoring and controlling Vega agent orchestration. |