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" )
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"`
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"`
}
Task represents a CLI agent task.
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 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.