model

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: May 30, 2026 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UnknownFileName          = "unknown"
	IDECodex                 = "codex"
	IDEClaude                = "claude"
	IDEDroid                 = "droid"
	IDECursor                = "cursor-agent"
	IDEOpenCode              = "opencode"
	IDEPi                    = "pi"
	IDEGemini                = "gemini"
	IDECopilot               = "copilot"
	DefaultCodexModel        = "gpt-5.5"
	DefaultClaudeModel       = "opus"
	DefaultCursorModel       = "composer-1"
	DefaultOpenCodeModel     = "anthropic/claude-opus-4-6"
	DefaultPiModel           = "anthropic/claude-opus-4-6"
	DefaultGeminiModel       = "gemini-2.5-pro"
	DefaultCopilotModel      = "claude-sonnet-4.6"
	DefaultActivityTimeout   = 10 * time.Minute
	WorkflowRootDirName      = ".productize"
	WorkflowConfigFileName   = "config.toml"
	WorkflowTasksDirName     = "tasks"
	WorkflowRunsDirName      = "runs"
	ArchivedWorkflowDirName  = "_archived"
	ModeCodeReview           = "pr-review"
	ModePRDTasks             = "prd-tasks"
	ModeExec                 = "exec"
	AccessModeDefault        = "default"
	AccessModeFull           = "full"
	OutputFormatTextValue    = "text"
	OutputFormatJSONValue    = "json"
	OutputFormatRawJSONValue = "raw-json"
)
View Source
const DefaultSoundOnCompleted = "glass"

DefaultSoundOnCompleted is the preset played on run.completed when sound is enabled and the user has not set an explicit preset or path.

View Source
const DefaultSoundOnFailed = "basso"

DefaultSoundOnFailed is the preset played on run.failed / run.cancelled when sound is enabled and the user has not set an explicit preset or path.

Variables

This section is empty.

Functions

func ApplyTaskRuntime

func ApplyTaskRuntime(cfg *RuntimeConfig, runtime TaskRuntime)

ApplyTaskRuntime copies task-scoped runtime fields onto cfg.

func ArchivedTasksDir

func ArchivedTasksDir(baseDir string) string

func ArchivedWorkflowName

func ArchivedWorkflowName(slug string, workflowID string, archivedAt time.Time) string

func ArchivedWorkflowShortID

func ArchivedWorkflowShortID(workflowID string) string

func BuildRunID

func BuildRunID(cfg *RuntimeConfig) (string, error)

BuildRunID returns the effective run identifier for one runtime config.

func ConfigPathForWorkspace

func ConfigPathForWorkspace(workspaceRoot string) string

func DispatchMutableHook

func DispatchMutableHook[T any](
	ctx context.Context,
	manager RuntimeManager,
	hook string,
	payload T,
) (T, error)

func DispatchObserverHook

func DispatchObserverHook(ctx context.Context, manager RuntimeManager, hook string, payload any)

func IsActiveWorkflowDirName

func IsActiveWorkflowDirName(name string) bool

func ProductizeDir

func ProductizeDir(workspaceRoot string) string

func RegisterOpenRunScopeFactory

func RegisterOpenRunScopeFactory(fn func(context.Context, *RuntimeConfig, OpenRunScopeOptions) (RunScope, error))

RegisterOpenRunScopeFactory installs the current run-scope bootstrap hook.

func RunsBaseDirForWorkspace

func RunsBaseDirForWorkspace(workspaceRoot string) string

func TaskDirectory

func TaskDirectory(name string) string

func TaskDirectoryForWorkspace

func TaskDirectoryForWorkspace(workspaceRoot, name string) string

func TasksBaseDir

func TasksBaseDir() string

func TasksBaseDirForWorkspace

func TasksBaseDirForWorkspace(workspaceRoot string) string

func WaitForObserverHooks

func WaitForObserverHooks(ctx context.Context, manager RuntimeManager) error

Types

type ArchiveConfig

type ArchiveConfig struct {
	WorkspaceRoot string
	RootDir       string
	Name          string
	TasksDir      string
	Force         bool
}

type ArchiveResult

type ArchiveResult struct {
	Target               string            `json:"target"`
	ArchiveRoot          string            `json:"archive_root"`
	WorkflowsScanned     int               `json:"workflows_scanned"`
	Archived             int               `json:"archived"`
	Skipped              int               `json:"skipped"`
	Forced               bool              `json:"forced,omitempty"`
	CompletedTasks       int               `json:"completed_tasks,omitempty"`
	ResolvedReviewIssues int               `json:"resolved_review_issues,omitempty"`
	ArchivedAt           *time.Time        `json:"archived_at,omitempty"`
	ArchivedPaths        []string          `json:"archived_paths,omitempty"`
	SkippedPaths         []string          `json:"skipped_paths,omitempty"`
	SkippedReasons       map[string]string `json:"skipped_reasons,omitempty"`
}

type BaseRunScope

type BaseRunScope struct {
	Artifacts RunArtifacts
	Journal   *journal.Journal
	EventBus  *events.Bus[events.Event]
}

BaseRunScope is the neutral run scope used by legacy and non-extension paths.

func OpenBaseRunScope

func OpenBaseRunScope(ctx context.Context, cfg *RuntimeConfig) (*BaseRunScope, error)

OpenBaseRunScope allocates the non-extension runtime resources for one run.

func (*BaseRunScope) Close

func (s *BaseRunScope) Close(ctx context.Context) error

Close tears down the base runtime resources in journal-then-bus order.

func (*BaseRunScope) RunArtifacts

func (s *BaseRunScope) RunArtifacts() RunArtifacts

Artifacts reports the run artifact paths owned by the scope.

func (*BaseRunScope) RunEventBus

func (s *BaseRunScope) RunEventBus() *events.Bus[events.Event]

EventBus reports the run-scoped event bus.

func (*BaseRunScope) RunJournal

func (s *BaseRunScope) RunJournal() *journal.Journal

Journal reports the run journal owned by the scope.

func (*BaseRunScope) RunManager

func (*BaseRunScope) RunManager() RuntimeManager

RuntimeManager reports the optional extension runtime manager. Base scopes do not carry one.

type ContentBlock

type ContentBlock struct {
	Type ContentBlockType `json:"type"`
	Data json.RawMessage  `json:"-"`
}

ContentBlock stores one typed content payload in its canonical JSON form.

func NewContentBlock

func NewContentBlock(block any) (ContentBlock, error)

NewContentBlock encodes a typed block into the generic ContentBlock envelope.

func (ContentBlock) AsDiff

func (b ContentBlock) AsDiff() (DiffBlock, error)

AsDiff decodes the block as a DiffBlock.

func (ContentBlock) AsImage

func (b ContentBlock) AsImage() (ImageBlock, error)

AsImage decodes the block as an ImageBlock.

func (ContentBlock) AsTerminalOutput

func (b ContentBlock) AsTerminalOutput() (TerminalOutputBlock, error)

AsTerminalOutput decodes the block as a TerminalOutputBlock.

func (ContentBlock) AsText

func (b ContentBlock) AsText() (TextBlock, error)

AsText decodes the block as a TextBlock.

func (ContentBlock) AsToolResult

func (b ContentBlock) AsToolResult() (ToolResultBlock, error)

AsToolResult decodes the block as a ToolResultBlock.

func (ContentBlock) AsToolUse

func (b ContentBlock) AsToolUse() (ToolUseBlock, error)

AsToolUse decodes the block as a ToolUseBlock.

func (ContentBlock) Decode

func (b ContentBlock) Decode() (any, error)

Decode unmarshals the envelope into its typed block payload.

func (ContentBlock) MarshalJSON

func (b ContentBlock) MarshalJSON() ([]byte, error)

MarshalJSON preserves the canonical JSON payload stored in Data.

func (*ContentBlock) UnmarshalJSON

func (b *ContentBlock) UnmarshalJSON(data []byte) error

UnmarshalJSON validates the payload and stores its canonical JSON form.

type ContentBlockType

type ContentBlockType string

ContentBlockType identifies the serialized variant carried by a ContentBlock.

const (
	// BlockText carries plain text or markdown content.
	BlockText ContentBlockType = "text"
	// BlockToolUse carries a tool invocation announcement.
	BlockToolUse ContentBlockType = "tool_use"
	// BlockToolResult carries tool output that is not represented by a richer block.
	BlockToolResult ContentBlockType = "tool_result"
	// BlockDiff carries file modification details.
	BlockDiff ContentBlockType = "diff"
	// BlockTerminalOutput carries terminal execution output.
	BlockTerminalOutput ContentBlockType = "terminal_output"
	// BlockImage carries inline image data.
	BlockImage ContentBlockType = "image"
)

type DiffBlock

type DiffBlock struct {
	Type     ContentBlockType `json:"type"`
	FilePath string           `json:"filePath"`
	Diff     string           `json:"diff"`
	OldText  *string          `json:"oldText,omitempty"`
	NewText  string           `json:"newText,omitempty"`
}

DiffBlock carries file modification details.

type ExecutionMode

type ExecutionMode string
const (
	ExecutionModePRReview ExecutionMode = ModeCodeReview
	ExecutionModePRDTasks ExecutionMode = ModePRDTasks
	ExecutionModeExec     ExecutionMode = ModeExec
)

type ExplicitRuntimeFlags

type ExplicitRuntimeFlags struct {
	IDE             bool
	Model           bool
	ReasoningEffort bool
	AccessMode      bool
}

ExplicitRuntimeFlags tracks which runtime fields were explicitly overridden by the current caller, using CLI-compatible `Flags().Changed(...)` semantics.

type FetchConfig

type FetchConfig struct {
	ReviewsDir      string `json:"reviews_dir,omitempty"`
	IncludeResolved bool   `json:"include_resolved,omitempty"`
}

type FetchResult

type FetchResult struct {
	Name       string
	Provider   string
	PR         string
	Round      int
	ReviewsDir string
	Total      int
}

type FixOutcome

type FixOutcome struct {
	Status string `json:"status"`
	Error  string `json:"error,omitempty"`
}

type ImageBlock

type ImageBlock struct {
	Type     ContentBlockType `json:"type"`
	Data     string           `json:"data"`
	MimeType string           `json:"mimeType"`
	URI      *string          `json:"uri,omitempty"`
}

ImageBlock carries inline image data.

type IssueEntry

type IssueEntry struct {
	Name     string
	AbsPath  string
	Content  string
	CodeFile string
}

type Job

type Job struct {
	CodeFiles       []string
	Groups          map[string][]IssueEntry
	TaskTitle       string
	TaskType        string
	SafeName        string
	IDE             string
	Model           string
	ReasoningEffort string
	Prompt          []byte
	SystemPrompt    string
	MCPServers      []MCPServer
	OutPromptPath   string
	OutLog          string
	ErrLog          string
}

func (Job) IssueCount

func (j Job) IssueCount() int

type JobArtifacts

type JobArtifacts struct {
	PromptPath string
	OutLogPath string
	ErrLogPath string
}

type JobResult

type JobResult struct {
	Status     string `json:"status"`
	ExitCode   int    `json:"exit_code,omitempty"`
	Attempts   int    `json:"attempts,omitempty"`
	DurationMS int64  `json:"duration_ms,omitempty"`
	Error      string `json:"error,omitempty"`
}

type MCPServer

type MCPServer struct {
	Stdio *MCPServerStdio
}

MCPServer describes one resolved MCP server attachment for an ACP session. V1 only needs stdio transport because reusable-agent `mcp.json` currently normalizes to command/args/env declarations.

func CloneMCPServers

func CloneMCPServers(src []MCPServer) []MCPServer

CloneMCPServers returns a deep copy of the provided MCP server slice.

type MCPServerStdio

type MCPServerStdio struct {
	Name    string
	Command string
	Args    []string
	Env     map[string]string
}

MCPServerStdio describes one stdio-backed MCP server attachment.

type MigrationConfig

type MigrationConfig struct {
	WorkspaceRoot string
	RootDir       string
	Name          string
	TasksDir      string
	ReviewsDir    string
	DryRun        bool
}

type MigrationResult

type MigrationResult struct {
	Target                  string
	DryRun                  bool
	FilesScanned            int
	FilesMigrated           int
	V1ToV2Migrated          int
	LegacyReviewMetaRemoved int
	FilesAlreadyFrontmatter int
	FilesSkipped            int
	FilesInvalid            int
	MigratedPaths           []string
	UnmappedTypeFiles       []string
	InvalidPaths            []string
}

type OpenRunScopeOptions

type OpenRunScopeOptions struct {
	EnableExecutableExtensions bool
}

OpenRunScopeOptions controls whether executable extensions should be initialized as part of the early run-scope bootstrap.

type OutputFormat

type OutputFormat string
const (
	OutputFormatText    OutputFormat = OutputFormatTextValue
	OutputFormatJSON    OutputFormat = OutputFormatJSONValue
	OutputFormatRawJSON OutputFormat = OutputFormatRawJSONValue
)

type ReviewContext

type ReviewContext struct {
	Provider       string
	PR             string
	Round          int
	RoundCreatedAt time.Time

	Status      string
	File        string
	Line        int
	Severity    string
	Author      string
	ProviderRef string
	ReviewHash  string

	SourceReviewID          string
	SourceReviewSubmittedAt string
}

type ReviewFileMeta

type ReviewFileMeta struct {
	Provider       string    `yaml:"provider,omitempty"`
	PR             string    `yaml:"pr,omitempty"`
	Round          int       `yaml:"round,omitempty"`
	RoundCreatedAt time.Time `yaml:"round_created_at,omitempty"`

	Status      string `yaml:"status"`
	File        string `yaml:"file,omitempty"`
	Line        int    `yaml:"line,omitempty"`
	Severity    string `yaml:"severity,omitempty"`
	Author      string `yaml:"author,omitempty"`
	ProviderRef string `yaml:"provider_ref,omitempty"`
	ReviewHash  string `yaml:"review_hash,omitempty"`

	SourceReviewID          string `yaml:"source_review_id,omitempty"`
	SourceReviewSubmittedAt string `yaml:"source_review_submitted_at,omitempty"`
}

type RoundMeta

type RoundMeta struct {
	Provider   string
	PR         string
	Round      int
	CreatedAt  time.Time
	Total      int
	Resolved   int
	Unresolved int
}

type RunArtifacts

type RunArtifacts struct {
	RunID       string
	RunDir      string
	RunDBPath   string
	RunMetaPath string
	EventsPath  string
	TurnsDir    string
	JobsDir     string
	ResultPath  string
}

func NewRunArtifacts

func NewRunArtifacts(workspaceRoot, runID string) RunArtifacts

func NewRunArtifactsForRunsDir

func NewRunArtifactsForRunsDir(runsDir, runID string) RunArtifacts

func ResolveHomeRunArtifacts

func ResolveHomeRunArtifacts(runID string) (RunArtifacts, error)

func ResolvePersistedRunArtifacts

func ResolvePersistedRunArtifacts(workspaceRoot, runID string) (RunArtifacts, error)

func (RunArtifacts) JobArtifacts

func (artifacts RunArtifacts) JobArtifacts(safeName string) JobArtifacts

type RunScope

type RunScope interface {
	RunArtifacts() RunArtifacts
	RunJournal() *journal.Journal
	RunEventBus() *events.Bus[events.Event]
	RunManager() RuntimeManager
	Close(context.Context) error
}

RunScope captures the pre-planning runtime resources allocated for one run.

func OpenRunScope

func OpenRunScope(
	ctx context.Context,
	cfg *RuntimeConfig,
	opts OpenRunScopeOptions,
) (RunScope, error)

OpenRunScope allocates the runtime resources required before planning begins.

type RunSummary

type RunSummary struct {
	Status        string `json:"status"`
	JobsTotal     int    `json:"jobs_total"`
	JobsSucceeded int    `json:"jobs_succeeded,omitempty"`
	JobsFailed    int    `json:"jobs_failed,omitempty"`
	JobsCanceled  int    `json:"jobs_canceled,omitempty"`
	Error         string `json:"error,omitempty"`
	TeardownError string `json:"teardown_error,omitempty"`
}

type RuntimeConfig

type RuntimeConfig struct {
	WorkspaceRoot              string
	Name                       string
	Round                      int
	Provider                   string
	PR                         string
	Nitpicks                   bool
	ReviewsDir                 string
	TasksDir                   string
	DryRun                     bool
	AutoCommit                 bool
	Concurrent                 int
	BatchSize                  int
	IDE                        string
	Model                      string
	AddDirs                    []string
	TailLines                  int
	ReasoningEffort            string
	AccessMode                 string
	AgentName                  string
	ExplicitRuntime            ExplicitRuntimeFlags
	TaskRuntimeRules           []TaskRuntimeRule
	Mode                       ExecutionMode
	OutputFormat               OutputFormat
	Verbose                    bool
	Persist                    bool
	EnableExecutableExtensions bool
	DaemonOwned                bool
	RunID                      string
	ParentRunID                string
	PromptText                 string
	PromptFile                 string
	ReadPromptStdin            bool
	ResolvedPromptText         string
	IncludeCompleted           bool
	IncludeResolved            bool
	Timeout                    time.Duration
	MaxRetries                 int
	RetryBackoffMultiplier     float64
	SoundEnabled               bool
	SoundOnCompleted           string
	SoundOnFailed              string
}

func (*RuntimeConfig) ApplyDefaults

func (cfg *RuntimeConfig) ApplyDefaults()

func (*RuntimeConfig) Clone

func (cfg *RuntimeConfig) Clone() *RuntimeConfig

Clone returns a deep copy of cfg so callers can resolve task-local runtime overrides without mutating the shared base run configuration.

func (*RuntimeConfig) RuntimeForTask

func (cfg *RuntimeConfig) RuntimeForTask(target TaskRuntimeTarget) *RuntimeConfig

RuntimeForTask resolves the effective runtime for one task. Type selectors apply before id selectors, and later rules win within the same specificity.

type RuntimeManager

type RuntimeManager interface {
	Start(context.Context) error
	DispatchMutableHook(context.Context, string, any) (any, error)
	DispatchObserverHook(context.Context, string, any)
	Shutdown(context.Context) error
}

RuntimeManager captures the lifecycle hook the planner/executor needs from an extension-aware runtime manager.

type SessionAvailableCommand

type SessionAvailableCommand struct {
	Name         string `json:"name"`
	Description  string `json:"description,omitempty"`
	ArgumentHint string `json:"argumentHint,omitempty"`
}

SessionAvailableCommand describes one ACP slash-command style command.

type SessionPlanEntry

type SessionPlanEntry struct {
	Content  string `json:"content"`
	Priority string `json:"priority"`
	Status   string `json:"status"`
}

SessionPlanEntry describes one ACP plan entry.

type SessionStatus

type SessionStatus string

SessionStatus describes the lifecycle state of a streamed session update.

const (
	// StatusRunning marks an in-flight session update.
	StatusRunning SessionStatus = "running"
	// StatusCompleted marks a completed session.
	StatusCompleted SessionStatus = "completed"
	// StatusFailed marks a failed or canceled session.
	StatusFailed SessionStatus = "failed"
)

type SessionUpdate

type SessionUpdate struct {
	Kind              SessionUpdateKind         `json:"kind,omitempty"`
	ToolCallID        string                    `json:"toolCallId,omitempty"`
	ToolCallState     ToolCallState             `json:"toolCallState,omitempty"`
	Blocks            []ContentBlock            `json:"blocks,omitempty"`
	ThoughtBlocks     []ContentBlock            `json:"thoughtBlocks,omitempty"`
	PlanEntries       []SessionPlanEntry        `json:"planEntries,omitempty"`
	AvailableCommands []SessionAvailableCommand `json:"availableCommands,omitempty"`
	CurrentModeID     string                    `json:"currentModeId,omitempty"`
	Usage             Usage                     `json:"usage,omitempty"`
	Status            SessionStatus             `json:"status"`
}

SessionUpdate is the Productize-owned view of one streamed ACP update.

type SessionUpdateKind

type SessionUpdateKind string

SessionUpdateKind identifies the ACP notification variant carried by a SessionUpdate.

const (
	// UpdateKindUnknown marks an update with no additional semantic classification.
	UpdateKindUnknown SessionUpdateKind = ""
	// UpdateKindUserMessageChunk marks a streamed user message chunk.
	UpdateKindUserMessageChunk SessionUpdateKind = "user_message_chunk"
	// UpdateKindAgentMessageChunk marks a streamed agent message chunk.
	UpdateKindAgentMessageChunk SessionUpdateKind = "agent_message_chunk"
	// UpdateKindAgentThoughtChunk marks a streamed agent thought chunk.
	UpdateKindAgentThoughtChunk SessionUpdateKind = "agent_thought_chunk"
	// UpdateKindToolCallStarted marks the start of a tool call lifecycle.
	UpdateKindToolCallStarted SessionUpdateKind = "tool_call_started"
	// UpdateKindToolCallUpdated marks an update to an existing tool call lifecycle.
	UpdateKindToolCallUpdated SessionUpdateKind = "tool_call_updated"
	// UpdateKindPlanUpdated marks a plan update.
	UpdateKindPlanUpdated SessionUpdateKind = "plan_updated"
	// UpdateKindAvailableCommandsUpdated marks an available commands update.
	UpdateKindAvailableCommandsUpdated SessionUpdateKind = "available_commands_updated"
	// UpdateKindCurrentModeUpdated marks a current mode update.
	UpdateKindCurrentModeUpdated SessionUpdateKind = "current_mode_updated"
)

type SolvePreparation

type SolvePreparation struct {
	Jobs         []Job
	RunArtifacts RunArtifacts
	// RunScope carries the runtime resources that were allocated before
	// planning began. Kernel/runtime flows retain responsibility for closing it.
	RunScope         RunScope
	InputDir         string
	InputDirPath     string
	ResolvedName     string
	ResolvedPR       string
	ResolvedProvider string
	ResolvedRound    int
}

func (*SolvePreparation) CloseJournal

func (p *SolvePreparation) CloseJournal(ctx context.Context) error

func (*SolvePreparation) EventBus

func (p *SolvePreparation) EventBus() *events.Bus[events.Event]

func (*SolvePreparation) Journal

func (p *SolvePreparation) Journal() *journal.Journal

func (*SolvePreparation) RuntimeManager

func (p *SolvePreparation) RuntimeManager() RuntimeManager

func (*SolvePreparation) SetJournal

func (p *SolvePreparation) SetJournal(j *journal.Journal)

func (*SolvePreparation) SetRunScope

func (p *SolvePreparation) SetRunScope(scope RunScope)

type SyncConfig

type SyncConfig struct {
	WorkspaceRoot string
	RootDir       string
	Name          string
	TasksDir      string
}

type SyncResult

type SyncResult struct {
	Target                 string
	WorkflowsScanned       int
	WorkflowsPruned        int
	MetaCreated            int
	MetaUpdated            int
	SnapshotsUpserted      int
	TaskItemsUpserted      int
	ReviewRoundsUpserted   int
	ReviewIssuesUpserted   int
	CheckpointsUpdated     int
	LegacyArtifactsRemoved int
	SyncedPaths            []string
	PrunedWorkflows        []string
	Warnings               []string
}

type TaskEntry

type TaskEntry struct {
	Content      string
	Status       string
	Title        string
	TaskType     string
	Complexity   string
	Dependencies []string
}

type TaskFileMeta

type TaskFileMeta struct {
	Status       string   `yaml:"status"`
	Title        string   `yaml:"title"`
	TaskType     string   `yaml:"type"`
	Complexity   string   `yaml:"complexity,omitempty"`
	Dependencies []string `yaml:"dependencies"`
}

type TaskMeta

type TaskMeta struct {
	CreatedAt time.Time
	UpdatedAt time.Time
	Total     int
	Completed int
	Pending   int
}

type TaskRuntime

type TaskRuntime struct {
	IDE             string `json:"ide,omitempty"`
	Model           string `json:"model,omitempty"`
	ReasoningEffort string `json:"reasoning_effort,omitempty"`
}

TaskRuntime describes the effective runtime fields that may vary per task.

func TaskRuntimeFromConfig

func TaskRuntimeFromConfig(cfg *RuntimeConfig) TaskRuntime

TaskRuntimeFromConfig returns the task-scoped runtime view for cfg.

type TaskRuntimeRule

type TaskRuntimeRule struct {
	ID              *string `toml:"id"               json:"id,omitempty"`
	Type            *string `toml:"type"             json:"type,omitempty"`
	IDE             *string `toml:"ide"              json:"ide,omitempty"`
	Model           *string `toml:"model"            json:"model,omitempty"`
	ReasoningEffort *string `toml:"reasoning_effort" json:"reasoning_effort,omitempty"`
}

TaskRuntimeRule defines runtime overrides that apply to one task selector. Exactly one selector should be set in validated inputs.

func CloneTaskRuntimeRules

func CloneTaskRuntimeRules(src []TaskRuntimeRule) []TaskRuntimeRule

CloneTaskRuntimeRules returns a deep copy of runtime rules so callers can merge or mutate execution-local copies safely.

func (TaskRuntimeRule) HasOverride

func (r TaskRuntimeRule) HasOverride() bool

func (TaskRuntimeRule) HasSelector

func (r TaskRuntimeRule) HasSelector() bool

func (TaskRuntimeRule) IsIDRule

func (r TaskRuntimeRule) IsIDRule() bool

func (TaskRuntimeRule) IsTypeRule

func (r TaskRuntimeRule) IsTypeRule() bool

func (TaskRuntimeRule) Matches

func (r TaskRuntimeRule) Matches(target TaskRuntimeTarget) bool

type TaskRuntimeTarget

type TaskRuntimeTarget struct {
	ID   string
	Type string
}

TaskRuntimeTarget identifies the task being resolved against runtime rules.

type TaskRuntimeTask

type TaskRuntimeTask struct {
	ID       string `json:"id,omitempty"`
	SafeName string `json:"safe_name,omitempty"`
	Title    string `json:"title,omitempty"`
	Type     string `json:"type,omitempty"`
}

TaskRuntimeTask identifies the PRD task whose runtime is being resolved.

type TerminalOutputBlock

type TerminalOutputBlock struct {
	Type       ContentBlockType `json:"type"`
	Command    string           `json:"command,omitempty"`
	Output     string           `json:"output,omitempty"`
	ExitCode   int              `json:"exitCode"`
	TerminalID string           `json:"terminalId,omitempty"`
}

TerminalOutputBlock carries terminal execution details.

type TextBlock

type TextBlock struct {
	Type ContentBlockType `json:"type"`
	Text string           `json:"text"`
}

TextBlock carries plain text or markdown output.

type ToolCallState

type ToolCallState string

ToolCallState describes the lifecycle state of a tool call entry.

const (
	// ToolCallStateUnknown marks a tool call without an explicit lifecycle state.
	ToolCallStateUnknown ToolCallState = ""
	// ToolCallStatePending marks a pending tool call.
	ToolCallStatePending ToolCallState = "pending"
	// ToolCallStateInProgress marks an in-flight tool call.
	ToolCallStateInProgress ToolCallState = "in_progress"
	// ToolCallStateCompleted marks a completed tool call.
	ToolCallStateCompleted ToolCallState = "completed"
	// ToolCallStateFailed marks a failed tool call.
	ToolCallStateFailed ToolCallState = "failed"
	// ToolCallStateWaitingForConfirmation is reserved for future permission-aware UX.
	ToolCallStateWaitingForConfirmation ToolCallState = "waiting_for_confirmation"
)

type ToolResultBlock

type ToolResultBlock struct {
	Type      ContentBlockType `json:"type"`
	ToolUseID string           `json:"toolUseId"`
	Content   string           `json:"content"`
	IsError   bool             `json:"isError,omitempty"`
}

ToolResultBlock carries tool output when a richer block type is not available.

type ToolUseBlock

type ToolUseBlock struct {
	Type     ContentBlockType `json:"type"`
	ID       string           `json:"id"`
	Name     string           `json:"name"`
	Title    string           `json:"title,omitempty"`
	ToolName string           `json:"toolName,omitempty"`
	Input    json.RawMessage  `json:"input,omitempty"`
	RawInput json.RawMessage  `json:"rawInput,omitempty"`
}

ToolUseBlock describes the start of a tool invocation.

type Usage

type Usage struct {
	InputTokens  int `json:"inputTokens,omitempty"`
	OutputTokens int `json:"outputTokens,omitempty"`
	TotalTokens  int `json:"totalTokens,omitempty"`
	CacheReads   int `json:"cacheReads,omitempty"`
	CacheWrites  int `json:"cacheWrites,omitempty"`
}

Usage tracks session token consumption.

func (*Usage) Add

func (u *Usage) Add(other Usage)

Add accumulates usage from another update into the receiver.

func (Usage) Total

func (u Usage) Total() int

Total returns the derived total token count when TotalTokens is not populated.

Jump to

Keyboard shortcuts

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