control

package
v0.0.0-...-c4ca558 Latest Latest
Warning

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

Go to latest
Published: Jul 8, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PlanLifecyclePending   = "pending"
	PlanLifecycleRunning   = "running"
	PlanLifecycleBlocked   = "blocked"
	PlanLifecycleSucceeded = "succeeded"
	PlanLifecycleFailed    = "failed"
	PlanLifecycleCanceled  = "canceled"
)

Plan lifecycle constants.

View Source
const (
	PlanNodePending   = "pending"
	PlanNodeReady     = "ready"
	PlanNodeRunning   = "running"
	PlanNodeBlocked   = "blocked"
	PlanNodeSkipped   = "skipped"
	PlanNodeSucceeded = "succeeded"
	PlanNodeFailed    = "failed"
	PlanNodeCanceled  = "canceled"
)

Plan node lifecycle constants.

View Source
const (
	// CapabilityRun is the standard capability for starting one backend-owned run.
	CapabilityRun = "run"
	// CapabilityRunBatch is the standard capability for starting one backend-owned
	// run that internally owns a bounded batch.
	CapabilityRunBatch = "run.batch"
)
View Source
const (
	// BackendNameGoAgentNative is the built-in GoAgent native backend.
	BackendNameGoAgentNative = "goagent-native"
)

Variables

This section is empty.

Functions

func ArtifactSchemaCatalogSpecJSONSchema

func ArtifactSchemaCatalogSpecJSONSchema() ([]byte, error)

ArtifactSchemaCatalogSpecJSONSchema returns a JSON Schema inferred from ArtifactSchemaCatalogSpec.

func CapabilityCatalogSpecJSONSchema

func CapabilityCatalogSpecJSONSchema() ([]byte, error)

CapabilityCatalogSpecJSONSchema returns a JSON Schema inferred from CapabilityCatalogSpec.

func MarshalPlanEvent

func MarshalPlanEvent(event *PlanEvent) ([]byte, error)

MarshalPlanEvent serializes the public RunPlan event envelope.

func PlanDeltaSpecJSONSchema

func PlanDeltaSpecJSONSchema() ([]byte, error)

PlanDeltaSpecJSONSchema returns a JSON Schema inferred from PlanDeltaSpec.

func PlanJSONSchema

func PlanJSONSchema(kind PlanSchemaKind) ([]byte, error)

PlanJSONSchema returns the public JSON Schema for one RunPlan authoring contract.

func RunPlanSpecJSONSchema

func RunPlanSpecJSONSchema() ([]byte, error)

RunPlanSpecJSONSchema returns a JSON Schema inferred from RunPlanSpec.

Types

type ArtifactSchema

type ArtifactSchema struct {
	Ref         string          `json:"ref"`
	Description string          `json:"description,omitempty"`
	Schema      json.RawMessage `json:"schema"`
}

ArtifactSchema declares a JSON Schema document addressable by ArtifactSpec.SchemaRef.

type ArtifactSchemaCatalogSpec

type ArtifactSchemaCatalogSpec struct {
	ArtifactSchemas []ArtifactSchema `json:"artifact_schemas"`
}

ArtifactSchemaCatalogSpec is the public wire format for schema declarations referenced by ArtifactSpec.SchemaRef.

type ArtifactSpec

type ArtifactSpec struct {
	Name      string            `json:"name"`
	Kind      core.ArtifactKind `json:"kind"`
	MediaType string            `json:"media_type,omitempty"`
	SchemaRef string            `json:"schema_ref,omitempty"`
	Required  bool              `json:"required,omitempty"`
}

ArtifactSpec describes an output artifact contract for a plan node.

type BackendKind

type BackendKind string

BackendKind identifies the execution substrate used by an agent backend.

const (
	BackendKindNative           BackendKind = "native"
	BackendKindTemporalExternal BackendKind = "temporal_external"
	BackendKindHTTP             BackendKind = "http"
	BackendKindGRPC             BackendKind = "grpc"
)

type BackendRef

type BackendRef struct {
	Kind BackendKind `json:"kind"`
	Name string      `json:"name"`
}

BackendRef selects the backend that owns a run.

type Capability

type Capability struct {
	Backend      BackendRef              `json:"backend"`
	Name         string                  `json:"name"`
	Description  string                  `json:"description,omitempty"`
	InputSchema  json.RawMessage         `json:"input_schema,omitempty"`
	OutputSchema json.RawMessage         `json:"output_schema,omitempty"`
	Signals      []core.SignalType       `json:"signals,omitempty"`
	Controls     []core.ControlOperation `json:"controls,omitempty"`
	Streaming    bool                    `json:"streaming,omitempty"`
	Artifacts    []core.ArtifactKind     `json:"artifacts,omitempty"`
	Limits       CapabilityLimits        `json:"limits,omitzero" schema:"optional"`
}

Capability describes a backend-owned execution capability.

type CapabilityCatalogSpec

type CapabilityCatalogSpec struct {
	Capabilities []Capability `json:"capabilities"`
}

CapabilityCatalogSpec is the public wire format for backend capability declarations used by RunPlan validation.

type CapabilityLimits

type CapabilityLimits struct {
	MaxBatchItems   int32  `json:"max_batch_items,omitempty"`
	MaxParallelRuns int32  `json:"max_parallel_runs,omitempty"`
	BatchInputKey   string `json:"batch_input_key,omitempty"`
}

CapabilityLimits describes control-plane limits for one backend-owned capability. Batch limits constrain one coarse-grained backend run; AgentOS does not expand batch items into PlanNodeSpec values.

type EdgeTrigger

type EdgeTrigger string

EdgeTrigger selects which upstream node terminal state activates an edge.

const (
	EdgeOnSuccess  EdgeTrigger = "success"
	EdgeOnError    EdgeTrigger = "error"
	EdgeOnComplete EdgeTrigger = "complete"
	EdgeOnAlways   EdgeTrigger = "always"
)

type InputMapping

type InputMapping struct {
	Target         string `json:"target"`
	SourceNodeID   string `json:"source_node_id,omitempty"`
	SourceArtifact string `json:"source_artifact,omitempty"`
	SourcePath     string `json:"source_path,omitempty"`
	Expression     string `json:"expression,omitempty"`
	Required       bool   `json:"required,omitempty"`
}

InputMapping maps plan inputs or upstream artifacts into a node input.

type NodePolicy

type NodePolicy struct {
	MaxAttempts    int32            `json:"max_attempts,omitempty"`
	TimeoutSeconds int64            `json:"timeout_seconds,omitempty"`
	Join           PlanJoinStrategy `json:"join,omitempty"`
}

NodePolicy constrains one plan node.

type PlanArtifactScope

type PlanArtifactScope struct {
	PlanID     string `json:"plan_id"`
	AccountID  string `json:"account_id"`
	ProjectID  string `json:"project_id"`
	NodeID     string `json:"node_id,omitempty"`
	RunID      string `json:"run_id,omitempty"`
	ArtifactID string `json:"artifact_id,omitempty"`
	Limit      int    `json:"limit,omitempty"`
}

PlanArtifactScope selects artifacts inside a tenant-scoped RunPlan.

type PlanAuditAction

type PlanAuditAction string

PlanAuditAction identifies durable control-plane actions.

const (
	PlanAuditActionStart   PlanAuditAction = "plan.start"
	PlanAuditActionSignal  PlanAuditAction = "plan.signal"
	PlanAuditActionControl PlanAuditAction = "plan.control"
)

type PlanAuditRecord

type PlanAuditRecord struct {
	AuditID        string          `json:"audit_id"`
	PlanID         string          `json:"plan_id"`
	AccountID      string          `json:"account_id,omitempty"`
	ProjectID      string          `json:"project_id,omitempty"`
	RunID          string          `json:"run_id,omitempty"`
	NodeID         string          `json:"node_id,omitempty"`
	ActorID        string          `json:"actor_id,omitempty"`
	Action         PlanAuditAction `json:"action"`
	IdempotencyKey string          `json:"idempotency_key,omitempty"`
	Payload        map[string]any  `json:"payload,omitempty"`
	CreatedAt      time.Time       `json:"created_at,omitzero" schema:"optional"`
}

PlanAuditRecord is a durable audit entry for plan control-plane actions.

type PlanAuditScope

type PlanAuditScope struct {
	PlanID    string          `json:"plan_id"`
	AccountID string          `json:"account_id"`
	ProjectID string          `json:"project_id"`
	NodeID    string          `json:"node_id,omitempty"`
	RunID     string          `json:"run_id,omitempty"`
	Action    PlanAuditAction `json:"action,omitempty"`
	Limit     int             `json:"limit,omitempty"`
}

PlanAuditScope selects durable audit records for a plan.

type PlanBudgetUsage

type PlanBudgetUsage struct {
	SpentCents int64 `json:"spent_cents,omitempty"`
}

PlanBudgetUsage reports plan-level resource consumption.

type PlanCapabilityTrace

type PlanCapabilityTrace struct {
	Backend         BackendRef              `json:"backend"`
	Capability      string                  `json:"capability"`
	Signals         []core.SignalType       `json:"signals,omitempty"`
	Controls        []core.ControlOperation `json:"controls,omitempty"`
	HasInputSchema  bool                    `json:"has_input_schema,omitempty"`
	HasOutputSchema bool                    `json:"has_output_schema,omitempty"`
}

PlanCapabilityTrace records backend capability selected for one node.

type PlanConditionTrace

type PlanConditionTrace struct {
	Scope       string      `json:"scope"`
	NodeID      string      `json:"node_id,omitempty"`
	EdgeID      string      `json:"edge_id,omitempty"`
	From        string      `json:"from,omitempty"`
	To          string      `json:"to,omitempty"`
	Expression  string      `json:"expression"`
	Result      bool        `json:"result"`
	On          EdgeTrigger `json:"on,omitempty"`
	ParentState string      `json:"parent_state,omitempty"`
}

PlanConditionTrace records one deterministic condition evaluation result.

type PlanDebugTrace

type PlanDebugTrace struct {
	EventID         string                    `json:"event_id"`
	EventType       core.EventType            `json:"event_type"`
	PlanID          string                    `json:"plan_id"`
	NodeID          string                    `json:"node_id,omitempty"`
	RunID           string                    `json:"run_id,omitempty"`
	ThreadID        string                    `json:"thread_id,omitempty"`
	Sequence        int64                     `json:"sequence,omitempty"`
	Timestamp       time.Time                 `json:"timestamp"`
	Transition      *PlanStateTransition      `json:"transition,omitempty"`
	Capability      *PlanCapabilityTrace      `json:"capability,omitempty"`
	InputResolution *PlanInputResolutionTrace `json:"input_resolution,omitempty"`
	Conditions      []PlanConditionTrace      `json:"conditions,omitempty"`
}

PlanDebugTrace is a typed debug projection over durable plan events. It keeps UI/debug clients away from raw event payload parsing.

type PlanDebugTraceScope

type PlanDebugTraceScope struct {
	PlanID        string `json:"plan_id"`
	AccountID     string `json:"account_id"`
	ProjectID     string `json:"project_id"`
	NodeID        string `json:"node_id,omitempty"`
	RunID         string `json:"run_id,omitempty"`
	AfterSequence int64  `json:"after_sequence,omitempty"`
	Limit         int    `json:"limit,omitempty"`
}

PlanDebugTraceScope selects durable debug traces projected from PlanEvents.

type PlanDeltaSpec

type PlanDeltaSpec struct {
	Nodes []PlanNodeSpec `json:"nodes,omitempty"`
	Edges []PlanEdgeSpec `json:"edges,omitempty"`
}

PlanDeltaSpec is the public wire contract for workflow-owned dynamic expansion proposals. External callers may author or validate this artifact, but only PlanWorkflow may apply it to a running topology.

type PlanEdgeSpec

type PlanEdgeSpec struct {
	EdgeID       string         `json:"edge_id"`
	From         string         `json:"from"`
	To           string         `json:"to"`
	On           EdgeTrigger    `json:"on,omitempty"`
	Condition    string         `json:"condition,omitempty"`
	InputMapping []InputMapping `json:"input_mapping,omitempty"`
}

PlanEdgeSpec describes data/control dependency between backend-owned runs.

type PlanEvent

type PlanEvent struct {
	core.Event
	PlanID    string `json:"plan_id"`
	AccountID string `json:"account_id"`
	ProjectID string `json:"project_id"`
	NodeID    string `json:"node_id,omitempty"`
}

PlanEvent is the public event envelope for plan-level events.

func UnmarshalPlanEvent

func UnmarshalPlanEvent(data []byte) (PlanEvent, error)

UnmarshalPlanEvent deserializes the public RunPlan event envelope.

func (*PlanEvent) ToEvent

func (event *PlanEvent) ToEvent() core.Event

ToEvent projects the plan-scoped event into the generic stream envelope used by Subscription. The plan scope remains available in Payload so subscribers do not need an out-of-band lookup to identify the event boundary.

type PlanEventScope

type PlanEventScope struct {
	PlanID        string `json:"plan_id"`
	AccountID     string `json:"account_id"`
	ProjectID     string `json:"project_id"`
	NodeID        string `json:"node_id,omitempty"`
	RunID         string `json:"run_id,omitempty"`
	AfterSequence int64  `json:"after_sequence,omitempty"`
	Limit         int    `json:"limit,omitempty"`
}

PlanEventScope selects durable plan events for timeline/debug queries.

type PlanInputMappingTrace

type PlanInputMappingTrace struct {
	Target         string `json:"target"`
	SourceNodeID   string `json:"source_node_id,omitempty"`
	SourceArtifact string `json:"source_artifact,omitempty"`
	SourcePath     string `json:"source_path,omitempty"`
	Expression     string `json:"expression,omitempty"`
	Required       bool   `json:"required,omitempty"`
}

PlanInputMappingTrace records one input mapping rule without payload values.

type PlanInputResolutionTrace

type PlanInputResolutionTrace struct {
	InputDigest  string                  `json:"input_digest,omitempty"`
	InputKeys    []string                `json:"input_keys,omitempty"`
	MappingCount int                     `json:"mapping_count,omitempty"`
	Mappings     []PlanInputMappingTrace `json:"mappings,omitempty"`
}

PlanInputResolutionTrace records redacted input mapping details.

type PlanJoinStrategy

type PlanJoinStrategy string

PlanJoinStrategy controls how converging dependencies unblock a node.

const (
	PlanJoinAll   PlanJoinStrategy = "all"
	PlanJoinAny   PlanJoinStrategy = "any"
	PlanJoinFirst PlanJoinStrategy = "first"
)

type PlanNodeSpec

type PlanNodeSpec struct {
	NodeID     string         `json:"node_id"`
	Capability string         `json:"capability,omitempty"`
	Run        RunSpec        `json:"run"`
	Inputs     []InputMapping `json:"inputs,omitempty"`
	Outputs    []ArtifactSpec `json:"outputs,omitempty"`
	Conditions []string       `json:"conditions,omitempty"`
	Policy     NodePolicy     `json:"policy,omitzero" schema:"optional"`
}

PlanNodeSpec describes one backend-owned child run in a RunPlan.

type PlanNodeStatus

type PlanNodeStatus struct {
	NodeID         string             `json:"node_id"`
	RunID          string             `json:"run_id,omitempty"`
	Backend        BackendRef         `json:"backend"`
	LifecycleState string             `json:"lifecycle_state"`
	Attempts       int32              `json:"attempts,omitempty"`
	BudgetUsage    PlanBudgetUsage    `json:"budget_usage,omitzero" schema:"optional"`
	Reason         string             `json:"reason,omitempty"`
	Artifacts      []core.ArtifactRef `json:"artifacts,omitempty"`
	StartedAt      time.Time          `json:"started_at,omitzero" schema:"optional"`
	CompletedAt    time.Time          `json:"completed_at,omitzero" schema:"optional"`
	UpdatedAt      time.Time          `json:"updated_at,omitzero" schema:"optional"`
}

PlanNodeStatus is the public lifecycle view for one plan node.

type PlanPolicy

type PlanPolicy struct {
	MaxNodes            int32 `json:"max_nodes,omitempty"`
	MaxDepth            int32 `json:"max_depth,omitempty"`
	MaxExpansions       int32 `json:"max_expansions,omitempty"`
	MaxIterations       int32 `json:"max_iterations,omitempty"`
	MaxHistoryEvents    int32 `json:"max_history_events,omitempty"`
	ContinueAsNewEvents int32 `json:"continue_as_new_events,omitempty"`
	MaxParallelNodes    int32 `json:"max_parallel_nodes,omitempty"`
	BudgetCents         int64 `json:"budget_cents,omitempty"`
	TimeoutSeconds      int64 `json:"timeout_seconds,omitempty"`
}

PlanPolicy constrains global plan execution and bounded expansion.

type PlanRef

type PlanRef struct {
	PlanID    string `json:"plan_id"`
	AccountID string `json:"account_id"`
	ProjectID string `json:"project_id"`
}

PlanRef identifies a plan inside an account/project boundary.

type PlanRuntime

type PlanRuntime interface {
	StartPlan(ctx context.Context, spec *RunPlanSpec) (RunPlanStatus, error)
	StatusPlan(ctx context.Context, ref PlanRef) (RunPlanStatus, error)
	DescribePlan(ctx context.Context, ref PlanRef) (RunPlanDescription, error)
	SignalPlan(ctx context.Context, ref PlanRef, signal *core.Signal) error
	ControlPlan(ctx context.Context, ref PlanRef, control *core.ControlRequest) error
	SubscribePlan(ctx context.Context, scope *PlanStreamScope) (core.Subscription, error)
	ListPlanEvents(ctx context.Context, scope *PlanEventScope) ([]PlanEvent, error)
	ListPlanDebugTraces(ctx context.Context, scope *PlanDebugTraceScope) ([]PlanDebugTrace, error)
	ListPlanArtifacts(ctx context.Context, scope *PlanArtifactScope) ([]core.ArtifactRef, error)
	GetPlanArtifact(ctx context.Context, scope *PlanArtifactScope) (core.Artifact, error)
	ListPlanAudits(ctx context.Context, scope *PlanAuditScope) ([]PlanAuditRecord, error)
}

PlanRuntime is the durable cross-backend AgentOS planning boundary.

type PlanSchemaKind

type PlanSchemaKind string

PlanSchemaKind identifies a public RunPlan authoring schema.

const (
	PlanSchemaKindRunPlan               PlanSchemaKind = "run-plan"
	PlanSchemaKindPlanDelta             PlanSchemaKind = "plan-delta"
	PlanSchemaKindCapabilityCatalog     PlanSchemaKind = "capability-catalog"
	PlanSchemaKindArtifactSchemaCatalog PlanSchemaKind = "artifact-schema-catalog"
)

func PlanSchemaKinds

func PlanSchemaKinds() []PlanSchemaKind

PlanSchemaKinds returns the complete set of public RunPlan authoring schema identifiers.

type PlanStateTransition

type PlanStateTransition struct {
	PreviousLifecycleState string `json:"previous_lifecycle_state,omitempty"`
	NextLifecycleState     string `json:"next_lifecycle_state,omitempty"`
}

PlanStateTransition records a reducer lifecycle transition.

type PlanStreamScope

type PlanStreamScope struct {
	PlanID        string `json:"plan_id"`
	AccountID     string `json:"account_id"`
	ProjectID     string `json:"project_id"`
	NodeID        string `json:"node_id,omitempty"`
	RunID         string `json:"run_id,omitempty"`
	AfterSequence int64  `json:"after_sequence,omitempty"`
}

PlanStreamScope selects events for a plan, node, or child run.

type PlanTopology

type PlanTopology struct {
	Nodes []PlanTopologyNode `json:"nodes"`
	Edges []PlanTopologyEdge `json:"edges,omitempty"`
	Order []string           `json:"order,omitempty"`
}

PlanTopology is a public graph view where each node is one backend-owned child run. Backend-internal steps or framework graph nodes are intentionally not represented here.

type PlanTopologyEdge

type PlanTopologyEdge struct {
	EdgeID       string         `json:"edge_id,omitempty"`
	From         string         `json:"from"`
	To           string         `json:"to"`
	On           EdgeTrigger    `json:"on,omitempty"`
	Condition    string         `json:"condition,omitempty"`
	InputMapping []InputMapping `json:"input_mapping,omitempty"`
}

PlanTopologyEdge describes a dependency between backend-owned child runs.

type PlanTopologyNode

type PlanTopologyNode struct {
	NodeID     string         `json:"node_id"`
	RunID      string         `json:"run_id,omitempty"`
	Backend    BackendRef     `json:"backend"`
	Capability string         `json:"capability,omitempty"`
	Conditions []string       `json:"conditions,omitempty"`
	Inputs     []InputMapping `json:"inputs,omitempty"`
	Outputs    []ArtifactSpec `json:"outputs,omitempty"`
	Policy     NodePolicy     `json:"policy,omitzero" schema:"optional"`
	Status     PlanNodeStatus `json:"status"`
}

PlanTopologyNode describes one backend-owned child run in the public graph.

type RunBackendOwnership

type RunBackendOwnership struct {
	RunID          string     `json:"run_id"`
	PlanID         string     `json:"plan_id,omitempty"`
	NodeID         string     `json:"node_id,omitempty"`
	ThreadID       string     `json:"thread_id,omitempty"`
	AccountID      string     `json:"account_id,omitempty"`
	ProjectID      string     `json:"project_id,omitempty"`
	Backend        BackendRef `json:"backend"`
	IdempotencyKey string     `json:"idempotency_key,omitempty"`
	LifecycleState string     `json:"lifecycle_state,omitempty"`
	CreatedAt      time.Time  `json:"created_at,omitzero" schema:"optional"`
	UpdatedAt      time.Time  `json:"updated_at,omitzero" schema:"optional"`
}

RunBackendOwnership is the durable routing record for a backend-owned run.

type RunPlanDescription

type RunPlanDescription struct {
	PlanID    string            `json:"plan_id"`
	ThreadID  string            `json:"thread_id,omitempty"`
	AccountID string            `json:"account_id,omitempty"`
	ProjectID string            `json:"project_id,omitempty"`
	Status    RunPlanStatus     `json:"status"`
	Topology  PlanTopology      `json:"topology"`
	Policy    PlanPolicy        `json:"policy,omitzero" schema:"optional"`
	Metadata  map[string]string `json:"metadata,omitempty"`
	UpdatedAt time.Time         `json:"updated_at,omitzero" schema:"optional"`
}

RunPlanDescription is the public, read-oriented view of a RunPlan. Topology is built from the latest durable plan snapshot, including workflow-owned dynamic expansion that has already been validated and persisted.

type RunPlanSpec

type RunPlanSpec struct {
	PlanID         string            `json:"plan_id"`
	ThreadID       string            `json:"thread_id,omitempty"`
	AccountID      string            `json:"account_id"`
	ProjectID      string            `json:"project_id"`
	IdempotencyKey string            `json:"idempotency_key,omitempty"`
	RequestedAt    time.Time         `json:"requested_at,omitzero" schema:"optional"`
	Inputs         map[string]any    `json:"inputs,omitempty"`
	Metadata       map[string]string `json:"metadata,omitempty"`
	Nodes          []PlanNodeSpec    `json:"nodes"`
	Edges          []PlanEdgeSpec    `json:"edges,omitempty"`
	Policy         PlanPolicy        `json:"policy,omitzero" schema:"optional"`
}

RunPlanSpec describes a cross-backend execution plan. Each node is a backend-owned RunSpec; backend-internal step/graph concepts are not public AgentOS contract.

type RunPlanStatus

type RunPlanStatus struct {
	PlanID         string             `json:"plan_id"`
	LifecycleState string             `json:"lifecycle_state"`
	Nodes          []PlanNodeStatus   `json:"nodes,omitempty"`
	ActiveRunIDs   []string           `json:"active_run_ids,omitempty"`
	Artifacts      []core.ArtifactRef `json:"artifacts,omitempty"`
	Reason         string             `json:"reason,omitempty"`
	BudgetUsage    PlanBudgetUsage    `json:"budget_usage,omitzero" schema:"optional"`
	Metadata       map[string]string  `json:"metadata,omitempty"`
	StartedAt      time.Time          `json:"started_at,omitzero" schema:"optional"`
	UpdatedAt      time.Time          `json:"updated_at,omitzero" schema:"optional"`
}

RunPlanStatus is the public aggregate lifecycle view for a RunPlan.

type RunSpec

type RunSpec struct {
	RunID          string            `json:"run_id"`
	ThreadID       string            `json:"thread_id,omitempty"`
	AccountID      string            `json:"account_id,omitempty"`
	ProjectID      string            `json:"project_id,omitempty"`
	AgentID        string            `json:"agent_id,omitempty"`
	ModelRef       string            `json:"model_ref,omitempty"`
	SystemPrompt   string            `json:"system_prompt,omitempty"`
	UserMessage    string            `json:"user_message,omitempty"`
	IdempotencyKey string            `json:"idempotency_key,omitempty"`
	RequestedAt    time.Time         `json:"requested_at,omitzero" schema:"optional"`
	Metadata       map[string]string `json:"metadata,omitempty"`
	Backend        BackendRef        `json:"backend"`
	Input          map[string]any    `json:"input,omitempty"`
}

RunSpec describes a generic agent run without binding callers to GoAgent internals.

type RunStatus

type RunStatus struct {
	RunID          string             `json:"run_id"`
	LifecycleState string             `json:"lifecycle_state"`
	Progress       *core.RunProgress  `json:"progress,omitempty"`
	Artifacts      []core.ArtifactRef `json:"artifacts,omitempty"`
	BudgetUsage    PlanBudgetUsage    `json:"budget_usage,omitzero" schema:"optional"`
	Reason         string             `json:"reason,omitempty"`
	UpdatedAt      time.Time          `json:"updated_at,omitzero" schema:"optional"`
}

RunStatus is the public lifecycle view for a run.

type Runtime

type Runtime interface {
	Start(ctx context.Context, spec *RunSpec) (RunStatus, error)
	Signal(ctx context.Context, runID string, signal *core.Signal) error
	Status(ctx context.Context, runID string) (RunStatus, error)
	Control(ctx context.Context, runID string, control *core.ControlRequest) error
	Subscribe(ctx context.Context, scope core.StreamScope) (core.Subscription, error)
	Close() error
}

Runtime is the stable embedded AgentOS run-control boundary.

Jump to

Keyboard shortcuts

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