models

package
v0.411.0 Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2026 License: MIT Imports: 1 Imported by: 0

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

func ValidEngine

func ValidEngine(e Engine) bool

ValidEngine checks if an engine is valid.

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

type Duration time.Duration

Duration is a wrapper around time.Duration for JSON marshaling.

func (Duration) MarshalJSON

func (d Duration) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*Duration) UnmarshalJSON

func (d *Duration) UnmarshalJSON(b []byte) error

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

func (t *Task) GetProgress() (int, string)

GetProgress returns the current progress percentage and description.

func (*Task) IsPending

func (t *Task) IsPending() bool

IsPending returns true if the task is pending execution.

func (*Task) IsRunning

func (t *Task) IsRunning() bool

IsRunning returns true if the task is currently running.

func (*Task) IsTerminal

func (t *Task) IsTerminal() bool

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.

Jump to

Keyboard shortcuts

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