Documentation
¶
Overview ¶
Package models defines the core domain types for the mesnada orchestrator.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ACPMCPServer ¶
type ACPMCPServer struct {
Name string `json:"name"`
Command string `json:"command"`
Args []string `json:"args,omitempty"`
Env map[string]string `json:"env,omitempty"`
}
ACPMCPServer represents an MCP server configuration for ACP.
type ACPStatus ¶
type ACPStatus struct {
SessionID string `json:"session_id,omitempty"`
Mode string `json:"mode,omitempty"`
AgentName string `json:"agent_name,omitempty"`
IsConnected bool `json:"is_connected"`
ToolCalls int `json:"tool_calls,omitempty"`
LastActivity string `json:"last_activity,omitempty"`
}
ACPStatus represents the status of an ACP agent.
type Duration ¶
Duration is a wrapper around time.Duration for JSON marshaling.
func (Duration) MarshalJSON ¶
MarshalJSON implements json.Marshaler.
func (*Duration) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler.
type Engine ¶
type Engine string
Engine represents the CLI engine to use for spawning agents.
const ( // EngineCopilot uses GitHub Copilot CLI (default). EngineCopilot Engine = "copilot" // EngineClaude uses Anthropic Claude CLI. EngineClaude Engine = "claude" // EngineGemini uses Google Gemini CLI. EngineGemini Engine = "gemini" // EngineOpenCode uses OpenCode.ai CLI. EngineOpenCode Engine = "opencode" // EngineOllamaClaude uses Ollama with Claude integration. EngineOllamaClaude Engine = "ollama-claude" // EngineOllamaOpenCode uses Ollama with OpenCode integration. EngineOllamaOpenCode Engine = "ollama-opencode" // EngineMistral uses Mistral Vibe CLI. EngineMistral Engine = "mistral" // EngineACP uses ACP (Agent Client Protocol) generic agent. EngineACP Engine = "acp" // EngineACPClaudeCode uses Claude Code via ACP. EngineACPClaudeCode Engine = "acp-claude" // EngineACPCodex uses OpenAI Codex via ACP. EngineACPCodex Engine = "acp-codex" // EngineACPCustom uses a custom ACP agent. EngineACPCustom Engine = "acp-custom" // EngineACPServer represents ACP sessions managed by the Pando ACP server. EngineACPServer Engine = "acp-server" // EnginePando uses Pando itself as an ACP subagent (shorthand for engine=acp + acp_agent=pando). EnginePando Engine = "pando" )
func DefaultEngine ¶
func DefaultEngine() Engine
DefaultEngine returns the default engine. Pando is the default engine since it is the host application and provides native ACP support without requiring external process configuration.
type ListRequest ¶
type ListRequest struct {
Status []TaskStatus `json:"status,omitempty"`
Tags []string `json:"tags,omitempty"`
Limit int `json:"limit,omitempty"`
Offset int `json:"offset,omitempty"`
}
ListRequest represents a request to list tasks.
type SpawnRequest ¶
type SpawnRequest struct {
Prompt string `json:"prompt"`
WorkDir string `json:"work_dir,omitempty"`
Model string `json:"model,omitempty"`
Engine Engine `json:"engine,omitempty"`
Dependencies []string `json:"dependencies,omitempty"`
Tags []string `json:"tags,omitempty"`
Priority int `json:"priority,omitempty"`
Timeout string `json:"timeout,omitempty"`
MCPConfig string `json:"mcp_config,omitempty"`
ExtraArgs []string `json:"extra_args,omitempty"`
Persona string `json:"persona,omitempty"`
Background bool `json:"background"`
IncludeDependencyLogs bool `json:"include_dependency_logs,omitempty"`
DependencyLogLines int `json:"dependency_log_lines,omitempty"`
LogFile string `json:"log_file,omitempty"`
// ACP-specific fields
ACPMode string `json:"acp_mode,omitempty"`
ACPAgent string `json:"acp_agent,omitempty"`
ACPConfigOptions map[string]interface{} `json:"acp_config_options,omitempty"`
ACPMCPServers []ACPMCPServer `json:"acp_mcp_servers,omitempty"`
}
SpawnRequest represents a request to spawn a new agent.
type Task ¶
type Task struct {
ID string `json:"id"`
Prompt string `json:"prompt"`
WorkDir string `json:"work_dir"`
Status TaskStatus `json:"status"`
Engine Engine `json:"engine,omitempty"`
PID int `json:"pid,omitempty"`
Output string `json:"output,omitempty"`
OutputTail string `json:"output_tail,omitempty"`
RawError string `json:"raw_error,omitempty"`
Error string `json:"error,omitempty"`
ExitCode *int `json:"exit_code,omitempty"`
Model string `json:"model,omitempty"`
LogFile string `json:"log_file,omitempty"`
Progress *TaskProgress `json:"progress,omitempty"`
CreatedAt time.Time `json:"created_at"`
StartedAt *time.Time `json:"started_at,omitempty"`
CompletedAt *time.Time `json:"completed_at,omitempty"`
Dependencies []string `json:"dependencies,omitempty"`
Tags []string `json:"tags,omitempty"`
Priority int `json:"priority,omitempty"`
Timeout Duration `json:"timeout,omitempty"`
MCPConfig string `json:"mcp_config,omitempty"`
ExtraArgs []string `json:"extra_args,omitempty"`
Persona string `json:"persona,omitempty"`
// ACP-specific fields
ACPSessionID string `json:"acp_session_id,omitempty"`
ACPMode string `json:"acp_mode,omitempty"`
ACPStatus *ACPStatus `json:"acp_status,omitempty"`
CurrentTool string `json:"current_tool,omitempty"`
ToolCalls []*ToolCall `json:"tool_calls,omitempty"`
}
Task represents a CLI agent task.
func (*Task) GetProgress ¶ added in v0.210.0
GetProgress returns the current progress percentage and description.
func (*Task) IsTerminal ¶
IsTerminal returns true if the task is in a terminal state.
func (*Task) ToSummary ¶
func (t *Task) ToSummary() TaskSummary
ToSummary converts a Task to a TaskSummary.
type TaskProgress ¶
type TaskProgress struct {
Percentage int `json:"percentage"`
Description string `json:"description"`
UpdatedAt time.Time `json:"updated_at"`
}
TaskProgress represents the progress of a task.
type TaskStatus ¶
type TaskStatus string
TaskStatus represents the current state of a task.
const ( TaskStatusPending TaskStatus = "pending" TaskStatusRunning TaskStatus = "running" TaskStatusPaused TaskStatus = "paused" TaskStatusCompleted TaskStatus = "completed" TaskStatusFailed TaskStatus = "failed" TaskStatusCancelled TaskStatus = "cancelled" )
type TaskSummary ¶
type TaskSummary struct {
ID string `json:"id"`
Prompt string `json:"prompt"`
WorkDir string `json:"work_dir"`
Status TaskStatus `json:"status"`
CreatedAt time.Time `json:"created_at"`
CompletedAt *time.Time `json:"completed_at,omitempty"`
Duration string `json:"duration,omitempty"`
}
TaskSummary provides a condensed view of a task for listing.
type ToolCall ¶ added in v0.210.0
type ToolCall struct {
ID string `json:"id"`
Name string `json:"name"`
Title string `json:"title"`
Kind string `json:"kind"`
Arguments map[string]interface{} `json:"arguments,omitempty"`
Result string `json:"result,omitempty"`
Status string `json:"status"`
Locations []string `json:"locations,omitempty"`
Diffs map[string]string `json:"diffs,omitempty"`
StartedAt time.Time `json:"started_at"`
EndedAt *time.Time `json:"ended_at,omitempty"`
}
ToolCall represents a single tool execution within a task.
type WaitMultipleRequest ¶
type WaitMultipleRequest struct {
TaskIDs []string `json:"task_ids"`
WaitAll bool `json:"wait_all"`
Timeout string `json:"timeout,omitempty"`
}
WaitMultipleRequest represents a request to wait for multiple tasks.
type WaitRequest ¶
type WaitRequest struct {
TaskID string `json:"task_id"`
Timeout string `json:"timeout,omitempty"`
}
WaitRequest represents a request to wait for task completion.