@overdeck/contracts 0.45.23 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +6995 -30
- package/dist/index.d.ts +842 -92
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +6974 -31
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/types.ts","../src/memory.ts","../src/system-health.ts","../src/events.ts","../src/editor.ts","../src/flywheel.ts","../src/rpc.ts","../src/event-reducers.ts","../src/flywheel-stats.ts","../src/context-layers.ts","../src/artifacts.ts","../src/feature-registry.ts","../src/harness-behavior.ts","../src/hygiene.ts","../src/update.ts","../src/deploy.ts","../src/issue-sort.ts"],"sourcesContent":["import { Schema } from \"effect\"\n\n// ─── Primitives ───────────────────────────────────────────────────────────────\n\nexport const IssueId = Schema.String\nexport type IssueId = typeof IssueId.Type\n\nexport type PipelineBucket =\n | \"in_flight\"\n | \"zombie_pr\"\n | \"post_merge_limbo\"\n | \"planned_backlog\"\n | \"clean_terminal\"\n\n/** Server-computed pipeline membership attached to dashboard issue DTOs. */\nexport interface IssuePipelineMembership {\n available?: boolean\n inPipeline: boolean\n bucket: PipelineBucket\n labelDrift: \"stale_present\" | \"stale_absent\" | null\n}\n\nexport const AgentId = Schema.String\nexport type AgentId = typeof AgentId.Type\n\nexport const SequenceNumber = Schema.Number\nexport type SequenceNumber = typeof SequenceNumber.Type\n\n// ─── Strict literal types (PAN-433) ──────────────────────────────────────────\n// Safe because the read model only contains values from typed events or\n// explicitly cleaned bootstrap data.\n\nexport const AgentStatus = Schema.Literals([\"starting\", \"running\", \"stopped\", \"error\", \"unknown\"])\nexport type AgentStatus = typeof AgentStatus.Type\n\nexport const Role = Schema.Literals([\"plan\", \"work\", \"review\", \"test\", \"ship\", \"flywheel\", \"strike\", \"sequencer\", \"knowledge\"])\nexport type Role = typeof Role.Type\n\nexport const AgentResolution = Schema.Literals([\"working\", \"done\", \"needs_input\", \"stuck\", \"completed\", \"unclear\", \"abandoned\", \"api_error\"])\nexport type AgentResolution = typeof AgentResolution.Type\n\nexport const ReviewStatusValue = Schema.Literals([\"pending\", \"reviewing\", \"passed\", \"failed\", \"blocked\", \"skipped\"])\nexport type ReviewStatusValue = typeof ReviewStatusValue.Type\n\nexport const TestStatusValue = Schema.Literals([\"pending\", \"testing\", \"passed\", \"failed\", \"skipped\", \"dispatch_failed\"])\nexport type TestStatusValue = typeof TestStatusValue.Type\n\nexport const UatStatusValue = Schema.Literals([\"pending\", \"testing\", \"passed\", \"failed\"])\nexport type UatStatusValue = typeof UatStatusValue.Type\n\nexport const MergeStatusValue = Schema.Literals([\"pending\", \"queued\", \"merging\", \"verifying\", \"merged\", \"failed\"])\nexport type MergeStatusValue = typeof MergeStatusValue.Type\n\nexport const ReleaseStatusValue = Schema.Literals([\"pending\", \"releasing\", \"passed\", \"failed\", \"partial\", \"rolled_back\", \"skipped\"])\nexport type ReleaseStatusValue = typeof ReleaseStatusValue.Type\n\nexport const VerificationStatusValue = Schema.Literals([\"pending\", \"running\", \"passed\", \"failed\", \"skipped\"])\nexport type VerificationStatusValue = typeof VerificationStatusValue.Type\n\n// ─── Harness (PAN-636, PAN-1989) ─────────────────────────────────────────────\n// Identifies which coding-agent harness an agent is running under.\n// AgentSnapshot.runtime is left as Schema.optional(Schema.String) for forward\n// compatibility (events from older readers may carry unknown values), but every\n// consumer that branches on harness MUST go through getHarness() so unknown or\n// legacy values normalize to 'claude-code'.\n//\n// PAN-1989: narrowed to 3-value set — 'pi' retired; legacy DB rows read as\n// 'ohmypi' via getHarness(). All new write sites use 'ohmypi'.\n\nexport type Harness = 'claude-code' | 'ohmypi' | 'codex'\n\nconst KNOWN_HARNESSES: ReadonlySet<string> = new Set<Harness>(['claude-code', 'ohmypi', 'codex'])\n\n/**\n * Normalize a snapshot's runtime field to a known Harness value.\n * Unknown or missing values fall back to 'claude-code' (the default harness).\n * Legacy 'pi' values are normalized to 'ohmypi' on read (PAN-1989).\n */\nexport function getHarness(snapshot: { runtime?: string | undefined } | null | undefined): Harness {\n const raw = snapshot?.runtime\n if (raw === 'pi') return 'ohmypi'\n if (raw && KNOWN_HARNESSES.has(raw)) {\n return raw as Harness\n }\n return 'claude-code'\n}\n\n// ─── Agent Runtime (PAN-800) ─────────────────────────────────────────────────\n// High-frequency per-tool-call surface. Kept separate from AgentSnapshot because\n// AgentSnapshot is the low-frequency lifecycle projection (config, status, cost)\n// and merging them means every tool call re-diffs a giant object on the frontend.\n\nexport const Activity = Schema.Literals([\n \"working\", // tool in flight, or tool completed <30s ago\n \"thinking\", // no tool in flight, waiting for model\n \"waiting\", // needs human (permission, answer, disambiguation)\n \"idle\", // Stop hook fired, waiting for next turn\n \"stopped\", // session ended\n])\nexport type Activity = typeof Activity.Type\n\nexport const WaitingReason = Schema.Literals([\n \"tool_permission\",\n \"user_question\",\n \"disambiguation\",\n \"other\",\n])\nexport type WaitingReason = typeof WaitingReason.Type\n\nexport const ClaudeChannelPermissionBehavior = Schema.Literals([\n \"allow\",\n \"deny\",\n])\nexport type ClaudeChannelPermissionBehavior = typeof ClaudeChannelPermissionBehavior.Type\n\nexport const ThinkingState = Schema.Struct({\n since: Schema.String, // ISO timestamp\n lastToolAt: Schema.String, // timestamp of the tool that preceded this thinking state\n})\nexport type ThinkingState = typeof ThinkingState.Type\n\nexport const WaitingState = Schema.Struct({\n reason: WaitingReason,\n startedAt: Schema.String,\n message: Schema.optional(Schema.String),\n notificationSent: Schema.optional(Schema.Boolean),\n})\nexport type WaitingState = typeof WaitingState.Type\n\nexport const CHANNEL_REPLY_KIND_VALUES = [\"status\", \"done\", \"needs_input\"] as const\nexport const MAX_CHANNEL_REPLY_SUMMARY_LENGTH = 4 * 1024\nexport const MAX_CHANNEL_REPLY_ARTIFACT_REFS = 20\nexport const MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH = 512\nexport const MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH = 512\nconst CHANNEL_REPLY_ARTIFACT_URI_PATTERN = /^(?:file:\\/\\/|https:\\/\\/|\\/)/\n\nexport const ChannelReplyKind = Schema.Literals(CHANNEL_REPLY_KIND_VALUES)\nexport type ChannelReplyKind = typeof ChannelReplyKind.Type\n\nexport function isChannelReplyKind(value: unknown): value is ChannelReplyKind {\n return typeof value === 'string' && CHANNEL_REPLY_KIND_VALUES.includes(value as ChannelReplyKind)\n}\n\nexport const ChannelReplyArtifactRef = Schema.Struct({\n uri: Schema.String,\n label: Schema.optional(Schema.String),\n})\nexport type ChannelReplyArtifactRef = typeof ChannelReplyArtifactRef.Type\n\nexport const AgentChannelReply = Schema.Struct({\n kind: ChannelReplyKind,\n summary: Schema.String,\n artifactRefs: Schema.Array(ChannelReplyArtifactRef),\n reportedAt: Schema.String,\n})\nexport type AgentChannelReply = typeof AgentChannelReply.Type\n\nexport function normalizeChannelReplyPayload(\n payload: unknown,\n fieldPrefix = 'channel_reply',\n): {\n kind: ChannelReplyKind\n summary: string\n artifactRefs: ChannelReplyArtifactRef[]\n} {\n if (payload === null || typeof payload !== 'object') {\n throw new Error(`${fieldPrefix} payload must be an object`)\n }\n\n const source = payload as {\n kind?: unknown\n summary?: unknown\n artifactRefs?: unknown\n }\n\n if (!isChannelReplyKind(source.kind)) {\n throw new Error(`${fieldPrefix}.kind must be one of: ${CHANNEL_REPLY_KIND_VALUES.join(', ')}`)\n }\n\n if (typeof source.summary !== 'string') {\n throw new Error(`${fieldPrefix}.summary must be a non-empty string`)\n }\n const summary = source.summary.trim()\n if (summary.length === 0) {\n throw new Error(`${fieldPrefix}.summary must be a non-empty string`)\n }\n if (summary.length > MAX_CHANNEL_REPLY_SUMMARY_LENGTH) {\n throw new Error(\n `${fieldPrefix}.summary must be at most ${MAX_CHANNEL_REPLY_SUMMARY_LENGTH} characters`,\n )\n }\n\n if (source.artifactRefs !== undefined && !Array.isArray(source.artifactRefs)) {\n throw new Error(`${fieldPrefix}.artifactRefs must be an array when provided`)\n }\n const rawArtifactRefs = source.artifactRefs ?? []\n if (rawArtifactRefs.length > MAX_CHANNEL_REPLY_ARTIFACT_REFS) {\n throw new Error(\n `${fieldPrefix}.artifactRefs must contain at most ${MAX_CHANNEL_REPLY_ARTIFACT_REFS} entries`,\n )\n }\n\n const artifactRefs = rawArtifactRefs.map((item, index) => {\n if (item === null || typeof item !== 'object') {\n throw new Error(`${fieldPrefix}.artifactRefs[${index}] must be an object`)\n }\n const ref = item as { uri?: unknown; label?: unknown }\n if (typeof ref.uri !== 'string') {\n throw new Error(`${fieldPrefix}.artifactRefs[${index}].uri must be a non-empty string`)\n }\n const uri = ref.uri.trim()\n if (uri.length === 0) {\n throw new Error(`${fieldPrefix}.artifactRefs[${index}].uri must be a non-empty string`)\n }\n if (uri.length > MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH) {\n throw new Error(\n `${fieldPrefix}.artifactRefs[${index}].uri must be at most ${MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH} characters`,\n )\n }\n if (!CHANNEL_REPLY_ARTIFACT_URI_PATTERN.test(uri)) {\n throw new Error(\n `${fieldPrefix}.artifactRefs[${index}].uri must start with file://, https://, or /`,\n )\n }\n\n if (ref.label !== undefined && typeof ref.label !== 'string') {\n throw new Error(`${fieldPrefix}.artifactRefs[${index}].label must be a string when provided`)\n }\n const label = typeof ref.label === 'string' ? ref.label.trim() : undefined\n if (label !== undefined && label.length > MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH) {\n throw new Error(\n `${fieldPrefix}.artifactRefs[${index}].label must be at most ${MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH} characters`,\n )\n }\n\n return {\n uri,\n ...(label ? { label } : {}),\n }\n })\n\n return {\n kind: source.kind,\n summary,\n artifactRefs,\n }\n}\n\nexport const AgentRuntimeSnapshot = Schema.Struct({\n id: AgentId,\n activity: Activity,\n lastActivity: Schema.String, // ISO timestamp of last event for this agent\n currentTool: Schema.optional(Schema.String), // set when activity === \"working\"\n thinking: Schema.optional(ThinkingState), // set when activity === \"thinking\"\n waiting: Schema.optional(WaitingState), // set when activity === \"waiting\"\n claudeSessionId: Schema.optional(Schema.String),\n sessionModel: Schema.optional(Schema.String),\n sessionHarness: Schema.optional(Schema.String),\n model: Schema.optional(Schema.String),\n lastMessageAt: Schema.optional(Schema.String), // last user→agent message delivered\n // Last structured Claude Code Channels reply emitted by the work agent.\n channelReply: Schema.optional(AgentChannelReply),\n // Lifecycle resolution signal emitted by work-agent-stop-hook. Values mirror\n // AgentResolution so the enrichment poller can consume this as input.\n resolution: Schema.optional(AgentResolution),\n resolutionCount: Schema.optional(Schema.Number),\n resolutionUpdatedAt: Schema.optional(Schema.String),\n // For specialists: the issue currently being processed.\n currentIssue: Schema.optional(IssueId),\n // Set while the agent's recent terminal tail shows a hard context-window overflow.\n contextSaturatedAt: Schema.optional(Schema.String),\n updatedAtSequence: SequenceNumber, // event sequence that produced this snapshot\n})\nexport type AgentRuntimeSnapshot = typeof AgentRuntimeSnapshot.Type\n\nexport const ChannelPermissionRequestSnapshot = Schema.Struct({\n requestId: Schema.String,\n agentId: AgentId,\n issueId: Schema.optional(IssueId),\n toolName: Schema.String,\n description: Schema.String,\n inputPreview: Schema.String,\n createdAt: Schema.String,\n})\nexport type ChannelPermissionRequestSnapshot = typeof ChannelPermissionRequestSnapshot.Type\n\n// ─── Agent ────────────────────────────────────────────────────────────────────\n\nexport const AgentSnapshot = Schema.Struct({\n id: AgentId,\n issueId: IssueId,\n workspace: Schema.optional(Schema.String),\n runtime: Schema.optional(Schema.String),\n model: Schema.optional(Schema.String),\n status: AgentStatus,\n startedAt: Schema.optional(Schema.String),\n lastActivity: Schema.optional(Schema.String),\n branch: Schema.optional(Schema.String),\n costSoFar: Schema.optional(Schema.Number),\n sessionId: Schema.optional(Schema.String),\n role: Schema.optional(Role),\n phase: Schema.optional(Schema.String),\n workType: Schema.optional(Schema.String),\n roleRunHead: Schema.optional(Schema.String),\n hasLiveTmuxSession: Schema.optional(Schema.Boolean),\n stoppedByUser: Schema.optional(Schema.Boolean),\n paused: Schema.optional(Schema.Boolean),\n pausedReason: Schema.optional(Schema.String),\n pausedAt: Schema.optional(Schema.String),\n troubled: Schema.optional(Schema.Boolean),\n troubledAt: Schema.optional(Schema.String),\n consecutiveFailures: Schema.optional(Schema.Number),\n firstFailureInRunAt: Schema.optional(Schema.String),\n lastFailureAt: Schema.optional(Schema.String),\n lastFailureReason: Schema.optional(Schema.String),\n lastFailureNextRetryAt: Schema.optional(Schema.String),\n runtimeState: Schema.optional(Schema.String),\n // Enrichment fields (PAN-440)\n hasPendingQuestion: Schema.optional(Schema.Boolean),\n pendingQuestionCount: Schema.optional(Schema.Number),\n pendingQuestionPrompt: Schema.optional(Schema.String),\n pendingQuestionReason: Schema.optional(Schema.String),\n // PAN-1520 — unified pending-input surfaces. `pendingInputKinds` lists every\n // active blocking surface (askUserQuestion, permissionRequest, exitPlanMode,\n // enterPlanMode, sessionResume). `pendingInputCount` is the count.\n pendingInputCount: Schema.optional(Schema.Number),\n pendingInputKinds: Schema.optional(Schema.Array(Schema.String)),\n // PAN-1520 — payload for an active AskUserQuestion the operator can answer\n // by clicking an option button in the conversation panel.\n pendingAskUserQuestion: Schema.optional(Schema.Struct({\n toolUseId: Schema.String,\n askedAt: Schema.String,\n questions: Schema.Array(Schema.Struct({\n question: Schema.String,\n header: Schema.optional(Schema.String),\n multiSelect: Schema.optional(Schema.Boolean),\n options: Schema.Array(Schema.Struct({\n label: Schema.String,\n description: Schema.optional(Schema.String),\n })),\n })),\n })),\n // PAN-1520 (FR-1) — plan markdown for a pending ExitPlanMode so the operator\n // can approve/reject from a dashboard modal instead of only the terminal.\n pendingProposedPlan: Schema.optional(Schema.Struct({\n toolUseId: Schema.String,\n askedAt: Schema.String,\n plan: Schema.String,\n })),\n resolution: Schema.optional(AgentResolution),\n resolutionCount: Schema.optional(Schema.Number),\n // PAN-800 — bumped on every runtime event so subscribers can cheaply detect\n // a change without diffing the full AgentRuntimeSnapshot.\n runtimeSnapshotSequence: Schema.optional(SequenceNumber),\n})\nexport type AgentSnapshot = typeof AgentSnapshot.Type\n\n// ─── Review / Pipeline ────────────────────────────────────────────────────────\n\nexport const ReviewStatusSnapshot = Schema.Struct({\n issueId: IssueId,\n reviewStatus: Schema.optional(ReviewStatusValue),\n testStatus: Schema.optional(TestStatusValue),\n uatStatus: Schema.optional(UatStatusValue),\n uatNotes: Schema.optional(Schema.String),\n mergeStatus: Schema.optional(MergeStatusValue),\n releaseStatus: Schema.optional(ReleaseStatusValue),\n releaseNotes: Schema.optional(Schema.String),\n verificationStatus: Schema.optional(VerificationStatusValue),\n verificationNotes: Schema.optional(Schema.String),\n verificationCycleCount: Schema.optional(Schema.Number),\n readyForMerge: Schema.optional(Schema.Boolean),\n updatedAt: Schema.optional(Schema.String),\n prUrl: Schema.optional(Schema.String),\n /** Persistent stuck flag — set by divergence guard, cleared by /unstick */\n stuck: Schema.optional(Schema.Boolean),\n stuckReason: Schema.optional(Schema.String),\n stuckAt: Schema.optional(Schema.String),\n stuckDetails: Schema.optional(Schema.String),\n /** Commit SHA at which review passed; deacon uses this to detect new pushes after review */\n reviewedAtCommit: Schema.optional(Schema.String),\n /** Commit SHA at which the pre-review verification gate last passed */\n lastVerifiedCommit: Schema.optional(Schema.String),\n /** Current merge pipeline step (granular visibility for the merge step tracker) */\n mergeStep: Schema.optional(Schema.String),\n /** PAN-699: timestamp when review agents were dispatched */\n reviewSpawnedAt: Schema.optional(Schema.String),\n /** PAN-699: number of test-agent dispatch retries */\n testRetryCount: Schema.optional(Schema.Number),\n /** PAN-794: parallel-review re-dispatch retry counter (current recovery cycle) */\n reviewRetryCount: Schema.optional(Schema.Number),\n /** PAN-796: review auto-requeue count (circuit breaker threshold) */\n autoRequeueCount: Schema.optional(Schema.Number),\n /** PAN-794: ISO timestamp marking the start of the current recovery cycle */\n recoveryStartedAt: Schema.optional(Schema.String),\n /** Human-requested patrol opt-out — when true, Deacon ignores this issue. */\n deaconIgnored: Schema.optional(Schema.Boolean),\n deaconIgnoredAt: Schema.optional(Schema.String),\n deaconIgnoredReason: Schema.optional(Schema.String),\n /** PAN-1691: per-issue auto-merge routing key. undefined = project default, true = auto-merge (fast lane), false = hold for UAT. */\n autoMerge: Schema.optional(Schema.Boolean),\n /** Active review orchestrator tmux session name (e.g. agent-pan-540-review). */\n reviewCoordinatorSessionName: Schema.optional(Schema.String),\n /** Active review sub-role tmux session names (e.g. agent-pan-540-review-correctness). Discovered at emission time. */\n reviewSessionNames: Schema.optional(Schema.Array(Schema.String)),\n /** Per-role review completion status (keyed by role: 'correctness' | 'security' | ...) */\n reviewSubStatuses: Schema.optional(Schema.Record(Schema.String, Schema.Literals([\"running\", \"done\"]))),\n /** PAN-905: queue position in the merge queue */\n queuePosition: Schema.optional(Schema.Number),\n /** PAN-905: currently active specialist (e.g. 'merge-agent') */\n activeSpecialist: Schema.optional(Schema.String),\n /** PAN-905: number of merge retries attempted */\n mergeRetryCount: Schema.optional(Schema.Number),\n /** PAN-905: free-form notes about the merge attempt */\n mergeNotes: Schema.optional(Schema.String),\n /** PAN-905: GitHub-native merge blocker reasons */\n blockerReasons: Schema.optional(Schema.Array(Schema.Struct({\n type: Schema.Literals(['failing_checks', 'merge_conflict', 'unresolved_conversations', 'changes_requested', 'draft_pr', 'not_mergeable']),\n summary: Schema.String,\n details: Schema.optional(Schema.String),\n detectedAt: Schema.String,\n }))),\n})\nexport type ReviewStatusSnapshot = typeof ReviewStatusSnapshot.Type\n\n// ─── Turn Diff ───────────────────────────────────────────────────────────────\n\nexport const TurnDiffFileChange = Schema.Struct({\n path: Schema.String,\n kind: Schema.optional(Schema.String),\n additions: Schema.optional(Schema.Number),\n deletions: Schema.optional(Schema.Number),\n})\nexport type TurnDiffFileChange = typeof TurnDiffFileChange.Type\n\nexport const TurnDiffSummary = Schema.Struct({\n turnId: Schema.String,\n completedAt: Schema.String,\n status: Schema.optional(Schema.String),\n files: Schema.Array(TurnDiffFileChange),\n checkpointRef: Schema.optional(Schema.String),\n assistantMessageId: Schema.optional(Schema.String),\n checkpointTurnCount: Schema.optional(Schema.Number),\n})\nexport type TurnDiffSummary = typeof TurnDiffSummary.Type\n\n// ─── Dashboard Snapshot ──────────────────────────────────────────────────────\n\nexport const ScanProgressSnapshot = Schema.Struct({\n active: Schema.Boolean,\n mode: Schema.Literals(['targeted', 'watched', 'system']),\n dirs: Schema.Array(Schema.String),\n dirsProcessed: Schema.Number,\n dirsTotal: Schema.Number,\n sessionsFound: Schema.Number,\n elapsedMs: Schema.Number,\n inserted: Schema.Number,\n updated: Schema.Number,\n skipped: Schema.Number,\n errors: Schema.Number,\n durationMs: Schema.Number,\n})\nexport type ScanProgressSnapshot = typeof ScanProgressSnapshot.Type\n\nexport const EnrichStatsSnapshot = Schema.Struct({\n processed: Schema.Number,\n totalCost: Schema.Number,\n failures: Schema.Number,\n durationMs: Schema.Number,\n})\nexport type EnrichStatsSnapshot = typeof EnrichStatsSnapshot.Type\n\nexport const EnrichProgressSnapshot = Schema.Struct({\n sessionId: Schema.Number,\n level: Schema.Number,\n model: Schema.String,\n cost: Schema.Number,\n success: Schema.Boolean,\n error: Schema.optional(Schema.String),\n timestamp: Schema.String,\n})\nexport type EnrichProgressSnapshot = typeof EnrichProgressSnapshot.Type\n\nexport const EmbedProgressSnapshot = Schema.Struct({\n sessionId: Schema.Number,\n model: Schema.String,\n success: Schema.Boolean,\n error: Schema.optional(Schema.String),\n timestamp: Schema.String,\n})\nexport type EmbedProgressSnapshot = typeof EmbedProgressSnapshot.Type\n\n// ─── Dashboard Snapshot ──────────────────────────────────────────────────────\n\nexport const DashboardSnapshot = Schema.Struct({\n sequence: SequenceNumber,\n agents: Schema.Array(AgentSnapshot),\n specialists: Schema.Array(Schema.Unknown),\n reviewStatuses: Schema.Array(ReviewStatusSnapshot),\n issues: Schema.Array(Schema.Unknown), // Issues are complex — pass through unvalidated\n recentActivity: Schema.optional(Schema.Array(Schema.Unknown)),\n resources: Schema.optional(Schema.Unknown),\n memory: Schema.optional(Schema.Unknown),\n agentRuntimeById: Schema.optional(Schema.Record(Schema.String, AgentRuntimeSnapshot)),\n channelPermissionRequests: Schema.optional(Schema.Array(ChannelPermissionRequestSnapshot)),\n scanProgress: Schema.optional(Schema.NullOr(ScanProgressSnapshot)),\n enrichStats: Schema.optional(Schema.NullOr(EnrichStatsSnapshot)),\n enrichProgressBySessionId: Schema.optional(Schema.Record(Schema.String, EnrichProgressSnapshot)),\n embedProgressBySessionId: Schema.optional(Schema.Record(Schema.String, EmbedProgressSnapshot)),\n timestamp: Schema.String,\n})\nexport type DashboardSnapshot = typeof DashboardSnapshot.Type\n\n// ─── Workspace Detail ────────────────────────────────────────────────────────\n\nexport const WorkspaceDetail = Schema.Struct({\n workspace: Schema.Unknown,\n reviewStatus: Schema.Unknown,\n planning: Schema.Unknown,\n costs: Schema.Unknown,\n agentOutput: Schema.Array(Schema.String),\n})\nexport type WorkspaceDetail = typeof WorkspaceDetail.Type\n\n// ─── Resource Stats ──────────────────────────────────────────────────────────\n\nexport const ResourceStats = Schema.Struct({\n containers: Schema.Array(Schema.Struct({\n name: Schema.String,\n cpu: Schema.optional(Schema.String),\n mem: Schema.optional(Schema.String),\n status: Schema.optional(Schema.String),\n })),\n})\nexport type ResourceStats = typeof ResourceStats.Type\n\n// ─── Session Tree (PAN-821) ──────────────────────────────────────────────────\n\nexport const SessionNodePresence = Schema.Literals([\"active\", \"idle\", \"suspended\", \"ended\"])\nexport type SessionNodePresence = typeof SessionNodePresence.Type\n\nexport const SessionNodeType = Schema.Literals([\n \"planning\",\n \"work\",\n \"knowledge\",\n \"strike\",\n \"lint\",\n \"review\",\n \"reviewer\",\n \"test\",\n \"ship\",\n \"merge\",\n \"legacy\",\n])\nexport type SessionNodeType = typeof SessionNodeType.Type\n\nexport const ReviewerRoundSummary = Schema.Struct({\n round: Schema.Number,\n status: Schema.optional(Schema.String),\n reviewResult: Schema.optional(Schema.String),\n startedAt: Schema.optional(Schema.String),\n endedAt: Schema.optional(Schema.String),\n durationSec: Schema.optional(Schema.Number),\n cost: Schema.optional(Schema.Number),\n findings: Schema.optional(Schema.Number),\n summary: Schema.optional(Schema.String),\n})\nexport type ReviewerRoundSummary = typeof ReviewerRoundSummary.Type\n\nexport const ReviewerRoundMetadata = Schema.Struct({\n roundCount: Schema.Number,\n latestRound: Schema.Number,\n latestStatus: Schema.optional(Schema.String),\n latestReviewResult: Schema.optional(Schema.String),\n history: Schema.Array(ReviewerRoundSummary),\n})\nexport type ReviewerRoundMetadata = typeof ReviewerRoundMetadata.Type\n\n// One row of a percentage-distribution model origin (PAN-2053). `lo`/`hi` are the\n// half-open bucket band [lo, hi) the entry owns; `chosen` marks the selected one.\nexport const ModelOriginEntry = Schema.Struct({\n model: Schema.String,\n weight: Schema.Number,\n lo: Schema.Number,\n hi: Schema.Number,\n chosen: Schema.Boolean,\n})\nexport type ModelOriginEntry = typeof ModelOriginEntry.Type\n\n// Read-only \"which model & why\" derivation shown in the agent right-click MODEL\n// inspector (PAN-2053). Present only when the agent's role uses a percentage\n// distribution; absent for scalar/single-model roles.\nexport const ModelOrigin = Schema.Struct({\n // The exact spawn key whose bucket selected the model (`${role}:${issueId}`).\n spawnKey: Schema.String,\n // The chosen model id.\n resolved: Schema.String,\n // Deterministic bucket for this key, in [0, total).\n bucket: Schema.Number,\n // Number of buckets = sum of weights (100 when the distribution is percentages).\n total: Schema.Number,\n distribution: Schema.Array(ModelOriginEntry),\n})\nexport type ModelOrigin = typeof ModelOrigin.Type\n\nexport const SessionNode = Schema.Struct({\n type: SessionNodeType,\n role: Schema.optional(Schema.String),\n sessionId: Schema.String,\n tmuxSession: Schema.optional(Schema.String),\n model: Schema.String,\n // Harness that spawned the session (claude-code | pi | codex). Pi/codex run\n // `--mode rpc` with no TUI, so their terminal pane streams raw RPC protocol —\n // the SessionPanel uses this to show a notice instead, and to gate live\n // message streaming. Optional for backward compatibility with older payloads.\n harness: Schema.optional(Schema.String),\n startedAt: Schema.String,\n endedAt: Schema.optional(Schema.String),\n planningComplete: Schema.optional(Schema.Boolean),\n duration: Schema.NullOr(Schema.Number),\n status: AgentStatus,\n hasJsonl: Schema.optional(Schema.Boolean),\n transcript: Schema.optional(Schema.String),\n presence: SessionNodePresence,\n awaitingInput: Schema.optional(Schema.Boolean),\n awaitingInputPrompt: Schema.optional(Schema.String),\n awaitingInputReason: Schema.optional(Schema.String),\n /** Which blocking surfaces are open — names the wait in the node's indicator. */\n pendingInputKinds: Schema.optional(Schema.Array(Schema.String)),\n roundMetadata: Schema.optional(ReviewerRoundMetadata),\n deliveryMethod: Schema.optional(Schema.Literals(['auto', 'channels', 'tmux'])),\n // Pause gate (PAN-1779 issue-tree redesign): a paused agent is deliberately\n // suppressed from deacon auto-resume — the tree must show it as paused with\n // the reason, never as a generic \"stopped\".\n paused: Schema.optional(Schema.Boolean),\n pausedReason: Schema.optional(Schema.String),\n pausedAt: Schema.optional(Schema.String),\n // Troubled gate (PAN-2257): message delivery queues mail while this is true,\n // so session-tree rows need the gate state and its queue count.\n troubled: Schema.optional(Schema.Boolean),\n troubledAt: Schema.optional(Schema.String),\n troubledReason: Schema.optional(Schema.String),\n consecutiveFailures: Schema.optional(Schema.Number),\n queuedMailCount: Schema.optional(Schema.Number),\n // PAN-2053: read-only model-origin for the right-click MODEL inspector. Set\n // only when the agent's role uses a weighted model distribution.\n modelOrigin: Schema.optional(ModelOrigin),\n})\nexport type SessionNode = typeof SessionNode.Type\n\nexport const FeatureNode = Schema.Struct({\n issueId: IssueId,\n title: Schema.String,\n sessions: Schema.Array(SessionNode),\n})\nexport type FeatureNode = typeof FeatureNode.Type\n\nexport const ProjectSessionTree = Schema.Struct({\n projectKey: Schema.String,\n features: Schema.Array(FeatureNode),\n})\nexport type ProjectSessionTree = typeof ProjectSessionTree.Type\n\n// ─── Discovered Sessions (PAN-457) ───────────────────────────────────────────\n\n/** Snapshot of a discovered session for RPC responses and frontend display */\nexport const DiscoveredSessionSnapshot = Schema.Struct({\n id: Schema.Number,\n jsonlPath: Schema.String,\n harness: Schema.optional(Schema.String),\n sessionId: Schema.optional(Schema.String),\n workspacePath: Schema.optional(Schema.String),\n workspaceHash: Schema.optional(Schema.String),\n messageCount: Schema.Number,\n firstTs: Schema.optional(Schema.String),\n lastTs: Schema.optional(Schema.String),\n modelsUsed: Schema.Array(Schema.String),\n primaryModel: Schema.optional(Schema.String),\n tokenInput: Schema.Number,\n tokenOutput: Schema.Number,\n estimatedCost: Schema.Number,\n toolsUsed: Schema.Array(Schema.String),\n filesTouched: Schema.Array(Schema.String),\n tags: Schema.Array(Schema.String),\n summary: Schema.optional(Schema.String),\n summaryDetailed: Schema.optional(Schema.String),\n // Tracked conversation this session belongs to, when the session id matches a\n // conversation in the DB (joined via conversation_files).\n conversationId: Schema.optional(Schema.String),\n conversationName: Schema.optional(Schema.String),\n conversationTitle: Schema.optional(Schema.String),\n enrichmentLevel: Schema.Number,\n enrichmentModel: Schema.optional(Schema.String),\n enrichedAt: Schema.optional(Schema.String),\n enrichmentFailed: Schema.Boolean,\n overdeckManaged: Schema.Boolean,\n panIssueId: Schema.optional(Schema.String),\n panAgentId: Schema.optional(Schema.String),\n scannedAt: Schema.String,\n})\nexport type DiscoveredSessionSnapshot = typeof DiscoveredSessionSnapshot.Type\n\n// ─── Unified Sessions Feed (PAN-1917) ────────────────────────────────────────\n\nexport const SessionsFeedSource = Schema.Literals(['discovered', 'managed-archived'])\nexport type SessionsFeedSource = typeof SessionsFeedSource.Type\n\nexport const SessionsFeedRowSnapshot = Schema.Struct({\n id: Schema.Number,\n source: SessionsFeedSource,\n discoveredId: Schema.optional(Schema.Number),\n jsonlPath: Schema.optional(Schema.String),\n sessionId: Schema.optional(Schema.String),\n workspacePath: Schema.optional(Schema.String),\n messageCount: Schema.Number,\n firstTs: Schema.optional(Schema.String),\n lastTs: Schema.optional(Schema.String),\n primaryModel: Schema.optional(Schema.String),\n tokenInput: Schema.Number,\n tokenOutput: Schema.Number,\n estimatedCost: Schema.Number,\n tags: Schema.Array(Schema.String),\n summary: Schema.optional(Schema.String),\n enrichmentLevel: Schema.Number,\n enrichmentFailed: Schema.Boolean,\n overdeckManaged: Schema.Boolean,\n panIssueId: Schema.optional(Schema.String),\n archivedAt: Schema.optional(Schema.String),\n conversationId: Schema.optional(Schema.String),\n conversationName: Schema.optional(Schema.String),\n conversationTitle: Schema.optional(Schema.String),\n harness: Schema.optional(Schema.String),\n})\nexport type SessionsFeedRowSnapshot = typeof SessionsFeedRowSnapshot.Type\n\nconst SessionsFeedFacetBucketString = Schema.Struct({\n value: Schema.String,\n count: Schema.Number,\n})\n\nconst SessionsFeedFacetBucketNumber = Schema.Struct({\n value: Schema.Number,\n count: Schema.Number,\n})\n\nexport const SessionsFeedFacetsSnapshot = Schema.Struct({\n primaryModels: Schema.Array(SessionsFeedFacetBucketString),\n tags: Schema.Array(SessionsFeedFacetBucketString),\n tools: Schema.Array(SessionsFeedFacetBucketString),\n files: Schema.Array(SessionsFeedFacetBucketString),\n enrichmentLevels: Schema.Array(SessionsFeedFacetBucketNumber),\n timeBuckets: Schema.Array(Schema.Struct({\n value: Schema.Literals(['24h', '7d', '30d', 'older']),\n count: Schema.Number,\n })),\n costBuckets: Schema.Array(Schema.Struct({\n value: Schema.Literals(['<$0.10', '$0.10-1', '$1-10', '>$10']),\n count: Schema.Number,\n })),\n sources: Schema.Array(Schema.Struct({\n value: SessionsFeedSource,\n count: Schema.Number,\n })),\n})\nexport type SessionsFeedFacetsSnapshot = typeof SessionsFeedFacetsSnapshot.Type\n\n/** Filter parameters for conversation search */\nexport const ConversationFilter = Schema.Struct({\n harness: Schema.optional(Schema.String),\n workspacePath: Schema.optional(Schema.String),\n primaryModel: Schema.optional(Schema.String),\n managed: Schema.optional(Schema.Boolean),\n unmanaged: Schema.optional(Schema.Boolean),\n since: Schema.optional(Schema.String),\n before: Schema.optional(Schema.String),\n after: Schema.optional(Schema.String),\n minCost: Schema.optional(Schema.Number),\n maxCost: Schema.optional(Schema.Number),\n minMessages: Schema.optional(Schema.Number),\n tags: Schema.optional(Schema.Array(Schema.String)),\n tools: Schema.optional(Schema.Array(Schema.String)),\n files: Schema.optional(Schema.Array(Schema.String)),\n issueId: Schema.optional(Schema.String),\n enrichmentLevel: Schema.optional(Schema.Number),\n enriched: Schema.optional(Schema.Boolean),\n notEnriched: Schema.optional(Schema.Boolean),\n query: Schema.optional(Schema.String),\n semantic: Schema.optional(Schema.Boolean),\n similarTo: Schema.optional(Schema.Number),\n limit: Schema.optional(Schema.Number),\n offset: Schema.optional(Schema.Number),\n format: Schema.optional(Schema.Literals(['table', 'json', 'brief', 'ids'])),\n})\nexport type ConversationFilter = typeof ConversationFilter.Type\n\n/** Aggregate cost breakdown for conversations */\nexport const ConversationCostSummary = Schema.Struct({\n groupBy: Schema.Literals(['workspace', 'model', 'day', 'month']),\n entries: Schema.Array(Schema.Struct({\n key: Schema.String,\n totalCost: Schema.Number,\n sessionCount: Schema.Number,\n totalTokensIn: Schema.Number,\n totalTokensOut: Schema.Number,\n })),\n grandTotal: Schema.Number,\n totalTokensIn: Schema.Number,\n totalTokensOut: Schema.Number,\n})\nexport type ConversationCostSummary = typeof ConversationCostSummary.Type\n\n/** Scan result summary */\nexport const ScanResult = Schema.Struct({\n inserted: Schema.Number,\n updated: Schema.Number,\n skipped: Schema.Number,\n errors: Schema.Number,\n durationMs: Schema.Number,\n})\nexport type ScanResult = typeof ScanResult.Type\n","import { Schema } from \"effect\"\nimport { IssueId, Role } from \"./types\"\n\nexport const MemoryIdentity = Schema.Struct({\n projectId: Schema.String,\n workspaceId: Schema.String,\n issueId: IssueId,\n runId: Schema.String,\n sessionId: Schema.String,\n agentRole: Role,\n agentHarness: Schema.String,\n})\nexport type MemoryIdentity = typeof MemoryIdentity.Type\n\nexport const MemoryTokenUsage = Schema.Struct({\n prompt: Schema.Number,\n completion: Schema.Number,\n total: Schema.Number,\n})\nexport type MemoryTokenUsage = typeof MemoryTokenUsage.Type\n\nexport const MemoryObservation = Schema.Struct({\n id: Schema.String,\n timestamp: Schema.String,\n projectId: Schema.String,\n workspaceId: Schema.String,\n issueId: IssueId,\n runId: Schema.String,\n sessionId: Schema.String,\n agentRole: Role,\n agentHarness: Schema.String,\n gitBranch: Schema.String,\n sourceTranscriptOffset: Schema.Number,\n actionStatus: Schema.NullOr(Schema.String),\n narrative: Schema.String,\n summary: Schema.String,\n files: Schema.Array(Schema.String),\n tags: Schema.Array(Schema.String),\n tokens: MemoryTokenUsage,\n model: Schema.String,\n})\nexport type MemoryObservation = typeof MemoryObservation.Type\n\nexport const MemoryStatusPhase = Schema.Literals([\n \"exploring\",\n \"planning\",\n \"building\",\n \"verifying\",\n \"cleaning\",\n \"shipping\",\n])\nexport type MemoryStatusPhase = typeof MemoryStatusPhase.Type\n\nexport const MemoryStatus = Schema.Struct({\n name: Schema.String,\n headline: Schema.String,\n summary: Schema.String,\n goal: Schema.NullOr(Schema.String),\n phase: MemoryStatusPhase,\n accomplished: Schema.Array(Schema.String),\n decided: Schema.Array(Schema.String),\n open: Schema.Array(Schema.String),\n nextSteps: Schema.Array(Schema.String),\n confidence: Schema.Number,\n workingSet: Schema.Array(Schema.String),\n tags: Schema.Array(Schema.String),\n})\nexport type MemoryStatus = typeof MemoryStatus.Type\n\nexport const PendingTurn = Schema.Struct({\n id: Schema.String,\n createdAt: Schema.String,\n identity: MemoryIdentity,\n trigger: Schema.Literals([\"stop-hook\", \"poller\", \"reconciliation\", \"manual\"]),\n transcriptPath: Schema.String,\n fromOffset: Schema.Number,\n toOffset: Schema.Number,\n lastFullLineOffset: Schema.Number,\n eventsConsumed: Schema.Number,\n compressedText: Schema.String,\n})\nexport type PendingTurn = typeof PendingTurn.Type\n\nexport const ResetMarkerScope = Schema.Literals([\"project\", \"workspace\", \"issue\", \"session\"])\nexport type ResetMarkerScope = typeof ResetMarkerScope.Type\n\nexport const ResetMarker = Schema.Struct({\n id: Schema.String,\n scope: ResetMarkerScope,\n scopeId: Schema.String,\n fromTimestamp: Schema.String,\n reason: Schema.String,\n createdAt: Schema.String,\n})\nexport type ResetMarker = typeof ResetMarker.Type\n\nexport const RagDecisionSource = Schema.Struct({\n id: Schema.String,\n docType: Schema.Literals([\"observation\", \"summary\", \"status\", \"sibling\", \"knowledge\"]),\n scope: Schema.String,\n score: Schema.Number,\n tokens: Schema.Number,\n})\nexport type RagDecisionSource = typeof RagDecisionSource.Type\n\nexport const RagDecision = Schema.Struct({\n id: Schema.String,\n timestamp: Schema.String,\n identity: MemoryIdentity,\n surface: Schema.Literals([\"spawn\", \"user-prompt\"]),\n outcome: Schema.Literals([\n \"injected\",\n \"skipped\",\n \"no-hits\",\n \"expansion-failed\",\n \"context-too-large\",\n \"budget-truncated\",\n ]),\n query: Schema.String,\n expandedTerms: Schema.Array(Schema.String),\n allocations: Schema.Struct({\n status: Schema.Number,\n observations: Schema.Number,\n summaries: Schema.Number,\n sibling: Schema.Number,\n knowledgeIndex: Schema.Number,\n }),\n sources: Schema.Array(RagDecisionSource),\n reason: Schema.NullOr(Schema.String),\n})\nexport type RagDecision = typeof RagDecision.Type\n\nexport const ExtractionProviderTarget = Schema.Struct({\n provider: Schema.String,\n model: Schema.String,\n})\nexport type ExtractionProviderTarget = typeof ExtractionProviderTarget.Type\n\nexport const ExtractionProviderConfig = Schema.Struct({\n provider: Schema.String,\n model: Schema.String,\n providerEnvVar: Schema.optional(Schema.String),\n modelEnvVar: Schema.optional(Schema.String),\n perDayCostCapUsd: Schema.Number,\n fallbackChain: Schema.Array(ExtractionProviderTarget),\n})\nexport type ExtractionProviderConfig = typeof ExtractionProviderConfig.Type\n","/**\n * Shared V2 system-health contract. Domain measurements use null for unavailable\n * evidence, unknown enum values decode to safe unavailable/unknown states, and\n * the legacy summary is a compatibility projection from the accepted V2 snapshot.\n */\nimport { Schema, SchemaGetter } from \"effect\"\n\nconst HealthStateValue = Schema.Literals([\n \"measuring\",\n \"healthy\",\n \"warning\",\n \"critical\",\n \"unavailable\",\n])\n\nexport const HealthState = Schema.String.pipe(\n Schema.decodeTo(HealthStateValue, {\n decode: SchemaGetter.transform((value) =>\n HealthStateValue.literals.includes(value as HealthState) ? value as HealthState : \"unavailable\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type HealthState = typeof HealthStateValue.Type\n\nexport const HealthReason = Schema.Struct({\n code: Schema.String,\n domain: Schema.Literals([\"host\", \"admission\", \"agent\", \"service\"]),\n severity: Schema.Literals([\"info\", \"warning\", \"critical\"]),\n message: Schema.String,\n metric: Schema.optional(Schema.String),\n observed: Schema.optional(Schema.Number),\n threshold: Schema.optional(Schema.Number),\n})\nexport type HealthReason = typeof HealthReason.Type\n\nexport const HostPlatform = Schema.String.pipe(\n Schema.decodeTo(Schema.Literals([\"linux\", \"darwin\", \"unsupported\"]), {\n decode: SchemaGetter.transform((value) =>\n value === \"linux\" || value === \"darwin\" || value === \"unsupported\" ? value : \"unsupported\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type HostPlatform = typeof HostPlatform.Type\n\n/**\n * Accepted host metrics. Null means that the platform collector could not\n * produce that signal; it must never be interpreted as a measured zero.\n */\nexport const HostHealthMetrics = Schema.Struct({\n cpuPercent: Schema.NullOr(Schema.Number),\n loadAverage1m: Schema.NullOr(Schema.Number),\n loadPerCore1m: Schema.NullOr(Schema.Number),\n totalMemoryBytes: Schema.NullOr(Schema.Number),\n usedMemoryBytes: Schema.NullOr(Schema.Number),\n availableMemoryBytes: Schema.NullOr(Schema.Number),\n memoryUsedPercent: Schema.NullOr(Schema.Number),\n memoryPressureSomeAvg10: Schema.NullOr(Schema.Number),\n memoryPressureFullAvg10: Schema.NullOr(Schema.Number),\n memoryPressureFreePercent: Schema.NullOr(Schema.Number),\n swapTotalBytes: Schema.NullOr(Schema.Number),\n swapUsedBytes: Schema.NullOr(Schema.Number),\n swapUsedPercent: Schema.NullOr(Schema.Number),\n swapActivityBytesPerMinute: Schema.NullOr(Schema.Number),\n committedMemoryBytes: Schema.NullOr(Schema.Number),\n commitLimitBytes: Schema.NullOr(Schema.Number),\n virtualCommitmentPercent: Schema.NullOr(Schema.Number),\n})\nexport type HostHealthMetrics = typeof HostHealthMetrics.Type\n\nexport const AdmissionState = Schema.String.pipe(\n Schema.decodeTo(Schema.Literals([\"open\", \"soft\", \"blocked\", \"unavailable\"]), {\n decode: SchemaGetter.transform((value) =>\n value === \"open\" || value === \"soft\" || value === \"blocked\" || value === \"unavailable\"\n ? value\n : \"unavailable\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type AdmissionState = typeof AdmissionState.Type\n\nexport const AgentHealthStatus = Schema.String.pipe(\n Schema.decodeTo(\n Schema.Literals([\n \"healthy\",\n \"idle\",\n \"waiting\",\n \"warning\",\n \"stalled\",\n \"wedged\",\n \"dead\",\n \"unavailable\",\n ]),\n {\n decode: SchemaGetter.transform((value) =>\n value === \"healthy\" ||\n value === \"idle\" ||\n value === \"waiting\" ||\n value === \"warning\" ||\n value === \"stalled\" ||\n value === \"wedged\" ||\n value === \"dead\" ||\n value === \"unavailable\"\n ? value\n : \"unavailable\"\n ),\n encode: SchemaGetter.transform((value) => value),\n },\n ),\n)\nexport type AgentHealthStatus = typeof AgentHealthStatus.Type\n\nexport const AgentHealthKind = Schema.String.pipe(\n Schema.decodeTo(Schema.Literals([\"work\", \"planning\", \"specialist\", \"conversation\", \"other\"]), {\n decode: SchemaGetter.transform((value) =>\n value === \"work\" ||\n value === \"planning\" ||\n value === \"specialist\" ||\n value === \"conversation\" ||\n value === \"other\"\n ? value\n : \"other\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type AgentHealthKind = typeof AgentHealthKind.Type\n\nexport const SpecialistLifecycle = Schema.String.pipe(\n Schema.decodeTo(Schema.Literals([\"active\", \"warm\", \"orphaned\", \"unknown\"]), {\n decode: SchemaGetter.transform((value) =>\n value === \"active\" || value === \"warm\" || value === \"orphaned\" || value === \"unknown\"\n ? value\n : \"unknown\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type SpecialistLifecycle = typeof SpecialistLifecycle.Type\n\nexport const AgentHealthSnapshot = Schema.Struct({\n id: Schema.String,\n issueId: Schema.optional(Schema.String),\n role: Schema.optional(Schema.String),\n kind: Schema.optional(AgentHealthKind),\n status: AgentHealthStatus,\n lifecycle: Schema.optional(SpecialistLifecycle),\n tmuxActive: Schema.optional(Schema.Boolean),\n memoryBytes: Schema.optional(Schema.Number),\n memoryGb: Schema.optional(Schema.Number),\n cpuPercent: Schema.optional(Schema.Number),\n currentIssue: Schema.optional(Schema.String),\n lastActivityAt: Schema.optional(Schema.String),\n consecutiveFailures: Schema.optional(Schema.Number),\n killCount: Schema.optional(Schema.Number),\n contextPercent: Schema.optional(Schema.NullOr(Schema.Number)),\n reasons: Schema.Array(HealthReason),\n})\nexport type AgentHealthSnapshot = typeof AgentHealthSnapshot.Type\n\nexport const ServiceHealthStatus = Schema.String.pipe(\n Schema.decodeTo(\n Schema.Literals([\"running\", \"not_configured\", \"degraded\", \"stopped\", \"unavailable\"]),\n {\n decode: SchemaGetter.transform((value) =>\n value === \"running\" ||\n value === \"not_configured\" ||\n value === \"degraded\" ||\n value === \"stopped\" ||\n value === \"unavailable\"\n ? value\n : \"unavailable\"\n ),\n encode: SchemaGetter.transform((value) => value),\n },\n ),\n)\nexport type ServiceHealthStatus = typeof ServiceHealthStatus.Type\n\nexport const ServiceHealthSnapshot = Schema.Struct({\n id: Schema.String,\n label: Schema.optional(Schema.String),\n required: Schema.optional(Schema.Boolean),\n status: ServiceHealthStatus,\n message: Schema.String,\n reasons: Schema.Array(HealthReason),\n})\nexport type ServiceHealthSnapshot = typeof ServiceHealthSnapshot.Type\n\nexport const SystemHealthConsumer = Schema.Struct({\n id: Schema.String,\n label: Schema.String,\n type: Schema.Literals([\"agent\", \"specialist\", \"container\"]),\n memoryBytes: Schema.Number,\n memoryGb: Schema.Number,\n cpuPercent: Schema.optional(Schema.Number),\n issueId: Schema.optional(Schema.String),\n currentIssue: Schema.optional(Schema.String),\n leaked: Schema.optional(Schema.Boolean),\n killTarget: Schema.optional(Schema.Struct({\n kind: Schema.Literals([\"agent\", \"specialist\", \"container\"]),\n agentId: Schema.optional(Schema.String),\n containerId: Schema.optional(Schema.String),\n projectKey: Schema.optional(Schema.String),\n issueId: Schema.optional(Schema.String),\n specialistType: Schema.optional(Schema.String),\n })),\n})\nexport type SystemHealthConsumer = typeof SystemHealthConsumer.Type\n\nexport const LegacyWebhookRelaySummary = Schema.Struct({\n configured: Schema.Boolean,\n running: Schema.Boolean,\n status: Schema.Literals([\"not_configured\", \"running\", \"stopped\", \"unknown\"]),\n message: Schema.String,\n})\nexport type LegacyWebhookRelaySummary = typeof LegacyWebhookRelaySummary.Type\n\n/** Compatibility fields retained for one release cycle. */\nexport const LegacySystemHealthSummary = Schema.Struct({\n cpuPercent: Schema.Number,\n loadAverage1m: Schema.Number,\n loadPerCore1m: Schema.Number,\n totalMemoryBytes: Schema.Number,\n usedMemoryBytes: Schema.Number,\n availableMemoryBytes: Schema.Number,\n memoryUsedPercent: Schema.Number,\n swapTotalBytes: Schema.Number,\n swapUsedBytes: Schema.Number,\n swapUsedPercent: Schema.Number,\n committedMemoryBytes: Schema.Number,\n commitLimitBytes: Schema.Number,\n overcommitPercent: Schema.Number,\n agentCount: Schema.Number,\n workAgentCount: Schema.Number,\n planningAgentCount: Schema.Number,\n specialistSessionCount: Schema.Number,\n leakedSpecialistCount: Schema.Number,\n containerCount: Schema.Number,\n containerMemoryBytes: Schema.Number,\n overdeckMemoryBytes: Schema.Number,\n overdeckMemoryPercent: Schema.Number,\n smeeRelay: LegacyWebhookRelaySummary,\n})\nexport type LegacySystemHealthSummary = typeof LegacySystemHealthSummary.Type\n\nexport const SystemHealthSnapshot = Schema.Struct({\n version: Schema.Literal(2),\n state: HealthState,\n updatedAt: Schema.String,\n nextPollMs: Schema.Number,\n host: Schema.Struct({\n state: HealthState,\n platform: HostPlatform,\n reasons: Schema.Array(HealthReason),\n metrics: HostHealthMetrics,\n }),\n admission: Schema.Struct({\n state: AdmissionState,\n availableMemoryBytes: Schema.NullOr(Schema.Number),\n admittedWorkAgentCount: Schema.Number,\n reasons: Schema.Array(HealthReason),\n }),\n agents: Schema.Array(AgentHealthSnapshot),\n services: Schema.Array(ServiceHealthSnapshot),\n // The producer supplies every memory-bearing consumer in descending order.\n // Presentation clients may slice this array; the compatibility projector\n // needs the exhaustive source to preserve aggregate container totals.\n topConsumers: Schema.Array(SystemHealthConsumer),\n summary: LegacySystemHealthSummary,\n})\nexport type SystemHealthSnapshot = typeof SystemHealthSnapshot.Type\n\nfunction isWorkAgent(agent: AgentHealthSnapshot): boolean {\n return agent.kind === \"work\" || agent.role === \"work\"\n}\n\nfunction isPlanningAgent(agent: AgentHealthSnapshot): boolean {\n return agent.kind === \"planning\" || agent.role === \"plan\" || agent.role === \"planning\"\n}\n\nfunction isSpecialistAgent(agent: AgentHealthSnapshot): boolean {\n return agent.kind === \"specialist\" ||\n agent.role === \"review\" ||\n agent.role?.startsWith(\"review-\") === true ||\n agent.role === \"test\" ||\n agent.role === \"ship\"\n}\n\nfunction projectWebhookRelay(services: ReadonlyArray<ServiceHealthSnapshot>): LegacyWebhookRelaySummary {\n const relay = services.find((service) => service.id === \"smee-relay\" || service.id === \"webhook-relay\")\n if (!relay) {\n return {\n configured: false,\n running: false,\n status: \"unknown\",\n message: \"Webhook relay health is unavailable.\",\n }\n }\n\n const status = relay.status === \"running\" || relay.status === \"not_configured\" || relay.status === \"stopped\"\n ? relay.status\n : \"unknown\"\n\n return {\n configured: relay.status !== \"not_configured\",\n running: relay.status === \"running\",\n status,\n message: relay.message,\n }\n}\n\n/**\n * Projects the V2 domains into the legacy summary without recollecting state.\n * Diagnostic-only swap and virtual-commitment values remain visible here but\n * do not participate in V2 health-state evaluation.\n */\nexport function projectLegacySystemHealthSummary(\n snapshot: Omit<SystemHealthSnapshot, \"summary\">,\n): LegacySystemHealthSummary {\n const metrics = snapshot.host.metrics\n const agentMemoryBytes = snapshot.agents.reduce((total, agent) => total + (agent.memoryBytes ?? 0), 0)\n const containers = snapshot.topConsumers.filter((consumer) => consumer.type === \"container\")\n const containerMemoryBytes = containers.reduce((total, consumer) => total + consumer.memoryBytes, 0)\n const overdeckMemoryBytes = agentMemoryBytes + containerMemoryBytes\n const totalMemoryBytes = metrics.totalMemoryBytes ?? 0\n\n return {\n cpuPercent: metrics.cpuPercent ?? 0,\n loadAverage1m: metrics.loadAverage1m ?? 0,\n loadPerCore1m: metrics.loadPerCore1m ?? 0,\n totalMemoryBytes,\n usedMemoryBytes: metrics.usedMemoryBytes ?? 0,\n availableMemoryBytes: metrics.availableMemoryBytes ?? 0,\n memoryUsedPercent: metrics.memoryUsedPercent ?? 0,\n swapTotalBytes: metrics.swapTotalBytes ?? 0,\n swapUsedBytes: metrics.swapUsedBytes ?? 0,\n swapUsedPercent: metrics.swapUsedPercent ?? 0,\n committedMemoryBytes: metrics.committedMemoryBytes ?? 0,\n commitLimitBytes: metrics.commitLimitBytes ?? 0,\n overcommitPercent: metrics.virtualCommitmentPercent ?? 0,\n agentCount: snapshot.agents.length,\n workAgentCount: snapshot.agents.filter(isWorkAgent).length,\n planningAgentCount: snapshot.agents.filter(isPlanningAgent).length,\n specialistSessionCount: snapshot.agents.filter(isSpecialistAgent).length,\n leakedSpecialistCount: snapshot.agents.filter((agent) =>\n isSpecialistAgent(agent) && agent.lifecycle === \"orphaned\"\n ).length,\n containerCount: containers.length,\n containerMemoryBytes,\n overdeckMemoryBytes,\n overdeckMemoryPercent: totalMemoryBytes > 0 ? Math.round((overdeckMemoryBytes / totalMemoryBytes) * 1000) / 10 : 0,\n smeeRelay: projectWebhookRelay(snapshot.services),\n }\n}\n","import { Schema } from \"effect\"\nimport {\n Activity,\n AgentChannelReply,\n AgentId,\n AgentResolution,\n AgentRuntimeSnapshot,\n AgentSnapshot,\n AgentStatus,\n ChannelPermissionRequestSnapshot,\n ClaudeChannelPermissionBehavior,\n IssueId,\n ResourceStats,\n ReviewStatusSnapshot,\n Role,\n SequenceNumber,\n WaitingReason,\n} from \"./types\"\nimport {\n MemoryObservation,\n MemoryStatus,\n RagDecision,\n ResetMarker,\n} from \"./memory\"\nimport { HealthState } from \"./system-health\"\n\n// ─── System Events ────────────────────────────────────────────────────────────\n\n/** App-level liveness frame for the /ws/rpc domain-events stream. */\nexport const SystemHeartbeatEvent = Schema.Struct({\n type: Schema.Literal(\"system.heartbeat\"),\n timestamp: Schema.String,\n payload: Schema.Struct({ ts: Schema.Number }),\n})\nexport type SystemHeartbeatEvent = typeof SystemHeartbeatEvent.Type\n\n/** The canonical local Dolt head advanced after a background remote pull. */\nexport const BeadsFreshnessChangedEvent = Schema.Struct({\n type: Schema.Literal(\"beads.freshness_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n projectKey: Schema.String,\n localHead: Schema.String,\n lastSyncedAt: Schema.String,\n }),\n})\nexport type BeadsFreshnessChangedEvent = typeof BeadsFreshnessChangedEvent.Type\n\n// ─── Agent Events ─────────────────────────────────────────────────────────────\n\n/** Replaces socket.io `agents:changed` (event: 'started') */\nexport const AgentStartedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, issueId: IssueId, agent: AgentSnapshot }),\n})\nexport type AgentStartedEvent = typeof AgentStartedEvent.Type\n\n/** Replaces socket.io `agents:changed` (event: 'stopped') */\nexport const AgentStoppedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.stopped\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, issueId: IssueId, sessionId: Schema.optional(Schema.String) }),\n})\nexport type AgentStoppedEvent = typeof AgentStoppedEvent.Type\n\nexport const AgentHeartbeatDeadEvent = Schema.Struct({\n type: Schema.Literal(\"agent.heartbeat_dead\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, issueId: Schema.optional(IssueId), sessionId: Schema.optional(Schema.String) }),\n})\nexport type AgentHeartbeatDeadEvent = typeof AgentHeartbeatDeadEvent.Type\n\n/** Role lifecycle — work agent completed implementation and is ready for review. */\nexport const WorkCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"work.completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, agentId: Schema.optional(AgentId) }),\n})\nexport type WorkCompletedEvent = typeof WorkCompletedEvent.Type\n\n/** Role lifecycle — generic agent completion signal, normalized by Cloister by role. */\nexport const AgentCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, agentId: Schema.optional(AgentId), role: Schema.optional(Role) }),\n})\nexport type AgentCompletedEvent = typeof AgentCompletedEvent.Type\n\n/** Role lifecycle — review approved the branch and testing should start. */\nexport const ReviewApprovedEvent = Schema.Struct({\n type: Schema.Literal(\"review.approved\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type ReviewApprovedEvent = typeof ReviewApprovedEvent.Type\n\n/** Role lifecycle — tests passed and shipping should prepare the branch. */\nexport const TestPassedEvent = Schema.Struct({\n type: Schema.Literal(\"test.passed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type TestPassedEvent = typeof TestPassedEvent.Type\n\n/** Replaces socket.io `godview:status-change` */\nexport const AgentStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n issueId: Schema.optional(IssueId),\n status: AgentStatus,\n previousStatus: Schema.optional(AgentStatus),\n hasLiveTmuxSession: Schema.optional(Schema.Boolean),\n stoppedByUser: Schema.optional(Schema.Boolean),\n stoppedByPause: Schema.optional(Schema.Boolean),\n paused: Schema.optional(Schema.Boolean),\n pausedReason: Schema.optional(Schema.NullOr(Schema.String)),\n pausedAt: Schema.optional(Schema.NullOr(Schema.String)),\n troubled: Schema.optional(Schema.Boolean),\n troubledAt: Schema.optional(Schema.NullOr(Schema.String)),\n consecutiveFailures: Schema.optional(Schema.Number),\n firstFailureInRunAt: Schema.optional(Schema.NullOr(Schema.String)),\n lastFailureAt: Schema.optional(Schema.NullOr(Schema.String)),\n lastFailureReason: Schema.optional(Schema.NullOr(Schema.String)),\n lastFailureNextRetryAt: Schema.optional(Schema.NullOr(Schema.String)),\n kickoffDelivered: Schema.optional(Schema.Boolean),\n hostOverride: Schema.optional(Schema.Boolean),\n role: Schema.optional(Role),\n model: Schema.optional(Schema.String),\n workspace: Schema.optional(Schema.String),\n sessionId: Schema.optional(Schema.String),\n lastActivity: Schema.optional(Schema.String),\n lastResumeAt: Schema.optional(Schema.String),\n stoppedAt: Schema.optional(Schema.String),\n branch: Schema.optional(Schema.String),\n costSoFar: Schema.optional(Schema.Number),\n phase: Schema.optional(Schema.String),\n workType: Schema.optional(Schema.String),\n roleRunHead: Schema.optional(Schema.String),\n flywheelRunId: Schema.optional(Schema.String),\n reviewSubRole: Schema.optional(Schema.String),\n reviewRunId: Schema.optional(Schema.String),\n reviewOutputPath: Schema.optional(Schema.String),\n reviewSynthesisAgentId: Schema.optional(Schema.String),\n reviewDeadlineAt: Schema.optional(Schema.String),\n reviewMonitorSignaled: Schema.optional(Schema.String),\n reviewRetryAttempt: Schema.optional(Schema.Number),\n inspectSubRole: Schema.optional(Schema.String),\n deliveryMethod: Schema.optional(Schema.String),\n supervisorEnabled: Schema.optional(Schema.Boolean),\n channelsEnabled: Schema.optional(Schema.Boolean),\n }),\n})\nexport type AgentStatusChangedEvent = typeof AgentStatusChangedEvent.Type\n\n/** Replaces socket.io `godview:agent-output` */\nexport const AgentOutputReceivedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.output_received\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, lines: Schema.Array(Schema.String) }),\n})\nexport type AgentOutputReceivedEvent = typeof AgentOutputReceivedEvent.Type\n\n/** New — agent enrichment fields updated (PAN-440) */\nexport const AgentEnrichmentChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.enrichment_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n role: Schema.optional(Role),\n // Optional because this event type predates these fields (PAN-440). The event\n // store is append-only, so older persisted events lack them — a required schema\n // makes those events fail replay decode (\"Missing key\").\n hasPendingQuestion: Schema.optional(Schema.Boolean),\n pendingQuestionCount: Schema.optional(Schema.Number),\n pendingQuestionPrompt: Schema.optional(Schema.String),\n pendingQuestionReason: Schema.optional(Schema.String),\n // PAN-1520 — unified pending-input surfaces\n pendingInputCount: Schema.optional(Schema.Number),\n pendingInputKinds: Schema.optional(Schema.Array(Schema.String)),\n pendingAskUserQuestion: Schema.optional(Schema.Struct({\n toolUseId: Schema.String,\n askedAt: Schema.String,\n questions: Schema.Array(Schema.Struct({\n question: Schema.String,\n header: Schema.optional(Schema.String),\n multiSelect: Schema.optional(Schema.Boolean),\n options: Schema.Array(Schema.Struct({\n label: Schema.String,\n description: Schema.optional(Schema.String),\n })),\n })),\n })),\n // PAN-1520 (FR-1) — pending ExitPlanMode plan payload for the approval modal.\n pendingProposedPlan: Schema.optional(Schema.Struct({\n toolUseId: Schema.String,\n askedAt: Schema.String,\n plan: Schema.String,\n })),\n resolution: Schema.optional(AgentResolution),\n resolutionCount: Schema.optional(Schema.Number),\n }),\n})\nexport type AgentEnrichmentChangedEvent = typeof AgentEnrichmentChangedEvent.Type\n\n/** New — agent created in database */\nexport const AgentCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, issueId: IssueId, agent: AgentSnapshot }),\n})\nexport type AgentCreatedEvent = typeof AgentCreatedEvent.Type\n\n// ─── Agent Runtime Events (PAN-800) ───────────────────────────────────────────\n// Canonical per-tool-call runtime signals. Fold into ReadModelState.agentRuntimeById\n// via the shared reducer. Server AgentStateService ref is derived from the same fold.\n\nexport const AgentActivityChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.activity_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n activity: Activity,\n currentTool: Schema.optional(Schema.String),\n }),\n})\nexport type AgentActivityChangedEvent = typeof AgentActivityChangedEvent.Type\n\nexport const AgentThinkingStartedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.thinking_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n lastToolAt: Schema.String,\n }),\n})\nexport type AgentThinkingStartedEvent = typeof AgentThinkingStartedEvent.Type\n\nexport const AgentThinkingStoppedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.thinking_stopped\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n resolvedBy: Schema.Literals([\"tool\", \"waiting\", \"idle\", \"stopped\"]),\n }),\n})\nexport type AgentThinkingStoppedEvent = typeof AgentThinkingStoppedEvent.Type\n\nexport const AgentWaitingStartedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.waiting_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n reason: WaitingReason,\n message: Schema.optional(Schema.String),\n }),\n})\nexport type AgentWaitingStartedEvent = typeof AgentWaitingStartedEvent.Type\n\nexport const AgentWaitingClearedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.waiting_cleared\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n clearedBy: Schema.Literals([\"user_response\", \"timeout\", \"stopped\", \"tool_resumed\"]),\n }),\n})\nexport type AgentWaitingClearedEvent = typeof AgentWaitingClearedEvent.Type\n\nexport const AgentPermissionRequestedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.permission_requested\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: ChannelPermissionRequestSnapshot,\n})\nexport type AgentPermissionRequestedEvent = typeof AgentPermissionRequestedEvent.Type\n\nexport const AgentPermissionResolvedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.permission_resolved\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n requestId: Schema.String,\n agentId: AgentId,\n issueId: Schema.optional(IssueId),\n behavior: ClaudeChannelPermissionBehavior,\n }),\n})\nexport type AgentPermissionResolvedEvent = typeof AgentPermissionResolvedEvent.Type\n\nexport const AgentMessageReceivedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.message_received\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n direction: Schema.Literals([\"to_agent\", \"from_agent\"]),\n source: Schema.Literals([\"user\", \"cloister\", \"specialist\", \"automated\"]),\n }),\n})\nexport type AgentMessageReceivedEvent = typeof AgentMessageReceivedEvent.Type\n\nexport const AgentChannelReplyEvent = Schema.Struct({\n type: Schema.Literal(\"agent.channel_reply\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n reply: AgentChannelReply,\n }),\n})\nexport type AgentChannelReplyEvent = typeof AgentChannelReplyEvent.Type\n\nexport const AgentModelSetEvent = Schema.Struct({\n type: Schema.Literal(\"agent.model_set\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n model: Schema.String,\n claudeSessionId: Schema.optional(Schema.String),\n sessionModel: Schema.optional(Schema.String),\n sessionHarness: Schema.optional(Schema.String),\n }),\n})\nexport type AgentModelSetEvent = typeof AgentModelSetEvent.Type\n\nexport const AgentCurrentIssueSetEvent = Schema.Struct({\n type: Schema.Literal(\"agent.current_issue_set\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n currentIssue: Schema.optional(IssueId),\n }),\n})\nexport type AgentCurrentIssueSetEvent = typeof AgentCurrentIssueSetEvent.Type\n\nexport const AgentContextSaturationChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.context_saturation_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n contextSaturatedAt: Schema.optional(Schema.String),\n }),\n})\nexport type AgentContextSaturationChangedEvent = typeof AgentContextSaturationChangedEvent.Type\n\nexport const AgentResolutionChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.resolution_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n resolution: AgentResolution,\n resolutionCount: Schema.Number,\n }),\n})\nexport type AgentResolutionChangedEvent = typeof AgentResolutionChangedEvent.Type\n\n/**\n * Bootstrap-only event emitted by AgentStateService when it seeds a runtime\n * snapshot during bootstrap (reconstruction from sources, PAN-1920). Not\n * emitted by hooks.\n */\nexport const AgentStateRestoredEvent = Schema.Struct({\n type: Schema.Literal(\"agent.state_restored\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n snapshot: AgentRuntimeSnapshot,\n }),\n})\nexport type AgentStateRestoredEvent = typeof AgentStateRestoredEvent.Type\n\n/** Emitted when a turn diff checkpoint is captured and diff computed */\nexport const AgentTurnDiffCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.turn_diff_completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n turnId: Schema.String,\n completedAt: Schema.String,\n files: Schema.Array(Schema.Struct({\n path: Schema.String,\n kind: Schema.optional(Schema.String),\n additions: Schema.optional(Schema.Number),\n deletions: Schema.optional(Schema.Number),\n })),\n checkpointRef: Schema.optional(Schema.String),\n assistantMessageId: Schema.optional(Schema.String),\n checkpointTurnCount: Schema.optional(Schema.Number),\n }),\n})\nexport type AgentTurnDiffCompletedEvent = typeof AgentTurnDiffCompletedEvent.Type\n\n// ─── Planning Events ──────────────────────────────────────────────────────────\n\n/** Replaces socket.io `planning:started` */\nexport const PlanningStartedEvent = Schema.Struct({\n type: Schema.Literal(\"planning.started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, sessionName: Schema.String, harness: Schema.optional(Schema.String) }),\n})\nexport type PlanningStartedEvent = typeof PlanningStartedEvent.Type\n\n/** Replaces socket.io `planning:failed` */\nexport const PlanningFailedEvent = Schema.Struct({\n type: Schema.Literal(\"planning.failed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, error: Schema.String }),\n})\nexport type PlanningFailedEvent = typeof PlanningFailedEvent.Type\n\n/** Replaces socket.io `planning:sync` */\nexport const PlanningSyncEvent = Schema.Struct({\n type: Schema.Literal(\"planning.sync\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n status: Schema.String,\n progress: Schema.optional(Schema.Number),\n message: Schema.optional(Schema.String),\n }),\n})\nexport type PlanningSyncEvent = typeof PlanningSyncEvent.Type\n\n// ─── Plan Item Events ─────────────────────────────────────────────────────────\n\n/** Replaces socket.io `plan:item-status-changed` */\nexport const PlanItemStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"plan.item_status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, itemId: Schema.String, status: Schema.String }),\n})\nexport type PlanItemStatusChangedEvent = typeof PlanItemStatusChangedEvent.Type\n\n/** Replaces socket.io `plan:subitem-status-changed` */\nexport const PlanSubitemStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"plan.subitem_status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n itemId: Schema.String,\n subItemId: Schema.String,\n status: Schema.String,\n }),\n})\nexport type PlanSubitemStatusChangedEvent = typeof PlanSubitemStatusChangedEvent.Type\n\n/** Replaces socket.io `plan:items-unblocked` */\nexport const PlanItemsUnblockedEvent = Schema.Struct({\n type: Schema.Literal(\"plan.items_unblocked\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, items: Schema.Array(Schema.String) }),\n})\nexport type PlanItemsUnblockedEvent = typeof PlanItemsUnblockedEvent.Type\n\n// ─── Pipeline / Merge Events ──────────────────────────────────────────────────\n\n/** Replaces socket.io `pipeline:status` */\nexport const PipelineStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, status: ReviewStatusSnapshot }),\n})\nexport type PipelineStatusChangedEvent = typeof PipelineStatusChangedEvent.Type\n\n/** Replaces socket.io `merge:ready` */\nexport const MergeReadyEvent = Schema.Struct({\n type: Schema.Literal(\"merge.ready\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type MergeReadyEvent = typeof MergeReadyEvent.Type\n\n/** New — review status changed */\nexport const ReviewStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"review.status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, status: ReviewStatusSnapshot }),\n})\nexport type ReviewStatusChangedEvent = typeof ReviewStatusChangedEvent.Type\n\n/** New — review specialist dispatched */\nexport const PipelineReviewStartedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.review-started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type PipelineReviewStartedEvent = typeof PipelineReviewStartedEvent.Type\n\n/** New — review specialist finished (passed or failed) */\nexport const PipelineReviewCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.review-completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, passed: Schema.Boolean }),\n})\nexport type PipelineReviewCompletedEvent = typeof PipelineReviewCompletedEvent.Type\n\n/** New — test specialist dispatched */\nexport const PipelineTestStartedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.test-started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type PipelineTestStartedEvent = typeof PipelineTestStartedEvent.Type\n\n/** New — test specialist finished (passed or failed) */\nexport const PipelineTestCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.test-completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, passed: Schema.Boolean }),\n})\nexport type PipelineTestCompletedEvent = typeof PipelineTestCompletedEvent.Type\n\n/** New — verification gate dispatched (review-pipeline verify step) */\nexport const PipelineVerificationStartedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.verification-started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type PipelineVerificationStartedEvent = typeof PipelineVerificationStartedEvent.Type\n\n/** New — verification gate failed (carries failedCheck for gate failures, message for infra errors) */\nexport const PipelineVerificationFailedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.verification-failed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n failedCheck: Schema.optional(Schema.String),\n message: Schema.optional(Schema.String),\n }),\n})\nexport type PipelineVerificationFailedEvent = typeof PipelineVerificationFailedEvent.Type\n\n/** New — issue lifecycle transition (single source: IssueLifecycle.transitionTo).\n * `state` stays an open string so new server-side lifecycle states can never\n * poison the domain-event stream (the failure mode behind this event's addition). */\nexport const IssueTransitionedEvent = Schema.Struct({\n type: Schema.Literal(\"issue.transitioned\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, state: Schema.String }),\n})\nexport type IssueTransitionedEvent = typeof IssueTransitionedEvent.Type\n\nexport const OperatorInterventionEvent = Schema.Struct({\n type: Schema.Literal(\"operator.intervention\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n kind: Schema.Literals([\"tell\", \"pause\", \"restart\", \"manual_edit\", \"deep_wipe\", \"unpause\", \"untroubled\"]),\n source: Schema.String,\n }),\n})\nexport type OperatorInterventionEvent = typeof OperatorInterventionEvent.Type\n\nexport const SubstrateBugFiledEvent = Schema.Struct({\n type: Schema.Literal(\"substrate.bug_filed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n runId: Schema.optional(Schema.String),\n filedBy: Schema.Literals([\"agent\", \"operator\"]),\n discoveredIn: Schema.optional(IssueId),\n severity: Schema.Literals([\"P0\", \"P1\", \"P2\"]),\n }),\n})\nexport type SubstrateBugFiledEvent = typeof SubstrateBugFiledEvent.Type\n\n/**\n * PAN-915 — reviewer session received a new prompt (spawn or resume of a\n * canonical PAN-830 session). Drives event-driven `reviewSubStatuses[role] =\n * 'running'` and tracking of `reviewSessionNames` without polling tmux.\n */\nexport const ReviewReviewerStartedEvent = Schema.Struct({\n type: Schema.Literal(\"review.reviewer_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n role: Schema.String,\n sessionName: Schema.String,\n }),\n})\nexport type ReviewReviewerStartedEvent = typeof ReviewReviewerStartedEvent.Type\n\n/**\n * PAN-915 — reviewer wrote its output file (round complete for that role).\n * Updates `reviewSubStatuses[role] = 'done'` event-driven.\n */\nexport const ReviewReviewerCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"review.reviewer_completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n role: Schema.String,\n }),\n})\nexport type ReviewReviewerCompletedEvent = typeof ReviewReviewerCompletedEvent.Type\n\n/**\n * Review specialist timeout telemetry. Emitted once per timed-out reviewer wait\n * attempt so operators can distinguish transient auto-retries from terminal\n * review failures.\n */\nexport const ReviewSpecialistTimedOutEvent = Schema.Struct({\n type: Schema.Literal(\"review.specialist.timed_out\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n role: Schema.String,\n sessionName: Schema.String,\n attempt: Schema.Number,\n maxRetries: Schema.Number,\n willRetry: Schema.Boolean,\n }),\n})\nexport type ReviewSpecialistTimedOutEvent = typeof ReviewSpecialistTimedOutEvent.Type\n\n/**\n * PAN-915 — review coordinator session spawned. Surfaces in the dashboard so\n * the kanban card can show \"review in progress\" the instant the coordinator\n * starts, not after the first reviewer finishes.\n */\nexport const ReviewCoordinatorStartedEvent = Schema.Struct({\n type: Schema.Literal(\"review.coordinator_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n sessionName: Schema.String,\n }),\n})\nexport type ReviewCoordinatorStartedEvent = typeof ReviewCoordinatorStartedEvent.Type\n\n/** Review coordinator died before writing a terminal exit marker. */\nexport const ReviewCoordinatorDiedEvent = Schema.Struct({\n type: Schema.Literal(\"review.coordinator.died\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n sessionName: Schema.String,\n reason: Schema.String,\n }),\n})\nexport type ReviewCoordinatorDiedEvent = typeof ReviewCoordinatorDiedEvent.Type\n\n// ─── Specialist Events ────────────────────────────────────────────────────────\n\nconst SpecialistLifecycleState = Schema.Literals([\"active\", \"sleeping\", \"uninitialized\"])\n\n/** New — role-backed specialist became active */\nexport const SpecialistStartedEvent = Schema.Struct({\n type: Schema.Literal(\"specialist.started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n name: Role,\n state: SpecialistLifecycleState,\n isRunning: Schema.Boolean,\n currentIssue: Schema.optional(Schema.String),\n lastWake: Schema.optional(Schema.String),\n }),\n})\nexport type SpecialistStartedEvent = typeof SpecialistStartedEvent.Type\n\n/** New — role-backed specialist completed work */\nexport const SpecialistCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"specialist.completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ name: Role, issueId: Schema.optional(IssueId) }),\n})\nexport type SpecialistCompletedEvent = typeof SpecialistCompletedEvent.Type\n\n/** New — role-backed specialist failed */\nexport const SpecialistFailedEvent = Schema.Struct({\n type: Schema.Literal(\"specialist.failed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n name: Role,\n issueId: Schema.optional(IssueId),\n error: Schema.String,\n }),\n})\nexport type SpecialistFailedEvent = typeof SpecialistFailedEvent.Type\n\n// ─── Resource Events ──────────────────────────────────────────────────────────\n\n/** Replaces socket.io `resources:updated` */\nexport const ResourcesUpdatedEvent = Schema.Struct({\n type: Schema.Literal(\"resources.updated\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ resources: ResourceStats }),\n})\nexport type ResourcesUpdatedEvent = typeof ResourcesUpdatedEvent.Type\n\nexport const SystemHealthSeverityChangedEvent = Schema.Struct({\n type: Schema.Literal(\"system.health_severity_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n previousSeverity: Schema.String,\n severity: Schema.String,\n reasons: Schema.Array(Schema.String),\n leakedSpecialistCount: Schema.Number,\n version: Schema.optional(Schema.Literal(2)),\n transitionVersion: Schema.optional(Schema.Number),\n previousState: Schema.optional(HealthState),\n state: Schema.optional(HealthState),\n reasonCodes: Schema.optional(Schema.Array(Schema.String)),\n acceptedAt: Schema.optional(Schema.String),\n }),\n})\nexport type SystemHealthSeverityChangedEvent = typeof SystemHealthSeverityChangedEvent.Type\n\n// ─── Issue Events ─────────────────────────────────────────────────────────────\n\n/** Replaces socket.io `issues:snapshot` */\nexport const IssuesSnapshotEvent = Schema.Struct({\n type: Schema.Literal(\"issues.snapshot\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issues: Schema.Array(Schema.Unknown) }),\n})\nexport type IssuesSnapshotEvent = typeof IssuesSnapshotEvent.Type\n\n/** Replaces socket.io `issues:updated` */\nexport const IssuesUpdatedEvent = Schema.Struct({\n type: Schema.Literal(\"issues.updated\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: Schema.optional(IssueId) }),\n})\nexport type IssuesUpdatedEvent = typeof IssuesUpdatedEvent.Type\n\n/** Patch a single issue's status in the read model without a full snapshot refresh. */\nexport const IssueStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"issue.statusChanged\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n status: Schema.String,\n canonicalStatus: Schema.String,\n labels: Schema.optional(Schema.Array(Schema.String)),\n }),\n})\nexport type IssueStatusChangedEvent = typeof IssueStatusChangedEvent.Type\n\n// ─── Activity Events ──────────────────────────────────────────────────────────\n\n/** Replaces socket.io `godview:activity` */\nexport const ActivityUpdatedEvent = Schema.Struct({\n type: Schema.Literal(\"activity.updated\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ events: Schema.Array(Schema.Unknown) }),\n})\nexport type ActivityUpdatedEvent = typeof ActivityUpdatedEvent.Type\n\n/** Individual activity log entry — emitted by merge-agent, cloister, specialists (PAN-520) */\nexport const ActivityEntryEvent = Schema.Struct({\n type: Schema.Literal(\"activity.entry\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n id: Schema.String,\n source: Schema.String,\n level: Schema.String,\n message: Schema.String,\n details: Schema.optional(Schema.String),\n issueId: Schema.optional(IssueId),\n /** Dashboard route the feed navigates to on click (e.g. /conv/<name>, /flywheel). */\n link: Schema.optional(Schema.String),\n /** PAN-1862 (FR-12): fire a desktop notification for this entry (operator-facing warnings). */\n desktop: Schema.optional(Schema.Boolean),\n }),\n})\nexport type ActivityEntryEvent = typeof ActivityEntryEvent.Type\n\n/** Detailed activity log — auto-generated from domain state changes */\nexport const ActivityDetailedEvent = Schema.Struct({\n type: Schema.Literal(\"activity.detailed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n id: Schema.String,\n source: Schema.String,\n level: Schema.String,\n message: Schema.String,\n details: Schema.optional(Schema.String),\n issueId: Schema.optional(IssueId),\n triggeringEvent: Schema.optional(Schema.String),\n }),\n})\nexport type ActivityDetailedEvent = typeof ActivityDetailedEvent.Type\n\n/** TTS activity log — upleveled utterances for text-to-speech */\nexport const ActivityTtsEvent = Schema.Struct({\n type: Schema.Literal(\"activity.tts\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n id: Schema.String,\n utterance: Schema.String,\n priority: Schema.optional(Schema.Number),\n issueId: Schema.optional(IssueId),\n source: Schema.optional(Schema.String),\n eventType: Schema.optional(Schema.String),\n }),\n})\nexport type ActivityTtsEvent = typeof ActivityTtsEvent.Type\n\n// ─── Dashboard Lifecycle Events ─────────────────────────────────────────────────\n\n/** Dashboard is restarting (post-merge deploy, pan restart, etc.) (PAN-520) */\nexport const DashboardLifecycleStartedEvent = Schema.Struct({\n type: Schema.Literal(\"dashboard.lifecycle_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n reason: Schema.String,\n issueId: Schema.optional(IssueId),\n trigger: Schema.String,\n }),\n})\nexport type DashboardLifecycleStartedEvent = typeof DashboardLifecycleStartedEvent.Type\n\n/** Dashboard restarted successfully after a lifecycle event (PAN-520) */\nexport const DashboardLifecycleCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"dashboard.lifecycle_completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n reason: Schema.String,\n issueId: Schema.optional(IssueId),\n durationMs: Schema.Number,\n }),\n})\nexport type DashboardLifecycleCompletedEvent = typeof DashboardLifecycleCompletedEvent.Type\n\n/** Dashboard restart failed (PAN-520) */\nexport const DashboardLifecycleFailedEvent = Schema.Struct({\n type: Schema.Literal(\"dashboard.lifecycle_failed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n reason: Schema.String,\n issueId: Schema.optional(IssueId),\n error: Schema.String,\n }),\n})\nexport type DashboardLifecycleFailedEvent = typeof DashboardLifecycleFailedEvent.Type\n\n/** Replaces socket.io `shadow:inference-update` */\nexport const ShadowInferenceUpdateEvent = Schema.Struct({\n type: Schema.Literal(\"shadow.inference_update\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, content: Schema.String }),\n})\nexport type ShadowInferenceUpdateEvent = typeof ShadowInferenceUpdateEvent.Type\n\n// ─── Workspace Lifecycle Events ───────────────────────────────────────────────\n\n/** New — workspace worktree created (before planning.started) */\nexport const WorkspaceCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, workspacePath: Schema.String }),\n})\nexport type WorkspaceCreatedEvent = typeof WorkspaceCreatedEvent.Type\n\n/** New — deep-wipe started (transitional state for UI spinner) */\nexport const WorkspaceWipeStartedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.wipe_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type WorkspaceWipeStartedEvent = typeof WorkspaceWipeStartedEvent.Type\n\n/** New — deep-wipe completed, workspace fully destroyed */\nexport const WorkspaceDestroyedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.destroyed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type WorkspaceDestroyedEvent = typeof WorkspaceDestroyedEvent.Type\n\n/** New — cleanup-workspace completed, workspace directory removed */\nexport const WorkspaceDeletedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.deleted\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type WorkspaceDeletedEvent = typeof WorkspaceDeletedEvent.Type\n\n/** New — planning aborted, workspace returned to idle state */\nexport const WorkspaceAbortedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.aborted\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, sessionName: Schema.optional(Schema.String) }),\n})\nexport type WorkspaceAbortedEvent = typeof WorkspaceAbortedEvent.Type\n\n// ─── Memory Events ────────────────────────────────────────────────────────────\n\nexport const MemoryObservationCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"memory.observation_created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ observation: MemoryObservation }),\n})\nexport type MemoryObservationCreatedEvent = typeof MemoryObservationCreatedEvent.Type\n\nexport const MemoryStatusUpdatedEvent = Schema.Struct({\n type: Schema.Literal(\"memory.status_updated\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n identity: Schema.Struct({ projectId: Schema.String, workspaceId: Schema.String, issueId: IssueId }),\n status: MemoryStatus,\n previousStatus: Schema.optional(MemoryStatus),\n }),\n})\nexport type MemoryStatusUpdatedEvent = typeof MemoryStatusUpdatedEvent.Type\n\nexport const MemoryRollupTriggeredEvent = Schema.Struct({\n type: Schema.Literal(\"memory.rollup_triggered\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n projectId: Schema.String,\n workspaceId: Schema.String,\n issueId: IssueId,\n pendingCount: Schema.Number,\n turnIds: Schema.Array(Schema.String),\n threshold: Schema.Number,\n }),\n})\nexport type MemoryRollupTriggeredEvent = typeof MemoryRollupTriggeredEvent.Type\n\nexport const MemoryResetMarkerCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"memory.reset_marker_created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ marker: ResetMarker }),\n})\nexport type MemoryResetMarkerCreatedEvent = typeof MemoryResetMarkerCreatedEvent.Type\n\nexport const MemoryHealthChangedEvent = Schema.Struct({\n type: Schema.Literal(\"memory.health_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n projectId: Schema.String,\n issueId: IssueId,\n status: Schema.Literals([\"healthy\", \"degraded\", \"failing\"]),\n reason: Schema.NullOr(Schema.String),\n // Human-readable cause of the most recent failure (e.g. the provider error\n // message). Distinct from `reason`, which is a coarse machine code like\n // \"extraction-failed\". Surfaced verbatim in the UI so the operator can see\n // *why* memory extraction is failing without reading server logs.\n detail: Schema.optional(Schema.String),\n ragDecision: Schema.optional(RagDecision),\n }),\n})\nexport type MemoryHealthChangedEvent = typeof MemoryHealthChangedEvent.Type\n\n// ─── Cost Events ──────────────────────────────────────────────────────────────\n\n/** New — cost event recorded in the store */\nexport const CostEventRecordedEvent = Schema.Struct({\n type: Schema.Literal(\"cost.event_recorded\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n issueId: IssueId,\n cost: Schema.Number,\n inputTokens: Schema.Number,\n outputTokens: Schema.Number,\n }),\n})\nexport type CostEventRecordedEvent = typeof CostEventRecordedEvent.Type\n\n// ─── Conversation Events ──────────────────────────────────────────────────────\n\n/** Emitted (in-memory only, not persisted) when a Overdeck-native compaction starts or completes. */\nexport const ConversationCompactingChangedEvent = Schema.Struct({\n type: Schema.Literal(\"conversation.compacting_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n conversationName: Schema.String,\n compacting: Schema.Boolean,\n }),\n})\nexport type ConversationCompactingChangedEvent = typeof ConversationCompactingChangedEvent.Type\n\n/** Emitted (in-memory only) when a new conversation row is created, so the\n * sidebar list can refresh immediately instead of waiting for its poll tick. */\nexport const ConversationCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"conversation.created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n conversationName: Schema.String,\n }),\n})\nexport type ConversationCreatedEvent = typeof ConversationCreatedEvent.Type\n\n/** Emitted (in-memory only) when a conversation title changes, so the sidebar\n * list can refresh immediately instead of waiting for its poll tick. */\nexport const ConversationTitleChangedEvent = Schema.Struct({\n type: Schema.Literal(\"conversation.title_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n conversationName: Schema.String,\n title: Schema.String,\n titleSource: Schema.String,\n }),\n})\nexport type ConversationTitleChangedEvent = typeof ConversationTitleChangedEvent.Type\n\n/** Emitted (in-memory only) when a PermissionRequest hook fires or resolves for a conversation. */\nexport const ConversationPermissionChangedEvent = Schema.Struct({\n type: Schema.Literal(\"conversation.permission_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n conversationName: Schema.String,\n waiting: Schema.Boolean,\n toolName: Schema.optional(Schema.String),\n }),\n})\nexport type ConversationPermissionChangedEvent = typeof ConversationPermissionChangedEvent.Type\n\n// ─── Conversation Discovery Events (PAN-457) ──────────────────────────────────\n\n/** Scan started */\nexport const ScanStartedEvent = Schema.Struct({\n type: Schema.Literal(\"scan.started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n mode: Schema.Literals(['targeted', 'watched', 'system']),\n dirs: Schema.Array(Schema.String),\n }),\n})\nexport type ScanStartedEvent = typeof ScanStartedEvent.Type\n\n/** Scan progress tick */\nexport const ScanProgressEvent = Schema.Struct({\n type: Schema.Literal(\"scan.progress\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n dirsProcessed: Schema.Number,\n dirsTotal: Schema.Number,\n sessionsFound: Schema.Number,\n elapsedMs: Schema.Number,\n }),\n})\nexport type ScanProgressEvent = typeof ScanProgressEvent.Type\n\n/** Scan completed */\nexport const ScanCompleteEvent = Schema.Struct({\n type: Schema.Literal(\"scan.complete\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n inserted: Schema.Number,\n updated: Schema.Number,\n skipped: Schema.Number,\n errors: Schema.Number,\n durationMs: Schema.Number,\n }),\n})\nexport type ScanCompleteEvent = typeof ScanCompleteEvent.Type\n\n/** Per-session enrichment progress */\nexport const EnrichProgressEvent = Schema.Struct({\n type: Schema.Literal(\"enrich.progress\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n sessionId: Schema.Number,\n level: Schema.Number,\n model: Schema.String,\n cost: Schema.Number,\n success: Schema.Boolean,\n error: Schema.optional(Schema.String),\n }),\n})\nexport type EnrichProgressEvent = typeof EnrichProgressEvent.Type\n\n/** Enrichment batch completed */\nexport const EnrichCompleteEvent = Schema.Struct({\n type: Schema.Literal(\"enrich.complete\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n processed: Schema.Number,\n totalCost: Schema.Number,\n failures: Schema.Number,\n durationMs: Schema.Number,\n }),\n})\nexport type EnrichCompleteEvent = typeof EnrichCompleteEvent.Type\n\n/** Per-session embedding progress */\nexport const EmbedProgressEvent = Schema.Struct({\n type: Schema.Literal(\"embed.progress\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n sessionId: Schema.Number,\n model: Schema.String,\n success: Schema.Boolean,\n error: Schema.optional(Schema.String),\n }),\n})\nexport type EmbedProgressEvent = typeof EmbedProgressEvent.Type\n\n// ─── Union ────────────────────────────────────────────────────────────────────\n\n/** All domain events — the shape streamed via subscribeDomainEvents RPC */\nexport const DomainEvent = Schema.Union([\n SystemHeartbeatEvent,\n BeadsFreshnessChangedEvent,\n AgentCreatedEvent,\n AgentEnrichmentChangedEvent,\n AgentStartedEvent,\n AgentStoppedEvent,\n AgentHeartbeatDeadEvent,\n WorkCompletedEvent,\n AgentCompletedEvent,\n ReviewApprovedEvent,\n TestPassedEvent,\n AgentStatusChangedEvent,\n AgentOutputReceivedEvent,\n // PAN-800 runtime events\n AgentActivityChangedEvent,\n AgentThinkingStartedEvent,\n AgentThinkingStoppedEvent,\n AgentWaitingStartedEvent,\n AgentWaitingClearedEvent,\n AgentPermissionRequestedEvent,\n AgentPermissionResolvedEvent,\n AgentMessageReceivedEvent,\n AgentChannelReplyEvent,\n AgentModelSetEvent,\n AgentCurrentIssueSetEvent,\n AgentContextSaturationChangedEvent,\n AgentResolutionChangedEvent,\n AgentStateRestoredEvent,\n AgentTurnDiffCompletedEvent,\n PlanningStartedEvent,\n PlanningFailedEvent,\n PlanningSyncEvent,\n PlanItemStatusChangedEvent,\n PlanSubitemStatusChangedEvent,\n PlanItemsUnblockedEvent,\n PipelineStatusChangedEvent,\n MergeReadyEvent,\n ReviewStatusChangedEvent,\n PipelineReviewStartedEvent,\n PipelineReviewCompletedEvent,\n PipelineTestStartedEvent,\n PipelineTestCompletedEvent,\n PipelineVerificationStartedEvent,\n PipelineVerificationFailedEvent,\n IssueTransitionedEvent,\n OperatorInterventionEvent,\n SubstrateBugFiledEvent,\n ReviewReviewerStartedEvent,\n ReviewReviewerCompletedEvent,\n ReviewSpecialistTimedOutEvent,\n ReviewCoordinatorStartedEvent,\n ReviewCoordinatorDiedEvent,\n SpecialistStartedEvent,\n SpecialistCompletedEvent,\n SpecialistFailedEvent,\n ResourcesUpdatedEvent,\n SystemHealthSeverityChangedEvent,\n IssuesSnapshotEvent,\n IssuesUpdatedEvent,\n IssueStatusChangedEvent,\n ActivityUpdatedEvent,\n ActivityEntryEvent,\n ActivityDetailedEvent,\n ActivityTtsEvent,\n ShadowInferenceUpdateEvent,\n MemoryObservationCreatedEvent,\n MemoryStatusUpdatedEvent,\n MemoryRollupTriggeredEvent,\n MemoryResetMarkerCreatedEvent,\n MemoryHealthChangedEvent,\n CostEventRecordedEvent,\n WorkspaceCreatedEvent,\n WorkspaceWipeStartedEvent,\n WorkspaceDestroyedEvent,\n WorkspaceDeletedEvent,\n WorkspaceAbortedEvent,\n DashboardLifecycleStartedEvent,\n DashboardLifecycleCompletedEvent,\n DashboardLifecycleFailedEvent,\n ConversationCompactingChangedEvent,\n ConversationCreatedEvent,\n ConversationTitleChangedEvent,\n ConversationPermissionChangedEvent,\n ScanStartedEvent,\n ScanProgressEvent,\n ScanCompleteEvent,\n EnrichProgressEvent,\n EnrichCompleteEvent,\n EmbedProgressEvent,\n])\nexport type DomainEvent = typeof DomainEvent.Type\n","import { Schema } from \"effect\"\n\nexport const EDITORS = [\n { id: \"cursor\", label: \"Cursor\", command: \"cursor\", supportsGoto: true },\n { id: \"windsurf\", label: \"Windsurf\", command: \"windsurf\", supportsGoto: true },\n { id: \"trae\", label: \"Trae\", command: \"trae\", supportsGoto: true },\n { id: \"kiro\", label: \"Kiro\", command: \"kiro\", supportsGoto: true },\n { id: \"vscode\", label: \"VS Code\", command: \"code\", supportsGoto: true },\n { id: \"vscode-insiders\", label: \"VS Code Insiders\", command: \"code-insiders\", supportsGoto: true },\n { id: \"vscodium\", label: \"VSCodium\", command: \"codium\", supportsGoto: true },\n { id: \"zed\", label: \"Zed\", command: \"zed\", supportsGoto: false },\n { id: \"antigravity\", label: \"Antigravity\", command: \"agy\", supportsGoto: false },\n { id: \"idea\", label: \"IntelliJ IDEA\", command: \"idea\", supportsGoto: true },\n { id: \"aqua\", label: \"Aqua\", command: \"aqua\", supportsGoto: true },\n { id: \"clion\", label: \"CLion\", command: \"clion\", supportsGoto: true },\n { id: \"datagrip\", label: \"DataGrip\", command: \"datagrip\", supportsGoto: true },\n { id: \"dataspell\", label: \"DataSpell\", command: \"dataspell\", supportsGoto: true },\n { id: \"goland\", label: \"GoLand\", command: \"goland\", supportsGoto: true },\n { id: \"phpstorm\", label: \"PhpStorm\", command: \"phpstorm\", supportsGoto: true },\n { id: \"pycharm\", label: \"PyCharm\", command: \"pycharm\", supportsGoto: true },\n { id: \"rider\", label: \"Rider\", command: \"rider\", supportsGoto: true },\n { id: \"rubymine\", label: \"RubyMine\", command: \"rubymine\", supportsGoto: true },\n { id: \"rustrover\", label: \"RustRover\", command: \"rustrover\", supportsGoto: true },\n { id: \"webstorm\", label: \"WebStorm\", command: \"webstorm\", supportsGoto: true },\n { id: \"file-manager\", label: \"File Manager\", command: null, supportsGoto: false },\n] as const\n\nexport type EditorEntry = (typeof EDITORS)[number]\nexport type EditorId = EditorEntry[\"id\"]\n\nconst EDITOR_IDS: [EditorId, ...EditorId[]] = [\n \"cursor\",\n \"windsurf\",\n \"trae\",\n \"kiro\",\n \"vscode\",\n \"vscode-insiders\",\n \"vscodium\",\n \"zed\",\n \"antigravity\",\n \"idea\",\n \"aqua\",\n \"clion\",\n \"datagrip\",\n \"dataspell\",\n \"goland\",\n \"phpstorm\",\n \"pycharm\",\n \"rider\",\n \"rubymine\",\n \"rustrover\",\n \"webstorm\",\n \"file-manager\",\n]\nexport const EditorIdSchema = Schema.Literals(EDITOR_IDS)\n\nexport const OpenInEditorInput = Schema.Struct({\n cwd: Schema.String,\n editor: EditorIdSchema,\n})\nexport type OpenInEditorInput = typeof OpenInEditorInput.Type\n","import { Effect, Schema } from \"effect\"\n\nexport const FlywheelRunId = Schema.String.check(Schema.isPattern(/^RUN-\\d+$/))\nexport type FlywheelRunId = typeof FlywheelRunId.Type\n\nexport const FlywheelHttpUrl = Schema.String.check(Schema.isPattern(/^https?:\\/\\/\\S+$/i))\nexport type FlywheelHttpUrl = typeof FlywheelHttpUrl.Type\n\nexport const FlywheelHarness = Schema.Literals([\"claude-code\", \"pi\", \"ohmypi\", \"codex\"])\nexport interface FlywheelOrchestrator {\n harness: typeof FlywheelHarness.Type\n model: string\n effort: \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\"\n ctxPercent: number\n}\n\nexport const FlywheelEffort = Schema.Literals([\"low\", \"medium\", \"high\", \"xhigh\", \"max\"])\nexport const FlywheelOrchestrator = Schema.Struct({\n harness: FlywheelHarness,\n model: Schema.String,\n effort: FlywheelEffort,\n ctxPercent: Schema.Number,\n})\n\nexport interface FlywheelHeadline {\n bugsFixed: number\n swarmItemsMerged: number\n swarmItemsTotal: number\n prsMerged: number\n awaitingUat: number\n}\n\nexport const FlywheelHeadline = Schema.Struct({\n bugsFixed: Schema.Number,\n swarmItemsMerged: Schema.Number,\n swarmItemsTotal: Schema.Number,\n prsMerged: Schema.Number,\n awaitingUat: Schema.Number,\n})\n\n/**\n * Pipeline verbs and the merge-queue contract (PAN-1736):\n *\n * `computeMergeQueue` treats an item as AT THE MERGE GATE when its verb is\n * \"shipping\" OR \"merging\" — both are natural emissions for a merge-ready\n * issue, and orchestrators have used each. Emitting any OTHER verb for an\n * issue that is ready_for_merge in the review DB silently drops it from the\n * merge queue and from UAT batch assembly (PAN-1737). RUN-18 shipped an\n * empty queue with five ready issues exactly this way.\n *\n * If you add a verb that can describe a merge-ready issue, extend\n * MERGE_GATE_VERBS in src/lib/flywheel-merge-order.ts in the same change.\n */\nexport const FlywheelPipelineVerb = Schema.Literals([\n \"planning\",\n \"working\",\n \"reviewing\",\n \"testing\",\n \"shipping\",\n \"merging\",\n \"blocked\",\n \"parked\",\n])\n\nexport const FlywheelPipelineStatus = Schema.Literals([\n \"queued\",\n \"running\",\n \"blocked\",\n \"passed\",\n \"failed\",\n \"merged\",\n \"parked\",\n])\n\nexport interface FlywheelPipelineItem {\n issueId: string\n title: string\n verb: typeof FlywheelPipelineVerb.Type\n status: typeof FlywheelPipelineStatus.Type\n progressPercent?: number | undefined\n agentId?: string | undefined\n pr?: number | undefined\n mergeOrder?: number | undefined\n conflictsWith?: readonly string[] | undefined\n}\n\nexport const FlywheelPipelineItem = Schema.Struct({\n issueId: Schema.String,\n title: Schema.String,\n verb: FlywheelPipelineVerb,\n status: FlywheelPipelineStatus,\n progressPercent: Schema.optional(Schema.Number),\n agentId: Schema.optional(Schema.String),\n pr: Schema.optional(Schema.Number),\n mergeOrder: Schema.optional(Schema.Number),\n conflictsWith: Schema.optional(Schema.Array(Schema.String)),\n})\n\nexport const FlywheelSubstrateBugStatus = Schema.Literals([\"filed\", \"fixed\", \"workaround\"])\n\nexport interface FlywheelSubstrateBug {\n issueId: string\n title: string\n status: typeof FlywheelSubstrateBugStatus.Type\n commitSha?: string | undefined\n url?: FlywheelHttpUrl | undefined\n}\n\nexport const FlywheelSubstrateBug = Schema.Struct({\n issueId: Schema.String,\n title: Schema.String,\n status: FlywheelSubstrateBugStatus,\n commitSha: Schema.optional(Schema.String),\n url: Schema.optional(FlywheelHttpUrl),\n})\n\nexport const FlywheelAgentStatus = Schema.Literals([\n \"starting\",\n \"running\",\n \"waiting\",\n \"idle\",\n \"stopped\",\n \"error\",\n])\n\nexport interface FlywheelAgent {\n id: string\n label: string\n status: typeof FlywheelAgentStatus.Type\n issueId?: string | undefined\n role?: string | undefined\n model?: string | undefined\n ctxPercent?: number | undefined\n currentAction?: string | undefined\n}\n\nexport const FlywheelAgent = Schema.Struct({\n id: Schema.String,\n label: Schema.String,\n status: FlywheelAgentStatus,\n issueId: Schema.optional(Schema.String),\n role: Schema.optional(Schema.String),\n model: Schema.optional(Schema.String),\n ctxPercent: Schema.optional(Schema.Number),\n currentAction: Schema.optional(Schema.String),\n})\n\nexport interface FlywheelParkedItem {\n issueId: string\n title: string\n reason: string\n parkedAt?: string | undefined\n}\n\nexport const FlywheelParkedItem = Schema.Struct({\n issueId: Schema.String,\n title: Schema.String,\n reason: Schema.String,\n parkedAt: Schema.optional(Schema.String),\n})\n\nexport const FlywheelSuggestionAction = Schema.Literals([\n \"start\",\n \"resume\",\n \"plan\",\n \"review\",\n \"merge\",\n \"unblock\",\n \"park\",\n \"investigate\",\n \"wait\",\n])\nexport type FlywheelSuggestionAction = typeof FlywheelSuggestionAction.Type\n\nexport const FlywheelSuggestionPriority = Schema.Literals([\"urgent\", \"high\", \"medium\", \"low\"])\nexport type FlywheelSuggestionPriority = typeof FlywheelSuggestionPriority.Type\n\nexport interface FlywheelSuggestion {\n action: FlywheelSuggestionAction\n issueId?: string | undefined\n rationale: string\n priority: FlywheelSuggestionPriority\n filedBy?: \"agent\" | \"operator\" | undefined\n weight?: number | undefined\n weightReason?: string | undefined\n}\n\nexport const FlywheelSuggestion = Schema.Struct({\n action: FlywheelSuggestionAction,\n issueId: Schema.optional(Schema.String),\n rationale: Schema.String,\n priority: FlywheelSuggestionPriority,\n filedBy: Schema.optional(Schema.Literals([\"agent\", \"operator\"])),\n weight: Schema.optional(Schema.Number),\n weightReason: Schema.optional(Schema.String),\n})\n\nexport interface FlywheelSystemStatus {\n mainHead: string\n ramUsedMb: number\n ramTotalMb: number\n swapUsedMb: number\n swapTotalMb: number\n agentsActive: number\n agentsCap: number\n}\n\nexport const FlywheelSystemStatus = Schema.Struct({\n mainHead: Schema.String,\n ramUsedMb: Schema.Number,\n ramTotalMb: Schema.Number,\n swapUsedMb: Schema.Number,\n swapTotalMb: Schema.Number,\n agentsActive: Schema.Number,\n agentsCap: Schema.Number,\n})\n\nexport interface FlywheelStatus {\n runId: FlywheelRunId\n startedAt: string\n elapsedMs: number\n orchestrator: FlywheelOrchestrator\n headline: FlywheelHeadline\n activePipeline: ReadonlyArray<FlywheelPipelineItem>\n substrateBugs: ReadonlyArray<FlywheelSubstrateBug>\n agents: ReadonlyArray<FlywheelAgent>\n parked: ReadonlyArray<FlywheelParkedItem>\n suggestions: ReadonlyArray<FlywheelSuggestion>\n system: FlywheelSystemStatus\n openQuestions: ReadonlyArray<string>\n ticks: number\n lastTickAt: string\n}\n\nexport const FlywheelStatus = Schema.Struct({\n runId: FlywheelRunId,\n startedAt: Schema.String,\n elapsedMs: Schema.Number,\n orchestrator: FlywheelOrchestrator,\n headline: FlywheelHeadline,\n activePipeline: Schema.Array(FlywheelPipelineItem),\n substrateBugs: Schema.Array(FlywheelSubstrateBug),\n agents: Schema.Array(FlywheelAgent),\n parked: Schema.Array(FlywheelParkedItem),\n suggestions: Schema.Array(FlywheelSuggestion).pipe(\n Schema.withDecodingDefaultKey(Effect.succeed([])),\n ),\n system: FlywheelSystemStatus,\n openQuestions: Schema.Array(Schema.String),\n ticks: Schema.Number,\n lastTickAt: Schema.String,\n})\n","import { Schema } from \"effect\"\nimport * as Rpc from \"effect/unstable/rpc/Rpc\"\nimport * as RpcGroup from \"effect/unstable/rpc/RpcGroup\"\nimport { DomainEvent } from \"./events\"\nimport {\n AgentStatus,\n ConversationCostSummary,\n ConversationFilter,\n DashboardSnapshot,\n DiscoveredSessionSnapshot,\n IssueId,\n ScanResult,\n SequenceNumber,\n SessionNodePresence,\n SessionsFeedFacetsSnapshot,\n SessionsFeedRowSnapshot,\n WorkspaceDetail,\n} from \"./types\"\nimport { EditorIdSchema, OpenInEditorInput } from \"./editor\"\nimport { FlywheelStatus } from \"./flywheel\"\n\n// ─── RPC method names ─────────────────────────────────────────────────────────\n\nexport const WS_METHODS = {\n // Conversations (PAN-457)\n scanConversations: \"pan.scanConversations\",\n searchConversations: \"pan.searchConversations\",\n listDiscoveredSessions: \"pan.listDiscoveredSessions\",\n listSessionsFeed: \"pan.listSessionsFeed\",\n getSessionsFeedFacets: \"pan.getSessionsFeedFacets\",\n getDiscoveredSession: \"pan.getDiscoveredSession\",\n enrichSessions: \"pan.enrichSessions\",\n embedSessions: \"pan.embedSessions\",\n getConversationCost: \"pan.getConversationCost\",\n getConversationCostByWorkspace: \"pan.getConversationCostByWorkspace\",\n getConversationStats: \"pan.getConversationStats\",\n\n // Streaming subscriptions\n subscribeDomainEvents: \"pan.subscribeDomainEvents\",\n subscribeIssueEvents: \"pan.subscribeIssueEvents\",\n subscribeTerminal: \"pan.subscribeTerminal\",\n subscribeAgentOutput: \"pan.subscribeAgentOutput\",\n subscribeConversationMessages: \"pan.subscribeConversationMessages\",\n subscribeProjectSessionTree: \"pan.subscribeProjectSessionTree\",\n subscribeFlywheelStatus: \"pan.subscribeFlywheelStatus\",\n\n // Snapshot / replay\n getSnapshot: \"pan.getSnapshot\",\n replayEvents: \"pan.replayEvents\",\n\n // Workspace detail (batched)\n getWorkspaceDetail: \"pan.getWorkspaceDetail\",\n readWorkspaceFile: \"pan.readWorkspaceFile\",\n\n // File-path existence (PAN-1457) — used by MarkdownFileLink to decide\n // whether a path candidate in chat markdown should render as a chip.\n resolveFilePathExists: \"pan.resolveFilePathExists\",\n\n // Terminal control\n terminalOpen: \"pan.terminalOpen\",\n terminalWrite: \"pan.terminalWrite\",\n terminalResize: \"pan.terminalResize\",\n terminalClose: \"pan.terminalClose\",\n\n // Commands (trigger mutations via RPC)\n startPlanning: \"pan.startPlanning\",\n startAgent: \"pan.startAgent\",\n deepWipe: \"pan.deepWipe\",\n sendTerminalInput: \"pan.sendTerminalInput\",\n resizeTerminal: \"pan.resizeTerminal\",\n\n // Editor integration (PAN-966)\n shellOpenInEditor: \"pan.shellOpenInEditor\",\n getAvailableEditors: \"pan.getAvailableEditors\",\n} as const\n\n// ─── Error types ──────────────────────────────────────────────────────────────\n\nexport class PanRpcError extends Schema.TaggedErrorClass<PanRpcError>()(\"PanRpcError\", {\n message: Schema.String,\n code: Schema.optional(Schema.String),\n}) {}\n\n// ─── Terminal types ───────────────────────────────────────────────────────────\n\nexport const TerminalOutput = Schema.Struct({\n sessionName: Schema.String,\n data: Schema.String,\n})\nexport type TerminalOutput = typeof TerminalOutput.Type\n\nexport const AgentOutput = Schema.Struct({\n agentId: Schema.String,\n line: Schema.String,\n})\nexport type AgentOutput = typeof AgentOutput.Type\n\n// ─── Plan mode types ─────────────────────────────────────────────────────────\n\nexport const ProposedPlan = Schema.Struct({\n id: Schema.String,\n plan: Schema.String,\n planFilePath: Schema.optional(Schema.String),\n status: Schema.Literals(['pending', 'approved', 'rejected']),\n createdAt: Schema.String,\n resolvedAt: Schema.optional(Schema.String),\n})\nexport type ProposedPlan = typeof ProposedPlan.Type\n\n// ─── Compact boundary types ──────────────────────────────────────────────────\n\nexport const CompactBoundary = Schema.Struct({\n id: Schema.String,\n timestamp: Schema.String,\n trigger: Schema.optional(Schema.String),\n preTokens: Schema.optional(Schema.Number),\n model: Schema.optional(Schema.String),\n})\nexport type CompactBoundary = typeof CompactBoundary.Type\n\nexport const ContextUsage = Schema.Struct({\n activeBytes: Schema.Number,\n estimatedTokens: Schema.Number,\n contextWindow: Schema.Number,\n percentUsed: Schema.Number,\n /**\n * Optional breakdown of the last assistant turn — surfaced by the click\n * popover on the ContextWindowMeter so users can see WHY the meter says\n * what it does. Computed by `computeContextUsage()` from JSONL `usage`.\n */\n lastInputTokens: Schema.optional(Schema.Number),\n lastCacheReadTokens: Schema.optional(Schema.Number),\n lastCacheCreationTokens: Schema.optional(Schema.Number),\n /** Highest input_tokens ever observed in this window — triggers 1M detection. */\n maxObservedInputTokens: Schema.optional(Schema.Number),\n /** Model the most recent assistant turn ran under (from JSONL). */\n lastModel: Schema.optional(Schema.NullOr(Schema.String)),\n /** ISO timestamp of the most recent assistant turn. */\n lastTurnAt: Schema.optional(Schema.NullOr(Schema.String)),\n})\nexport type ContextUsage = typeof ContextUsage.Type\n\n// ─── Chat / conversation message types (PAN-451) ──────────────────────────────\n\nexport const ChatMessage = Schema.Struct({\n id: Schema.String,\n role: Schema.Literals(['user', 'assistant', 'system']),\n text: Schema.String,\n turnId: Schema.optional(Schema.String),\n createdAt: Schema.String,\n completedAt: Schema.optional(Schema.String),\n streaming: Schema.optional(Schema.Boolean),\n sequence: Schema.optional(Schema.Number),\n})\nexport type ChatMessage = typeof ChatMessage.Type\n\nexport const WorkLogEntry = Schema.Struct({\n id: Schema.String,\n createdAt: Schema.String,\n label: Schema.String,\n detail: Schema.optional(Schema.String),\n /** Tool result output (populated when tool_result is received). */\n result: Schema.optional(Schema.String),\n command: Schema.optional(Schema.String),\n changedFiles: Schema.optional(Schema.Array(Schema.String)),\n tone: Schema.Literals(['thinking', 'tool', 'info', 'error']),\n toolTitle: Schema.optional(Schema.String),\n /** Raw tool_use input dict — drives per-tool expanded rendering (PAN-1459). */\n toolInput: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),\n sequence: Schema.optional(Schema.Number),\n})\nexport type WorkLogEntry = typeof WorkLogEntry.Type\n\n/**\n * Response shape for GET /api/agents/:id/conversation.\n * Shared between the dashboard server route and the frontend TerminalPanel.\n */\nexport interface ConversationResponse {\n messages: ChatMessage[];\n workLog: WorkLogEntry[];\n streaming: boolean;\n totalCost: number;\n /** Total token throughput (input + output + cache read + cache write). */\n totalTokens?: number;\n byteOffset: number;\n proposedPlan?: ProposedPlan;\n compactBoundaries?: CompactBoundary[];\n contextUsage?: ContextUsage | null;\n}\n\nexport const ConversationEvent = Schema.Union([\n Schema.Struct({\n kind: Schema.Literal('messages'),\n messages: Schema.Array(ChatMessage),\n workLog: Schema.Array(WorkLogEntry),\n streaming: Schema.Boolean,\n snapshot: Schema.optional(Schema.Boolean),\n proposedPlan: Schema.optional(ProposedPlan),\n compactBoundaries: Schema.optional(Schema.Array(CompactBoundary)),\n contextUsage: Schema.optional(Schema.NullOr(ContextUsage)),\n }),\n Schema.Struct({\n kind: Schema.Literal('discovering'),\n }),\n])\nexport type ConversationEvent = typeof ConversationEvent.Type\n\n// ─── Session Tree Delta (PAN-821) ─────────────────────────────────────────────\n\nexport const SessionTreeDelta = Schema.Struct({\n kind: Schema.Literals(['session_added', 'session_removed', 'presence_changed', 'status_changed']),\n issueId: Schema.String,\n sessionId: Schema.String,\n presence: Schema.optional(SessionNodePresence),\n status: Schema.optional(AgentStatus),\n timestamp: Schema.String,\n})\nexport type SessionTreeDelta = typeof SessionTreeDelta.Type\n\n// ─── RPC definitions ──────────────────────────────────────────────────────────\n\n/** 1. Subscribe to the live domain event stream (stream) */\nexport const SubscribeDomainEventsRpc = Rpc.make(WS_METHODS.subscribeDomainEvents, {\n payload: Schema.Struct({}),\n success: DomainEvent,\n stream: true,\n})\n\n/** 1b. Subscribe to the live domain event stream for one issue (stream) */\nexport const SubscribeIssueEventsRpc = Rpc.make(WS_METHODS.subscribeIssueEvents, {\n payload: Schema.Struct({ issueId: IssueId }),\n success: DomainEvent,\n stream: true,\n})\n\n/** 2. Subscribe to raw terminal output for a tmux session (stream) */\nexport const SubscribeTerminalRpc = Rpc.make(WS_METHODS.subscribeTerminal, {\n payload: Schema.Struct({ sessionName: Schema.String, cols: Schema.Number, rows: Schema.Number }),\n success: TerminalOutput,\n error: PanRpcError,\n stream: true,\n})\n\n/** 3. Subscribe to buffered agent stdout (stream) */\nexport const SubscribeAgentOutputRpc = Rpc.make(WS_METHODS.subscribeAgentOutput, {\n payload: Schema.Struct({ agentId: Schema.String }),\n success: AgentOutput,\n error: PanRpcError,\n stream: true,\n})\n\n/** 4. Get current dashboard snapshot (unary) */\nexport const GetSnapshotRpc = Rpc.make(WS_METHODS.getSnapshot, {\n payload: Schema.Struct({}),\n success: DashboardSnapshot,\n error: PanRpcError,\n})\n\n/** 5. Replay events since a given sequence number (unary) */\nexport const ReplayEventsRpc = Rpc.make(WS_METHODS.replayEvents, {\n payload: Schema.Struct({ fromSequence: SequenceNumber }),\n success: Schema.Array(DomainEvent),\n error: PanRpcError,\n})\n\n/** 6. Open a terminal session / attach PTY (unary) */\nexport const TerminalOpenRpc = Rpc.make(WS_METHODS.terminalOpen, {\n payload: Schema.Struct({ sessionName: Schema.String, cols: Schema.Number, rows: Schema.Number }),\n success: Schema.Struct({ sessionName: Schema.String }),\n error: PanRpcError,\n})\n\n/** 7. Write data to a terminal session (unary) */\nexport const TerminalWriteRpc = Rpc.make(WS_METHODS.terminalWrite, {\n payload: Schema.Struct({ sessionName: Schema.String, data: Schema.String }),\n error: PanRpcError,\n})\n\n/** 8. Resize a terminal session (unary) */\nexport const TerminalResizeRpc = Rpc.make(WS_METHODS.terminalResize, {\n payload: Schema.Struct({ sessionName: Schema.String, cols: Schema.Number, rows: Schema.Number }),\n error: PanRpcError,\n})\n\n/** 9. Close a terminal session (unary) */\nexport const TerminalCloseRpc = Rpc.make(WS_METHODS.terminalClose, {\n payload: Schema.Struct({ sessionName: Schema.String }),\n error: PanRpcError,\n})\n\n/** 10. Get batched workspace detail (unary) — replaces 5 separate HTTP calls */\nexport const GetWorkspaceDetailRpc = Rpc.make(WS_METHODS.getWorkspaceDetail, {\n payload: Schema.Struct({ issueId: IssueId }),\n success: WorkspaceDetail,\n error: PanRpcError,\n})\n\nexport const ReadWorkspaceFileInput = Schema.Struct({\n issueId: IssueId,\n relativePath: Schema.String,\n line: Schema.optional(Schema.Number),\n contextLines: Schema.optional(Schema.Number),\n})\nexport type ReadWorkspaceFileInput = typeof ReadWorkspaceFileInput.Type\n\nexport const ReadWorkspaceFileResult = Schema.Struct({\n text: Schema.String,\n lang: Schema.String,\n truncated: Schema.Boolean,\n totalLines: Schema.Number,\n})\nexport type ReadWorkspaceFileResult = typeof ReadWorkspaceFileResult.Type\n\n/** 10b. Read a workspace file for inline previews (unary) */\nexport const ReadWorkspaceFileRpc = Rpc.make(WS_METHODS.readWorkspaceFile, {\n payload: ReadWorkspaceFileInput,\n success: ReadWorkspaceFileResult,\n error: PanRpcError,\n})\n\n/**\n * 10c. Resolve whether a file path candidate exists on disk (PAN-1457).\n *\n * Used by MarkdownFileLink to decide whether a path-like token in chat\n * markdown should render as a clickable chip. Returns exists=false for\n * phantom paths (`conv/2209`, `users/foo`) and exists=true with kind for\n * real files and directories (including bare directory references like\n * `src/components/Foo` that the regex heuristic alone cannot validate).\n *\n * Security:\n * - Pure stat — never reads file contents, never enumerates directories.\n * - Relative paths resolve under cwd; absolute paths are statted directly.\n * - Caller is responsible for sending only paths surfaced from their own\n * conversation context; the resolver does not gate by issueId because\n * chat happens outside any single workspace.\n */\nexport const ResolveFilePathExistsInput = Schema.Struct({\n cwd: Schema.String,\n path: Schema.String,\n})\nexport type ResolveFilePathExistsInput = typeof ResolveFilePathExistsInput.Type\n\nexport const ResolveFilePathExistsResult = Schema.Struct({\n exists: Schema.Boolean,\n kind: Schema.NullOr(Schema.Literals(['file', 'dir'])),\n})\nexport type ResolveFilePathExistsResult = typeof ResolveFilePathExistsResult.Type\n\nexport const ResolveFilePathExistsRpc = Rpc.make(WS_METHODS.resolveFilePathExists, {\n payload: ResolveFilePathExistsInput,\n success: ResolveFilePathExistsResult,\n error: PanRpcError,\n})\n\n/** 11. Start planning for an issue (command) */\nexport const StartPlanningRpc = Rpc.make(WS_METHODS.startPlanning, {\n payload: Schema.Struct({ issueId: IssueId, options: Schema.optional(Schema.Unknown) }),\n success: Schema.Struct({ queued: Schema.Boolean }),\n error: PanRpcError,\n})\n\n/** 12. Start a work agent for an issue (command) */\nexport const StartAgentRpc = Rpc.make(WS_METHODS.startAgent, {\n payload: Schema.Struct({ issueId: IssueId, options: Schema.optional(Schema.Unknown) }),\n success: Schema.Struct({ agentId: Schema.String }),\n error: PanRpcError,\n})\n\n/** 13. Deep-wipe a workspace (destructive command — requires explicit confirmation) */\nexport const DeepWipeRpc = Rpc.make(WS_METHODS.deepWipe, {\n payload: Schema.Struct({ issueId: IssueId, deleteWorkspace: Schema.optional(Schema.Boolean) }),\n success: Schema.Struct({ wiped: Schema.Boolean }),\n error: PanRpcError,\n})\n\n/** 14. Send input to a terminal session (command) */\nexport const SendTerminalInputRpc = Rpc.make(WS_METHODS.sendTerminalInput, {\n payload: Schema.Struct({ sessionName: Schema.String, data: Schema.String }),\n error: PanRpcError,\n})\n\n/** 15. Resize a terminal session (command) */\nexport const ResizeTerminalRpc = Rpc.make(WS_METHODS.resizeTerminal, {\n payload: Schema.Struct({ sessionName: Schema.String, cols: Schema.Number, rows: Schema.Number }),\n error: PanRpcError,\n})\n\n/** 16. Subscribe to structured conversation messages from a JSONL session file (stream, PAN-451) */\nexport const SubscribeConversationMessagesRpc = Rpc.make(WS_METHODS.subscribeConversationMessages, {\n payload: Schema.Struct({ conversationName: Schema.String }),\n success: ConversationEvent,\n error: PanRpcError,\n stream: true,\n})\n\n/** 17. Subscribe to live session tree deltas for a project (stream, PAN-821) */\nexport const SubscribeProjectSessionTreeRpc = Rpc.make(WS_METHODS.subscribeProjectSessionTree, {\n payload: Schema.Struct({ projectKey: Schema.String }),\n success: SessionTreeDelta,\n error: PanRpcError,\n stream: true,\n})\n\n/** 18. Subscribe to latest Flywheel status snapshots (stream) */\nexport const SubscribeFlywheelStatusRpc = Rpc.make(WS_METHODS.subscribeFlywheelStatus, {\n payload: Schema.Struct({}),\n success: Schema.NullOr(FlywheelStatus),\n error: PanRpcError,\n stream: true,\n})\n\n/** 19. Open a workspace in an editor (PAN-966) */\nexport const ShellOpenInEditorRpc = Rpc.make(WS_METHODS.shellOpenInEditor, {\n payload: OpenInEditorInput,\n error: PanRpcError,\n})\n\n/** 19. Get available (installed) editors (PAN-966) */\nexport const GetAvailableEditorsRpc = Rpc.make(WS_METHODS.getAvailableEditors, {\n success: Schema.Struct({\n editors: Schema.Array(EditorIdSchema),\n /**\n * Default cwd to open when no project/workspace is selected — the\n * \"devroot\" fallback. `~/Projects` if it exists, else `$HOME`.\n */\n defaultCwd: Schema.String,\n }),\n error: PanRpcError,\n})\n\n// ─── Conversation Discovery RPC procs (PAN-457) ───────────────────────────────\n\nconst DiscoveredSessionListResult = Schema.Struct({\n sessions: Schema.Array(DiscoveredSessionSnapshot),\n count: Schema.Number,\n total: Schema.Number,\n})\n\nconst SessionsFeedPayload = Schema.Struct({\n harness: Schema.optional(Schema.String),\n workspacePath: Schema.optional(Schema.String),\n primaryModel: Schema.optional(Schema.String),\n managed: Schema.optional(Schema.Boolean),\n unmanaged: Schema.optional(Schema.Boolean),\n since: Schema.optional(Schema.String),\n before: Schema.optional(Schema.String),\n after: Schema.optional(Schema.String),\n minCost: Schema.optional(Schema.Number),\n maxCost: Schema.optional(Schema.Number),\n minMessages: Schema.optional(Schema.Number),\n tags: Schema.optional(Schema.Array(Schema.String)),\n tools: Schema.optional(Schema.Array(Schema.String)),\n files: Schema.optional(Schema.Array(Schema.String)),\n issueId: Schema.optional(Schema.String),\n enrichmentLevel: Schema.optional(Schema.Number),\n enriched: Schema.optional(Schema.Boolean),\n notEnriched: Schema.optional(Schema.Boolean),\n query: Schema.optional(Schema.String),\n semantic: Schema.optional(Schema.Boolean),\n similarTo: Schema.optional(Schema.Number),\n limit: Schema.optional(Schema.Number),\n offset: Schema.optional(Schema.Number),\n cursor: Schema.optional(Schema.String),\n source: Schema.optional(Schema.Literals(['discovered', 'managed-archived'])),\n})\n\nconst SessionsFeedListResult = Schema.Struct({\n rows: Schema.Array(SessionsFeedRowSnapshot),\n nextCursor: Schema.NullOr(Schema.String),\n})\n\nconst DiscoveredSessionSearchResult = Schema.Struct({\n sessions: Schema.Array(DiscoveredSessionSnapshot),\n total: Schema.Number,\n mode: Schema.String,\n durationMs: Schema.Number,\n error: Schema.optional(Schema.String),\n})\n\nconst DiscoveredSessionStatsResult = Schema.Struct({\n total: Schema.Number,\n enriched: Schema.Number,\n embedded: Schema.Number,\n managedCount: Schema.Number,\n embeddingModels: Schema.optional(Schema.Array(Schema.Struct({\n model: Schema.String,\n embedded: Schema.Number,\n }))),\n})\n\nconst ConversationCostTotals = Schema.Struct({\n sessionCount: Schema.Number,\n totalCost: Schema.Number,\n totalTokensIn: Schema.Number,\n totalTokensOut: Schema.Number,\n})\n\n/** Scan conversations (trigger discovery) */\nexport const ScanConversationsRpc = Rpc.make(WS_METHODS.scanConversations, {\n payload: Schema.Struct({\n mode: Schema.Literals(['targeted', 'watched', 'system']),\n dirs: Schema.optional(Schema.Array(Schema.String)),\n dryRun: Schema.optional(Schema.Boolean),\n }),\n success: ScanResult,\n error: PanRpcError,\n})\n\n/** Search discovered sessions with filters + optional FTS query */\nexport const SearchConversationsRpc = Rpc.make(WS_METHODS.searchConversations, {\n payload: ConversationFilter,\n success: DiscoveredSessionSearchResult,\n error: PanRpcError,\n})\n\n/** List discovered sessions (recent, with optional managed/unmanaged filter) */\nexport const ListDiscoveredSessionsRpc = Rpc.make(WS_METHODS.listDiscoveredSessions, {\n payload: ConversationFilter,\n success: DiscoveredSessionListResult,\n error: PanRpcError,\n})\n\n/** List the unified discovered + managed archived sessions feed */\nexport const ListSessionsFeedRpc = Rpc.make(WS_METHODS.listSessionsFeed, {\n payload: SessionsFeedPayload,\n success: SessionsFeedListResult,\n error: PanRpcError,\n})\n\n/** Get facet buckets for the unified sessions feed */\nexport const GetSessionsFeedFacetsRpc = Rpc.make(WS_METHODS.getSessionsFeedFacets, {\n payload: SessionsFeedPayload,\n success: SessionsFeedFacetsSnapshot,\n error: PanRpcError,\n})\n\n/** Get a single discovered session by ID */\nexport const GetDiscoveredSessionRpc = Rpc.make(WS_METHODS.getDiscoveredSession, {\n payload: Schema.Struct({ id: Schema.Number }),\n success: DiscoveredSessionSnapshot,\n error: PanRpcError,\n})\n\n/** Enrich sessions by ID or filter */\nexport const EnrichSessionsRpc = Rpc.make(WS_METHODS.enrichSessions, {\n payload: Schema.Struct({\n ids: Schema.optional(Schema.Array(Schema.Number)),\n filter: Schema.optional(ConversationFilter),\n level: Schema.Literals([1, 2, 3]),\n model: Schema.optional(Schema.String),\n fullTranscript: Schema.optional(Schema.Boolean),\n customPrompt: Schema.optional(Schema.String),\n upgrade: Schema.optional(Schema.Boolean),\n limit: Schema.optional(Schema.Number),\n confirmed: Schema.optional(Schema.Boolean),\n force: Schema.optional(Schema.Boolean),\n }),\n success: Schema.Struct({\n processed: Schema.Number,\n totalCost: Schema.Number,\n failures: Schema.Number,\n }),\n error: PanRpcError,\n})\n\n/** Generate or update embeddings for enriched sessions */\nexport const EmbedSessionsRpc = Rpc.make(WS_METHODS.embedSessions, {\n payload: Schema.Struct({\n ids: Schema.optional(Schema.Array(Schema.Number)),\n regenerate: Schema.optional(Schema.Boolean),\n }),\n success: Schema.Struct({\n total: Schema.Number,\n embedded: Schema.Number,\n model: Schema.String,\n }),\n error: PanRpcError,\n})\n\n/** Aggregate cost totals for discovered sessions */\nexport const GetConversationCostRpc = Rpc.make(WS_METHODS.getConversationCost, {\n payload: ConversationFilter,\n success: ConversationCostTotals,\n error: PanRpcError,\n})\n\n/** Aggregate workspace cost totals for the full filtered corpus */\nexport const GetConversationCostByWorkspaceRpc = Rpc.make(WS_METHODS.getConversationCostByWorkspace, {\n payload: ConversationFilter,\n success: ConversationCostSummary,\n error: PanRpcError,\n})\n\n/** Discovery index statistics */\nexport const GetConversationStatsRpc = Rpc.make(WS_METHODS.getConversationStats, {\n payload: Schema.Struct({}),\n success: DiscoveredSessionStatsResult,\n error: PanRpcError,\n})\n\n// ─── RPC Group ────────────────────────────────────────────────────────────────\n\n/** All Overdeck WebSocket RPC methods */\nexport const PanRpcGroup = RpcGroup.make(\n SubscribeDomainEventsRpc,\n SubscribeIssueEventsRpc,\n SubscribeTerminalRpc,\n SubscribeAgentOutputRpc,\n GetSnapshotRpc,\n ReplayEventsRpc,\n GetWorkspaceDetailRpc,\n ReadWorkspaceFileRpc,\n ResolveFilePathExistsRpc,\n TerminalOpenRpc,\n TerminalWriteRpc,\n TerminalResizeRpc,\n TerminalCloseRpc,\n StartPlanningRpc,\n StartAgentRpc,\n DeepWipeRpc,\n SendTerminalInputRpc,\n ResizeTerminalRpc,\n SubscribeConversationMessagesRpc,\n SubscribeProjectSessionTreeRpc,\n SubscribeFlywheelStatusRpc,\n ShellOpenInEditorRpc,\n GetAvailableEditorsRpc,\n ScanConversationsRpc,\n SearchConversationsRpc,\n ListDiscoveredSessionsRpc,\n ListSessionsFeedRpc,\n GetSessionsFeedFacetsRpc,\n GetDiscoveredSessionRpc,\n EnrichSessionsRpc,\n EmbedSessionsRpc,\n GetConversationCostRpc,\n GetConversationCostByWorkspaceRpc,\n GetConversationStatsRpc,\n)\nexport type PanRpcGroup = typeof PanRpcGroup\n","/**\n * Shared event reducers — pure functions for applying domain events to state (PAN-433)\n *\n * Used by:\n * - Server read model (src/dashboard/server/read-model.ts)\n * - Frontend Zustand store (src/dashboard/frontend/src/lib/store.ts)\n *\n * Both produce identical results for the same event, keeping server and client\n * eventually consistent (the T3Code pattern).\n */\n\nimport type {\n AgentRuntimeSnapshot,\n AgentSnapshot,\n ChannelPermissionRequestSnapshot,\n DashboardSnapshot,\n EmbedProgressSnapshot,\n EnrichProgressSnapshot,\n EnrichStatsSnapshot,\n ResourceStats,\n ReviewStatusSnapshot,\n ScanProgressSnapshot,\n TurnDiffSummary,\n} from './types'\nimport type {\n MemoryObservation,\n MemoryStatus,\n PendingTurn,\n RagDecision,\n ResetMarker,\n} from './memory'\nimport type { DomainEvent } from './events'\n\n// ─── Read model state shape ──────────────────────────────────────────────────\n\nexport interface ResolvedChannelPermissionDecision {\n requestId: string\n agentId: string\n issueId?: string\n behavior: 'allow' | 'deny'\n}\n\nexport interface MemoryHealthSnapshot {\n projectId: string\n issueId: string\n status: 'healthy' | 'degraded' | 'failing'\n reason: string | null\n /** Human-readable cause of the most recent failure (provider error text). */\n detail?: string\n ragDecision?: RagDecision\n updatedAt: string\n}\n\nexport interface MemoryRollupTriggerSnapshot {\n projectId: string\n workspaceId: string\n issueId: string\n pendingTurns: PendingTurn[]\n pendingCount: number\n threshold: number\n triggeredAt: string\n}\n\nexport interface MemoryReadModelState {\n observationsByIssueId: Record<string, MemoryObservation[]>\n statusByIssueId: Record<string, MemoryStatus>\n rollupsByIssueId: Record<string, MemoryRollupTriggerSnapshot[]>\n resetMarkersByScopeId: Record<string, ResetMarker[]>\n healthByIssueId: Record<string, MemoryHealthSnapshot>\n}\n\nexport interface ReadModelState {\n sequence: number\n agentsById: Record<string, AgentSnapshot>\n /**\n * PAN-800 — per-agent runtime state derived from agent.* runtime events.\n * Kept separate from agentsById because it updates on every tool call; merging\n * would cause the whole AgentSnapshot to re-diff on the frontend.\n */\n agentRuntimeById: Record<string, AgentRuntimeSnapshot>\n reviewStatusByIssueId: Record<string, ReviewStatusSnapshot>\n resources: ResourceStats | null\n agentOutputById: Record<string, string[]>\n issuesRaw: unknown[]\n recentActivity: unknown[]\n detailedActivity: unknown[]\n ttsActivity: unknown[]\n shadowInferenceByIssueId: Record<string, string>\n turnDiffSummariesByAgentId: Record<string, TurnDiffSummary[]>\n channelPermissionRequestsById: Record<string, ChannelPermissionRequestSnapshot>\n channelPermissionRequestIdsByAgentId: Record<string, string[]>\n resolvedChannelPermissionDecisionsById: Record<string, ResolvedChannelPermissionDecision>\n resolvedChannelPermissionDecisionIdsByAgentId: Record<string, string[]>\n dashboardLifecycle: DashboardLifecycleState\n /** Conversation names currently undergoing Overdeck-native compaction. */\n conversationsCompactingByName: Record<string, boolean>\n /** Conversation names currently waiting for user permission (PermissionRequest hook). */\n conversationsAwaitingPermissionByName: Record<string, boolean>\n /** Bumped whenever a conversation is created, so the sidebar list can refresh\n * immediately instead of waiting for its poll tick. */\n conversationsListRevision: number\n observationsByIssueId: Record<string, MemoryObservation[]>\n statusByIssueId: Record<string, MemoryStatus>\n rollupsByIssueId: Record<string, MemoryRollupTriggerSnapshot[]>\n resetMarkersByScopeId: Record<string, ResetMarker[]>\n healthByIssueId: Record<string, MemoryHealthSnapshot>\n /** PAN-457 — active scan progress snapshot */\n scanProgress: ScanProgressSnapshot | null\n /** PAN-457 — latest enrichment stats */\n enrichStats: EnrichStatsSnapshot | null\n /** PAN-457 — latest per-session enrichment progress */\n enrichProgressBySessionId: Record<number, EnrichProgressSnapshot>\n /** PAN-457 — latest per-session embedding progress */\n embedProgressBySessionId: Record<number, EmbedProgressSnapshot>\n /** sessionId (from agent snapshot or runtime claudeSessionId) → agentId index */\n agentIdBySessionId: Record<string, string>\n}\n\nexport interface DashboardLifecycleState {\n active: boolean\n reason: string | null\n issueId: string | null\n trigger: string | null\n startedAt: string | null\n completedAt: string | null\n failedAt: string | null\n error: string | null\n}\n\nexport const INITIAL_READ_MODEL_STATE: ReadModelState = {\n sequence: 0,\n agentsById: {},\n agentRuntimeById: {},\n reviewStatusByIssueId: {},\n resources: null,\n agentOutputById: {},\n issuesRaw: [],\n recentActivity: [],\n detailedActivity: [],\n ttsActivity: [],\n shadowInferenceByIssueId: {},\n turnDiffSummariesByAgentId: {},\n channelPermissionRequestsById: {},\n channelPermissionRequestIdsByAgentId: {},\n resolvedChannelPermissionDecisionsById: {},\n resolvedChannelPermissionDecisionIdsByAgentId: {},\n conversationsCompactingByName: {},\n conversationsAwaitingPermissionByName: {},\n conversationsListRevision: 0,\n observationsByIssueId: {},\n statusByIssueId: {},\n rollupsByIssueId: {},\n resetMarkersByScopeId: {},\n healthByIssueId: {},\n scanProgress: null,\n enrichStats: null,\n enrichProgressBySessionId: {},\n embedProgressBySessionId: {},\n agentIdBySessionId: {},\n dashboardLifecycle: {\n active: false,\n reason: null,\n issueId: null,\n trigger: null,\n startedAt: null,\n completedAt: null,\n failedAt: null,\n error: null,\n },\n}\n\n// ─── Constants ───────────────────────────────────────────────────────────────\n\nconst MAX_AGENT_OUTPUT_LINES = 200\nconst MAX_ACTIVITY_ENTRIES = 50\nconst MAX_DETAILED_ENTRIES = 200\nconst MAX_TTS_ENTRIES = 50\nconst MAX_SESSION_PROGRESS_ENTRIES = 100\nexport const DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT = 200\nexport const DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE = 50\n\nexport function getMaxMemoryObservationsPerIssue(): number {\n const raw = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env?.OVERDECK_MEMORY_OBSERVATION_LIMIT\n const parsed = raw ? Number.parseInt(raw, 10) : Number.NaN\n return Number.isInteger(parsed) && parsed > 0 ? parsed : DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE\n}\n\nexport function trimMemoryObservations(observations: MemoryObservation[]): MemoryObservation[] {\n const max = getMaxMemoryObservationsPerIssue()\n return observations.length > max ? observations.slice(-max) : observations\n}\n\nexport function getMaxTurnDiffSummariesPerAgent(): number {\n const raw = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env?.OVERDECK_TURN_DIFF_SUMMARY_LIMIT\n const parsed = raw ? Number.parseInt(raw, 10) : Number.NaN\n return Number.isInteger(parsed) && parsed > 0 ? parsed : DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT\n}\n\nexport function isTerminalTurnDiffSummaryStatus(status: unknown): boolean {\n return status === 'stopped' || status === 'done' || status === 'archived' || status === 'closed'\n}\n\nexport function trimTurnDiffSummaries(summaries: TurnDiffSummary[]): TurnDiffSummary[] {\n const max = getMaxTurnDiffSummariesPerAgent()\n return summaries.length > max ? summaries.slice(-max) : summaries\n}\n\nfunction upsertBoundedSessionProgress<T extends { sessionId: number; timestamp: string }>(\n bySessionId: Record<number, T>,\n progress: T,\n): Record<number, T> {\n const existing = bySessionId[progress.sessionId]\n const entries = Object.values(bySessionId)\n if (existing || entries.length < MAX_SESSION_PROGRESS_ENTRIES) {\n return { ...bySessionId, [progress.sessionId]: progress }\n }\n const keep = entries\n .sort((a, b) => a.timestamp.localeCompare(b.timestamp))\n .slice(-(MAX_SESSION_PROGRESS_ENTRIES - 1))\n const next: Record<number, T> = {}\n for (const entry of [...keep, progress]) next[entry.sessionId] = entry\n return next\n}\n\nexport function omitTurnDiffSummariesForAgent(\n turnDiffSummariesByAgentId: ReadModelState['turnDiffSummariesByAgentId'] | undefined,\n agentId: string,\n): ReadModelState['turnDiffSummariesByAgentId'] {\n const { [agentId]: _removed, ...rest } = turnDiffSummariesByAgentId ?? {}\n return rest\n}\n\n/** Remove all entries in agentIdBySessionId that point to the given agentId. */\nfunction removeAgentFromSessionIndex(\n agentIdBySessionId: ReadModelState['agentIdBySessionId'] | undefined,\n agentId: string,\n): ReadModelState['agentIdBySessionId'] {\n const next: Record<string, string> = {}\n for (const [sessionId, id] of Object.entries(agentIdBySessionId ?? {})) {\n if (id !== agentId) next[sessionId] = id\n }\n return next\n}\n\n// ─── PAN-800 runtime helpers ─────────────────────────────────────────────────\n\nfunction defaultRuntimeSnapshot(agentId: string, timestamp: string, sequence: number): AgentRuntimeSnapshot {\n return {\n id: agentId,\n activity: 'idle',\n lastActivity: timestamp,\n updatedAtSequence: sequence,\n }\n}\n\n/**\n * Bump runtimeSnapshotSequence on the corresponding AgentSnapshot (if present)\n * so low-frequency subscribers can cheaply detect a runtime change. No-op if\n * the agent has no lifecycle snapshot yet (a runtime event arrived before\n * agent.created — unusual but defensive).\n */\nfunction bumpRuntimeSnapshotSequence(\n agentsById: Record<string, AgentSnapshot>,\n agentId: string,\n sequence: number,\n): Record<string, AgentSnapshot> {\n const agent = agentsById[agentId]\n if (!agent) return agentsById\n return { ...agentsById, [agentId]: { ...agent, runtimeSnapshotSequence: sequence } }\n}\n\n// ─── syncSnapshot — bootstrap from a full DashboardSnapshot ──────────────────\n\nexport function syncSnapshot(state: ReadModelState, snapshot: DashboardSnapshot): ReadModelState {\n const agentsById: Record<string, AgentSnapshot> = {}\n for (const agent of snapshot.agents) {\n agentsById[agent.id] = agent\n }\n\n const reviewStatusByIssueId: Record<string, ReviewStatusSnapshot> = {}\n for (const rs of snapshot.reviewStatuses) {\n reviewStatusByIssueId[rs.issueId] = rs\n }\n\n const channelPermissionRequestsById: Record<string, ChannelPermissionRequestSnapshot> = {}\n const channelPermissionRequestIdsByAgentId: Record<string, string[]> = {}\n for (const request of snapshot.channelPermissionRequests ?? []) {\n channelPermissionRequestsById[request.requestId] = request\n const existing = channelPermissionRequestIdsByAgentId[request.agentId] ?? []\n channelPermissionRequestIdsByAgentId[request.agentId] = [...existing, request.requestId]\n }\n\n const memory = snapshot.memory as Partial<MemoryReadModelState> | undefined\n\n // Rebuild sessionId → agentId index from snapshot\n const agentIdBySessionId: Record<string, string> = {}\n for (const agent of snapshot.agents) {\n if (agent.sessionId) agentIdBySessionId[agent.sessionId] = agent.id\n }\n for (const [agentId, runtime] of Object.entries(snapshot.agentRuntimeById ?? {})) {\n if (runtime.claudeSessionId) agentIdBySessionId[runtime.claudeSessionId] = agentId\n }\n\n return {\n ...state,\n sequence: snapshot.sequence,\n agentsById,\n reviewStatusByIssueId,\n agentRuntimeById: snapshot.agentRuntimeById ?? state.agentRuntimeById,\n channelPermissionRequestsById,\n channelPermissionRequestIdsByAgentId,\n resolvedChannelPermissionDecisionsById: {},\n resolvedChannelPermissionDecisionIdsByAgentId: {},\n resources: (snapshot.resources as ResourceStats | undefined) ?? null,\n issuesRaw: (snapshot as any).issues ?? state.issuesRaw,\n recentActivity: snapshot.recentActivity ? [...snapshot.recentActivity] : state.recentActivity,\n observationsByIssueId: memory?.observationsByIssueId ?? state.observationsByIssueId,\n statusByIssueId: memory?.statusByIssueId ?? state.statusByIssueId,\n rollupsByIssueId: memory?.rollupsByIssueId ?? state.rollupsByIssueId,\n resetMarkersByScopeId: memory?.resetMarkersByScopeId ?? state.resetMarkersByScopeId,\n healthByIssueId: memory?.healthByIssueId ?? state.healthByIssueId,\n scanProgress: snapshot.scanProgress ?? null,\n enrichStats: snapshot.enrichStats ?? null,\n enrichProgressBySessionId: snapshot.enrichProgressBySessionId ?? {},\n embedProgressBySessionId: snapshot.embedProgressBySessionId ?? {},\n agentIdBySessionId,\n }\n}\n\n// ─── applyEvent — apply a single domain event ───────────────────────────────\n\nexport function applyEvent(state: ReadModelState, event: DomainEvent): ReadModelState {\n switch (event.type) {\n case 'agent.created': {\n const existing = state.agentsById[event.payload.agentId]\n const agent = event.payload.agent\n const nextAgentIdBySessionId = agent.sessionId\n ? { ...state.agentIdBySessionId, [agent.sessionId]: agent.id }\n : state.agentIdBySessionId\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: existing\n ? { ...existing, ...agent }\n : agent,\n },\n agentIdBySessionId: nextAgentIdBySessionId,\n }\n }\n\n case 'agent.started': {\n const agent = event.payload.agent\n const nextAgentIdBySessionId = agent.sessionId\n ? { ...state.agentIdBySessionId, [agent.sessionId]: agent.id }\n : state.agentIdBySessionId\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: agent,\n },\n agentIdBySessionId: nextAgentIdBySessionId,\n }\n }\n\n case 'agent.enrichment_changed': {\n const agent = state.agentsById[event.payload.agentId]\n if (!agent) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: {\n ...agent,\n role: event.payload.role ?? agent.role,\n hasPendingQuestion: event.payload.hasPendingQuestion ?? false,\n pendingQuestionCount: event.payload.pendingQuestionCount ?? 0,\n pendingQuestionPrompt: event.payload.pendingQuestionPrompt,\n pendingQuestionReason: event.payload.pendingQuestionReason,\n pendingInputCount: event.payload.pendingInputCount,\n pendingInputKinds: event.payload.pendingInputKinds,\n pendingAskUserQuestion: event.payload.pendingAskUserQuestion,\n pendingProposedPlan: event.payload.pendingProposedPlan,\n resolution: event.payload.resolution,\n resolutionCount: event.payload.resolutionCount,\n },\n },\n }\n }\n\n case 'agent.stopped': {\n const { [event.payload.agentId]: _removed, ...rest } = state.agentsById\n // PAN-800 — mark the runtime snapshot stopped too. pan kill bypasses the\n // Stop hook, so without this fold a killed agent shows activity: \"idle\"\n // forever. Retain the row (don't delete) so the projection cache has the\n // last-known snapshot for forensics.\n const runtimeById = state.agentRuntimeById ?? {}\n const prevRuntime = runtimeById[event.payload.agentId]\n const nextRuntimeById = prevRuntime\n ? {\n ...runtimeById,\n [event.payload.agentId]: {\n ...prevRuntime,\n activity: 'stopped' as const,\n currentTool: undefined,\n thinking: undefined,\n waiting: undefined,\n channelReply: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n },\n }\n : runtimeById\n const permissionRequestIdsByAgentId = state.channelPermissionRequestIdsByAgentId ?? {}\n const pendingIds = permissionRequestIdsByAgentId[event.payload.agentId] ?? []\n const nextPermissionRequestsById = { ...state.channelPermissionRequestsById }\n for (const requestId of pendingIds) {\n delete nextPermissionRequestsById[requestId]\n }\n const { [event.payload.agentId]: _removedPendingIds, ...restPendingIds } =\n permissionRequestIdsByAgentId\n\n const resolvedDecisionIdsByAgentId = state.resolvedChannelPermissionDecisionIdsByAgentId ?? {}\n const resolvedIds = resolvedDecisionIdsByAgentId[event.payload.agentId] ?? []\n const nextResolvedDecisionsById = { ...(state.resolvedChannelPermissionDecisionsById ?? {}) }\n for (const requestId of resolvedIds) {\n delete nextResolvedDecisionsById[requestId]\n }\n const { [event.payload.agentId]: _removedResolvedIds, ...restResolvedIds } =\n resolvedDecisionIdsByAgentId\n\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: rest,\n agentRuntimeById: nextRuntimeById,\n channelPermissionRequestsById: nextPermissionRequestsById,\n channelPermissionRequestIdsByAgentId: restPendingIds,\n resolvedChannelPermissionDecisionsById: nextResolvedDecisionsById,\n resolvedChannelPermissionDecisionIdsByAgentId: restResolvedIds,\n turnDiffSummariesByAgentId: omitTurnDiffSummariesForAgent(state.turnDiffSummariesByAgentId, event.payload.agentId),\n agentIdBySessionId: removeAgentFromSessionIndex(state.agentIdBySessionId, event.payload.agentId),\n }\n }\n\n case 'agent.status_changed': {\n const agent = state.agentsById[event.payload.agentId] ?? (\n event.payload.role === 'strike' && event.payload.issueId\n ? {\n id: event.payload.agentId,\n issueId: event.payload.issueId,\n status: event.payload.status,\n role: 'strike' as const,\n startedAt: event.timestamp,\n }\n : undefined\n )\n if (!agent) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const nextTurnDiffSummariesByAgentId = isTerminalTurnDiffSummaryStatus(event.payload.status)\n ? omitTurnDiffSummariesForAgent(state.turnDiffSummariesByAgentId, event.payload.agentId)\n : state.turnDiffSummariesByAgentId\n const nextAgent: AgentSnapshot = (() => {\n const base: Record<string, unknown> = { ...agent, status: event.payload.status }\n const optionalFields = [\n 'hasLiveTmuxSession', 'stoppedByUser', 'stoppedByPause', 'paused', 'pausedReason', 'pausedAt',\n 'troubled', 'troubledAt', 'consecutiveFailures',\n 'firstFailureInRunAt', 'lastFailureAt', 'lastFailureReason', 'lastFailureNextRetryAt',\n 'kickoffDelivered', 'hostOverride', 'role', 'model', 'workspace', 'sessionId',\n 'lastActivity', 'lastResumeAt', 'stoppedAt', 'branch', 'costSoFar',\n 'phase', 'workType', 'roleRunHead',\n 'flywheelRunId', 'reviewSubRole', 'reviewRunId', 'reviewOutputPath',\n 'reviewSynthesisAgentId', 'reviewDeadlineAt', 'reviewMonitorSignaled', 'reviewRetryAttempt',\n 'inspectSubRole', 'deliveryMethod', 'supervisorEnabled', 'channelsEnabled',\n ] as const\n for (const field of optionalFields) {\n if (field in event.payload) {\n const value = (event.payload as Record<string, unknown>)[field]\n if (value === null || value === undefined) {\n delete base[field]\n } else {\n base[field] = value\n }\n }\n }\n // PAN-1520 (fixes #339) — clear stale pending-input fields whenever the\n // agent transitions out of an actively-running state. The enrichment\n // poller stops emitting events for non-running agents, so without this\n // a paused or stopped agent would keep showing INPUT/AskUserQuestion\n // forever from the operator's perspective.\n // PAN-2633 — an idle-alive agent (stopped-shaped status, live tmux pane)\n // is the archetypal awaiting-operator state and must keep its pending-input\n // payload; gate the wipe on the liveness flag carried in the event.\n const sessionAlive = event.payload.hasLiveTmuxSession === true\n if (event.payload.status !== 'running' && event.payload.status !== 'starting' && !sessionAlive) {\n delete base['hasPendingQuestion']\n delete base['pendingQuestionCount']\n delete base['pendingQuestionPrompt']\n delete base['pendingQuestionReason']\n delete base['pendingInputCount']\n delete base['pendingInputKinds']\n delete base['pendingAskUserQuestion']\n delete base['pendingProposedPlan']\n }\n return base as AgentSnapshot\n })()\n\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: nextAgent,\n },\n turnDiffSummariesByAgentId: nextTurnDiffSummariesByAgentId,\n agentIdBySessionId: event.payload.sessionId\n ? { ...state.agentIdBySessionId, [event.payload.sessionId]: event.payload.agentId }\n : state.agentIdBySessionId,\n }\n }\n\n case 'agent.heartbeat_dead': {\n const agent = state.agentsById[event.payload.agentId]\n if (!agent) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const runtimeById = state.agentRuntimeById ?? {}\n const prevRuntime = runtimeById[event.payload.agentId]\n const nextRuntimeById = prevRuntime\n ? {\n ...runtimeById,\n [event.payload.agentId]: {\n ...prevRuntime,\n activity: 'stopped' as const,\n currentTool: undefined,\n thinking: undefined,\n waiting: undefined,\n channelReply: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n },\n }\n : runtimeById\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: { ...agent, status: 'error' as const },\n },\n agentRuntimeById: nextRuntimeById,\n }\n }\n\n case 'agent.output_received': {\n const existing = state.agentOutputById[event.payload.agentId] ?? []\n const updated = [...existing, ...event.payload.lines].slice(-MAX_AGENT_OUTPUT_LINES)\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentOutputById: {\n ...state.agentOutputById,\n [event.payload.agentId]: updated,\n },\n }\n }\n\n case 'pipeline.status_changed':\n case 'review.status_changed':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n reviewStatusByIssueId: {\n ...state.reviewStatusByIssueId,\n [event.payload.issueId]: event.payload.status,\n },\n }\n\n // PAN-915 — event-driven reviewer sub-status. Avoids tmux polling in\n // enrichReviewStatusFromSessions for the common case (reviewer dispatched).\n case 'review.reviewer_started': {\n const { issueId, role, sessionName } = event.payload\n const existing = state.reviewStatusByIssueId[issueId]\n const prevSubs = existing?.reviewSubStatuses ?? {}\n const prevNames = existing?.reviewSessionNames ?? []\n const nextNames = prevNames.includes(sessionName) ? prevNames : [...prevNames, sessionName]\n const nextStatus: ReviewStatusSnapshot = {\n ...(existing ?? { issueId }),\n reviewSubStatuses: { ...prevSubs, [role]: 'running' },\n reviewSessionNames: nextNames,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n reviewStatusByIssueId: { ...state.reviewStatusByIssueId, [issueId]: nextStatus },\n }\n }\n\n case 'review.reviewer_completed': {\n const { issueId, role } = event.payload\n const existing = state.reviewStatusByIssueId[issueId]\n if (!existing) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const prevSubs = existing.reviewSubStatuses ?? {}\n const nextStatus: ReviewStatusSnapshot = {\n ...existing,\n reviewSubStatuses: { ...prevSubs, [role]: 'done' },\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n reviewStatusByIssueId: { ...state.reviewStatusByIssueId, [issueId]: nextStatus },\n }\n }\n\n case 'review.specialist.timed_out':\n // Telemetry-only event. Sequence update lets clients observe the event\n // stream without mutating the durable review-status snapshot.\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'review.coordinator_started': {\n const { issueId, sessionName } = event.payload\n const existing = state.reviewStatusByIssueId[issueId]\n const nextStatus: ReviewStatusSnapshot = {\n ...(existing ?? { issueId }),\n reviewCoordinatorSessionName: sessionName,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n reviewStatusByIssueId: { ...state.reviewStatusByIssueId, [issueId]: nextStatus },\n }\n }\n\n case 'review.coordinator.died':\n // Telemetry-only. The durable review-status row is updated by recovery\n // checks; keep clients in sequence so event stream subscribers can alert.\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'pipeline.review-started':\n case 'pipeline.review-completed':\n case 'pipeline.test-started':\n case 'pipeline.test-completed':\n // Handled by review.status_changed; sequence-only update keeps clients in lockstep.\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'merge.ready':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n // PAN-1048 — specialist.* events still flow but no longer feed a separate\n // projection. The same lifecycle is now visible via agent.started /\n // agent.stopped + role-filtered agentsById. Sequence-only update keeps\n // clients in lockstep.\n case 'specialist.started':\n case 'specialist.completed':\n case 'specialist.failed':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'resources.updated':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n resources: event.payload.resources,\n }\n\n case 'issues.snapshot':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n issuesRaw: event.payload.issues as unknown[],\n }\n\n case 'issues.updated':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'issue.statusChanged': {\n const { issueId, status, canonicalStatus, labels } = event.payload\n const updatedIssues = (state.issuesRaw as Array<Record<string, unknown>>).map(issue => {\n if (issue['identifier'] === issueId || issue['id'] === issueId) {\n const patch: Record<string, unknown> = { ...issue, status, canonicalStatus, state: canonicalStatus }\n if (labels) patch.labels = labels\n return patch\n }\n return issue\n })\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n issuesRaw: updatedIssues,\n }\n }\n\n case 'activity.updated':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n recentActivity: (event.payload.events as unknown[]).slice(0, MAX_ACTIVITY_ENTRIES),\n }\n\n case 'shadow.inference_update':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n shadowInferenceByIssueId: {\n ...state.shadowInferenceByIssueId,\n [event.payload.issueId]: event.payload.content,\n },\n }\n\n case 'planning.started': {\n const sessionName = event.payload.sessionName as string\n const issueId = event.payload.issueId as string\n if (sessionName) {\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [sessionName]: {\n ...state.agentsById[sessionName],\n id: sessionName,\n issueId,\n status: 'running',\n startedAt: event.timestamp,\n runtime: (event.payload.harness as 'claude-code' | 'pi' | 'codex') ?? 'claude-code',\n role: 'plan' as const,\n },\n },\n }\n }\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n }\n case 'workspace.created':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'workspace.wipe_started': {\n const { issueId } = event.payload\n const updatedIssues = (state.issuesRaw as Array<Record<string, unknown>>).map(issue => {\n if (issue['identifier'] === issueId || issue['id'] === issueId) {\n return { ...issue, canonicalStatus: 'wiping', state: 'wiping' }\n }\n return issue\n })\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n issuesRaw: updatedIssues,\n }\n }\n\n case 'workspace.destroyed':\n case 'workspace.deleted': {\n const { issueId } = event.payload\n const removedAgentIds = Object.entries(state.agentsById)\n .filter(([, agent]) => agent.issueId === issueId)\n .map(([agentId]) => agentId)\n const updatedAgents = Object.fromEntries(\n Object.entries(state.agentsById).filter(([, agent]) => agent.issueId !== issueId)\n )\n let nextTurnDiffSummariesByAgentId = state.turnDiffSummariesByAgentId\n let nextAgentIdBySessionId = state.agentIdBySessionId\n for (const agentId of removedAgentIds) {\n nextTurnDiffSummariesByAgentId = omitTurnDiffSummariesForAgent(nextTurnDiffSummariesByAgentId, agentId)\n nextAgentIdBySessionId = removeAgentFromSessionIndex(nextAgentIdBySessionId, agentId)\n }\n const updatedIssues = (state.issuesRaw as Array<Record<string, unknown>>).map(issue => {\n if (issue['identifier'] === issueId || issue['id'] === issueId) {\n return { ...issue, status: 'Todo', canonicalStatus: 'todo', state: 'todo' }\n }\n return issue\n })\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: updatedAgents,\n turnDiffSummariesByAgentId: nextTurnDiffSummariesByAgentId,\n agentIdBySessionId: nextAgentIdBySessionId,\n issuesRaw: updatedIssues,\n }\n }\n\n case 'workspace.aborted': {\n const { issueId, sessionName } = event.payload\n let updatedAgents: typeof state.agentsById\n let nextTurnDiffSummariesByAgentId = state.turnDiffSummariesByAgentId\n let nextAgentIdBySessionId = state.agentIdBySessionId\n if (sessionName) {\n const { [sessionName]: _removed, ...rest } = state.agentsById\n updatedAgents = rest\n nextTurnDiffSummariesByAgentId = omitTurnDiffSummariesForAgent(nextTurnDiffSummariesByAgentId, sessionName)\n nextAgentIdBySessionId = removeAgentFromSessionIndex(nextAgentIdBySessionId, sessionName)\n } else {\n const removedAgentIds = Object.entries(state.agentsById)\n .filter(([, agent]) => agent.issueId === issueId)\n .map(([agentId]) => agentId)\n updatedAgents = Object.fromEntries(\n Object.entries(state.agentsById).filter(([, agent]) => agent.issueId !== issueId)\n )\n for (const agentId of removedAgentIds) {\n nextTurnDiffSummariesByAgentId = omitTurnDiffSummariesForAgent(nextTurnDiffSummariesByAgentId, agentId)\n nextAgentIdBySessionId = removeAgentFromSessionIndex(nextAgentIdBySessionId, agentId)\n }\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: updatedAgents,\n turnDiffSummariesByAgentId: nextTurnDiffSummariesByAgentId,\n agentIdBySessionId: nextAgentIdBySessionId,\n }\n }\n\n case 'planning.failed':\n case 'planning.sync':\n case 'plan.item_status_changed':\n case 'plan.subitem_status_changed':\n case 'plan.items_unblocked':\n case 'operator.intervention':\n case 'substrate.bug_filed':\n case 'cost.event_recorded':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'memory.observation_created': {\n const observation = event.payload.observation\n const existing = state.observationsByIssueId[observation.issueId] ?? []\n const index = existing.findIndex(entry => entry.id === observation.id)\n const updated = trimMemoryObservations(index === -1\n ? [...existing, observation]\n : existing.map((entry, entryIndex) => entryIndex === index ? observation : entry))\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n observationsByIssueId: {\n ...state.observationsByIssueId,\n [observation.issueId]: updated,\n },\n }\n }\n\n case 'memory.status_updated': {\n const { identity, status } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n statusByIssueId: {\n ...state.statusByIssueId,\n [identity.issueId]: status,\n },\n }\n }\n\n case 'memory.rollup_triggered': {\n const trigger: MemoryRollupTriggerSnapshot = {\n projectId: event.payload.projectId,\n workspaceId: event.payload.workspaceId,\n issueId: event.payload.issueId,\n pendingTurns: [],\n pendingCount: event.payload.pendingCount,\n threshold: event.payload.threshold,\n triggeredAt: event.timestamp,\n }\n const existing = state.rollupsByIssueId[event.payload.issueId] ?? []\n const updated = [...existing, trigger].slice(-10)\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n rollupsByIssueId: {\n ...state.rollupsByIssueId,\n [event.payload.issueId]: updated,\n },\n }\n }\n\n case 'memory.reset_marker_created': {\n const { marker } = event.payload\n const key = `${marker.scope}:${marker.scopeId}`\n const existing = state.resetMarkersByScopeId[key] ?? []\n const index = existing.findIndex(entry => entry.id === marker.id)\n const updated = index === -1\n ? [...existing, marker]\n : existing.map((entry, entryIndex) => entryIndex === index ? marker : entry)\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n resetMarkersByScopeId: {\n ...state.resetMarkersByScopeId,\n [key]: updated,\n },\n }\n }\n\n case 'memory.health_changed': {\n const health: MemoryHealthSnapshot = {\n projectId: event.payload.projectId,\n issueId: event.payload.issueId,\n status: event.payload.status,\n reason: event.payload.reason,\n // Omit absent optionals entirely — an explicit `key: undefined` is not a\n // valid JSON value and makes the whole DashboardSnapshot fail the\n // Schema.Json codec used for the `memory` field, breaking the RPC bootstrap.\n ...(event.payload.detail !== undefined ? { detail: event.payload.detail } : {}),\n ...(event.payload.ragDecision !== undefined ? { ragDecision: event.payload.ragDecision } : {}),\n updatedAt: event.timestamp,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n healthByIssueId: {\n ...state.healthByIssueId,\n [event.payload.issueId]: health,\n },\n }\n }\n\n // ─── PAN-800 Agent Runtime Events ──────────────────────────────────────\n case 'agent.activity_changed': {\n const { agentId, activity, currentTool } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n activity,\n currentTool: activity === 'working' ? currentTool : undefined,\n // Clear thinking/waiting on transitions away from those activities.\n thinking: activity === 'thinking' ? prev.thinking : undefined,\n waiting: activity === 'waiting' ? prev.waiting : undefined,\n channelReply: activity === 'working' ? undefined : prev.channelReply,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.thinking_started': {\n const { agentId, lastToolAt } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n activity: 'thinking',\n currentTool: undefined,\n thinking: { since: event.timestamp, lastToolAt },\n waiting: undefined,\n channelReply: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.thinking_stopped': {\n const { agentId } = event.payload\n const prev = state.agentRuntimeById[agentId]\n if (!prev) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n // Clear the thinking state but leave activity for the follow-up event\n // (agent.activity_changed / waiting_started / stopped) to set.\n const next: AgentRuntimeSnapshot = {\n ...prev,\n thinking: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.waiting_started': {\n const { agentId, reason, message } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n activity: 'waiting',\n currentTool: undefined,\n thinking: undefined,\n waiting: {\n reason,\n startedAt: event.timestamp,\n message,\n },\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.waiting_cleared': {\n const { agentId } = event.payload\n const prev = state.agentRuntimeById[agentId]\n if (!prev) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const next: AgentRuntimeSnapshot = {\n ...prev,\n waiting: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.permission_requested': {\n const request = event.payload\n const permissionRequestIdsByAgentId = state.channelPermissionRequestIdsByAgentId ?? {}\n const resolvedDecisionsById = state.resolvedChannelPermissionDecisionsById ?? {}\n const resolvedDecisionIdsByAgentId = state.resolvedChannelPermissionDecisionIdsByAgentId ?? {}\n const nextPendingIds = permissionRequestIdsByAgentId[request.agentId] ?? []\n const resolvedDecision = resolvedDecisionsById[request.requestId]\n const nextResolvedDecisionsById = { ...resolvedDecisionsById }\n const nextResolvedIdsByAgentId = { ...resolvedDecisionIdsByAgentId }\n if (resolvedDecision) {\n delete nextResolvedDecisionsById[request.requestId]\n const prevResolvedIds = nextResolvedIdsByAgentId[resolvedDecision.agentId] ?? []\n const filteredResolvedIds = prevResolvedIds.filter((id) => id !== request.requestId)\n if (filteredResolvedIds.length > 0) {\n nextResolvedIdsByAgentId[resolvedDecision.agentId] = filteredResolvedIds\n } else {\n delete nextResolvedIdsByAgentId[resolvedDecision.agentId]\n }\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n channelPermissionRequestsById: {\n ...state.channelPermissionRequestsById,\n [request.requestId]: request,\n },\n channelPermissionRequestIdsByAgentId: {\n ...permissionRequestIdsByAgentId,\n [request.agentId]: nextPendingIds.includes(request.requestId)\n ? nextPendingIds\n : [...nextPendingIds, request.requestId],\n },\n resolvedChannelPermissionDecisionsById: nextResolvedDecisionsById,\n resolvedChannelPermissionDecisionIdsByAgentId: nextResolvedIdsByAgentId,\n }\n }\n\n case 'agent.permission_resolved': {\n const { [event.payload.requestId]: _removed, ...rest } = state.channelPermissionRequestsById\n const nextPendingIdsByAgentId = { ...(state.channelPermissionRequestIdsByAgentId ?? {}) }\n const prevPendingIds = nextPendingIdsByAgentId[event.payload.agentId] ?? []\n const filteredPendingIds = prevPendingIds.filter((id) => id !== event.payload.requestId)\n if (filteredPendingIds.length > 0) {\n nextPendingIdsByAgentId[event.payload.agentId] = filteredPendingIds\n } else {\n delete nextPendingIdsByAgentId[event.payload.agentId]\n }\n\n const resolvedDecisionIdsByAgentId = state.resolvedChannelPermissionDecisionIdsByAgentId ?? {}\n const nextResolvedIds = resolvedDecisionIdsByAgentId[event.payload.agentId] ?? []\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n channelPermissionRequestsById: rest,\n channelPermissionRequestIdsByAgentId: nextPendingIdsByAgentId,\n resolvedChannelPermissionDecisionsById: {\n ...(state.resolvedChannelPermissionDecisionsById ?? {}),\n [event.payload.requestId]: {\n requestId: event.payload.requestId,\n agentId: event.payload.agentId,\n issueId: event.payload.issueId,\n behavior: event.payload.behavior,\n },\n },\n resolvedChannelPermissionDecisionIdsByAgentId: {\n ...resolvedDecisionIdsByAgentId,\n [event.payload.agentId]: nextResolvedIds.includes(event.payload.requestId)\n ? nextResolvedIds\n : [...nextResolvedIds, event.payload.requestId],\n },\n }\n }\n\n case 'agent.message_received': {\n const { agentId, direction } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n lastMessageAt: event.timestamp,\n channelReply: direction === 'to_agent' ? undefined : prev.channelReply,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.channel_reply': {\n const { agentId, reply } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n channelReply: {\n ...reply,\n reportedAt: event.timestamp,\n },\n resolution:\n reply.kind === 'done'\n ? 'done'\n : reply.kind === 'needs_input'\n ? 'needs_input'\n : prev.resolution,\n resolutionUpdatedAt:\n reply.kind === 'done' || reply.kind === 'needs_input'\n ? event.timestamp\n : prev.resolutionUpdatedAt,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.model_set': {\n const { agentId, model, claudeSessionId, sessionModel, sessionHarness } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n model,\n claudeSessionId: claudeSessionId ?? prev.claudeSessionId,\n sessionModel: sessionModel ?? prev.sessionModel,\n sessionHarness: sessionHarness ?? prev.sessionHarness,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n let nextAgentIdBySessionId = state.agentIdBySessionId\n if (claudeSessionId && claudeSessionId !== prev.claudeSessionId) {\n nextAgentIdBySessionId = { ...state.agentIdBySessionId, [claudeSessionId]: agentId }\n if (prev.claudeSessionId && state.agentIdBySessionId[prev.claudeSessionId] === agentId) {\n const { [prev.claudeSessionId]: _removed, ...rest } = state.agentIdBySessionId\n nextAgentIdBySessionId = { ...rest, [claudeSessionId]: agentId }\n }\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n agentIdBySessionId: nextAgentIdBySessionId,\n }\n }\n\n case 'agent.current_issue_set': {\n const { agentId, currentIssue } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n currentIssue,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.context_saturation_changed': {\n const { agentId, contextSaturatedAt } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n contextSaturatedAt,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.resolution_changed': {\n const { agentId, resolution, resolutionCount } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n resolution,\n resolutionCount,\n resolutionUpdatedAt: event.timestamp,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.state_restored': {\n const { agentId, snapshot } = event.payload\n // Seed directly from the restored snapshot but use the new event's sequence\n // so downstream consumers key off a monotonic value.\n const next: AgentRuntimeSnapshot = {\n ...snapshot,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'activity.entry': {\n const entry = event.payload as Record<string, unknown>;\n const newEntry = { id: entry.id, timestamp: event.timestamp, ...entry };\n const updated = [newEntry, ...(state.recentActivity as Array<Record<string, unknown>>)].slice(0, MAX_ACTIVITY_ENTRIES);\n return { ...state, sequence: Math.max(state.sequence, event.sequence), recentActivity: updated };\n }\n\n case 'activity.detailed': {\n const entry = event.payload as Record<string, unknown>;\n const newEntry = { id: entry.id, timestamp: event.timestamp, ...entry };\n const updated = [newEntry, ...(state.detailedActivity as Array<Record<string, unknown>>)].slice(0, MAX_DETAILED_ENTRIES);\n return { ...state, sequence: Math.max(state.sequence, event.sequence), detailedActivity: updated };\n }\n\n case 'activity.tts': {\n const entry = event.payload as Record<string, unknown>;\n const newEntry = { id: entry.id, timestamp: event.timestamp, ...entry };\n const updated = [newEntry, ...(state.ttsActivity as Array<Record<string, unknown>>)].slice(0, MAX_TTS_ENTRIES);\n return { ...state, sequence: Math.max(state.sequence, event.sequence), ttsActivity: updated };\n }\n\n case 'dashboard.lifecycle_started': {\n const { reason, issueId, trigger } = event.payload as { reason: string; issueId: string | null; trigger: string };\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n dashboardLifecycle: {\n active: true,\n reason,\n issueId,\n trigger,\n startedAt: event.timestamp,\n completedAt: null,\n failedAt: null,\n error: null,\n },\n };\n }\n\n case 'dashboard.lifecycle_completed': {\n const { reason, issueId } = event.payload as { reason: string; issueId: string | null; durationMs: number };\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n dashboardLifecycle: {\n ...state.dashboardLifecycle,\n active: false,\n reason: reason ?? state.dashboardLifecycle.reason,\n issueId: issueId ?? state.dashboardLifecycle.issueId,\n completedAt: event.timestamp,\n },\n };\n }\n\n case 'dashboard.lifecycle_failed': {\n const { reason, issueId, error } = event.payload as { reason: string; issueId: string | null; error: string };\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n dashboardLifecycle: {\n ...state.dashboardLifecycle,\n active: false,\n reason: reason ?? state.dashboardLifecycle.reason,\n issueId: issueId ?? state.dashboardLifecycle.issueId,\n failedAt: event.timestamp,\n error,\n },\n };\n }\n\n case 'agent.turn_diff_completed': {\n const p = event.payload as {\n agentId: string\n turnId: string\n completedAt: string\n files: Array<{ path: string; kind?: string; additions?: number; deletions?: number }>\n checkpointRef?: string\n assistantMessageId?: string\n checkpointTurnCount?: number\n }\n const existing = state.turnDiffSummariesByAgentId[p.agentId] ?? []\n const summary: TurnDiffSummary = {\n turnId: p.turnId,\n completedAt: p.completedAt,\n files: p.files,\n checkpointRef: p.checkpointRef,\n assistantMessageId: p.assistantMessageId ?? undefined,\n checkpointTurnCount: p.checkpointTurnCount,\n }\n // Deduplicate by turnId — replace if exists, append otherwise\n const idx = existing.findIndex(s => s.turnId === p.turnId)\n const updated = trimTurnDiffSummaries(\n idx >= 0\n ? existing.map((s, i) => i === idx ? summary : s)\n : [...existing, summary]\n )\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n turnDiffSummariesByAgentId: {\n ...state.turnDiffSummariesByAgentId,\n [p.agentId]: updated,\n },\n }\n }\n\n case 'conversation.compacting_changed': {\n const { conversationName, compacting } = event.payload\n if (!compacting) {\n const { [conversationName]: _removed, ...rest } = state.conversationsCompactingByName\n return { ...state, conversationsCompactingByName: rest }\n }\n return {\n ...state,\n conversationsCompactingByName: { ...state.conversationsCompactingByName, [conversationName]: true },\n }\n }\n\n case 'conversation.created': {\n return { ...state, conversationsListRevision: state.conversationsListRevision + 1 }\n }\n\n case 'conversation.title_changed': {\n return { ...state, conversationsListRevision: state.conversationsListRevision + 1 }\n }\n\n case 'conversation.permission_changed': {\n const { conversationName, waiting } = event.payload\n if (!waiting) {\n const { [conversationName]: _removed, ...rest } = state.conversationsAwaitingPermissionByName\n return { ...state, conversationsAwaitingPermissionByName: rest }\n }\n return {\n ...state,\n conversationsAwaitingPermissionByName: { ...state.conversationsAwaitingPermissionByName, [conversationName]: true },\n }\n }\n\n // ─── Scan events (PAN-457) ───────────────────────────────────────────────\n\n case 'scan.started': {\n const { mode, dirs } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n scanProgress: {\n active: true,\n mode,\n dirs,\n dirsProcessed: 0,\n dirsTotal: 0,\n sessionsFound: 0,\n elapsedMs: 0,\n inserted: 0,\n updated: 0,\n skipped: 0,\n errors: 0,\n durationMs: 0,\n },\n }\n }\n\n case 'scan.progress': {\n if (!state.scanProgress) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const { dirsProcessed, dirsTotal, sessionsFound, elapsedMs } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n scanProgress: {\n ...state.scanProgress,\n dirsProcessed,\n dirsTotal,\n sessionsFound,\n elapsedMs,\n },\n }\n }\n\n case 'scan.complete': {\n if (!state.scanProgress) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const { inserted, updated, skipped, errors, durationMs } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n scanProgress: {\n ...state.scanProgress,\n active: false,\n inserted,\n updated,\n skipped,\n errors,\n durationMs,\n },\n }\n }\n\n // ─── Enrich events (PAN-457) ─────────────────────────────────────────────\n\n case 'enrich.progress': {\n const { sessionId, level, model, cost, success, error } = event.payload\n const prev = state.enrichStats ?? { processed: 0, totalCost: 0, failures: 0, durationMs: 0 }\n const progress = { sessionId, level, model, cost, success, error, timestamp: event.timestamp }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n enrichStats: {\n processed: prev.processed + 1,\n totalCost: prev.totalCost + (success ? cost : 0),\n failures: prev.failures + (success ? 0 : 1),\n durationMs: 0,\n },\n enrichProgressBySessionId: upsertBoundedSessionProgress(state.enrichProgressBySessionId, progress),\n }\n }\n\n case 'enrich.complete': {\n const { processed, totalCost, failures, durationMs } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n enrichStats: { processed, totalCost, failures, durationMs },\n enrichProgressBySessionId: {},\n }\n }\n\n case 'embed.progress': {\n const { sessionId, model, success, error } = event.payload\n const progress = { sessionId, model, success, error, timestamp: event.timestamp }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n embedProgressBySessionId: upsertBoundedSessionProgress(state.embedProgressBySessionId, progress),\n }\n }\n\n default: {\n void (event as never)\n return state\n }\n }\n}\n\n// ─── applyEvents — batch apply ───────────────────────────────────────────────\n\nexport function applyEvents(state: ReadModelState, events: DomainEvent[]): ReadModelState {\n return events.reduce(applyEvent, state)\n}\n","import { Schema } from \"effect\"\n\nexport const FlywheelStatsCriterionStatus = Schema.Literals([\n \"green\",\n \"yellow\",\n \"red\",\n \"insufficient_data\",\n])\nexport type FlywheelStatsCriterionStatus = typeof FlywheelStatsCriterionStatus.Type\n\nexport const FlywheelStatsTrend = Schema.Literals([\"up\", \"down\", \"flat\"])\nexport type FlywheelStatsTrend = typeof FlywheelStatsTrend.Type\n\nexport const FlywheelStatsCriterionValueObject = Schema.Record(Schema.String, Schema.Json)\nexport type FlywheelStatsCriterionValueObject = typeof FlywheelStatsCriterionValueObject.Type\n\nexport const FlywheelStatsCriterionValue = Schema.Union([\n Schema.Number,\n FlywheelStatsCriterionValueObject,\n])\nexport type FlywheelStatsCriterionValue = typeof FlywheelStatsCriterionValue.Type\n\nexport interface FlywheelStatsCriterion {\n label: string\n value: FlywheelStatsCriterionValue\n target: FlywheelStatsCriterionValue\n status: FlywheelStatsCriterionStatus\n trend?: FlywheelStatsTrend | undefined\n sampleSize: number\n dataSufficient: boolean\n}\n\nexport const FlywheelStatsCriterion = Schema.Struct({\n label: Schema.String,\n value: FlywheelStatsCriterionValue,\n target: FlywheelStatsCriterionValue,\n status: FlywheelStatsCriterionStatus,\n trend: Schema.optional(FlywheelStatsTrend),\n sampleSize: Schema.Number,\n dataSufficient: Schema.Boolean,\n})\n\nexport interface FlywheelStatsCriteria {\n c1_bugRate: FlywheelStatsCriterion\n c2_p0Bugs: FlywheelStatsCriterion\n c3_passRate: FlywheelStatsCriterion\n c4_mttr: FlywheelStatsCriterion\n c5_intervention: FlywheelStatsCriterion\n c6_timeConsistency: FlywheelStatsCriterion\n c7_flake: FlywheelStatsCriterion\n}\n\nexport const FlywheelStatsCriteria = Schema.Struct({\n c1_bugRate: FlywheelStatsCriterion,\n c2_p0Bugs: FlywheelStatsCriterion,\n c3_passRate: FlywheelStatsCriterion,\n c4_mttr: FlywheelStatsCriterion,\n c5_intervention: FlywheelStatsCriterion,\n c6_timeConsistency: FlywheelStatsCriterion,\n c7_flake: FlywheelStatsCriterion,\n})\n\nexport interface FlywheelStats {\n window: string\n generatedAt: string\n criteria: FlywheelStatsCriteria\n}\n\nexport const FlywheelStats = Schema.Struct({\n window: Schema.String,\n generatedAt: Schema.String,\n criteria: FlywheelStatsCriteria,\n})\n\nexport const decodeFlywheelStats = Schema.decodeUnknownSync(FlywheelStats)\nexport const encodeFlywheelStats = Schema.encodeSync(FlywheelStats)\n","import { Schema } from \"effect\"\nimport type { Harness } from \"./types\"\n\nexport const CONTEXT_LAYER_KINDS = [\"global\", \"project\", \"workspace\"] as const\nexport const CONTEXT_PREVIEW_HARNESSES = [\"claude-code\", \"ohmypi\", \"codex\"] as const satisfies readonly Harness[]\n\nexport const ContextLayerKind = Schema.Literals(CONTEXT_LAYER_KINDS)\nexport type ContextLayerKind = typeof ContextLayerKind.Type\n\nexport const ContextPreviewHarness = Schema.Literals(CONTEXT_PREVIEW_HARNESSES)\nexport type ContextPreviewHarness = typeof ContextPreviewHarness.Type\n\nexport const ContextProjectSummary = Schema.Struct({\n projectKey: Schema.String,\n name: Schema.String,\n path: Schema.String,\n issuePrefix: Schema.optional(Schema.String),\n tracker: Schema.optional(Schema.Literals([\"linear\", \"github\", \"gitlab\", \"rally\"])),\n workspaceRoot: Schema.optional(Schema.String),\n})\nexport type ContextProjectSummary = typeof ContextProjectSummary.Type\n\nexport const ContextWorkspaceSummary = Schema.Struct({\n projectKey: Schema.String,\n path: Schema.String,\n name: Schema.String,\n issueId: Schema.optional(Schema.String),\n branch: Schema.optional(Schema.String),\n})\nexport type ContextWorkspaceSummary = typeof ContextWorkspaceSummary.Type\n\nconst ContextLayerBase = {\n file: Schema.String,\n exists: Schema.Boolean,\n content: Schema.String,\n editable: Schema.Boolean,\n}\n\nexport const GlobalContextLayerRecord = Schema.Struct({\n kind: Schema.Literal(\"global\"),\n ...ContextLayerBase,\n})\nexport type GlobalContextLayerRecord = typeof GlobalContextLayerRecord.Type\n\nexport const ProjectContextLayerRecord = Schema.Struct({\n kind: Schema.Literal(\"project\"),\n projectKey: Schema.String,\n ...ContextLayerBase,\n})\nexport type ProjectContextLayerRecord = typeof ProjectContextLayerRecord.Type\n\nexport const WorkspaceContextLayerRecord = Schema.Struct({\n kind: Schema.Literal(\"workspace\"),\n projectKey: Schema.String,\n workspacePath: Schema.String,\n ...ContextLayerBase,\n})\nexport type WorkspaceContextLayerRecord = typeof WorkspaceContextLayerRecord.Type\n\nexport const ContextEditableLayerRecord = Schema.Union([\n GlobalContextLayerRecord,\n ProjectContextLayerRecord,\n WorkspaceContextLayerRecord,\n])\nexport type ContextEditableLayerRecord = typeof ContextEditableLayerRecord.Type\n\nexport const GlobalContextLayerTarget = Schema.Struct({\n kind: Schema.Literal(\"global\"),\n})\nexport type GlobalContextLayerTarget = typeof GlobalContextLayerTarget.Type\n\nexport const ProjectContextLayerTarget = Schema.Struct({\n kind: Schema.Literal(\"project\"),\n projectKey: Schema.String,\n})\nexport type ProjectContextLayerTarget = typeof ProjectContextLayerTarget.Type\n\nexport const WorkspaceContextLayerTarget = Schema.Struct({\n kind: Schema.Literal(\"workspace\"),\n projectKey: Schema.String,\n workspacePath: Schema.String,\n})\nexport type WorkspaceContextLayerTarget = typeof WorkspaceContextLayerTarget.Type\n\nexport const ContextLayerTarget = Schema.Union([\n GlobalContextLayerTarget,\n ProjectContextLayerTarget,\n WorkspaceContextLayerTarget,\n])\nexport type ContextLayerTarget = typeof ContextLayerTarget.Type\n\nexport const ContextLayerDraft = Schema.Struct({\n target: ContextLayerTarget,\n content: Schema.String,\n})\nexport type ContextLayerDraft = typeof ContextLayerDraft.Type\n\n/**\n * A rendered output file `pan sync` writes a Overdeck-managed region into\n * (e.g. ~/.claude/CLAUDE.md, a project's CLAUDE.md or AGENTS.md). Distinct from\n * the editable *layer source* files — this describes the injection *target* so\n * the dashboard can show the user exactly where context lands and reassure them\n * their own content is preserved.\n */\nexport const ContextSyncTarget = Schema.Struct({\n harness: ContextPreviewHarness,\n layerKind: Schema.Literals([\"global\", \"project\"]),\n projectKey: Schema.optional(Schema.String),\n /** Short human label, e.g. \"Claude Code · global\". */\n label: Schema.String,\n /** Resolved absolute path of the target file. */\n path: Schema.String,\n exists: Schema.Boolean,\n /** True when the file already contains a Overdeck-managed region. */\n hasManagedRegion: Schema.Boolean,\n /** True when the file has hand-authored content outside the managed region. */\n hasUserContent: Schema.Boolean,\n})\nexport type ContextSyncTarget = typeof ContextSyncTarget.Type\n\nexport const ContextLayersResponse = Schema.Struct({\n operation: Schema.Literal(\"load\"),\n projects: Schema.Array(ContextProjectSummary),\n workspaces: Schema.Array(ContextWorkspaceSummary),\n layers: Schema.Array(ContextEditableLayerRecord),\n /** Injection targets `pan sync` writes managed regions into. */\n targets: Schema.Array(ContextSyncTarget),\n})\nexport type ContextLayersResponse = typeof ContextLayersResponse.Type\n\nexport const ContextPreviewRequest = Schema.Struct({\n operation: Schema.Literal(\"preview\"),\n selectedLayer: ContextLayerTarget,\n drafts: Schema.Array(ContextLayerDraft),\n})\nexport type ContextPreviewRequest = typeof ContextPreviewRequest.Type\n\nexport const ContextHarnessPreviews = Schema.Struct({\n \"claude-code\": Schema.String,\n ohmypi: Schema.String,\n codex: Schema.String,\n fullPrompt: Schema.String,\n})\nexport type ContextHarnessPreviews = typeof ContextHarnessPreviews.Type\n\nexport const ContextPreviewDiagnostic = Schema.Struct({\n level: Schema.Literals([\"info\", \"warning\", \"error\"]),\n message: Schema.String,\n layer: Schema.optional(ContextLayerTarget),\n})\nexport type ContextPreviewDiagnostic = typeof ContextPreviewDiagnostic.Type\n\nexport const ContextPreviewResponse = Schema.Struct({\n operation: Schema.Literal(\"preview\"),\n previews: ContextHarnessPreviews,\n diagnostics: Schema.Array(ContextPreviewDiagnostic),\n})\nexport type ContextPreviewResponse = typeof ContextPreviewResponse.Type\n\nexport const ContextLayerSaveRequest = Schema.Struct({\n operation: Schema.Literal(\"save\"),\n target: ContextLayerTarget,\n content: Schema.String,\n})\nexport type ContextLayerSaveRequest = typeof ContextLayerSaveRequest.Type\n\nexport const ContextLayerSaveResponse = Schema.Struct({\n operation: Schema.Literal(\"save\"),\n layer: ContextEditableLayerRecord,\n savedAt: Schema.String,\n})\nexport type ContextLayerSaveResponse = typeof ContextLayerSaveResponse.Type\n\nexport const ContextSyncRequest = Schema.Struct({\n operation: Schema.Literal(\"sync\"),\n})\nexport type ContextSyncRequest = typeof ContextSyncRequest.Type\n\nexport const ContextSyncResponse = Schema.Struct({\n operation: Schema.Literal(\"sync\"),\n success: Schema.Boolean,\n exitCode: Schema.optional(Schema.Number),\n stdout: Schema.String,\n stderr: Schema.String,\n syncedAt: Schema.String,\n})\nexport type ContextSyncResponse = typeof ContextSyncResponse.Type\n","import { Schema } from \"effect\"\n\nexport const ArtifactId = Schema.String\nexport type ArtifactId = typeof ArtifactId.Type\n\nexport const ArtifactSlug = Schema.String\nexport type ArtifactSlug = typeof ArtifactSlug.Type\n\nexport const ArtifactHash = Schema.String\nexport type ArtifactHash = typeof ArtifactHash.Type\n\nexport const ArtifactAgentRole = Schema.Literals([\"plan\", \"work\", \"review\", \"test\", \"ship\", \"flywheel\", \"user\"])\nexport type ArtifactAgentRole = typeof ArtifactAgentRole.Type\n\nexport const ArtifactAgentHarness = Schema.Literals([\"claude-code\", \"pi\", \"ohmypi\", \"codex\", \"user\"])\nexport type ArtifactAgentHarness = typeof ArtifactAgentHarness.Type\n\nexport const ArtifactLifecycleState = Schema.Literals([\n \"published\",\n \"pending_changes\",\n \"unshared\",\n])\nexport type ArtifactLifecycleState = typeof ArtifactLifecycleState.Type\n\nexport const ArtifactValidationCode = Schema.Literals([\n \"invalid_file_type\",\n \"not_a_file\",\n \"size_limit_exceeded\",\n \"forbidden_asset_url\",\n \"secret_detected\",\n \"secret_allowed\",\n \"high_entropy_string\",\n \"inline_event_handler\",\n \"missing_image_alt\",\n])\nexport type ArtifactValidationCode = typeof ArtifactValidationCode.Type\n\nexport const ArtifactValidationFinding = Schema.Struct({\n code: ArtifactValidationCode,\n message: Schema.String,\n line: Schema.optional(Schema.Number),\n column: Schema.optional(Schema.Number),\n rule: Schema.optional(Schema.String),\n strict: Schema.optional(Schema.Boolean),\n})\nexport type ArtifactValidationFinding = typeof ArtifactValidationFinding.Type\n\nexport const ArtifactValidationResult = Schema.Struct({\n ok: Schema.Boolean,\n filePath: Schema.optional(Schema.String),\n size: Schema.Number,\n hash: ArtifactHash,\n strict: Schema.Boolean,\n errors: Schema.Array(ArtifactValidationFinding),\n warnings: Schema.Array(ArtifactValidationFinding),\n})\nexport type ArtifactValidationResult = typeof ArtifactValidationResult.Type\n\nexport const ArtifactMetadata = Schema.Struct({\n artifactId: ArtifactId,\n slug: ArtifactSlug,\n issueId: Schema.optional(Schema.NullOr(Schema.String)),\n workspaceId: Schema.optional(Schema.NullOr(Schema.String)),\n agentRole: Schema.optional(Schema.NullOr(ArtifactAgentRole)),\n agentHarness: Schema.optional(Schema.NullOr(ArtifactAgentHarness)),\n runId: Schema.optional(Schema.NullOr(Schema.String)),\n sessionId: Schema.optional(Schema.NullOr(Schema.String)),\n filePath: Schema.String,\n currentHash: ArtifactHash,\n lastPublishedHash: Schema.optional(Schema.NullOr(ArtifactHash)),\n supersedes: Schema.optional(Schema.NullOr(ArtifactId)),\n title: Schema.optional(Schema.NullOr(Schema.String)),\n description: Schema.optional(Schema.NullOr(Schema.String)),\n createdAt: Schema.String,\n publishedAt: Schema.optional(Schema.NullOr(Schema.String)),\n unsharedAt: Schema.optional(Schema.NullOr(Schema.String)),\n})\nexport type ArtifactMetadata = typeof ArtifactMetadata.Type\n\nexport const ArtifactUrls = Schema.Struct({\n wrapperUrl: Schema.String,\n rawUrl: Schema.String,\n})\nexport type ArtifactUrls = typeof ArtifactUrls.Type\n\nexport const ArtifactStatusResponse = Schema.Struct({\n artifact: Schema.optional(ArtifactMetadata),\n filePath: Schema.String,\n currentHash: ArtifactHash,\n lastPublishedHash: Schema.optional(Schema.NullOr(ArtifactHash)),\n pendingChanges: Schema.Boolean,\n validation: Schema.optional(ArtifactValidationResult),\n})\nexport type ArtifactStatusResponse = typeof ArtifactStatusResponse.Type\n\nexport const ArtifactCreateResponse = Schema.Struct({\n artifact: ArtifactMetadata,\n urls: ArtifactUrls,\n validation: ArtifactValidationResult,\n published: Schema.Boolean,\n})\nexport type ArtifactCreateResponse = typeof ArtifactCreateResponse.Type\n\nexport const ArtifactPublishResponse = Schema.Struct({\n artifact: ArtifactMetadata,\n urls: ArtifactUrls,\n validation: ArtifactValidationResult,\n published: Schema.Boolean,\n pendingChanges: Schema.Boolean,\n})\nexport type ArtifactPublishResponse = typeof ArtifactPublishResponse.Type\n\nexport const ArtifactUnshareResponse = Schema.Struct({\n artifact: ArtifactMetadata,\n unshared: Schema.Boolean,\n})\nexport type ArtifactUnshareResponse = typeof ArtifactUnshareResponse.Type\n\nexport const ArtifactListEntry = Schema.Struct({\n artifact: ArtifactMetadata,\n urls: ArtifactUrls,\n status: ArtifactLifecycleState,\n pendingChanges: Schema.Boolean,\n thumbnailUrl: Schema.optional(Schema.String),\n})\nexport type ArtifactListEntry = typeof ArtifactListEntry.Type\n\nexport const ArtifactListResponse = Schema.Struct({\n artifacts: Schema.Array(ArtifactListEntry),\n})\nexport type ArtifactListResponse = typeof ArtifactListResponse.Type\n\nexport const ArtifactDetailResponse = Schema.Struct({\n artifact: ArtifactMetadata,\n urls: ArtifactUrls,\n status: ArtifactLifecycleState,\n pendingChanges: Schema.Boolean,\n})\nexport type ArtifactDetailResponse = typeof ArtifactDetailResponse.Type\n\nexport const WorkspaceArtifactsResponse = Schema.Struct({\n issueId: Schema.optional(Schema.String),\n workspaceId: Schema.optional(Schema.String),\n artifacts: Schema.Array(ArtifactListEntry),\n})\nexport type WorkspaceArtifactsResponse = typeof WorkspaceArtifactsResponse.Type\n","import { Schema } from \"effect\"\n\nexport const FeatureRegistryStatus = Schema.Literals([\n \"active\",\n \"archived\",\n \"merged\",\n \"deferred\",\n])\nexport type FeatureRegistryStatus = typeof FeatureRegistryStatus.Type\n\nexport const FeatureRegistryEntry = Schema.Struct({\n featureId: Schema.String,\n featureName: Schema.String,\n description: Schema.NullOr(Schema.String),\n owningWorkspaceId: Schema.NullOr(Schema.String),\n owningIssueId: Schema.NullOr(Schema.String),\n owningAgentId: Schema.NullOr(Schema.String),\n status: FeatureRegistryStatus,\n createdAt: Schema.String,\n updatedAt: Schema.String,\n tags: Schema.Array(Schema.String),\n})\nexport type FeatureRegistryEntry = typeof FeatureRegistryEntry.Type\n\nexport interface FeatureRegistryListFilter {\n featureName?: string\n issueId?: string\n workspaceId?: string\n agentId?: string\n status?: FeatureRegistryStatus\n tags?: string[]\n limit?: number\n}\n\nexport interface FeatureRegistryTagInput {\n issueId: string\n featureName: string\n description?: string\n workspaceId?: string | null\n agentId?: string | null\n status?: FeatureRegistryStatus\n tags?: string[]\n now?: string\n}\n\nexport interface FeatureRegistryUntagInput {\n issueId: string\n featureName: string\n}\n\nexport interface FeatureRegistryOwnershipUpdate {\n featureName?: string\n issueId?: string | null\n workspaceId?: string | null\n agentId?: string | null\n status?: FeatureRegistryStatus\n tags?: string[]\n now?: string\n}\n","import type { Harness } from \"./types\"\n\nexport type RuntimeName = Harness\nexport type HarnessName = RuntimeName | \"pi\"\n\nexport type HarnessLaunchCommandKind = \"claude-code\" | \"ohmypi-rpc\" | \"codex-work-tui\" | \"codex-app-server\"\nexport type HarnessDeliveryKind =\n | \"pty-supervisor\"\n | \"rpc-fifo\"\n | \"codex-exec-resume\"\n | \"codex-app-server-rpc\"\n | \"tmux-paste\"\nexport type HarnessReadinessKind =\n | \"claude-session-signal\"\n | \"ohmypi-ready-file\"\n | \"codex-tui-prompt\"\n | \"codex-app-server-ready\"\nexport type HarnessTranscriptKind = \"claude-jsonl\" | \"ohmypi-jsonl\" | \"codex-rollout-jsonl\"\nexport type HarnessSessionIdSource = \"launcher-session-id\" | \"transcript-jsonl\" | \"codex-thread-id\"\nexport type HarnessContextLayerKind = \"claude\" | \"pi\" | \"codex\"\nexport type HarnessFeedKind = \"claude_code\" | \"pi\" | \"codex\"\n\nexport interface HarnessBehavior {\n readonly displayName: string\n readonly executableName: string\n readonly processNames: readonly string[]\n readonly launchCommandKind: HarnessLaunchCommandKind\n readonly deliveryKind: HarnessDeliveryKind\n readonly readinessKind: HarnessReadinessKind\n readonly transcriptKind: HarnessTranscriptKind\n readonly sessionIdSource: HarnessSessionIdSource\n readonly contextLayerKind: HarnessContextLayerKind\n readonly feedKind: HarnessFeedKind\n readonly supportsPtySupervisor: boolean\n readonly supportsChannelsBridge: boolean\n readonly supportsConversationStreaming: boolean\n readonly supportsPatchProjection: boolean\n readonly usesRpcFifo: boolean\n readonly usesCodexHome: boolean\n readonly injectsPromptTimeMemory: boolean\n readonly workAgentMode: \"claude-code\" | \"ohmypi-rpc\" | \"codex-work-tui\" | \"codex-app-server\"\n readonly readyTimeoutSeconds: number\n}\n\nexport const CLAUDE_CODE_BEHAVIOR: HarnessBehavior = {\n displayName: \"Claude Code\",\n executableName: \"claude\",\n processNames: [\"claude\"],\n launchCommandKind: \"claude-code\",\n deliveryKind: \"pty-supervisor\",\n readinessKind: \"claude-session-signal\",\n transcriptKind: \"claude-jsonl\",\n sessionIdSource: \"launcher-session-id\",\n contextLayerKind: \"claude\",\n feedKind: \"claude_code\",\n supportsPtySupervisor: true,\n supportsChannelsBridge: true,\n supportsConversationStreaming: false,\n supportsPatchProjection: true,\n usesRpcFifo: false,\n usesCodexHome: false,\n injectsPromptTimeMemory: false,\n workAgentMode: \"claude-code\",\n readyTimeoutSeconds: 30,\n}\n\nexport const OHMYPI_BEHAVIOR: HarnessBehavior = {\n displayName: \"Pi\",\n executableName: \"omp\",\n processNames: [\"omp\"],\n launchCommandKind: \"ohmypi-rpc\",\n deliveryKind: \"rpc-fifo\",\n readinessKind: \"ohmypi-ready-file\",\n transcriptKind: \"ohmypi-jsonl\",\n sessionIdSource: \"transcript-jsonl\",\n contextLayerKind: \"pi\",\n feedKind: \"pi\",\n supportsPtySupervisor: false,\n supportsChannelsBridge: false,\n supportsConversationStreaming: true,\n supportsPatchProjection: false,\n usesRpcFifo: true,\n usesCodexHome: false,\n injectsPromptTimeMemory: true,\n workAgentMode: \"ohmypi-rpc\",\n readyTimeoutSeconds: 120,\n}\n\nexport const CODEX_BEHAVIOR: HarnessBehavior = {\n displayName: \"Codex\",\n executableName: \"codex\",\n processNames: [\"codex\"],\n launchCommandKind: \"codex-work-tui\",\n deliveryKind: \"codex-exec-resume\",\n readinessKind: \"codex-tui-prompt\",\n transcriptKind: \"codex-rollout-jsonl\",\n sessionIdSource: \"codex-thread-id\",\n contextLayerKind: \"codex\",\n feedKind: \"codex\",\n supportsPtySupervisor: true,\n supportsChannelsBridge: false,\n supportsConversationStreaming: true,\n supportsPatchProjection: true,\n usesRpcFifo: false,\n usesCodexHome: true,\n injectsPromptTimeMemory: false,\n workAgentMode: \"codex-work-tui\",\n readyTimeoutSeconds: 30,\n}\n\nconst BEHAVIORS: Record<RuntimeName, HarnessBehavior> = {\n \"claude-code\": CLAUDE_CODE_BEHAVIOR,\n ohmypi: OHMYPI_BEHAVIOR,\n codex: CODEX_BEHAVIOR,\n}\n\nexport function getHarnessBehavior(harness: HarnessName | undefined | null): HarnessBehavior {\n if (harness === \"ohmypi\" || harness === \"pi\") return OHMYPI_BEHAVIOR\n if (harness === \"codex\") return CODEX_BEHAVIOR\n return CLAUDE_CODE_BEHAVIOR\n}\n\nexport function getRuntimeBehavior(runtime: RuntimeName): HarnessBehavior {\n return BEHAVIORS[runtime]\n}\n","import { Schema } from \"effect\"\n\nexport const HygieneFinding = Schema.Struct({\n id: Schema.String,\n summary: Schema.String,\n detail: Schema.optional(Schema.String),\n urgent: Schema.optional(Schema.Boolean),\n})\nexport type HygieneFinding = typeof HygieneFinding.Type\n\nexport const HygienePullRequest = Schema.Struct({\n number: Schema.Number,\n branch: Schema.String,\n url: Schema.String,\n blocking: Schema.Literals([\"review-pending\", \"test-pending\", \"failing-checks\", \"awaiting-UAT\", \"clean\"]),\n})\n\nexport const HygieneReport = Schema.Struct({\n generatedAt: Schema.String,\n root: Schema.String,\n needsAttention: Schema.Boolean,\n skipped: Schema.Array(Schema.String),\n push: Schema.Struct({ ahead: Schema.Number, commits: Schema.Array(Schema.String) }),\n tree: Schema.Struct({ files: Schema.Array(Schema.String), backups: Schema.Array(Schema.String) }),\n prs: Schema.Array(HygienePullRequest),\n agents: Schema.Struct({\n counts: Schema.Record(Schema.String, Schema.Number),\n problems: Schema.Array(HygieneFinding),\n }),\n sessions: Schema.Struct({ total: Schema.Number, zombies: Schema.Array(Schema.String) }),\n branches: Schema.Struct({ stale: Schema.Array(Schema.String) }),\n workspaces: Schema.Struct({ stale: Schema.Array(Schema.String) }),\n disk: Schema.Struct({ availableGb: Schema.Number, thresholdGb: Schema.Number, urgent: Schema.Boolean }),\n fixes: Schema.Struct({\n branchesDeleted: Schema.Array(Schema.String),\n workspacesRemoved: Schema.Array(Schema.Struct({ path: Schema.String, freedBytes: Schema.Number })),\n errors: Schema.Array(Schema.String),\n }),\n})\nexport type HygieneReport = typeof HygieneReport.Type\n","export const OVERDECK_DASHBOARD_PROTOCOL_VERSION = 1;\nexport const OVERDECK_AGENT_PROTOCOL_VERSION = 1;\n\nexport type UpdateChannel = 'stable' | 'canary';\nexport type UpdatePhase =\n | 'idle'\n | 'checking'\n | 'current'\n | 'available'\n | 'downloading'\n | 'installing'\n | 'ready'\n | 'error';\nexport type UpdateInstallMode = 'desktop' | 'npm-global' | 'development';\nexport type UpdateCompatibility = 'compatible' | 'active-agents-block' | 'unknown';\n\nexport interface UpdateSnapshot {\n phase: UpdatePhase;\n installMode: UpdateInstallMode;\n channel: UpdateChannel;\n currentVersion: string;\n targetVersion: string | null;\n releaseName: string | null;\n releaseNotes: string | null;\n releaseUrl: string | null;\n publishedAt: string | null;\n progressPercent: number | null;\n error: string | null;\n lastCheckedAt: string | null;\n compatibility: UpdateCompatibility;\n currentDashboardProtocol: number;\n currentAgentProtocol: number;\n targetDashboardProtocol: number | null;\n targetAgentProtocol: number | null;\n}\n","import { Schema } from \"effect\"\n\nexport const DeployStalenessSnapshot = Schema.Struct({\n status: Schema.Literals([\"fresh\", \"stale\", \"unknown\"]),\n buildCommit: Schema.NullOr(Schema.String),\n originMainSha: Schema.NullOr(Schema.String),\n behindTotal: Schema.NullOr(Schema.Number),\n behindBuildInputs: Schema.NullOr(Schema.Number),\n originMainLastCommitAt: Schema.NullOr(Schema.Number),\n originMainLastBuildInputCommitAt: Schema.NullOr(Schema.Number),\n computedAt: Schema.Number,\n reason: Schema.optional(Schema.String),\n})\nexport type DeployStalenessSnapshot = typeof DeployStalenessSnapshot.Type\n","const collator = new Intl.Collator(\"en\", { numeric: true, sensitivity: \"base\" })\n\n/**\n * Compares issue identifiers numerically within their prefix, so PAN-532 sorts\n * before PAN-2822. Every issue-id sort should use this comparator (PAN-2831).\n */\nexport function compareIssueIds(a: string, b: string): number {\n return collator.compare(a, b)\n}\n"],"mappings":"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O;EACpB,CAAC;CACH,CAAC;;AAIF,MAAa,sBAAsB,OAAO,OAAO;CAC/C,MAAM,OAAO,QAAQ,kBAAkB;CACvC,UAAU;CACV,WAAW,OAAO;CAClB,SAAS,OAAO,OAAO;EACrB,WAAW,OAAO;EAClB,OAAO,OAAO;EACd,OAAO,OAAO;EACd,MAAM,OAAO;EACb,SAAS,OAAO;EAChB,OAAO,OAAO,SAAS,OAAO,OAAO;EACtC,CAAC;CACH,CAAC;;AAIF,MAAa,sBAAsB,OAAO,OAAO;CAC/C,MAAM,OAAO,QAAQ,kBAAkB;CACvC,UAAU;CACV,WAAW,OAAO;CAClB,SAAS,OAAO,OAAO;EACrB,WAAW,OAAO;EAClB,WAAW,OAAO;EAClB,UAAU,OAAO;EACjB,YAAY,OAAO;EACpB,CAAC;CACH,CAAC;;AAIF,MAAa,qBAAqB,OAAO,OAAO;CAC9C,MAAM,OAAO,QAAQ,iBAAiB;CACtC,UAAU;CACV,WAAW,OAAO;CAClB,SAAS,OAAO,OAAO;EACrB,WAAW,OAAO;EAClB,OAAO,OAAO;EACd,SAAS,OAAO;EAChB,OAAO,OAAO,SAAS,OAAO,OAAO;EACtC,CAAC;CACH,CAAC;;AAMF,MAAa,cAAc,OAAO,MAAM;CACtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;;;ACrvCF,MAAa,UAAU;CACrB;EAAE,IAAI;EAAU,OAAO;EAAU,SAAS;EAAU,cAAc;EAAM;CACxE;EA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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/types.ts","../src/memory.ts","../src/system-health.ts","../src/events.ts","../src/editor.ts","../src/flywheel.ts","../src/rpc.ts","../src/event-reducers.ts","../src/flywheel-stats.ts","../src/orders.ts","../src/context-layers.ts","../src/artifacts.ts","../src/feature-registry.ts","../src/harness-behavior.ts","../src/hygiene.ts","../src/update.ts","../src/deploy.ts","../src/issue-sort.ts","../src/telemetry.ts","../src/composer-commands.generated.ts"],"sourcesContent":["import { Schema } from \"effect\"\n\n// ─── Primitives ───────────────────────────────────────────────────────────────\n\nexport const IssueId = Schema.String\nexport type IssueId = typeof IssueId.Type\n\nexport type PipelineBucket =\n | \"in_flight\"\n | \"zombie_pr\"\n | \"post_merge_limbo\"\n | \"planned_backlog\"\n | \"clean_terminal\"\n\nexport const MEMBERSHIP_UNAVAILABLE_REASONS = [\n \"missing_issue_prefix\",\n \"repo_unavailable\",\n \"default_branch_unresolved\",\n \"forge_unavailable\",\n \"tracker_unconfigured\",\n \"gather_failed\",\n] as const\nexport type MembershipUnavailableReason = typeof MEMBERSHIP_UNAVAILABLE_REASONS[number]\n\nexport interface PipelineMembershipUnavailableBody {\n status: \"unavailable\"\n reason: MembershipUnavailableReason\n message: string\n projectKey: string\n}\n\n/** Server-computed pipeline membership attached to dashboard issue DTOs. */\nexport interface IssuePipelineMembership {\n available?: boolean\n inPipeline: boolean\n bucket: PipelineBucket\n labelDrift: \"stale_present\" | \"stale_absent\" | null\n}\n\nexport const AgentId = Schema.String\nexport type AgentId = typeof AgentId.Type\n\nexport const SequenceNumber = Schema.Number\nexport type SequenceNumber = typeof SequenceNumber.Type\n\n// ─── Strict literal types (PAN-433) ──────────────────────────────────────────\n// Safe because the read model only contains values from typed events or\n// explicitly cleaned bootstrap data.\n\nexport const AgentStatus = Schema.Literals([\"starting\", \"running\", \"stopped\", \"error\", \"unknown\"])\nexport type AgentStatus = typeof AgentStatus.Type\n\nexport const Role = Schema.Literals([\"plan\", \"work\", \"review\", \"test\", \"ship\", \"flywheel\", \"strike\", \"sequencer\", \"knowledge\"])\nexport type Role = typeof Role.Type\n\nexport const AgentResolution = Schema.Literals([\"working\", \"done\", \"needs_input\", \"stuck\", \"completed\", \"unclear\", \"abandoned\", \"api_error\"])\nexport type AgentResolution = typeof AgentResolution.Type\n\nexport const ReviewStatusValue = Schema.Literals([\"pending\", \"reviewing\", \"passed\", \"failed\", \"blocked\", \"skipped\"])\nexport type ReviewStatusValue = typeof ReviewStatusValue.Type\n\nexport const TestStatusValue = Schema.Literals([\"pending\", \"testing\", \"passed\", \"failed\", \"skipped\", \"dispatch_failed\"])\nexport type TestStatusValue = typeof TestStatusValue.Type\n\nexport const UatStatusValue = Schema.Literals([\"pending\", \"testing\", \"passed\", \"failed\"])\nexport type UatStatusValue = typeof UatStatusValue.Type\n\nexport const MergeStatusValue = Schema.Literals([\"pending\", \"queued\", \"merging\", \"verifying\", \"merged\", \"failed\"])\nexport type MergeStatusValue = typeof MergeStatusValue.Type\n\nexport const ReleaseStatusValue = Schema.Literals([\"pending\", \"releasing\", \"passed\", \"failed\", \"partial\", \"rolled_back\", \"skipped\"])\nexport type ReleaseStatusValue = typeof ReleaseStatusValue.Type\n\nexport const VerificationStatusValue = Schema.Literals([\"pending\", \"running\", \"passed\", \"failed\", \"skipped\"])\nexport type VerificationStatusValue = typeof VerificationStatusValue.Type\n\n// ─── Harness (PAN-636, PAN-1989) ─────────────────────────────────────────────\n// Identifies which coding-agent harness an agent is running under.\n// AgentSnapshot.runtime is left as Schema.optional(Schema.String) for forward\n// compatibility (events from older readers may carry unknown values), but every\n// consumer that branches on harness MUST go through getHarness() so unknown or\n// legacy values normalize to 'claude-code'.\n//\n// PAN-1989 retired 'pi'; legacy DB rows read as 'ohmypi' via getHarness().\n// All new write sites use canonical harness literals.\n\nexport type Harness = 'claude-code' | 'ohmypi' | 'codex' | 'acp'\n\nconst KNOWN_HARNESSES: ReadonlySet<string> = new Set<Harness>(['claude-code', 'ohmypi', 'codex', 'acp'])\n\n/**\n * Normalize a snapshot's runtime field to a known Harness value.\n * Unknown or missing values fall back to 'claude-code' (the default harness).\n * Legacy 'pi' values are normalized to 'ohmypi' on read (PAN-1989).\n */\nexport function getHarness(snapshot: { runtime?: string | undefined } | null | undefined): Harness {\n const raw = snapshot?.runtime\n if (raw === 'pi') return 'ohmypi'\n if (raw && KNOWN_HARNESSES.has(raw)) {\n return raw as Harness\n }\n return 'claude-code'\n}\n\n// ─── Agent Runtime (PAN-800) ─────────────────────────────────────────────────\n// High-frequency per-tool-call surface. Kept separate from AgentSnapshot because\n// AgentSnapshot is the low-frequency lifecycle projection (config, status, cost)\n// and merging them means every tool call re-diffs a giant object on the frontend.\n\nexport const Activity = Schema.Literals([\n \"working\", // tool in flight, or tool completed <30s ago\n \"thinking\", // no tool in flight, waiting for model\n \"waiting\", // needs human (permission, answer, disambiguation)\n \"idle\", // Stop hook fired, waiting for next turn\n \"stopped\", // session ended\n])\nexport type Activity = typeof Activity.Type\n\nexport const WaitingReason = Schema.Literals([\n \"tool_permission\",\n \"user_question\",\n \"disambiguation\",\n \"other\",\n])\nexport type WaitingReason = typeof WaitingReason.Type\n\nexport const ClaudeChannelPermissionBehavior = Schema.Literals([\n \"allow\",\n \"deny\",\n])\nexport type ClaudeChannelPermissionBehavior = typeof ClaudeChannelPermissionBehavior.Type\n\nexport const ThinkingState = Schema.Struct({\n since: Schema.String, // ISO timestamp\n lastToolAt: Schema.String, // timestamp of the tool that preceded this thinking state\n})\nexport type ThinkingState = typeof ThinkingState.Type\n\nexport const WaitingState = Schema.Struct({\n reason: WaitingReason,\n startedAt: Schema.String,\n message: Schema.optional(Schema.String),\n notificationSent: Schema.optional(Schema.Boolean),\n})\nexport type WaitingState = typeof WaitingState.Type\n\nexport const CHANNEL_REPLY_KIND_VALUES = [\"status\", \"done\", \"needs_input\"] as const\nexport const MAX_CHANNEL_REPLY_SUMMARY_LENGTH = 4 * 1024\nexport const MAX_CHANNEL_REPLY_ARTIFACT_REFS = 20\nexport const MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH = 512\nexport const MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH = 512\nconst CHANNEL_REPLY_ARTIFACT_URI_PATTERN = /^(?:file:\\/\\/|https:\\/\\/|\\/)/\n\nexport const ChannelReplyKind = Schema.Literals(CHANNEL_REPLY_KIND_VALUES)\nexport type ChannelReplyKind = typeof ChannelReplyKind.Type\n\nexport function isChannelReplyKind(value: unknown): value is ChannelReplyKind {\n return typeof value === 'string' && CHANNEL_REPLY_KIND_VALUES.includes(value as ChannelReplyKind)\n}\n\nexport const ChannelReplyArtifactRef = Schema.Struct({\n uri: Schema.String,\n label: Schema.optional(Schema.String),\n})\nexport type ChannelReplyArtifactRef = typeof ChannelReplyArtifactRef.Type\n\nexport const AgentChannelReply = Schema.Struct({\n kind: ChannelReplyKind,\n summary: Schema.String,\n artifactRefs: Schema.Array(ChannelReplyArtifactRef),\n reportedAt: Schema.String,\n})\nexport type AgentChannelReply = typeof AgentChannelReply.Type\n\nexport function normalizeChannelReplyPayload(\n payload: unknown,\n fieldPrefix = 'channel_reply',\n): {\n kind: ChannelReplyKind\n summary: string\n artifactRefs: ChannelReplyArtifactRef[]\n} {\n if (payload === null || typeof payload !== 'object') {\n throw new Error(`${fieldPrefix} payload must be an object`)\n }\n\n const source = payload as {\n kind?: unknown\n summary?: unknown\n artifactRefs?: unknown\n }\n\n if (!isChannelReplyKind(source.kind)) {\n throw new Error(`${fieldPrefix}.kind must be one of: ${CHANNEL_REPLY_KIND_VALUES.join(', ')}`)\n }\n\n if (typeof source.summary !== 'string') {\n throw new Error(`${fieldPrefix}.summary must be a non-empty string`)\n }\n const summary = source.summary.trim()\n if (summary.length === 0) {\n throw new Error(`${fieldPrefix}.summary must be a non-empty string`)\n }\n if (summary.length > MAX_CHANNEL_REPLY_SUMMARY_LENGTH) {\n throw new Error(\n `${fieldPrefix}.summary must be at most ${MAX_CHANNEL_REPLY_SUMMARY_LENGTH} characters`,\n )\n }\n\n if (source.artifactRefs !== undefined && !Array.isArray(source.artifactRefs)) {\n throw new Error(`${fieldPrefix}.artifactRefs must be an array when provided`)\n }\n const rawArtifactRefs = source.artifactRefs ?? []\n if (rawArtifactRefs.length > MAX_CHANNEL_REPLY_ARTIFACT_REFS) {\n throw new Error(\n `${fieldPrefix}.artifactRefs must contain at most ${MAX_CHANNEL_REPLY_ARTIFACT_REFS} entries`,\n )\n }\n\n const artifactRefs = rawArtifactRefs.map((item, index) => {\n if (item === null || typeof item !== 'object') {\n throw new Error(`${fieldPrefix}.artifactRefs[${index}] must be an object`)\n }\n const ref = item as { uri?: unknown; label?: unknown }\n if (typeof ref.uri !== 'string') {\n throw new Error(`${fieldPrefix}.artifactRefs[${index}].uri must be a non-empty string`)\n }\n const uri = ref.uri.trim()\n if (uri.length === 0) {\n throw new Error(`${fieldPrefix}.artifactRefs[${index}].uri must be a non-empty string`)\n }\n if (uri.length > MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH) {\n throw new Error(\n `${fieldPrefix}.artifactRefs[${index}].uri must be at most ${MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH} characters`,\n )\n }\n if (!CHANNEL_REPLY_ARTIFACT_URI_PATTERN.test(uri)) {\n throw new Error(\n `${fieldPrefix}.artifactRefs[${index}].uri must start with file://, https://, or /`,\n )\n }\n\n if (ref.label !== undefined && typeof ref.label !== 'string') {\n throw new Error(`${fieldPrefix}.artifactRefs[${index}].label must be a string when provided`)\n }\n const label = typeof ref.label === 'string' ? ref.label.trim() : undefined\n if (label !== undefined && label.length > MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH) {\n throw new Error(\n `${fieldPrefix}.artifactRefs[${index}].label must be at most ${MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH} characters`,\n )\n }\n\n return {\n uri,\n ...(label ? { label } : {}),\n }\n })\n\n return {\n kind: source.kind,\n summary,\n artifactRefs,\n }\n}\n\nexport const AgentRuntimeSnapshot = Schema.Struct({\n id: AgentId,\n activity: Activity,\n lastActivity: Schema.String, // ISO timestamp of last event for this agent\n currentTool: Schema.optional(Schema.String), // set when activity === \"working\"\n thinking: Schema.optional(ThinkingState), // set when activity === \"thinking\"\n waiting: Schema.optional(WaitingState), // set when activity === \"waiting\"\n claudeSessionId: Schema.optional(Schema.String),\n sessionModel: Schema.optional(Schema.String),\n sessionHarness: Schema.optional(Schema.String),\n model: Schema.optional(Schema.String),\n lastMessageAt: Schema.optional(Schema.String), // last user→agent message delivered\n // Last structured Claude Code Channels reply emitted by the work agent.\n channelReply: Schema.optional(AgentChannelReply),\n // Lifecycle resolution signal emitted by work-agent-stop-hook. Values mirror\n // AgentResolution so the enrichment poller can consume this as input.\n resolution: Schema.optional(AgentResolution),\n resolutionCount: Schema.optional(Schema.Number),\n resolutionUpdatedAt: Schema.optional(Schema.String),\n // For specialists: the issue currently being processed.\n currentIssue: Schema.optional(IssueId),\n // Set while the agent's recent terminal tail shows a hard context-window overflow.\n contextSaturatedAt: Schema.optional(Schema.String),\n updatedAtSequence: SequenceNumber, // event sequence that produced this snapshot\n})\nexport type AgentRuntimeSnapshot = typeof AgentRuntimeSnapshot.Type\n\nexport const ChannelPermissionRequestSnapshot = Schema.Struct({\n requestId: Schema.String,\n agentId: AgentId,\n issueId: Schema.optional(IssueId),\n toolName: Schema.String,\n description: Schema.String,\n inputPreview: Schema.String,\n createdAt: Schema.String,\n})\nexport type ChannelPermissionRequestSnapshot = typeof ChannelPermissionRequestSnapshot.Type\n\n// ─── Agent ────────────────────────────────────────────────────────────────────\n\nexport const AgentSnapshot = Schema.Struct({\n id: AgentId,\n issueId: IssueId,\n workspace: Schema.optional(Schema.String),\n runtime: Schema.optional(Schema.String),\n model: Schema.optional(Schema.String),\n status: AgentStatus,\n startedAt: Schema.optional(Schema.String),\n lastActivity: Schema.optional(Schema.String),\n branch: Schema.optional(Schema.String),\n costSoFar: Schema.optional(Schema.Number),\n sessionId: Schema.optional(Schema.String),\n role: Schema.optional(Role),\n phase: Schema.optional(Schema.String),\n workType: Schema.optional(Schema.String),\n roleRunHead: Schema.optional(Schema.String),\n hasLiveTmuxSession: Schema.optional(Schema.Boolean),\n stoppedByUser: Schema.optional(Schema.Boolean),\n paused: Schema.optional(Schema.Boolean),\n pausedReason: Schema.optional(Schema.String),\n pausedAt: Schema.optional(Schema.String),\n troubled: Schema.optional(Schema.Boolean),\n troubledAt: Schema.optional(Schema.String),\n consecutiveFailures: Schema.optional(Schema.Number),\n firstFailureInRunAt: Schema.optional(Schema.String),\n lastFailureAt: Schema.optional(Schema.String),\n lastFailureReason: Schema.optional(Schema.String),\n lastFailureNextRetryAt: Schema.optional(Schema.String),\n runtimeState: Schema.optional(Schema.String),\n // Enrichment fields (PAN-440)\n hasPendingQuestion: Schema.optional(Schema.Boolean),\n pendingQuestionCount: Schema.optional(Schema.Number),\n pendingQuestionPrompt: Schema.optional(Schema.String),\n pendingQuestionReason: Schema.optional(Schema.String),\n // PAN-1520 — unified pending-input surfaces. `pendingInputKinds` lists every\n // active blocking surface (askUserQuestion, permissionRequest, exitPlanMode,\n // enterPlanMode, sessionResume). `pendingInputCount` is the count.\n pendingInputCount: Schema.optional(Schema.Number),\n pendingInputKinds: Schema.optional(Schema.Array(Schema.String)),\n // PAN-1520 — payload for an active AskUserQuestion the operator can answer\n // by clicking an option button in the conversation panel.\n pendingAskUserQuestion: Schema.optional(Schema.Struct({\n toolUseId: Schema.String,\n askedAt: Schema.String,\n questions: Schema.Array(Schema.Struct({\n question: Schema.String,\n header: Schema.optional(Schema.String),\n multiSelect: Schema.optional(Schema.Boolean),\n options: Schema.Array(Schema.Struct({\n label: Schema.String,\n description: Schema.optional(Schema.String),\n })),\n })),\n })),\n // PAN-1520 (FR-1) — plan markdown for a pending ExitPlanMode so the operator\n // can approve/reject from a dashboard modal instead of only the terminal.\n pendingProposedPlan: Schema.optional(Schema.Struct({\n toolUseId: Schema.String,\n askedAt: Schema.String,\n plan: Schema.String,\n })),\n resolution: Schema.optional(AgentResolution),\n resolutionCount: Schema.optional(Schema.Number),\n // PAN-800 — bumped on every runtime event so subscribers can cheaply detect\n // a change without diffing the full AgentRuntimeSnapshot.\n runtimeSnapshotSequence: Schema.optional(SequenceNumber),\n})\nexport type AgentSnapshot = typeof AgentSnapshot.Type\n\n// ─── Review / Pipeline ────────────────────────────────────────────────────────\n\nexport const ReviewStatusSnapshot = Schema.Struct({\n issueId: IssueId,\n reviewStatus: Schema.optional(ReviewStatusValue),\n testStatus: Schema.optional(TestStatusValue),\n uatStatus: Schema.optional(UatStatusValue),\n uatNotes: Schema.optional(Schema.String),\n mergeStatus: Schema.optional(MergeStatusValue),\n releaseStatus: Schema.optional(ReleaseStatusValue),\n releaseNotes: Schema.optional(Schema.String),\n verificationStatus: Schema.optional(VerificationStatusValue),\n verificationNotes: Schema.optional(Schema.String),\n verificationCycleCount: Schema.optional(Schema.Number),\n readyForMerge: Schema.optional(Schema.Boolean),\n updatedAt: Schema.optional(Schema.String),\n prUrl: Schema.optional(Schema.String),\n /** Persistent stuck flag — set by divergence guard, cleared by /unstick */\n stuck: Schema.optional(Schema.Boolean),\n stuckReason: Schema.optional(Schema.String),\n stuckAt: Schema.optional(Schema.String),\n stuckDetails: Schema.optional(Schema.String),\n /** Commit SHA at which review passed; deacon uses this to detect new pushes after review */\n reviewedAtCommit: Schema.optional(Schema.String),\n /** Commit SHA at which the pre-review verification gate last passed */\n lastVerifiedCommit: Schema.optional(Schema.String),\n /** Current merge pipeline step (granular visibility for the merge step tracker) */\n mergeStep: Schema.optional(Schema.String),\n /** PAN-699: timestamp when review agents were dispatched */\n reviewSpawnedAt: Schema.optional(Schema.String),\n /** PAN-699: number of test-agent dispatch retries */\n testRetryCount: Schema.optional(Schema.Number),\n /** PAN-794: parallel-review re-dispatch retry counter (current recovery cycle) */\n reviewRetryCount: Schema.optional(Schema.Number),\n /** PAN-796: review auto-requeue count (circuit breaker threshold) */\n autoRequeueCount: Schema.optional(Schema.Number),\n /** PAN-794: ISO timestamp marking the start of the current recovery cycle */\n recoveryStartedAt: Schema.optional(Schema.String),\n /** Human-requested patrol opt-out — when true, Deacon ignores this issue. */\n deaconIgnored: Schema.optional(Schema.Boolean),\n deaconIgnoredAt: Schema.optional(Schema.String),\n deaconIgnoredReason: Schema.optional(Schema.String),\n /** PAN-1691: per-issue auto-merge routing key. undefined = project default, true = auto-merge (fast lane), false = hold for UAT. */\n autoMerge: Schema.optional(Schema.Boolean),\n /** Active review orchestrator tmux session name (e.g. agent-pan-540-review). */\n reviewCoordinatorSessionName: Schema.optional(Schema.String),\n /** Active review sub-role tmux session names (e.g. agent-pan-540-review-correctness). Discovered at emission time. */\n reviewSessionNames: Schema.optional(Schema.Array(Schema.String)),\n /** Per-role review completion status (keyed by role: 'correctness' | 'security' | ...) */\n reviewSubStatuses: Schema.optional(Schema.Record(Schema.String, Schema.Literals([\"running\", \"done\"]))),\n /** PAN-905: queue position in the merge queue */\n queuePosition: Schema.optional(Schema.Number),\n /** PAN-905: currently active specialist (e.g. 'merge-agent') */\n activeSpecialist: Schema.optional(Schema.String),\n /** PAN-905: number of merge retries attempted */\n mergeRetryCount: Schema.optional(Schema.Number),\n /** PAN-905: free-form notes about the merge attempt */\n mergeNotes: Schema.optional(Schema.String),\n /** Merge blocker reasons surfaced to operators. */\n blockerReasons: Schema.optional(Schema.Array(Schema.Struct({\n type: Schema.Literals(['failing_checks', 'merge_conflict', 'unresolved_conversations', 'changes_requested', 'draft_pr', 'not_mergeable', 'unmerged_sibling_repo']),\n summary: Schema.String,\n details: Schema.optional(Schema.String),\n detectedAt: Schema.String,\n }))),\n})\nexport type ReviewStatusSnapshot = typeof ReviewStatusSnapshot.Type\n\n// ─── Turn Diff ───────────────────────────────────────────────────────────────\n\nexport const TurnDiffFileChange = Schema.Struct({\n path: Schema.String,\n kind: Schema.optional(Schema.String),\n additions: Schema.optional(Schema.Number),\n deletions: Schema.optional(Schema.Number),\n})\nexport type TurnDiffFileChange = typeof TurnDiffFileChange.Type\n\nexport const TurnDiffSummary = Schema.Struct({\n turnId: Schema.String,\n completedAt: Schema.String,\n status: Schema.optional(Schema.String),\n files: Schema.Array(TurnDiffFileChange),\n checkpointRef: Schema.optional(Schema.String),\n assistantMessageId: Schema.optional(Schema.String),\n checkpointTurnCount: Schema.optional(Schema.Number),\n})\nexport type TurnDiffSummary = typeof TurnDiffSummary.Type\n\n// ─── Dashboard Snapshot ──────────────────────────────────────────────────────\n\nexport const ScanProgressSnapshot = Schema.Struct({\n active: Schema.Boolean,\n mode: Schema.Literals(['targeted', 'watched', 'system']),\n dirs: Schema.Array(Schema.String),\n dirsProcessed: Schema.Number,\n dirsTotal: Schema.Number,\n sessionsFound: Schema.Number,\n elapsedMs: Schema.Number,\n inserted: Schema.Number,\n updated: Schema.Number,\n skipped: Schema.Number,\n errors: Schema.Number,\n durationMs: Schema.Number,\n})\nexport type ScanProgressSnapshot = typeof ScanProgressSnapshot.Type\n\nexport const EnrichStatsSnapshot = Schema.Struct({\n processed: Schema.Number,\n totalCost: Schema.Number,\n failures: Schema.Number,\n durationMs: Schema.Number,\n})\nexport type EnrichStatsSnapshot = typeof EnrichStatsSnapshot.Type\n\nexport const EnrichProgressSnapshot = Schema.Struct({\n sessionId: Schema.Number,\n level: Schema.Number,\n model: Schema.String,\n cost: Schema.Number,\n success: Schema.Boolean,\n error: Schema.optional(Schema.String),\n timestamp: Schema.String,\n})\nexport type EnrichProgressSnapshot = typeof EnrichProgressSnapshot.Type\n\nexport const EmbedProgressSnapshot = Schema.Struct({\n sessionId: Schema.Number,\n model: Schema.String,\n success: Schema.Boolean,\n error: Schema.optional(Schema.String),\n timestamp: Schema.String,\n})\nexport type EmbedProgressSnapshot = typeof EmbedProgressSnapshot.Type\n\n// ─── Dashboard Snapshot ──────────────────────────────────────────────────────\n\nexport const DashboardSnapshot = Schema.Struct({\n sequence: SequenceNumber,\n agents: Schema.Array(AgentSnapshot),\n specialists: Schema.Array(Schema.Unknown),\n reviewStatuses: Schema.Array(ReviewStatusSnapshot),\n issues: Schema.Array(Schema.Unknown), // Issues are complex — pass through unvalidated\n recentActivity: Schema.optional(Schema.Array(Schema.Unknown)),\n resources: Schema.optional(Schema.Unknown),\n memory: Schema.optional(Schema.Unknown),\n agentRuntimeById: Schema.optional(Schema.Record(Schema.String, AgentRuntimeSnapshot)),\n channelPermissionRequests: Schema.optional(Schema.Array(ChannelPermissionRequestSnapshot)),\n scanProgress: Schema.optional(Schema.NullOr(ScanProgressSnapshot)),\n enrichStats: Schema.optional(Schema.NullOr(EnrichStatsSnapshot)),\n enrichProgressBySessionId: Schema.optional(Schema.Record(Schema.String, EnrichProgressSnapshot)),\n embedProgressBySessionId: Schema.optional(Schema.Record(Schema.String, EmbedProgressSnapshot)),\n timestamp: Schema.String,\n})\nexport type DashboardSnapshot = typeof DashboardSnapshot.Type\n\n// ─── Workspace Detail ────────────────────────────────────────────────────────\n\nexport const WorkspaceDetail = Schema.Struct({\n workspace: Schema.Unknown,\n reviewStatus: Schema.Unknown,\n planning: Schema.Unknown,\n costs: Schema.Unknown,\n agentOutput: Schema.Array(Schema.String),\n})\nexport type WorkspaceDetail = typeof WorkspaceDetail.Type\n\n// ─── Resource Stats ──────────────────────────────────────────────────────────\n\nexport const ResourceStats = Schema.Struct({\n containers: Schema.Array(Schema.Struct({\n name: Schema.String,\n cpu: Schema.optional(Schema.String),\n mem: Schema.optional(Schema.String),\n status: Schema.optional(Schema.String),\n })),\n})\nexport type ResourceStats = typeof ResourceStats.Type\n\n// ─── Session Tree (PAN-821) ──────────────────────────────────────────────────\n\nexport const SessionNodePresence = Schema.Literals([\"active\", \"idle\", \"suspended\", \"ended\"])\nexport type SessionNodePresence = typeof SessionNodePresence.Type\n\nexport const SessionNodeType = Schema.Literals([\n \"planning\",\n \"work\",\n \"knowledge\",\n \"strike\",\n \"lint\",\n \"review\",\n \"reviewer\",\n \"test\",\n \"ship\",\n \"merge\",\n \"legacy\",\n])\nexport type SessionNodeType = typeof SessionNodeType.Type\n\nexport const ReviewerRoundSummary = Schema.Struct({\n round: Schema.Number,\n status: Schema.optional(Schema.String),\n reviewResult: Schema.optional(Schema.String),\n startedAt: Schema.optional(Schema.String),\n endedAt: Schema.optional(Schema.String),\n durationSec: Schema.optional(Schema.Number),\n cost: Schema.optional(Schema.Number),\n findings: Schema.optional(Schema.Number),\n summary: Schema.optional(Schema.String),\n})\nexport type ReviewerRoundSummary = typeof ReviewerRoundSummary.Type\n\nexport const ReviewerRoundMetadata = Schema.Struct({\n roundCount: Schema.Number,\n latestRound: Schema.Number,\n latestStatus: Schema.optional(Schema.String),\n latestReviewResult: Schema.optional(Schema.String),\n history: Schema.Array(ReviewerRoundSummary),\n})\nexport type ReviewerRoundMetadata = typeof ReviewerRoundMetadata.Type\n\n// One row of a percentage-distribution model origin (PAN-2053). `lo`/`hi` are the\n// half-open bucket band [lo, hi) the entry owns; `chosen` marks the selected one.\nexport const ModelOriginEntry = Schema.Struct({\n model: Schema.String,\n weight: Schema.Number,\n lo: Schema.Number,\n hi: Schema.Number,\n chosen: Schema.Boolean,\n})\nexport type ModelOriginEntry = typeof ModelOriginEntry.Type\n\n// Read-only \"which model & why\" derivation shown in the agent right-click MODEL\n// inspector (PAN-2053). Present only when the agent's role uses a percentage\n// distribution; absent for scalar/single-model roles.\nexport const ModelOrigin = Schema.Struct({\n // The exact spawn key whose bucket selected the model (`${role}:${issueId}`).\n spawnKey: Schema.String,\n // The chosen model id.\n resolved: Schema.String,\n // Deterministic bucket for this key, in [0, total).\n bucket: Schema.Number,\n // Number of buckets = sum of weights (100 when the distribution is percentages).\n total: Schema.Number,\n distribution: Schema.Array(ModelOriginEntry),\n})\nexport type ModelOrigin = typeof ModelOrigin.Type\n\nexport const SessionNode = Schema.Struct({\n type: SessionNodeType,\n role: Schema.optional(Schema.String),\n sessionId: Schema.String,\n tmuxSession: Schema.optional(Schema.String),\n model: Schema.String,\n // Harness that spawned the session (claude-code | pi | codex). Pi/codex run\n // `--mode rpc` with no TUI, so their terminal pane streams raw RPC protocol —\n // the SessionPanel uses this to show a notice instead, and to gate live\n // message streaming. Optional for backward compatibility with older payloads.\n harness: Schema.optional(Schema.String),\n startedAt: Schema.String,\n endedAt: Schema.optional(Schema.String),\n planningComplete: Schema.optional(Schema.Boolean),\n duration: Schema.NullOr(Schema.Number),\n status: AgentStatus,\n hasJsonl: Schema.optional(Schema.Boolean),\n transcript: Schema.optional(Schema.String),\n presence: SessionNodePresence,\n awaitingInput: Schema.optional(Schema.Boolean),\n awaitingInputPrompt: Schema.optional(Schema.String),\n awaitingInputReason: Schema.optional(Schema.String),\n /** Which blocking surfaces are open — names the wait in the node's indicator. */\n pendingInputKinds: Schema.optional(Schema.Array(Schema.String)),\n roundMetadata: Schema.optional(ReviewerRoundMetadata),\n deliveryMethod: Schema.optional(Schema.Literals(['auto', 'channels', 'tmux', 'supervisor'])),\n // Pause gate (PAN-1779 issue-tree redesign): a paused agent is deliberately\n // suppressed from deacon auto-resume — the tree must show it as paused with\n // the reason, never as a generic \"stopped\".\n paused: Schema.optional(Schema.Boolean),\n pausedReason: Schema.optional(Schema.String),\n pausedAt: Schema.optional(Schema.String),\n // Troubled gate (PAN-2257): message delivery queues mail while this is true,\n // so session-tree rows need the gate state and its queue count.\n troubled: Schema.optional(Schema.Boolean),\n troubledAt: Schema.optional(Schema.String),\n troubledReason: Schema.optional(Schema.String),\n consecutiveFailures: Schema.optional(Schema.Number),\n queuedMailCount: Schema.optional(Schema.Number),\n // PAN-2053: read-only model-origin for the right-click MODEL inspector. Set\n // only when the agent's role uses a weighted model distribution.\n modelOrigin: Schema.optional(ModelOrigin),\n})\nexport type SessionNode = typeof SessionNode.Type\n\nexport const FeatureNode = Schema.Struct({\n issueId: IssueId,\n title: Schema.String,\n sessions: Schema.Array(SessionNode),\n})\nexport type FeatureNode = typeof FeatureNode.Type\n\nexport const ProjectSessionTree = Schema.Struct({\n projectKey: Schema.String,\n features: Schema.Array(FeatureNode),\n})\nexport type ProjectSessionTree = typeof ProjectSessionTree.Type\n\n// ─── Discovered Sessions (PAN-457) ───────────────────────────────────────────\n\n/** Snapshot of a discovered session for RPC responses and frontend display */\nexport const DiscoveredSessionSnapshot = Schema.Struct({\n id: Schema.Number,\n jsonlPath: Schema.String,\n harness: Schema.optional(Schema.String),\n sessionId: Schema.optional(Schema.String),\n workspacePath: Schema.optional(Schema.String),\n workspaceHash: Schema.optional(Schema.String),\n messageCount: Schema.Number,\n firstTs: Schema.optional(Schema.String),\n lastTs: Schema.optional(Schema.String),\n modelsUsed: Schema.Array(Schema.String),\n primaryModel: Schema.optional(Schema.String),\n tokenInput: Schema.Number,\n tokenOutput: Schema.Number,\n estimatedCost: Schema.Number,\n toolsUsed: Schema.Array(Schema.String),\n filesTouched: Schema.Array(Schema.String),\n tags: Schema.Array(Schema.String),\n summary: Schema.optional(Schema.String),\n summaryDetailed: Schema.optional(Schema.String),\n // Tracked conversation this session belongs to, when the session id matches a\n // conversation in the DB (joined via conversation_files).\n conversationId: Schema.optional(Schema.String),\n conversationName: Schema.optional(Schema.String),\n conversationTitle: Schema.optional(Schema.String),\n enrichmentLevel: Schema.Number,\n enrichmentModel: Schema.optional(Schema.String),\n enrichedAt: Schema.optional(Schema.String),\n enrichmentFailed: Schema.Boolean,\n overdeckManaged: Schema.Boolean,\n panIssueId: Schema.optional(Schema.String),\n panAgentId: Schema.optional(Schema.String),\n scannedAt: Schema.String,\n})\nexport type DiscoveredSessionSnapshot = typeof DiscoveredSessionSnapshot.Type\n\n// ─── Unified Sessions Feed (PAN-1917) ────────────────────────────────────────\n\nexport const SessionsFeedSource = Schema.Literals(['discovered', 'managed-archived'])\nexport type SessionsFeedSource = typeof SessionsFeedSource.Type\n\nexport const SessionsFeedRowSnapshot = Schema.Struct({\n id: Schema.Number,\n source: SessionsFeedSource,\n discoveredId: Schema.optional(Schema.Number),\n jsonlPath: Schema.optional(Schema.String),\n sessionId: Schema.optional(Schema.String),\n workspacePath: Schema.optional(Schema.String),\n messageCount: Schema.Number,\n firstTs: Schema.optional(Schema.String),\n lastTs: Schema.optional(Schema.String),\n primaryModel: Schema.optional(Schema.String),\n tokenInput: Schema.Number,\n tokenOutput: Schema.Number,\n estimatedCost: Schema.Number,\n tags: Schema.Array(Schema.String),\n summary: Schema.optional(Schema.String),\n enrichmentLevel: Schema.Number,\n enrichmentFailed: Schema.Boolean,\n overdeckManaged: Schema.Boolean,\n panIssueId: Schema.optional(Schema.String),\n archivedAt: Schema.optional(Schema.String),\n conversationId: Schema.optional(Schema.String),\n conversationName: Schema.optional(Schema.String),\n conversationTitle: Schema.optional(Schema.String),\n harness: Schema.optional(Schema.String),\n})\nexport type SessionsFeedRowSnapshot = typeof SessionsFeedRowSnapshot.Type\n\nconst SessionsFeedFacetBucketString = Schema.Struct({\n value: Schema.String,\n count: Schema.Number,\n})\n\nconst SessionsFeedFacetBucketNumber = Schema.Struct({\n value: Schema.Number,\n count: Schema.Number,\n})\n\nexport const SessionsFeedFacetsSnapshot = Schema.Struct({\n primaryModels: Schema.Array(SessionsFeedFacetBucketString),\n tags: Schema.Array(SessionsFeedFacetBucketString),\n tools: Schema.Array(SessionsFeedFacetBucketString),\n files: Schema.Array(SessionsFeedFacetBucketString),\n enrichmentLevels: Schema.Array(SessionsFeedFacetBucketNumber),\n timeBuckets: Schema.Array(Schema.Struct({\n value: Schema.Literals(['24h', '7d', '30d', 'older']),\n count: Schema.Number,\n })),\n costBuckets: Schema.Array(Schema.Struct({\n value: Schema.Literals(['<$0.10', '$0.10-1', '$1-10', '>$10']),\n count: Schema.Number,\n })),\n sources: Schema.Array(Schema.Struct({\n value: SessionsFeedSource,\n count: Schema.Number,\n })),\n})\nexport type SessionsFeedFacetsSnapshot = typeof SessionsFeedFacetsSnapshot.Type\n\n/** Filter parameters for conversation search */\nexport const ConversationFilter = Schema.Struct({\n harness: Schema.optional(Schema.String),\n workspacePath: Schema.optional(Schema.String),\n primaryModel: Schema.optional(Schema.String),\n managed: Schema.optional(Schema.Boolean),\n unmanaged: Schema.optional(Schema.Boolean),\n since: Schema.optional(Schema.String),\n before: Schema.optional(Schema.String),\n after: Schema.optional(Schema.String),\n minCost: Schema.optional(Schema.Number),\n maxCost: Schema.optional(Schema.Number),\n minMessages: Schema.optional(Schema.Number),\n tags: Schema.optional(Schema.Array(Schema.String)),\n tools: Schema.optional(Schema.Array(Schema.String)),\n files: Schema.optional(Schema.Array(Schema.String)),\n issueId: Schema.optional(Schema.String),\n enrichmentLevel: Schema.optional(Schema.Number),\n enriched: Schema.optional(Schema.Boolean),\n notEnriched: Schema.optional(Schema.Boolean),\n query: Schema.optional(Schema.String),\n semantic: Schema.optional(Schema.Boolean),\n similarTo: Schema.optional(Schema.Number),\n limit: Schema.optional(Schema.Number),\n offset: Schema.optional(Schema.Number),\n format: Schema.optional(Schema.Literals(['table', 'json', 'brief', 'ids'])),\n})\nexport type ConversationFilter = typeof ConversationFilter.Type\n\n/** Aggregate cost breakdown for conversations */\nexport const ConversationCostSummary = Schema.Struct({\n groupBy: Schema.Literals(['workspace', 'model', 'day', 'month']),\n entries: Schema.Array(Schema.Struct({\n key: Schema.String,\n totalCost: Schema.Number,\n sessionCount: Schema.Number,\n totalTokensIn: Schema.Number,\n totalTokensOut: Schema.Number,\n })),\n grandTotal: Schema.Number,\n totalTokensIn: Schema.Number,\n totalTokensOut: Schema.Number,\n})\nexport type ConversationCostSummary = typeof ConversationCostSummary.Type\n\n/** Scan result summary */\nexport const ScanResult = Schema.Struct({\n inserted: Schema.Number,\n updated: Schema.Number,\n skipped: Schema.Number,\n errors: Schema.Number,\n durationMs: Schema.Number,\n})\nexport type ScanResult = typeof ScanResult.Type\n","import { Schema } from \"effect\"\nimport { IssueId, Role } from \"./types\"\n\nexport const MemoryIdentity = Schema.Struct({\n projectId: Schema.String,\n workspaceId: Schema.String,\n issueId: IssueId,\n runId: Schema.String,\n sessionId: Schema.String,\n agentRole: Role,\n agentHarness: Schema.String,\n})\nexport type MemoryIdentity = typeof MemoryIdentity.Type\n\nexport const MemoryTokenUsage = Schema.Struct({\n prompt: Schema.Number,\n completion: Schema.Number,\n total: Schema.Number,\n})\nexport type MemoryTokenUsage = typeof MemoryTokenUsage.Type\n\nexport const MemoryObservation = Schema.Struct({\n id: Schema.String,\n timestamp: Schema.String,\n projectId: Schema.String,\n workspaceId: Schema.String,\n issueId: IssueId,\n runId: Schema.String,\n sessionId: Schema.String,\n agentRole: Role,\n agentHarness: Schema.String,\n gitBranch: Schema.String,\n sourceTranscriptOffset: Schema.Number,\n actionStatus: Schema.NullOr(Schema.String),\n narrative: Schema.String,\n summary: Schema.String,\n files: Schema.Array(Schema.String),\n tags: Schema.Array(Schema.String),\n tokens: MemoryTokenUsage,\n model: Schema.String,\n})\nexport type MemoryObservation = typeof MemoryObservation.Type\n\nexport const MemoryStatusPhase = Schema.Literals([\n \"exploring\",\n \"planning\",\n \"building\",\n \"verifying\",\n \"cleaning\",\n \"shipping\",\n])\nexport type MemoryStatusPhase = typeof MemoryStatusPhase.Type\n\nexport const MemoryStatus = Schema.Struct({\n name: Schema.String,\n headline: Schema.String,\n summary: Schema.String,\n goal: Schema.NullOr(Schema.String),\n phase: MemoryStatusPhase,\n accomplished: Schema.Array(Schema.String),\n decided: Schema.Array(Schema.String),\n open: Schema.Array(Schema.String),\n nextSteps: Schema.Array(Schema.String),\n confidence: Schema.Number,\n workingSet: Schema.Array(Schema.String),\n tags: Schema.Array(Schema.String),\n})\nexport type MemoryStatus = typeof MemoryStatus.Type\n\nexport const PendingTurn = Schema.Struct({\n id: Schema.String,\n createdAt: Schema.String,\n identity: MemoryIdentity,\n trigger: Schema.Literals([\"stop-hook\", \"poller\", \"reconciliation\", \"manual\"]),\n transcriptPath: Schema.String,\n fromOffset: Schema.Number,\n toOffset: Schema.Number,\n lastFullLineOffset: Schema.Number,\n eventsConsumed: Schema.Number,\n compressedText: Schema.String,\n})\nexport type PendingTurn = typeof PendingTurn.Type\n\nexport const ResetMarkerScope = Schema.Literals([\"project\", \"workspace\", \"issue\", \"session\"])\nexport type ResetMarkerScope = typeof ResetMarkerScope.Type\n\nexport const ResetMarker = Schema.Struct({\n id: Schema.String,\n scope: ResetMarkerScope,\n scopeId: Schema.String,\n fromTimestamp: Schema.String,\n reason: Schema.String,\n createdAt: Schema.String,\n})\nexport type ResetMarker = typeof ResetMarker.Type\n\nexport const RagDecisionSource = Schema.Struct({\n id: Schema.String,\n docType: Schema.Literals([\"observation\", \"summary\", \"status\", \"sibling\", \"knowledge\"]),\n scope: Schema.String,\n score: Schema.Number,\n tokens: Schema.Number,\n})\nexport type RagDecisionSource = typeof RagDecisionSource.Type\n\nexport const RagDecision = Schema.Struct({\n id: Schema.String,\n timestamp: Schema.String,\n identity: MemoryIdentity,\n surface: Schema.Literals([\"spawn\", \"user-prompt\"]),\n outcome: Schema.Literals([\n \"injected\",\n \"skipped\",\n \"no-hits\",\n \"expansion-failed\",\n \"context-too-large\",\n \"budget-truncated\",\n ]),\n query: Schema.String,\n expandedTerms: Schema.Array(Schema.String),\n allocations: Schema.Struct({\n status: Schema.Number,\n observations: Schema.Number,\n summaries: Schema.Number,\n sibling: Schema.Number,\n knowledgeIndex: Schema.Number,\n }),\n sources: Schema.Array(RagDecisionSource),\n reason: Schema.NullOr(Schema.String),\n})\nexport type RagDecision = typeof RagDecision.Type\n\nexport const ExtractionProviderTarget = Schema.Struct({\n provider: Schema.String,\n model: Schema.String,\n})\nexport type ExtractionProviderTarget = typeof ExtractionProviderTarget.Type\n\nexport const ExtractionProviderConfig = Schema.Struct({\n provider: Schema.String,\n model: Schema.String,\n providerEnvVar: Schema.optional(Schema.String),\n modelEnvVar: Schema.optional(Schema.String),\n perDayCostCapUsd: Schema.Number,\n fallbackChain: Schema.Array(ExtractionProviderTarget),\n})\nexport type ExtractionProviderConfig = typeof ExtractionProviderConfig.Type\n","/**\n * Shared V2 system-health contract. Domain measurements use null for unavailable\n * evidence, unknown enum values decode to safe unavailable/unknown states, and\n * the legacy summary is a compatibility projection from the accepted V2 snapshot.\n */\nimport { Schema, SchemaGetter } from \"effect\"\n\nconst HealthStateValue = Schema.Literals([\n \"measuring\",\n \"healthy\",\n \"warning\",\n \"critical\",\n \"unavailable\",\n])\n\nexport const HealthState = Schema.String.pipe(\n Schema.decodeTo(HealthStateValue, {\n decode: SchemaGetter.transform((value) =>\n HealthStateValue.literals.includes(value as HealthState) ? value as HealthState : \"unavailable\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type HealthState = typeof HealthStateValue.Type\n\nexport const HealthReason = Schema.Struct({\n code: Schema.String,\n domain: Schema.Literals([\"host\", \"admission\", \"agent\", \"service\"]),\n severity: Schema.Literals([\"info\", \"warning\", \"critical\"]),\n message: Schema.String,\n metric: Schema.optional(Schema.String),\n observed: Schema.optional(Schema.Number),\n threshold: Schema.optional(Schema.Number),\n})\nexport type HealthReason = typeof HealthReason.Type\n\nexport const HostPlatform = Schema.String.pipe(\n Schema.decodeTo(Schema.Literals([\"linux\", \"darwin\", \"unsupported\"]), {\n decode: SchemaGetter.transform((value) =>\n value === \"linux\" || value === \"darwin\" || value === \"unsupported\" ? value : \"unsupported\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type HostPlatform = typeof HostPlatform.Type\n\n/**\n * Accepted host metrics. Null means that the platform collector could not\n * produce that signal; it must never be interpreted as a measured zero.\n */\nexport const HostHealthMetrics = Schema.Struct({\n cpuPercent: Schema.NullOr(Schema.Number),\n loadAverage1m: Schema.NullOr(Schema.Number),\n loadPerCore1m: Schema.NullOr(Schema.Number),\n totalMemoryBytes: Schema.NullOr(Schema.Number),\n usedMemoryBytes: Schema.NullOr(Schema.Number),\n availableMemoryBytes: Schema.NullOr(Schema.Number),\n memoryUsedPercent: Schema.NullOr(Schema.Number),\n memoryPressureSomeAvg10: Schema.NullOr(Schema.Number),\n memoryPressureFullAvg10: Schema.NullOr(Schema.Number),\n memoryPressureFreePercent: Schema.NullOr(Schema.Number),\n swapTotalBytes: Schema.NullOr(Schema.Number),\n swapUsedBytes: Schema.NullOr(Schema.Number),\n swapUsedPercent: Schema.NullOr(Schema.Number),\n swapActivityBytesPerMinute: Schema.NullOr(Schema.Number),\n committedMemoryBytes: Schema.NullOr(Schema.Number),\n commitLimitBytes: Schema.NullOr(Schema.Number),\n virtualCommitmentPercent: Schema.NullOr(Schema.Number),\n // Optional so pre-PAN-3063 payloads and fixtures still decode.\n inotifyWatchesUsed: Schema.optional(Schema.NullOr(Schema.Number)),\n inotifyWatchesMax: Schema.optional(Schema.NullOr(Schema.Number)),\n inotifyWatchesUsedPercent: Schema.optional(Schema.NullOr(Schema.Number)),\n})\nexport type HostHealthMetrics = typeof HostHealthMetrics.Type\n\nexport const AdmissionState = Schema.String.pipe(\n Schema.decodeTo(Schema.Literals([\"open\", \"soft\", \"blocked\", \"unavailable\"]), {\n decode: SchemaGetter.transform((value) =>\n value === \"open\" || value === \"soft\" || value === \"blocked\" || value === \"unavailable\"\n ? value\n : \"unavailable\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type AdmissionState = typeof AdmissionState.Type\n\nexport const AgentHealthStatus = Schema.String.pipe(\n Schema.decodeTo(\n Schema.Literals([\n \"healthy\",\n \"idle\",\n \"waiting\",\n \"warning\",\n \"stalled\",\n \"wedged\",\n \"dead\",\n \"unavailable\",\n ]),\n {\n decode: SchemaGetter.transform((value) =>\n value === \"healthy\" ||\n value === \"idle\" ||\n value === \"waiting\" ||\n value === \"warning\" ||\n value === \"stalled\" ||\n value === \"wedged\" ||\n value === \"dead\" ||\n value === \"unavailable\"\n ? value\n : \"unavailable\"\n ),\n encode: SchemaGetter.transform((value) => value),\n },\n ),\n)\nexport type AgentHealthStatus = typeof AgentHealthStatus.Type\n\nexport const AgentHealthKind = Schema.String.pipe(\n Schema.decodeTo(Schema.Literals([\"work\", \"planning\", \"specialist\", \"conversation\", \"other\"]), {\n decode: SchemaGetter.transform((value) =>\n value === \"work\" ||\n value === \"planning\" ||\n value === \"specialist\" ||\n value === \"conversation\" ||\n value === \"other\"\n ? value\n : \"other\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type AgentHealthKind = typeof AgentHealthKind.Type\n\nexport const SpecialistLifecycle = Schema.String.pipe(\n Schema.decodeTo(Schema.Literals([\"active\", \"warm\", \"orphaned\", \"unknown\"]), {\n decode: SchemaGetter.transform((value) =>\n value === \"active\" || value === \"warm\" || value === \"orphaned\" || value === \"unknown\"\n ? value\n : \"unknown\"\n ),\n encode: SchemaGetter.transform((value) => value),\n }),\n)\nexport type SpecialistLifecycle = typeof SpecialistLifecycle.Type\n\nexport const AgentHealthSnapshot = Schema.Struct({\n id: Schema.String,\n issueId: Schema.optional(Schema.String),\n role: Schema.optional(Schema.String),\n kind: Schema.optional(AgentHealthKind),\n status: AgentHealthStatus,\n lifecycle: Schema.optional(SpecialistLifecycle),\n tmuxActive: Schema.optional(Schema.Boolean),\n memoryBytes: Schema.optional(Schema.Number),\n memoryGb: Schema.optional(Schema.Number),\n cpuPercent: Schema.optional(Schema.Number),\n currentIssue: Schema.optional(Schema.String),\n lastActivityAt: Schema.optional(Schema.String),\n consecutiveFailures: Schema.optional(Schema.Number),\n killCount: Schema.optional(Schema.Number),\n contextPercent: Schema.optional(Schema.NullOr(Schema.Number)),\n reasons: Schema.Array(HealthReason),\n})\nexport type AgentHealthSnapshot = typeof AgentHealthSnapshot.Type\n\nexport const ServiceHealthStatus = Schema.String.pipe(\n Schema.decodeTo(\n Schema.Literals([\"running\", \"not_configured\", \"degraded\", \"stopped\", \"unavailable\"]),\n {\n decode: SchemaGetter.transform((value) =>\n value === \"running\" ||\n value === \"not_configured\" ||\n value === \"degraded\" ||\n value === \"stopped\" ||\n value === \"unavailable\"\n ? value\n : \"unavailable\"\n ),\n encode: SchemaGetter.transform((value) => value),\n },\n ),\n)\nexport type ServiceHealthStatus = typeof ServiceHealthStatus.Type\n\nexport const ServiceHealthSnapshot = Schema.Struct({\n id: Schema.String,\n label: Schema.optional(Schema.String),\n required: Schema.optional(Schema.Boolean),\n status: ServiceHealthStatus,\n message: Schema.String,\n reasons: Schema.Array(HealthReason),\n})\nexport type ServiceHealthSnapshot = typeof ServiceHealthSnapshot.Type\n\nexport const SystemHealthConsumer = Schema.Struct({\n id: Schema.String,\n label: Schema.String,\n type: Schema.Literals([\"agent\", \"specialist\", \"container\"]),\n memoryBytes: Schema.Number,\n memoryGb: Schema.Number,\n cpuPercent: Schema.optional(Schema.Number),\n issueId: Schema.optional(Schema.String),\n currentIssue: Schema.optional(Schema.String),\n leaked: Schema.optional(Schema.Boolean),\n killTarget: Schema.optional(Schema.Struct({\n kind: Schema.Literals([\"agent\", \"specialist\", \"container\"]),\n agentId: Schema.optional(Schema.String),\n containerId: Schema.optional(Schema.String),\n projectKey: Schema.optional(Schema.String),\n issueId: Schema.optional(Schema.String),\n specialistType: Schema.optional(Schema.String),\n })),\n})\nexport type SystemHealthConsumer = typeof SystemHealthConsumer.Type\n\nexport const LegacyWebhookRelaySummary = Schema.Struct({\n configured: Schema.Boolean,\n running: Schema.Boolean,\n status: Schema.Literals([\"not_configured\", \"running\", \"stopped\", \"unknown\"]),\n message: Schema.String,\n})\nexport type LegacyWebhookRelaySummary = typeof LegacyWebhookRelaySummary.Type\n\n/** Compatibility fields retained for one release cycle. */\nexport const LegacySystemHealthSummary = Schema.Struct({\n cpuPercent: Schema.Number,\n loadAverage1m: Schema.Number,\n loadPerCore1m: Schema.Number,\n totalMemoryBytes: Schema.Number,\n usedMemoryBytes: Schema.Number,\n availableMemoryBytes: Schema.Number,\n memoryUsedPercent: Schema.Number,\n swapTotalBytes: Schema.Number,\n swapUsedBytes: Schema.Number,\n swapUsedPercent: Schema.Number,\n committedMemoryBytes: Schema.Number,\n commitLimitBytes: Schema.Number,\n overcommitPercent: Schema.Number,\n agentCount: Schema.Number,\n workAgentCount: Schema.Number,\n planningAgentCount: Schema.Number,\n specialistSessionCount: Schema.Number,\n leakedSpecialistCount: Schema.Number,\n containerCount: Schema.Number,\n containerMemoryBytes: Schema.Number,\n overdeckMemoryBytes: Schema.Number,\n overdeckMemoryPercent: Schema.Number,\n smeeRelay: LegacyWebhookRelaySummary,\n})\nexport type LegacySystemHealthSummary = typeof LegacySystemHealthSummary.Type\n\nexport const SystemHealthSnapshot = Schema.Struct({\n version: Schema.Literal(2),\n state: HealthState,\n updatedAt: Schema.String,\n nextPollMs: Schema.Number,\n host: Schema.Struct({\n state: HealthState,\n platform: HostPlatform,\n reasons: Schema.Array(HealthReason),\n metrics: HostHealthMetrics,\n }),\n admission: Schema.Struct({\n state: AdmissionState,\n availableMemoryBytes: Schema.NullOr(Schema.Number),\n admittedWorkAgentCount: Schema.Number,\n reasons: Schema.Array(HealthReason),\n }),\n agents: Schema.Array(AgentHealthSnapshot),\n services: Schema.Array(ServiceHealthSnapshot),\n // The producer supplies every memory-bearing consumer in descending order.\n // Presentation clients may slice this array; the compatibility projector\n // needs the exhaustive source to preserve aggregate container totals.\n topConsumers: Schema.Array(SystemHealthConsumer),\n summary: LegacySystemHealthSummary,\n})\nexport type SystemHealthSnapshot = typeof SystemHealthSnapshot.Type\n\nfunction isWorkAgent(agent: AgentHealthSnapshot): boolean {\n return agent.kind === \"work\" || agent.role === \"work\"\n}\n\nfunction isPlanningAgent(agent: AgentHealthSnapshot): boolean {\n return agent.kind === \"planning\" || agent.role === \"plan\" || agent.role === \"planning\"\n}\n\nfunction isSpecialistAgent(agent: AgentHealthSnapshot): boolean {\n return agent.kind === \"specialist\" ||\n agent.role === \"review\" ||\n agent.role?.startsWith(\"review-\") === true ||\n agent.role === \"test\" ||\n agent.role === \"ship\"\n}\n\nfunction projectWebhookRelay(services: ReadonlyArray<ServiceHealthSnapshot>): LegacyWebhookRelaySummary {\n const relay = services.find((service) => service.id === \"smee-relay\" || service.id === \"webhook-relay\")\n if (!relay) {\n return {\n configured: false,\n running: false,\n status: \"unknown\",\n message: \"Webhook relay health is unavailable.\",\n }\n }\n\n const status = relay.status === \"running\" || relay.status === \"not_configured\" || relay.status === \"stopped\"\n ? relay.status\n : \"unknown\"\n\n return {\n configured: relay.status !== \"not_configured\",\n running: relay.status === \"running\",\n status,\n message: relay.message,\n }\n}\n\n/**\n * Projects the V2 domains into the legacy summary without recollecting state.\n * Diagnostic-only swap and virtual-commitment values remain visible here but\n * do not participate in V2 health-state evaluation.\n */\nexport function projectLegacySystemHealthSummary(\n snapshot: Omit<SystemHealthSnapshot, \"summary\">,\n): LegacySystemHealthSummary {\n const metrics = snapshot.host.metrics\n const agentMemoryBytes = snapshot.agents.reduce((total, agent) => total + (agent.memoryBytes ?? 0), 0)\n const containers = snapshot.topConsumers.filter((consumer) => consumer.type === \"container\")\n const containerMemoryBytes = containers.reduce((total, consumer) => total + consumer.memoryBytes, 0)\n const overdeckMemoryBytes = agentMemoryBytes + containerMemoryBytes\n const totalMemoryBytes = metrics.totalMemoryBytes ?? 0\n\n return {\n cpuPercent: metrics.cpuPercent ?? 0,\n loadAverage1m: metrics.loadAverage1m ?? 0,\n loadPerCore1m: metrics.loadPerCore1m ?? 0,\n totalMemoryBytes,\n usedMemoryBytes: metrics.usedMemoryBytes ?? 0,\n availableMemoryBytes: metrics.availableMemoryBytes ?? 0,\n memoryUsedPercent: metrics.memoryUsedPercent ?? 0,\n swapTotalBytes: metrics.swapTotalBytes ?? 0,\n swapUsedBytes: metrics.swapUsedBytes ?? 0,\n swapUsedPercent: metrics.swapUsedPercent ?? 0,\n committedMemoryBytes: metrics.committedMemoryBytes ?? 0,\n commitLimitBytes: metrics.commitLimitBytes ?? 0,\n overcommitPercent: metrics.virtualCommitmentPercent ?? 0,\n agentCount: snapshot.agents.length,\n workAgentCount: snapshot.agents.filter(isWorkAgent).length,\n planningAgentCount: snapshot.agents.filter(isPlanningAgent).length,\n specialistSessionCount: snapshot.agents.filter(isSpecialistAgent).length,\n leakedSpecialistCount: snapshot.agents.filter((agent) =>\n isSpecialistAgent(agent) && agent.lifecycle === \"orphaned\"\n ).length,\n containerCount: containers.length,\n containerMemoryBytes,\n overdeckMemoryBytes,\n overdeckMemoryPercent: totalMemoryBytes > 0 ? Math.round((overdeckMemoryBytes / totalMemoryBytes) * 1000) / 10 : 0,\n smeeRelay: projectWebhookRelay(snapshot.services),\n }\n}\n","import { Schema } from \"effect\"\nimport {\n Activity,\n AgentChannelReply,\n AgentId,\n AgentResolution,\n AgentRuntimeSnapshot,\n AgentSnapshot,\n AgentStatus,\n ChannelPermissionRequestSnapshot,\n ClaudeChannelPermissionBehavior,\n IssueId,\n ResourceStats,\n ReviewStatusSnapshot,\n Role,\n SequenceNumber,\n WaitingReason,\n} from \"./types\"\nimport {\n MemoryObservation,\n MemoryStatus,\n RagDecision,\n ResetMarker,\n} from \"./memory\"\nimport { HealthState } from \"./system-health\"\n\n// ─── System Events ────────────────────────────────────────────────────────────\n\n/** App-level liveness frame for the /ws/rpc domain-events stream. */\nexport const SystemHeartbeatEvent = Schema.Struct({\n type: Schema.Literal(\"system.heartbeat\"),\n timestamp: Schema.String,\n payload: Schema.Struct({ ts: Schema.Number }),\n})\nexport type SystemHeartbeatEvent = typeof SystemHeartbeatEvent.Type\n\n/** The canonical local Dolt head advanced after a background remote pull. */\nexport const BeadsFreshnessChangedEvent = Schema.Struct({\n type: Schema.Literal(\"beads.freshness_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n projectKey: Schema.String,\n localHead: Schema.String,\n lastSyncedAt: Schema.String,\n }),\n})\nexport type BeadsFreshnessChangedEvent = typeof BeadsFreshnessChangedEvent.Type\n\n// ─── Agent Events ─────────────────────────────────────────────────────────────\n\n/** Replaces socket.io `agents:changed` (event: 'started') */\nexport const AgentStartedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, issueId: IssueId, agent: AgentSnapshot }),\n})\nexport type AgentStartedEvent = typeof AgentStartedEvent.Type\n\n/** Replaces socket.io `agents:changed` (event: 'stopped') */\nexport const AgentStoppedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.stopped\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, issueId: IssueId, sessionId: Schema.optional(Schema.String) }),\n})\nexport type AgentStoppedEvent = typeof AgentStoppedEvent.Type\n\nexport const AgentHeartbeatDeadEvent = Schema.Struct({\n type: Schema.Literal(\"agent.heartbeat_dead\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, issueId: Schema.optional(IssueId), sessionId: Schema.optional(Schema.String) }),\n})\nexport type AgentHeartbeatDeadEvent = typeof AgentHeartbeatDeadEvent.Type\n\n/** Role lifecycle — work agent completed implementation and is ready for review. */\nexport const WorkCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"work.completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, agentId: Schema.optional(AgentId) }),\n})\nexport type WorkCompletedEvent = typeof WorkCompletedEvent.Type\n\n/** Role lifecycle — generic agent completion signal, normalized by Cloister by role. */\nexport const AgentCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, agentId: Schema.optional(AgentId), role: Schema.optional(Role) }),\n})\nexport type AgentCompletedEvent = typeof AgentCompletedEvent.Type\n\n/** Role lifecycle — review approved the branch and testing should start. */\nexport const ReviewApprovedEvent = Schema.Struct({\n type: Schema.Literal(\"review.approved\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type ReviewApprovedEvent = typeof ReviewApprovedEvent.Type\n\n/** Role lifecycle — tests passed and shipping should prepare the branch. */\nexport const TestPassedEvent = Schema.Struct({\n type: Schema.Literal(\"test.passed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type TestPassedEvent = typeof TestPassedEvent.Type\n\n/** Replaces socket.io `godview:status-change` */\nexport const AgentStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n issueId: Schema.optional(IssueId),\n status: AgentStatus,\n previousStatus: Schema.optional(AgentStatus),\n hasLiveTmuxSession: Schema.optional(Schema.Boolean),\n stoppedByUser: Schema.optional(Schema.Boolean),\n stoppedByPause: Schema.optional(Schema.Boolean),\n paused: Schema.optional(Schema.Boolean),\n pausedReason: Schema.optional(Schema.NullOr(Schema.String)),\n pausedAt: Schema.optional(Schema.NullOr(Schema.String)),\n troubled: Schema.optional(Schema.Boolean),\n troubledAt: Schema.optional(Schema.NullOr(Schema.String)),\n consecutiveFailures: Schema.optional(Schema.Number),\n firstFailureInRunAt: Schema.optional(Schema.NullOr(Schema.String)),\n lastFailureAt: Schema.optional(Schema.NullOr(Schema.String)),\n lastFailureReason: Schema.optional(Schema.NullOr(Schema.String)),\n lastFailureNextRetryAt: Schema.optional(Schema.NullOr(Schema.String)),\n kickoffDelivered: Schema.optional(Schema.Boolean),\n hostOverride: Schema.optional(Schema.Boolean),\n role: Schema.optional(Role),\n model: Schema.optional(Schema.String),\n workspace: Schema.optional(Schema.String),\n sessionId: Schema.optional(Schema.String),\n lastActivity: Schema.optional(Schema.String),\n lastResumeAt: Schema.optional(Schema.String),\n stoppedAt: Schema.optional(Schema.String),\n branch: Schema.optional(Schema.String),\n costSoFar: Schema.optional(Schema.Number),\n phase: Schema.optional(Schema.String),\n workType: Schema.optional(Schema.String),\n roleRunHead: Schema.optional(Schema.String),\n flywheelRunId: Schema.optional(Schema.String),\n reviewSubRole: Schema.optional(Schema.String),\n reviewRunId: Schema.optional(Schema.String),\n reviewOutputPath: Schema.optional(Schema.String),\n reviewSynthesisAgentId: Schema.optional(Schema.String),\n reviewDeadlineAt: Schema.optional(Schema.String),\n reviewMonitorSignaled: Schema.optional(Schema.String),\n reviewRetryAttempt: Schema.optional(Schema.Number),\n inspectSubRole: Schema.optional(Schema.String),\n deliveryMethod: Schema.optional(Schema.String),\n supervisorEnabled: Schema.optional(Schema.Boolean),\n channelsEnabled: Schema.optional(Schema.Boolean),\n }),\n})\nexport type AgentStatusChangedEvent = typeof AgentStatusChangedEvent.Type\n\n/** Replaces socket.io `godview:agent-output` */\nexport const AgentOutputReceivedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.output_received\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, lines: Schema.Array(Schema.String) }),\n})\nexport type AgentOutputReceivedEvent = typeof AgentOutputReceivedEvent.Type\n\n/** New — agent enrichment fields updated (PAN-440) */\nexport const AgentEnrichmentChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.enrichment_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n role: Schema.optional(Role),\n // Optional because this event type predates these fields (PAN-440). The event\n // store is append-only, so older persisted events lack them — a required schema\n // makes those events fail replay decode (\"Missing key\").\n hasPendingQuestion: Schema.optional(Schema.Boolean),\n pendingQuestionCount: Schema.optional(Schema.Number),\n pendingQuestionPrompt: Schema.optional(Schema.String),\n pendingQuestionReason: Schema.optional(Schema.String),\n // PAN-1520 — unified pending-input surfaces\n pendingInputCount: Schema.optional(Schema.Number),\n pendingInputKinds: Schema.optional(Schema.Array(Schema.String)),\n pendingAskUserQuestion: Schema.optional(Schema.Struct({\n toolUseId: Schema.String,\n askedAt: Schema.String,\n questions: Schema.Array(Schema.Struct({\n question: Schema.String,\n header: Schema.optional(Schema.String),\n multiSelect: Schema.optional(Schema.Boolean),\n options: Schema.Array(Schema.Struct({\n label: Schema.String,\n description: Schema.optional(Schema.String),\n })),\n })),\n })),\n // PAN-1520 (FR-1) — pending ExitPlanMode plan payload for the approval modal.\n pendingProposedPlan: Schema.optional(Schema.Struct({\n toolUseId: Schema.String,\n askedAt: Schema.String,\n plan: Schema.String,\n })),\n resolution: Schema.optional(AgentResolution),\n resolutionCount: Schema.optional(Schema.Number),\n }),\n})\nexport type AgentEnrichmentChangedEvent = typeof AgentEnrichmentChangedEvent.Type\n\n/** New — agent created in database */\nexport const AgentCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ agentId: AgentId, issueId: IssueId, agent: AgentSnapshot }),\n})\nexport type AgentCreatedEvent = typeof AgentCreatedEvent.Type\n\n// ─── Agent Runtime Events (PAN-800) ───────────────────────────────────────────\n// Canonical per-tool-call runtime signals. Fold into ReadModelState.agentRuntimeById\n// via the shared reducer. Server AgentStateService ref is derived from the same fold.\n\nexport const AgentActivityChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.activity_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n activity: Activity,\n currentTool: Schema.optional(Schema.String),\n }),\n})\nexport type AgentActivityChangedEvent = typeof AgentActivityChangedEvent.Type\n\nexport const AgentThinkingStartedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.thinking_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n lastToolAt: Schema.String,\n }),\n})\nexport type AgentThinkingStartedEvent = typeof AgentThinkingStartedEvent.Type\n\nexport const AgentThinkingStoppedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.thinking_stopped\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n resolvedBy: Schema.Literals([\"tool\", \"waiting\", \"idle\", \"stopped\"]),\n }),\n})\nexport type AgentThinkingStoppedEvent = typeof AgentThinkingStoppedEvent.Type\n\nexport const AgentWaitingStartedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.waiting_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n reason: WaitingReason,\n message: Schema.optional(Schema.String),\n }),\n})\nexport type AgentWaitingStartedEvent = typeof AgentWaitingStartedEvent.Type\n\nexport const AgentWaitingClearedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.waiting_cleared\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n clearedBy: Schema.Literals([\"user_response\", \"timeout\", \"stopped\", \"tool_resumed\"]),\n }),\n})\nexport type AgentWaitingClearedEvent = typeof AgentWaitingClearedEvent.Type\n\nexport const AgentPermissionRequestedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.permission_requested\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: ChannelPermissionRequestSnapshot,\n})\nexport type AgentPermissionRequestedEvent = typeof AgentPermissionRequestedEvent.Type\n\nexport const AgentPermissionResolvedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.permission_resolved\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n requestId: Schema.String,\n agentId: AgentId,\n issueId: Schema.optional(IssueId),\n behavior: ClaudeChannelPermissionBehavior,\n }),\n})\nexport type AgentPermissionResolvedEvent = typeof AgentPermissionResolvedEvent.Type\n\nexport const AgentMessageReceivedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.message_received\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n direction: Schema.Literals([\"to_agent\", \"from_agent\"]),\n source: Schema.Literals([\"user\", \"cloister\", \"specialist\", \"automated\"]),\n }),\n})\nexport type AgentMessageReceivedEvent = typeof AgentMessageReceivedEvent.Type\n\nexport const AgentChannelReplyEvent = Schema.Struct({\n type: Schema.Literal(\"agent.channel_reply\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n reply: AgentChannelReply,\n }),\n})\nexport type AgentChannelReplyEvent = typeof AgentChannelReplyEvent.Type\n\nexport const AgentModelSetEvent = Schema.Struct({\n type: Schema.Literal(\"agent.model_set\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n model: Schema.String,\n claudeSessionId: Schema.optional(Schema.NullOr(Schema.String)),\n sessionModel: Schema.optional(Schema.String),\n sessionHarness: Schema.optional(Schema.String),\n }),\n})\nexport type AgentModelSetEvent = typeof AgentModelSetEvent.Type\n\nexport const AgentCurrentIssueSetEvent = Schema.Struct({\n type: Schema.Literal(\"agent.current_issue_set\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n currentIssue: Schema.optional(IssueId),\n }),\n})\nexport type AgentCurrentIssueSetEvent = typeof AgentCurrentIssueSetEvent.Type\n\nexport const AgentContextSaturationChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.context_saturation_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n contextSaturatedAt: Schema.optional(Schema.String),\n }),\n})\nexport type AgentContextSaturationChangedEvent = typeof AgentContextSaturationChangedEvent.Type\n\nexport const AgentResolutionChangedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.resolution_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n resolution: AgentResolution,\n resolutionCount: Schema.Number,\n }),\n})\nexport type AgentResolutionChangedEvent = typeof AgentResolutionChangedEvent.Type\n\n/**\n * Bootstrap-only event emitted by AgentStateService when it seeds a runtime\n * snapshot during bootstrap (reconstruction from sources, PAN-1920). Not\n * emitted by hooks.\n */\nexport const AgentStateRestoredEvent = Schema.Struct({\n type: Schema.Literal(\"agent.state_restored\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n snapshot: AgentRuntimeSnapshot,\n }),\n})\nexport type AgentStateRestoredEvent = typeof AgentStateRestoredEvent.Type\n\n/** Emitted when a turn diff checkpoint is captured and diff computed */\nexport const AgentTurnDiffCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"agent.turn_diff_completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n turnId: Schema.String,\n completedAt: Schema.String,\n files: Schema.Array(Schema.Struct({\n path: Schema.String,\n kind: Schema.optional(Schema.String),\n additions: Schema.optional(Schema.Number),\n deletions: Schema.optional(Schema.Number),\n })),\n checkpointRef: Schema.optional(Schema.String),\n assistantMessageId: Schema.optional(Schema.String),\n checkpointTurnCount: Schema.optional(Schema.Number),\n }),\n})\nexport type AgentTurnDiffCompletedEvent = typeof AgentTurnDiffCompletedEvent.Type\n\n// ─── Planning Events ──────────────────────────────────────────────────────────\n\n/** Replaces socket.io `planning:started` */\nexport const PlanningStartedEvent = Schema.Struct({\n type: Schema.Literal(\"planning.started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, sessionName: Schema.String, harness: Schema.optional(Schema.String) }),\n})\nexport type PlanningStartedEvent = typeof PlanningStartedEvent.Type\n\n/** Replaces socket.io `planning:failed` */\nexport const PlanningFailedEvent = Schema.Struct({\n type: Schema.Literal(\"planning.failed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, error: Schema.String }),\n})\nexport type PlanningFailedEvent = typeof PlanningFailedEvent.Type\n\n/** Replaces socket.io `planning:sync` */\nexport const PlanningSyncEvent = Schema.Struct({\n type: Schema.Literal(\"planning.sync\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n status: Schema.String,\n progress: Schema.optional(Schema.Number),\n message: Schema.optional(Schema.String),\n }),\n})\nexport type PlanningSyncEvent = typeof PlanningSyncEvent.Type\n\n// ─── Plan Item Events ─────────────────────────────────────────────────────────\n\n/** Replaces socket.io `plan:item-status-changed` */\nexport const PlanItemStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"plan.item_status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, itemId: Schema.String, status: Schema.String }),\n})\nexport type PlanItemStatusChangedEvent = typeof PlanItemStatusChangedEvent.Type\n\n/** Replaces socket.io `plan:subitem-status-changed` */\nexport const PlanSubitemStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"plan.subitem_status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n itemId: Schema.String,\n subItemId: Schema.String,\n status: Schema.String,\n }),\n})\nexport type PlanSubitemStatusChangedEvent = typeof PlanSubitemStatusChangedEvent.Type\n\n/** Replaces socket.io `plan:items-unblocked` */\nexport const PlanItemsUnblockedEvent = Schema.Struct({\n type: Schema.Literal(\"plan.items_unblocked\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, items: Schema.Array(Schema.String) }),\n})\nexport type PlanItemsUnblockedEvent = typeof PlanItemsUnblockedEvent.Type\n\n// ─── Pipeline / Merge Events ──────────────────────────────────────────────────\n\n/** Replaces socket.io `pipeline:status` */\nexport const PipelineStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, status: ReviewStatusSnapshot }),\n})\nexport type PipelineStatusChangedEvent = typeof PipelineStatusChangedEvent.Type\n\n/** Replaces socket.io `merge:ready` */\nexport const MergeReadyEvent = Schema.Struct({\n type: Schema.Literal(\"merge.ready\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type MergeReadyEvent = typeof MergeReadyEvent.Type\n\n/** New — review status changed */\nexport const ReviewStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"review.status_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, status: ReviewStatusSnapshot }),\n})\nexport type ReviewStatusChangedEvent = typeof ReviewStatusChangedEvent.Type\n\n/** New — review specialist dispatched */\nexport const PipelineReviewStartedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.review-started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type PipelineReviewStartedEvent = typeof PipelineReviewStartedEvent.Type\n\n/** New — review specialist finished (passed or failed) */\nexport const PipelineReviewCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.review-completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, passed: Schema.Boolean }),\n})\nexport type PipelineReviewCompletedEvent = typeof PipelineReviewCompletedEvent.Type\n\n/** New — test specialist dispatched */\nexport const PipelineTestStartedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.test-started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type PipelineTestStartedEvent = typeof PipelineTestStartedEvent.Type\n\n/** New — test specialist finished (passed or failed) */\nexport const PipelineTestCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.test-completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, passed: Schema.Boolean }),\n})\nexport type PipelineTestCompletedEvent = typeof PipelineTestCompletedEvent.Type\n\n/** New — verification gate dispatched (review-pipeline verify step) */\nexport const PipelineVerificationStartedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.verification-started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type PipelineVerificationStartedEvent = typeof PipelineVerificationStartedEvent.Type\n\n/** New — verification gate failed (carries failedCheck for gate failures, message for infra errors) */\nexport const PipelineVerificationFailedEvent = Schema.Struct({\n type: Schema.Literal(\"pipeline.verification-failed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n failedCheck: Schema.optional(Schema.String),\n message: Schema.optional(Schema.String),\n }),\n})\nexport type PipelineVerificationFailedEvent = typeof PipelineVerificationFailedEvent.Type\n\n/** New — issue lifecycle transition (single source: IssueLifecycle.transitionTo).\n * `state` stays an open string so new server-side lifecycle states can never\n * poison the domain-event stream (the failure mode behind this event's addition). */\nexport const IssueTransitionedEvent = Schema.Struct({\n type: Schema.Literal(\"issue.transitioned\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, state: Schema.String }),\n})\nexport type IssueTransitionedEvent = typeof IssueTransitionedEvent.Type\n\nexport const OperatorInterventionEvent = Schema.Struct({\n type: Schema.Literal(\"operator.intervention\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n kind: Schema.Literals([\"tell\", \"pause\", \"restart\", \"manual_edit\", \"deep_wipe\", \"unpause\", \"untroubled\"]),\n source: Schema.String,\n }),\n})\nexport type OperatorInterventionEvent = typeof OperatorInterventionEvent.Type\n\nexport const LinearMcpAuthRequiredEvent = Schema.Struct({\n type: Schema.Literal(\"linear_mcp_auth.required\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: Schema.String,\n issueId: Schema.NullOr(Schema.String),\n authUrl: Schema.NullOr(Schema.String),\n expiresAt: Schema.NullOr(Schema.String),\n }),\n})\nexport type LinearMcpAuthRequiredEvent = typeof LinearMcpAuthRequiredEvent.Type\n\nexport const LinearMcpAuthHealthyEvent = Schema.Struct({\n type: Schema.Literal(\"linear_mcp_auth.healthy\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: Schema.String,\n issueId: Schema.NullOr(Schema.String),\n source: Schema.Literals([\"hook\", \"operator\"]),\n }),\n})\nexport type LinearMcpAuthHealthyEvent = typeof LinearMcpAuthHealthyEvent.Type\n\nexport const LinearMcpAuthNotifiedEvent = Schema.Struct({\n type: Schema.Literal(\"linear_mcp_auth.notified\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: Schema.String,\n issueId: Schema.NullOr(Schema.String),\n // 'delivering' is the durable pre-delivery claim (PAN-2997 review cycle\n // 3): it makes the wake crash-idempotent — a crash after the claim never\n // replays the delivery at boot recovery. lifecycleId correlates this\n // record to the lifecycle whose wake pass produced it; absent only in\n // events written before PAN-2997 review cycle 2.\n outcome: Schema.Literals([\"delivering\", \"delivered\", \"queued\", \"failed\"]),\n lifecycleId: Schema.optional(Schema.String),\n }),\n})\nexport type LinearMcpAuthNotifiedEvent = typeof LinearMcpAuthNotifiedEvent.Type\n\nexport const LinearMcpAuthCallbackRelayedEvent = Schema.Struct({\n type: Schema.Literal(\"linear_mcp_auth.callback_relayed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: Schema.String,\n issueId: Schema.NullOr(Schema.String),\n }),\n})\nexport type LinearMcpAuthCallbackRelayedEvent = typeof LinearMcpAuthCallbackRelayedEvent.Type\n\nexport const SubstrateBugFiledEvent = Schema.Struct({\n type: Schema.Literal(\"substrate.bug_filed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n runId: Schema.optional(Schema.String),\n filedBy: Schema.Literals([\"agent\", \"operator\"]),\n discoveredIn: Schema.optional(IssueId),\n severity: Schema.Literals([\"P0\", \"P1\", \"P2\"]),\n }),\n})\nexport type SubstrateBugFiledEvent = typeof SubstrateBugFiledEvent.Type\n\n/**\n * PAN-915 — reviewer session received a new prompt (spawn or resume of a\n * canonical PAN-830 session). Drives event-driven `reviewSubStatuses[role] =\n * 'running'` and tracking of `reviewSessionNames` without polling tmux.\n */\nexport const ReviewReviewerStartedEvent = Schema.Struct({\n type: Schema.Literal(\"review.reviewer_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n role: Schema.String,\n sessionName: Schema.String,\n }),\n})\nexport type ReviewReviewerStartedEvent = typeof ReviewReviewerStartedEvent.Type\n\n/**\n * PAN-915 — reviewer wrote its output file (round complete for that role).\n * Updates `reviewSubStatuses[role] = 'done'` event-driven.\n */\nexport const ReviewReviewerCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"review.reviewer_completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n role: Schema.String,\n }),\n})\nexport type ReviewReviewerCompletedEvent = typeof ReviewReviewerCompletedEvent.Type\n\n/**\n * Review specialist timeout telemetry. Emitted once per timed-out reviewer wait\n * attempt so operators can distinguish transient auto-retries from terminal\n * review failures.\n */\nexport const ReviewSpecialistTimedOutEvent = Schema.Struct({\n type: Schema.Literal(\"review.specialist.timed_out\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n role: Schema.String,\n sessionName: Schema.String,\n attempt: Schema.Number,\n maxRetries: Schema.Number,\n willRetry: Schema.Boolean,\n }),\n})\nexport type ReviewSpecialistTimedOutEvent = typeof ReviewSpecialistTimedOutEvent.Type\n\n/**\n * PAN-915 — review coordinator session spawned. Surfaces in the dashboard so\n * the kanban card can show \"review in progress\" the instant the coordinator\n * starts, not after the first reviewer finishes.\n */\nexport const ReviewCoordinatorStartedEvent = Schema.Struct({\n type: Schema.Literal(\"review.coordinator_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n sessionName: Schema.String,\n }),\n})\nexport type ReviewCoordinatorStartedEvent = typeof ReviewCoordinatorStartedEvent.Type\n\n/** Review coordinator died before writing a terminal exit marker. */\nexport const ReviewCoordinatorDiedEvent = Schema.Struct({\n type: Schema.Literal(\"review.coordinator.died\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n sessionName: Schema.String,\n reason: Schema.String,\n }),\n})\nexport type ReviewCoordinatorDiedEvent = typeof ReviewCoordinatorDiedEvent.Type\n\n// ─── Specialist Events ────────────────────────────────────────────────────────\n\nconst SpecialistLifecycleState = Schema.Literals([\"active\", \"sleeping\", \"uninitialized\"])\n\n/** New — role-backed specialist became active */\nexport const SpecialistStartedEvent = Schema.Struct({\n type: Schema.Literal(\"specialist.started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n name: Role,\n state: SpecialistLifecycleState,\n isRunning: Schema.Boolean,\n currentIssue: Schema.optional(Schema.String),\n lastWake: Schema.optional(Schema.String),\n }),\n})\nexport type SpecialistStartedEvent = typeof SpecialistStartedEvent.Type\n\n/** New — role-backed specialist completed work */\nexport const SpecialistCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"specialist.completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ name: Role, issueId: Schema.optional(IssueId) }),\n})\nexport type SpecialistCompletedEvent = typeof SpecialistCompletedEvent.Type\n\n/** New — role-backed specialist failed */\nexport const SpecialistFailedEvent = Schema.Struct({\n type: Schema.Literal(\"specialist.failed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n name: Role,\n issueId: Schema.optional(IssueId),\n error: Schema.String,\n }),\n})\nexport type SpecialistFailedEvent = typeof SpecialistFailedEvent.Type\n\n// ─── Resource Events ──────────────────────────────────────────────────────────\n\n/** Replaces socket.io `resources:updated` */\nexport const ResourcesUpdatedEvent = Schema.Struct({\n type: Schema.Literal(\"resources.updated\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ resources: ResourceStats }),\n})\nexport type ResourcesUpdatedEvent = typeof ResourcesUpdatedEvent.Type\n\nexport const SystemHealthSeverityChangedEvent = Schema.Struct({\n type: Schema.Literal(\"system.health_severity_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n previousSeverity: Schema.String,\n severity: Schema.String,\n reasons: Schema.Array(Schema.String),\n leakedSpecialistCount: Schema.Number,\n version: Schema.optional(Schema.Literal(2)),\n transitionVersion: Schema.optional(Schema.Number),\n previousState: Schema.optional(HealthState),\n state: Schema.optional(HealthState),\n reasonCodes: Schema.optional(Schema.Array(Schema.String)),\n acceptedAt: Schema.optional(Schema.String),\n }),\n})\nexport type SystemHealthSeverityChangedEvent = typeof SystemHealthSeverityChangedEvent.Type\n\n// ─── Issue Events ─────────────────────────────────────────────────────────────\n\n/** Replaces socket.io `issues:snapshot` */\nexport const IssuesSnapshotEvent = Schema.Struct({\n type: Schema.Literal(\"issues.snapshot\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issues: Schema.Array(Schema.Unknown) }),\n})\nexport type IssuesSnapshotEvent = typeof IssuesSnapshotEvent.Type\n\n/** Replaces socket.io `issues:updated` */\nexport const IssuesUpdatedEvent = Schema.Struct({\n type: Schema.Literal(\"issues.updated\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: Schema.optional(IssueId) }),\n})\nexport type IssuesUpdatedEvent = typeof IssuesUpdatedEvent.Type\n\n/** Patch a single issue's status in the read model without a full snapshot refresh. */\nexport const IssueStatusChangedEvent = Schema.Struct({\n type: Schema.Literal(\"issue.statusChanged\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n issueId: IssueId,\n status: Schema.String,\n canonicalStatus: Schema.String,\n labels: Schema.optional(Schema.Array(Schema.String)),\n }),\n})\nexport type IssueStatusChangedEvent = typeof IssueStatusChangedEvent.Type\n\n// ─── Activity Events ──────────────────────────────────────────────────────────\n\n/** Replaces socket.io `godview:activity` */\nexport const ActivityUpdatedEvent = Schema.Struct({\n type: Schema.Literal(\"activity.updated\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ events: Schema.Array(Schema.Unknown) }),\n})\nexport type ActivityUpdatedEvent = typeof ActivityUpdatedEvent.Type\n\n/** Individual activity log entry — emitted by merge-agent, cloister, specialists (PAN-520) */\nexport const ActivityEntryEvent = Schema.Struct({\n type: Schema.Literal(\"activity.entry\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n id: Schema.String,\n source: Schema.String,\n level: Schema.String,\n status: Schema.optional(Schema.Literals([\"accepted\", \"running\", \"completed\", \"failed\"])),\n command: Schema.optional(Schema.String),\n message: Schema.String,\n details: Schema.optional(Schema.String),\n output: Schema.optional(Schema.String),\n issueId: Schema.optional(IssueId),\n /** Dashboard route the feed navigates to on click (e.g. /conv/<name>, /flywheel). */\n link: Schema.optional(Schema.String),\n /** PAN-1862 (FR-12): fire a desktop notification for this entry (operator-facing warnings). */\n desktop: Schema.optional(Schema.Boolean),\n }),\n})\nexport type ActivityEntryEvent = typeof ActivityEntryEvent.Type\n\n/** Detailed activity log — auto-generated from domain state changes */\nexport const ActivityDetailedEvent = Schema.Struct({\n type: Schema.Literal(\"activity.detailed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n id: Schema.String,\n source: Schema.String,\n level: Schema.String,\n message: Schema.String,\n details: Schema.optional(Schema.String),\n issueId: Schema.optional(IssueId),\n triggeringEvent: Schema.optional(Schema.String),\n }),\n})\nexport type ActivityDetailedEvent = typeof ActivityDetailedEvent.Type\n\n/** TTS activity log — upleveled utterances for text-to-speech */\nexport const ActivityTtsEvent = Schema.Struct({\n type: Schema.Literal(\"activity.tts\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n id: Schema.String,\n utterance: Schema.String,\n priority: Schema.optional(Schema.Number),\n issueId: Schema.optional(IssueId),\n source: Schema.optional(Schema.String),\n eventType: Schema.optional(Schema.String),\n }),\n})\nexport type ActivityTtsEvent = typeof ActivityTtsEvent.Type\n\n// ─── Dashboard Lifecycle Events ─────────────────────────────────────────────────\n\n/** Dashboard is restarting (post-merge deploy, pan restart, etc.) (PAN-520) */\nexport const DashboardLifecycleStartedEvent = Schema.Struct({\n type: Schema.Literal(\"dashboard.lifecycle_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n reason: Schema.String,\n issueId: Schema.optional(IssueId),\n trigger: Schema.String,\n }),\n})\nexport type DashboardLifecycleStartedEvent = typeof DashboardLifecycleStartedEvent.Type\n\n/** Dashboard restarted successfully after a lifecycle event (PAN-520) */\nexport const DashboardLifecycleCompletedEvent = Schema.Struct({\n type: Schema.Literal(\"dashboard.lifecycle_completed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n reason: Schema.String,\n issueId: Schema.optional(IssueId),\n durationMs: Schema.Number,\n }),\n})\nexport type DashboardLifecycleCompletedEvent = typeof DashboardLifecycleCompletedEvent.Type\n\n/** Dashboard restart failed (PAN-520) */\nexport const DashboardLifecycleFailedEvent = Schema.Struct({\n type: Schema.Literal(\"dashboard.lifecycle_failed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n reason: Schema.String,\n issueId: Schema.optional(IssueId),\n error: Schema.String,\n }),\n})\nexport type DashboardLifecycleFailedEvent = typeof DashboardLifecycleFailedEvent.Type\n\n/** Replaces socket.io `shadow:inference-update` */\nexport const ShadowInferenceUpdateEvent = Schema.Struct({\n type: Schema.Literal(\"shadow.inference_update\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, content: Schema.String }),\n})\nexport type ShadowInferenceUpdateEvent = typeof ShadowInferenceUpdateEvent.Type\n\n// ─── Workspace Lifecycle Events ───────────────────────────────────────────────\n\n/** New — workspace worktree created (before planning.started) */\nexport const WorkspaceCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, workspacePath: Schema.String }),\n})\nexport type WorkspaceCreatedEvent = typeof WorkspaceCreatedEvent.Type\n\n/** New — deep-wipe started (transitional state for UI spinner) */\nexport const WorkspaceWipeStartedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.wipe_started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type WorkspaceWipeStartedEvent = typeof WorkspaceWipeStartedEvent.Type\n\n/** New — deep-wipe completed, workspace fully destroyed */\nexport const WorkspaceDestroyedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.destroyed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type WorkspaceDestroyedEvent = typeof WorkspaceDestroyedEvent.Type\n\n/** New — cleanup-workspace completed, workspace directory removed */\nexport const WorkspaceDeletedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.deleted\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId }),\n})\nexport type WorkspaceDeletedEvent = typeof WorkspaceDeletedEvent.Type\n\n/** New — planning aborted, workspace returned to idle state */\nexport const WorkspaceAbortedEvent = Schema.Struct({\n type: Schema.Literal(\"workspace.aborted\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ issueId: IssueId, sessionName: Schema.optional(Schema.String) }),\n})\nexport type WorkspaceAbortedEvent = typeof WorkspaceAbortedEvent.Type\n\n// ─── Memory Events ────────────────────────────────────────────────────────────\n\nexport const MemoryObservationCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"memory.observation_created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ observation: MemoryObservation }),\n})\nexport type MemoryObservationCreatedEvent = typeof MemoryObservationCreatedEvent.Type\n\nexport const MemoryStatusUpdatedEvent = Schema.Struct({\n type: Schema.Literal(\"memory.status_updated\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n identity: Schema.Struct({ projectId: Schema.String, workspaceId: Schema.String, issueId: IssueId }),\n status: MemoryStatus,\n previousStatus: Schema.optional(MemoryStatus),\n }),\n})\nexport type MemoryStatusUpdatedEvent = typeof MemoryStatusUpdatedEvent.Type\n\nexport const MemoryRollupTriggeredEvent = Schema.Struct({\n type: Schema.Literal(\"memory.rollup_triggered\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n projectId: Schema.String,\n workspaceId: Schema.String,\n issueId: IssueId,\n pendingCount: Schema.Number,\n turnIds: Schema.Array(Schema.String),\n threshold: Schema.Number,\n }),\n})\nexport type MemoryRollupTriggeredEvent = typeof MemoryRollupTriggeredEvent.Type\n\nexport const MemoryResetMarkerCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"memory.reset_marker_created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({ marker: ResetMarker }),\n})\nexport type MemoryResetMarkerCreatedEvent = typeof MemoryResetMarkerCreatedEvent.Type\n\nexport const MemoryHealthChangedEvent = Schema.Struct({\n type: Schema.Literal(\"memory.health_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n projectId: Schema.String,\n issueId: IssueId,\n status: Schema.Literals([\"healthy\", \"degraded\", \"failing\"]),\n reason: Schema.NullOr(Schema.String),\n // Human-readable cause of the most recent failure (e.g. the provider error\n // message). Distinct from `reason`, which is a coarse machine code like\n // \"extraction-failed\". Surfaced verbatim in the UI so the operator can see\n // *why* memory extraction is failing without reading server logs.\n detail: Schema.optional(Schema.String),\n ragDecision: Schema.optional(RagDecision),\n }),\n})\nexport type MemoryHealthChangedEvent = typeof MemoryHealthChangedEvent.Type\n\n// ─── Cost Events ──────────────────────────────────────────────────────────────\n\n/** New — cost event recorded in the store */\nexport const CostEventRecordedEvent = Schema.Struct({\n type: Schema.Literal(\"cost.event_recorded\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n agentId: AgentId,\n issueId: IssueId,\n cost: Schema.Number,\n inputTokens: Schema.Number,\n outputTokens: Schema.Number,\n }),\n})\nexport type CostEventRecordedEvent = typeof CostEventRecordedEvent.Type\n\n// ─── Conversation Events ──────────────────────────────────────────────────────\n\n/** Emitted (in-memory only, not persisted) when a Overdeck-native compaction starts or completes. */\nexport const ConversationCompactingChangedEvent = Schema.Struct({\n type: Schema.Literal(\"conversation.compacting_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n conversationName: Schema.String,\n compacting: Schema.Boolean,\n }),\n})\nexport type ConversationCompactingChangedEvent = typeof ConversationCompactingChangedEvent.Type\n\n/** Emitted (in-memory only) when a new conversation row is created, so the\n * sidebar list can refresh immediately instead of waiting for its poll tick. */\nexport const ConversationCreatedEvent = Schema.Struct({\n type: Schema.Literal(\"conversation.created\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n conversationName: Schema.String,\n }),\n})\nexport type ConversationCreatedEvent = typeof ConversationCreatedEvent.Type\n\n/** Emitted (in-memory only) when a conversation title changes, so the sidebar\n * list can refresh immediately instead of waiting for its poll tick. */\nexport const ConversationTitleChangedEvent = Schema.Struct({\n type: Schema.Literal(\"conversation.title_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n conversationName: Schema.String,\n title: Schema.String,\n titleSource: Schema.String,\n }),\n})\nexport type ConversationTitleChangedEvent = typeof ConversationTitleChangedEvent.Type\n\n/** Emitted (in-memory only) when a PermissionRequest hook fires or resolves for a conversation. */\nexport const ConversationPermissionChangedEvent = Schema.Struct({\n type: Schema.Literal(\"conversation.permission_changed\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n conversationName: Schema.String,\n waiting: Schema.Boolean,\n toolName: Schema.optional(Schema.String),\n }),\n})\nexport type ConversationPermissionChangedEvent = typeof ConversationPermissionChangedEvent.Type\n\n// ─── Conversation Discovery Events (PAN-457) ──────────────────────────────────\n\n/** Scan started */\nexport const ScanStartedEvent = Schema.Struct({\n type: Schema.Literal(\"scan.started\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n mode: Schema.Literals(['targeted', 'watched', 'system']),\n dirs: Schema.Array(Schema.String),\n }),\n})\nexport type ScanStartedEvent = typeof ScanStartedEvent.Type\n\n/** Scan progress tick */\nexport const ScanProgressEvent = Schema.Struct({\n type: Schema.Literal(\"scan.progress\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n dirsProcessed: Schema.Number,\n dirsTotal: Schema.Number,\n sessionsFound: Schema.Number,\n elapsedMs: Schema.Number,\n }),\n})\nexport type ScanProgressEvent = typeof ScanProgressEvent.Type\n\n/** Scan completed */\nexport const ScanCompleteEvent = Schema.Struct({\n type: Schema.Literal(\"scan.complete\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n inserted: Schema.Number,\n updated: Schema.Number,\n skipped: Schema.Number,\n errors: Schema.Number,\n durationMs: Schema.Number,\n }),\n})\nexport type ScanCompleteEvent = typeof ScanCompleteEvent.Type\n\n/** Per-session enrichment progress */\nexport const EnrichProgressEvent = Schema.Struct({\n type: Schema.Literal(\"enrich.progress\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n sessionId: Schema.Number,\n level: Schema.Number,\n model: Schema.String,\n cost: Schema.Number,\n success: Schema.Boolean,\n error: Schema.optional(Schema.String),\n }),\n})\nexport type EnrichProgressEvent = typeof EnrichProgressEvent.Type\n\n/** Enrichment batch completed */\nexport const EnrichCompleteEvent = Schema.Struct({\n type: Schema.Literal(\"enrich.complete\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n processed: Schema.Number,\n totalCost: Schema.Number,\n failures: Schema.Number,\n durationMs: Schema.Number,\n }),\n})\nexport type EnrichCompleteEvent = typeof EnrichCompleteEvent.Type\n\n/** Per-session embedding progress */\nexport const EmbedProgressEvent = Schema.Struct({\n type: Schema.Literal(\"embed.progress\"),\n sequence: SequenceNumber,\n timestamp: Schema.String,\n payload: Schema.Struct({\n sessionId: Schema.Number,\n model: Schema.String,\n success: Schema.Boolean,\n error: Schema.optional(Schema.String),\n }),\n})\nexport type EmbedProgressEvent = typeof EmbedProgressEvent.Type\n\n// ─── Union ────────────────────────────────────────────────────────────────────\n\n/** All domain events — the shape streamed via subscribeDomainEvents RPC */\nexport const DomainEvent = Schema.Union([\n SystemHeartbeatEvent,\n BeadsFreshnessChangedEvent,\n AgentCreatedEvent,\n AgentEnrichmentChangedEvent,\n AgentStartedEvent,\n AgentStoppedEvent,\n AgentHeartbeatDeadEvent,\n WorkCompletedEvent,\n AgentCompletedEvent,\n ReviewApprovedEvent,\n TestPassedEvent,\n AgentStatusChangedEvent,\n AgentOutputReceivedEvent,\n // PAN-800 runtime events\n AgentActivityChangedEvent,\n AgentThinkingStartedEvent,\n AgentThinkingStoppedEvent,\n AgentWaitingStartedEvent,\n AgentWaitingClearedEvent,\n AgentPermissionRequestedEvent,\n AgentPermissionResolvedEvent,\n AgentMessageReceivedEvent,\n AgentChannelReplyEvent,\n AgentModelSetEvent,\n AgentCurrentIssueSetEvent,\n AgentContextSaturationChangedEvent,\n AgentResolutionChangedEvent,\n AgentStateRestoredEvent,\n AgentTurnDiffCompletedEvent,\n PlanningStartedEvent,\n PlanningFailedEvent,\n PlanningSyncEvent,\n PlanItemStatusChangedEvent,\n PlanSubitemStatusChangedEvent,\n PlanItemsUnblockedEvent,\n PipelineStatusChangedEvent,\n MergeReadyEvent,\n ReviewStatusChangedEvent,\n PipelineReviewStartedEvent,\n PipelineReviewCompletedEvent,\n PipelineTestStartedEvent,\n PipelineTestCompletedEvent,\n PipelineVerificationStartedEvent,\n PipelineVerificationFailedEvent,\n IssueTransitionedEvent,\n OperatorInterventionEvent,\n LinearMcpAuthRequiredEvent,\n LinearMcpAuthHealthyEvent,\n LinearMcpAuthNotifiedEvent,\n LinearMcpAuthCallbackRelayedEvent,\n SubstrateBugFiledEvent,\n ReviewReviewerStartedEvent,\n ReviewReviewerCompletedEvent,\n ReviewSpecialistTimedOutEvent,\n ReviewCoordinatorStartedEvent,\n ReviewCoordinatorDiedEvent,\n SpecialistStartedEvent,\n SpecialistCompletedEvent,\n SpecialistFailedEvent,\n ResourcesUpdatedEvent,\n SystemHealthSeverityChangedEvent,\n IssuesSnapshotEvent,\n IssuesUpdatedEvent,\n IssueStatusChangedEvent,\n ActivityUpdatedEvent,\n ActivityEntryEvent,\n ActivityDetailedEvent,\n ActivityTtsEvent,\n ShadowInferenceUpdateEvent,\n MemoryObservationCreatedEvent,\n MemoryStatusUpdatedEvent,\n MemoryRollupTriggeredEvent,\n MemoryResetMarkerCreatedEvent,\n MemoryHealthChangedEvent,\n CostEventRecordedEvent,\n WorkspaceCreatedEvent,\n WorkspaceWipeStartedEvent,\n WorkspaceDestroyedEvent,\n WorkspaceDeletedEvent,\n WorkspaceAbortedEvent,\n DashboardLifecycleStartedEvent,\n DashboardLifecycleCompletedEvent,\n DashboardLifecycleFailedEvent,\n ConversationCompactingChangedEvent,\n ConversationCreatedEvent,\n ConversationTitleChangedEvent,\n ConversationPermissionChangedEvent,\n ScanStartedEvent,\n ScanProgressEvent,\n ScanCompleteEvent,\n EnrichProgressEvent,\n EnrichCompleteEvent,\n EmbedProgressEvent,\n])\nexport type DomainEvent = typeof DomainEvent.Type\n","import { Schema } from \"effect\"\n\nexport const EDITORS = [\n { id: \"cursor\", label: \"Cursor\", command: \"cursor\", supportsGoto: true },\n { id: \"windsurf\", label: \"Windsurf\", command: \"windsurf\", supportsGoto: true },\n { id: \"trae\", label: \"Trae\", command: \"trae\", supportsGoto: true },\n { id: \"kiro\", label: \"Kiro\", command: \"kiro\", supportsGoto: true },\n { id: \"vscode\", label: \"VS Code\", command: \"code\", supportsGoto: true },\n { id: \"vscode-insiders\", label: \"VS Code Insiders\", command: \"code-insiders\", supportsGoto: true },\n { id: \"vscodium\", label: \"VSCodium\", command: \"codium\", supportsGoto: true },\n { id: \"zed\", label: \"Zed\", command: \"zed\", supportsGoto: false },\n { id: \"antigravity\", label: \"Antigravity\", command: \"agy\", supportsGoto: false },\n { id: \"idea\", label: \"IntelliJ IDEA\", command: \"idea\", supportsGoto: true },\n { id: \"aqua\", label: \"Aqua\", command: \"aqua\", supportsGoto: true },\n { id: \"clion\", label: \"CLion\", command: \"clion\", supportsGoto: true },\n { id: \"datagrip\", label: \"DataGrip\", command: \"datagrip\", supportsGoto: true },\n { id: \"dataspell\", label: \"DataSpell\", command: \"dataspell\", supportsGoto: true },\n { id: \"goland\", label: \"GoLand\", command: \"goland\", supportsGoto: true },\n { id: \"phpstorm\", label: \"PhpStorm\", command: \"phpstorm\", supportsGoto: true },\n { id: \"pycharm\", label: \"PyCharm\", command: \"pycharm\", supportsGoto: true },\n { id: \"rider\", label: \"Rider\", command: \"rider\", supportsGoto: true },\n { id: \"rubymine\", label: \"RubyMine\", command: \"rubymine\", supportsGoto: true },\n { id: \"rustrover\", label: \"RustRover\", command: \"rustrover\", supportsGoto: true },\n { id: \"webstorm\", label: \"WebStorm\", command: \"webstorm\", supportsGoto: true },\n { id: \"file-manager\", label: \"File Manager\", command: null, supportsGoto: false },\n] as const\n\nexport type EditorEntry = (typeof EDITORS)[number]\nexport type EditorId = EditorEntry[\"id\"]\n\nconst EDITOR_IDS: [EditorId, ...EditorId[]] = [\n \"cursor\",\n \"windsurf\",\n \"trae\",\n \"kiro\",\n \"vscode\",\n \"vscode-insiders\",\n \"vscodium\",\n \"zed\",\n \"antigravity\",\n \"idea\",\n \"aqua\",\n \"clion\",\n \"datagrip\",\n \"dataspell\",\n \"goland\",\n \"phpstorm\",\n \"pycharm\",\n \"rider\",\n \"rubymine\",\n \"rustrover\",\n \"webstorm\",\n \"file-manager\",\n]\nexport const EditorIdSchema = Schema.Literals(EDITOR_IDS)\n\nexport const OpenInEditorInput = Schema.Struct({\n cwd: Schema.String,\n editor: EditorIdSchema,\n})\nexport type OpenInEditorInput = typeof OpenInEditorInput.Type\n","import { Effect, Schema } from \"effect\"\n\nexport const FlywheelRunId = Schema.String.check(Schema.isPattern(/^RUN-\\d+$/))\nexport type FlywheelRunId = typeof FlywheelRunId.Type\n\nexport const FlywheelHttpUrl = Schema.String.check(Schema.isPattern(/^https?:\\/\\/\\S+$/i))\nexport type FlywheelHttpUrl = typeof FlywheelHttpUrl.Type\n\nexport const FlywheelHarness = Schema.Literals([\"claude-code\", \"pi\", \"ohmypi\", \"codex\", \"acp\"])\nexport interface FlywheelOrchestrator {\n harness: typeof FlywheelHarness.Type\n model: string\n effort: \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\"\n ctxPercent: number\n}\n\nexport const FlywheelEffort = Schema.Literals([\"low\", \"medium\", \"high\", \"xhigh\", \"max\"])\nexport const FlywheelOrchestrator = Schema.Struct({\n harness: FlywheelHarness,\n model: Schema.String,\n effort: FlywheelEffort,\n ctxPercent: Schema.Number,\n})\n\n/**\n * Which projects the Flywheel orchestrator inventories. PAN-1696: this is the\n * ORCHESTRATOR's scope, not the merge/UAT trains' — those assemble per project\n * independent of it. Mirrors FlywheelScope in src/lib/config-yaml/schema.ts.\n */\nexport type FlywheelScopeValue = 'pan-only' | 'all-tracked-projects'\n\nexport const FlywheelScope = Schema.Literals(['pan-only', 'all-tracked-projects'])\n\nexport interface FlywheelHeadline {\n bugsFixed: number\n swarmItemsMerged: number\n swarmItemsTotal: number\n prsMerged: number\n awaitingUat: number\n}\n\nexport const FlywheelHeadline = Schema.Struct({\n bugsFixed: Schema.Number,\n swarmItemsMerged: Schema.Number,\n swarmItemsTotal: Schema.Number,\n prsMerged: Schema.Number,\n awaitingUat: Schema.Number,\n})\n\n/**\n * Pipeline verbs — display state only. They no longer gate the merge queue.\n *\n * History worth keeping (PAN-1736 / PAN-1759): the merge queue used to be\n * derived by filtering these verbs, treating only \"shipping\" or \"merging\" as\n * \"at the merge gate\". Any other verb on an issue that was ready_for_merge in\n * the review DB silently dropped it from the queue and from UAT batch\n * assembly — RUN-18 shipped an empty queue with five ready issues exactly that\n * way — and the queue existed only while a run was emitting a pipeline at all.\n *\n * PAN-1696 removed that coupling. The ready set is now sourced from the\n * review-status records per project (`listEligibleCandidatesByProject` +\n * `computeMergeQueueFromCandidates` in src/lib/flywheel-merge-order.ts), which\n * needs no flywheel run and cannot be affected by which verb an orchestrator\n * chose to report. Adding a verb here therefore has no merge-queue consequence;\n * it only changes what the dashboard displays.\n */\nexport const FlywheelPipelineVerb = Schema.Literals([\n \"planning\",\n \"working\",\n \"reviewing\",\n \"testing\",\n \"shipping\",\n \"merging\",\n \"blocked\",\n \"parked\",\n])\n\nexport const FlywheelPipelineStatus = Schema.Literals([\n \"queued\",\n \"running\",\n \"blocked\",\n \"passed\",\n \"failed\",\n \"merged\",\n \"parked\",\n])\n\nexport interface FlywheelPipelineItem {\n issueId: string\n title: string\n verb: typeof FlywheelPipelineVerb.Type\n status: typeof FlywheelPipelineStatus.Type\n progressPercent?: number | undefined\n agentId?: string | undefined\n pr?: number | undefined\n mergeOrder?: number | undefined\n conflictsWith?: readonly string[] | undefined\n}\n\nexport const FlywheelPipelineItem = Schema.Struct({\n issueId: Schema.String,\n title: Schema.String,\n verb: FlywheelPipelineVerb,\n status: FlywheelPipelineStatus,\n progressPercent: Schema.optional(Schema.Number),\n agentId: Schema.optional(Schema.String),\n pr: Schema.optional(Schema.Number),\n mergeOrder: Schema.optional(Schema.Number),\n conflictsWith: Schema.optional(Schema.Array(Schema.String)),\n})\n\nexport const FlywheelSubstrateBugStatus = Schema.Literals([\"filed\", \"fixed\", \"workaround\"])\n\nexport interface FlywheelSubstrateBug {\n issueId: string\n title: string\n status: typeof FlywheelSubstrateBugStatus.Type\n commitSha?: string | undefined\n url?: FlywheelHttpUrl | undefined\n}\n\nexport const FlywheelSubstrateBug = Schema.Struct({\n issueId: Schema.String,\n title: Schema.String,\n status: FlywheelSubstrateBugStatus,\n commitSha: Schema.optional(Schema.String),\n url: Schema.optional(FlywheelHttpUrl),\n})\n\nexport const FlywheelAgentStatus = Schema.Literals([\n \"starting\",\n \"running\",\n \"waiting\",\n \"idle\",\n \"stopped\",\n \"error\",\n])\n\nexport interface FlywheelAgent {\n id: string\n label: string\n status: typeof FlywheelAgentStatus.Type\n issueId?: string | undefined\n role?: string | undefined\n model?: string | undefined\n ctxPercent?: number | undefined\n currentAction?: string | undefined\n}\n\nexport const FlywheelAgent = Schema.Struct({\n id: Schema.String,\n label: Schema.String,\n status: FlywheelAgentStatus,\n issueId: Schema.optional(Schema.String),\n role: Schema.optional(Schema.String),\n model: Schema.optional(Schema.String),\n ctxPercent: Schema.optional(Schema.Number),\n currentAction: Schema.optional(Schema.String),\n})\n\nexport interface FlywheelParkedItem {\n issueId: string\n title: string\n reason: string\n parkedAt?: string | undefined\n}\n\nexport const FlywheelParkedItem = Schema.Struct({\n issueId: Schema.String,\n title: Schema.String,\n reason: Schema.String,\n parkedAt: Schema.optional(Schema.String),\n})\n\nexport const FlywheelSuggestionAction = Schema.Literals([\n \"start\",\n \"resume\",\n \"plan\",\n \"review\",\n \"merge\",\n \"unblock\",\n \"park\",\n \"investigate\",\n \"wait\",\n])\nexport type FlywheelSuggestionAction = typeof FlywheelSuggestionAction.Type\n\nexport const FlywheelSuggestionPriority = Schema.Literals([\"urgent\", \"high\", \"medium\", \"low\"])\nexport type FlywheelSuggestionPriority = typeof FlywheelSuggestionPriority.Type\n\nexport interface FlywheelSuggestion {\n action: FlywheelSuggestionAction\n issueId?: string | undefined\n rationale: string\n priority: FlywheelSuggestionPriority\n filedBy?: \"agent\" | \"operator\" | undefined\n weight?: number | undefined\n weightReason?: string | undefined\n}\n\nexport const FlywheelSuggestion = Schema.Struct({\n action: FlywheelSuggestionAction,\n issueId: Schema.optional(Schema.String),\n rationale: Schema.String,\n priority: FlywheelSuggestionPriority,\n filedBy: Schema.optional(Schema.Literals([\"agent\", \"operator\"])),\n weight: Schema.optional(Schema.Number),\n weightReason: Schema.optional(Schema.String),\n})\n\nexport interface FlywheelSystemStatus {\n mainHead: string\n ramUsedMb: number\n ramTotalMb: number\n swapUsedMb: number\n swapTotalMb: number\n agentsActive: number\n agentsCap: number\n}\n\nexport const FlywheelSystemStatus = Schema.Struct({\n mainHead: Schema.String,\n ramUsedMb: Schema.Number,\n ramTotalMb: Schema.Number,\n swapUsedMb: Schema.Number,\n swapTotalMb: Schema.Number,\n agentsActive: Schema.Number,\n agentsCap: Schema.Number,\n})\n\nexport interface FlywheelOrders {\n bookId: string\n bookName: string\n landed: number\n total: number\n laneAInFlight: ReadonlyArray<string>\n laneBInFlight?: string | undefined\n drained: boolean\n}\n\nexport const FlywheelOrders = Schema.Struct({\n bookId: Schema.String,\n bookName: Schema.String,\n landed: Schema.Number,\n total: Schema.Number,\n laneAInFlight: Schema.Array(Schema.String),\n laneBInFlight: Schema.optional(Schema.String),\n drained: Schema.Boolean,\n})\n\nexport interface FlywheelStatus {\n runId: FlywheelRunId\n startedAt: string\n elapsedMs: number\n orchestrator: FlywheelOrchestrator\n headline: FlywheelHeadline\n activePipeline: ReadonlyArray<FlywheelPipelineItem>\n substrateBugs: ReadonlyArray<FlywheelSubstrateBug>\n agents: ReadonlyArray<FlywheelAgent>\n parked: ReadonlyArray<FlywheelParkedItem>\n suggestions: ReadonlyArray<FlywheelSuggestion>\n system: FlywheelSystemStatus\n openQuestions: ReadonlyArray<string>\n orders?: FlywheelOrders | undefined\n /**\n * PAN-1696: the orchestrator scope this run was actually STARTED or RESUMED\n * with, stamped server-side from the run's launch metadata. It is deliberately\n * not the live settings value: scope is baked into the run prompt at spawn, so\n * a settings change does not reach a running orchestrator until the next start\n * or resume. Optional because runs recorded before PAN-1696 have none.\n */\n scope?: FlywheelScopeValue | undefined\n ticks: number\n lastTickAt: string\n}\n\nexport const FlywheelStatus = Schema.Struct({\n runId: FlywheelRunId,\n startedAt: Schema.String,\n elapsedMs: Schema.Number,\n orchestrator: FlywheelOrchestrator,\n headline: FlywheelHeadline,\n activePipeline: Schema.Array(FlywheelPipelineItem),\n substrateBugs: Schema.Array(FlywheelSubstrateBug),\n agents: Schema.Array(FlywheelAgent),\n parked: Schema.Array(FlywheelParkedItem),\n suggestions: Schema.Array(FlywheelSuggestion).pipe(\n Schema.withDecodingDefaultKey(Effect.succeed([])),\n ),\n system: FlywheelSystemStatus,\n openQuestions: Schema.Array(Schema.String),\n orders: Schema.optional(FlywheelOrders),\n scope: Schema.optional(FlywheelScope),\n ticks: Schema.Number,\n lastTickAt: Schema.String,\n})\n","import { Schema } from \"effect\"\nimport * as Rpc from \"effect/unstable/rpc/Rpc\"\nimport * as RpcGroup from \"effect/unstable/rpc/RpcGroup\"\nimport { DomainEvent } from \"./events\"\nimport {\n AgentStatus,\n ConversationCostSummary,\n ConversationFilter,\n DashboardSnapshot,\n DiscoveredSessionSnapshot,\n IssueId,\n ScanResult,\n SequenceNumber,\n SessionNodePresence,\n SessionsFeedFacetsSnapshot,\n SessionsFeedRowSnapshot,\n WorkspaceDetail,\n} from \"./types\"\nimport { EditorIdSchema, OpenInEditorInput } from \"./editor\"\nimport { FlywheelStatus } from \"./flywheel\"\n\n// ─── RPC method names ─────────────────────────────────────────────────────────\n\nexport const WS_METHODS = {\n // Conversations (PAN-457)\n scanConversations: \"pan.scanConversations\",\n searchConversations: \"pan.searchConversations\",\n listDiscoveredSessions: \"pan.listDiscoveredSessions\",\n listSessionsFeed: \"pan.listSessionsFeed\",\n getSessionsFeedFacets: \"pan.getSessionsFeedFacets\",\n getDiscoveredSession: \"pan.getDiscoveredSession\",\n enrichSessions: \"pan.enrichSessions\",\n embedSessions: \"pan.embedSessions\",\n getConversationCost: \"pan.getConversationCost\",\n getConversationCostByWorkspace: \"pan.getConversationCostByWorkspace\",\n getConversationStats: \"pan.getConversationStats\",\n\n // Streaming subscriptions\n subscribeDomainEvents: \"pan.subscribeDomainEvents\",\n subscribeIssueEvents: \"pan.subscribeIssueEvents\",\n subscribeTerminal: \"pan.subscribeTerminal\",\n subscribeAgentOutput: \"pan.subscribeAgentOutput\",\n subscribeConversationMessages: \"pan.subscribeConversationMessages\",\n subscribeProjectSessionTree: \"pan.subscribeProjectSessionTree\",\n subscribeFlywheelStatus: \"pan.subscribeFlywheelStatus\",\n\n // Snapshot / replay\n getSnapshot: \"pan.getSnapshot\",\n replayEvents: \"pan.replayEvents\",\n\n // Workspace detail (batched)\n getWorkspaceDetail: \"pan.getWorkspaceDetail\",\n readWorkspaceFile: \"pan.readWorkspaceFile\",\n\n // File-path existence (PAN-1457) — used by MarkdownFileLink to decide\n // whether a path candidate in chat markdown should render as a chip.\n resolveFilePathExists: \"pan.resolveFilePathExists\",\n\n // Terminal control\n terminalOpen: \"pan.terminalOpen\",\n terminalWrite: \"pan.terminalWrite\",\n terminalResize: \"pan.terminalResize\",\n terminalClose: \"pan.terminalClose\",\n\n // Commands (trigger mutations via RPC)\n startPlanning: \"pan.startPlanning\",\n startAgent: \"pan.startAgent\",\n deepWipe: \"pan.deepWipe\",\n sendTerminalInput: \"pan.sendTerminalInput\",\n resizeTerminal: \"pan.resizeTerminal\",\n\n // Editor integration (PAN-966)\n shellOpenInEditor: \"pan.shellOpenInEditor\",\n getAvailableEditors: \"pan.getAvailableEditors\",\n} as const\n\n// ─── Error types ──────────────────────────────────────────────────────────────\n\nexport class PanRpcError extends Schema.TaggedErrorClass<PanRpcError>()(\"PanRpcError\", {\n message: Schema.String,\n code: Schema.optional(Schema.String),\n}) {}\n\n// ─── Terminal types ───────────────────────────────────────────────────────────\n\nexport const TerminalOutput = Schema.Struct({\n sessionName: Schema.String,\n data: Schema.String,\n})\nexport type TerminalOutput = typeof TerminalOutput.Type\n\nexport const AgentOutput = Schema.Struct({\n agentId: Schema.String,\n line: Schema.String,\n})\nexport type AgentOutput = typeof AgentOutput.Type\n\n// ─── Plan mode types ─────────────────────────────────────────────────────────\n\nexport const ProposedPlan = Schema.Struct({\n id: Schema.String,\n plan: Schema.String,\n planFilePath: Schema.optional(Schema.String),\n status: Schema.Literals(['pending', 'approved', 'rejected']),\n createdAt: Schema.String,\n resolvedAt: Schema.optional(Schema.String),\n})\nexport type ProposedPlan = typeof ProposedPlan.Type\n\n// ─── Compact boundary types ──────────────────────────────────────────────────\n\nexport const CompactBoundary = Schema.Struct({\n id: Schema.String,\n timestamp: Schema.String,\n trigger: Schema.optional(Schema.String),\n preTokens: Schema.optional(Schema.Number),\n model: Schema.optional(Schema.String),\n})\nexport type CompactBoundary = typeof CompactBoundary.Type\n\nexport const ContextUsage = Schema.Struct({\n activeBytes: Schema.Number,\n estimatedTokens: Schema.Number,\n contextWindow: Schema.Number,\n percentUsed: Schema.Number,\n /**\n * Optional breakdown of the last assistant turn — surfaced by the click\n * popover on the ContextWindowMeter so users can see WHY the meter says\n * what it does. Computed by `computeContextUsage()` from JSONL `usage`.\n */\n lastInputTokens: Schema.optional(Schema.Number),\n lastCacheReadTokens: Schema.optional(Schema.Number),\n lastCacheCreationTokens: Schema.optional(Schema.Number),\n /** Highest input_tokens ever observed in this window — triggers 1M detection. */\n maxObservedInputTokens: Schema.optional(Schema.Number),\n /** Model the most recent assistant turn ran under (from JSONL). */\n lastModel: Schema.optional(Schema.NullOr(Schema.String)),\n /** ISO timestamp of the most recent assistant turn. */\n lastTurnAt: Schema.optional(Schema.NullOr(Schema.String)),\n})\nexport type ContextUsage = typeof ContextUsage.Type\n\n// ─── Chat / conversation message types (PAN-451) ──────────────────────────────\n\nexport const ChatMessage = Schema.Struct({\n id: Schema.String,\n role: Schema.Literals(['user', 'assistant', 'system']),\n text: Schema.String,\n turnId: Schema.optional(Schema.String),\n createdAt: Schema.String,\n completedAt: Schema.optional(Schema.String),\n streaming: Schema.optional(Schema.Boolean),\n sequence: Schema.optional(Schema.Number),\n})\nexport type ChatMessage = typeof ChatMessage.Type\n\nexport const WorkLogEntry = Schema.Struct({\n id: Schema.String,\n createdAt: Schema.String,\n label: Schema.String,\n detail: Schema.optional(Schema.String),\n /** Tool result output (populated when tool_result is received). */\n result: Schema.optional(Schema.String),\n command: Schema.optional(Schema.String),\n changedFiles: Schema.optional(Schema.Array(Schema.String)),\n tone: Schema.Literals(['thinking', 'tool', 'info', 'error']),\n toolTitle: Schema.optional(Schema.String),\n /** Raw tool_use input dict — drives per-tool expanded rendering (PAN-1459). */\n toolInput: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),\n sequence: Schema.optional(Schema.Number),\n})\nexport type WorkLogEntry = typeof WorkLogEntry.Type\n\n/**\n * Response shape for GET /api/agents/:id/conversation.\n * Shared between the dashboard server route and the frontend TerminalPanel.\n */\nexport interface ConversationResponse {\n messages: ChatMessage[];\n workLog: WorkLogEntry[];\n streaming: boolean;\n totalCost: number;\n /** Total token throughput (input + output + cache read + cache write). */\n totalTokens?: number;\n byteOffset: number;\n proposedPlan?: ProposedPlan;\n compactBoundaries?: CompactBoundary[];\n contextUsage?: ContextUsage | null;\n}\n\nexport const ConversationEvent = Schema.Union([\n Schema.Struct({\n kind: Schema.Literal('messages'),\n messages: Schema.Array(ChatMessage),\n workLog: Schema.Array(WorkLogEntry),\n streaming: Schema.Boolean,\n snapshot: Schema.optional(Schema.Boolean),\n proposedPlan: Schema.optional(ProposedPlan),\n compactBoundaries: Schema.optional(Schema.Array(CompactBoundary)),\n contextUsage: Schema.optional(Schema.NullOr(ContextUsage)),\n }),\n Schema.Struct({\n kind: Schema.Literal('discovering'),\n }),\n])\nexport type ConversationEvent = typeof ConversationEvent.Type\n\n// ─── Session Tree Delta (PAN-821) ─────────────────────────────────────────────\n\nexport const SessionTreeDelta = Schema.Struct({\n kind: Schema.Literals(['session_added', 'session_removed', 'presence_changed', 'status_changed']),\n issueId: Schema.String,\n sessionId: Schema.String,\n presence: Schema.optional(SessionNodePresence),\n status: Schema.optional(AgentStatus),\n timestamp: Schema.String,\n})\nexport type SessionTreeDelta = typeof SessionTreeDelta.Type\n\n// ─── RPC definitions ──────────────────────────────────────────────────────────\n\n/** 1. Subscribe to the live domain event stream (stream) */\nexport const SubscribeDomainEventsRpc = Rpc.make(WS_METHODS.subscribeDomainEvents, {\n payload: Schema.Struct({}),\n success: DomainEvent,\n stream: true,\n})\n\n/** 1b. Subscribe to the live domain event stream for one issue (stream) */\nexport const SubscribeIssueEventsRpc = Rpc.make(WS_METHODS.subscribeIssueEvents, {\n payload: Schema.Struct({ issueId: IssueId }),\n success: DomainEvent,\n stream: true,\n})\n\n/** 2. Subscribe to raw terminal output for a tmux session (stream) */\nexport const SubscribeTerminalRpc = Rpc.make(WS_METHODS.subscribeTerminal, {\n payload: Schema.Struct({ sessionName: Schema.String, cols: Schema.Number, rows: Schema.Number }),\n success: TerminalOutput,\n error: PanRpcError,\n stream: true,\n})\n\n/** 3. Subscribe to buffered agent stdout (stream) */\nexport const SubscribeAgentOutputRpc = Rpc.make(WS_METHODS.subscribeAgentOutput, {\n payload: Schema.Struct({ agentId: Schema.String }),\n success: AgentOutput,\n error: PanRpcError,\n stream: true,\n})\n\n/** 4. Get current dashboard snapshot (unary) */\nexport const GetSnapshotRpc = Rpc.make(WS_METHODS.getSnapshot, {\n payload: Schema.Struct({}),\n success: DashboardSnapshot,\n error: PanRpcError,\n})\n\n/** 5. Replay events since a given sequence number (unary) */\nexport const ReplayEventsRpc = Rpc.make(WS_METHODS.replayEvents, {\n payload: Schema.Struct({ fromSequence: SequenceNumber }),\n success: Schema.Array(DomainEvent),\n error: PanRpcError,\n})\n\n/** 6. Open a terminal session / attach PTY (unary) */\nexport const TerminalOpenRpc = Rpc.make(WS_METHODS.terminalOpen, {\n payload: Schema.Struct({ sessionName: Schema.String, cols: Schema.Number, rows: Schema.Number }),\n success: Schema.Struct({ sessionName: Schema.String }),\n error: PanRpcError,\n})\n\n/** 7. Write data to a terminal session (unary) */\nexport const TerminalWriteRpc = Rpc.make(WS_METHODS.terminalWrite, {\n payload: Schema.Struct({ sessionName: Schema.String, data: Schema.String }),\n error: PanRpcError,\n})\n\n/** 8. Resize a terminal session (unary) */\nexport const TerminalResizeRpc = Rpc.make(WS_METHODS.terminalResize, {\n payload: Schema.Struct({ sessionName: Schema.String, cols: Schema.Number, rows: Schema.Number }),\n error: PanRpcError,\n})\n\n/** 9. Close a terminal session (unary) */\nexport const TerminalCloseRpc = Rpc.make(WS_METHODS.terminalClose, {\n payload: Schema.Struct({ sessionName: Schema.String }),\n error: PanRpcError,\n})\n\n/** 10. Get batched workspace detail (unary) — replaces 5 separate HTTP calls */\nexport const GetWorkspaceDetailRpc = Rpc.make(WS_METHODS.getWorkspaceDetail, {\n payload: Schema.Struct({ issueId: IssueId }),\n success: WorkspaceDetail,\n error: PanRpcError,\n})\n\nexport const ReadWorkspaceFileInput = Schema.Struct({\n issueId: IssueId,\n relativePath: Schema.String,\n line: Schema.optional(Schema.Number),\n contextLines: Schema.optional(Schema.Number),\n})\nexport type ReadWorkspaceFileInput = typeof ReadWorkspaceFileInput.Type\n\nexport const ReadWorkspaceFileResult = Schema.Struct({\n text: Schema.String,\n lang: Schema.String,\n truncated: Schema.Boolean,\n totalLines: Schema.Number,\n})\nexport type ReadWorkspaceFileResult = typeof ReadWorkspaceFileResult.Type\n\n/** 10b. Read a workspace file for inline previews (unary) */\nexport const ReadWorkspaceFileRpc = Rpc.make(WS_METHODS.readWorkspaceFile, {\n payload: ReadWorkspaceFileInput,\n success: ReadWorkspaceFileResult,\n error: PanRpcError,\n})\n\n/**\n * 10c. Resolve whether a file path candidate exists on disk (PAN-1457).\n *\n * Used by MarkdownFileLink to decide whether a path-like token in chat\n * markdown should render as a clickable chip. Returns exists=false for\n * phantom paths (`conv/2209`, `users/foo`) and exists=true with kind for\n * real files and directories (including bare directory references like\n * `src/components/Foo` that the regex heuristic alone cannot validate).\n *\n * Security:\n * - Pure stat — never reads file contents, never enumerates directories.\n * - Relative paths resolve under cwd; absolute paths are statted directly.\n * - Caller is responsible for sending only paths surfaced from their own\n * conversation context; the resolver does not gate by issueId because\n * chat happens outside any single workspace.\n */\nexport const ResolveFilePathExistsInput = Schema.Struct({\n cwd: Schema.String,\n path: Schema.String,\n})\nexport type ResolveFilePathExistsInput = typeof ResolveFilePathExistsInput.Type\n\nexport const ResolveFilePathExistsResult = Schema.Struct({\n exists: Schema.Boolean,\n kind: Schema.NullOr(Schema.Literals(['file', 'dir'])),\n})\nexport type ResolveFilePathExistsResult = typeof ResolveFilePathExistsResult.Type\n\nexport const ResolveFilePathExistsRpc = Rpc.make(WS_METHODS.resolveFilePathExists, {\n payload: ResolveFilePathExistsInput,\n success: ResolveFilePathExistsResult,\n error: PanRpcError,\n})\n\n/** 11. Start planning for an issue (command) */\nexport const StartPlanningRpc = Rpc.make(WS_METHODS.startPlanning, {\n payload: Schema.Struct({ issueId: IssueId, options: Schema.optional(Schema.Unknown) }),\n success: Schema.Struct({ queued: Schema.Boolean }),\n error: PanRpcError,\n})\n\n/** 12. Start a work agent for an issue (command) */\nexport const StartAgentRpc = Rpc.make(WS_METHODS.startAgent, {\n payload: Schema.Struct({ issueId: IssueId, options: Schema.optional(Schema.Unknown) }),\n success: Schema.Struct({ agentId: Schema.String }),\n error: PanRpcError,\n})\n\n/** 13. Deep-wipe a workspace (destructive command — requires explicit confirmation) */\nexport const DeepWipeRpc = Rpc.make(WS_METHODS.deepWipe, {\n payload: Schema.Struct({ issueId: IssueId, deleteWorkspace: Schema.optional(Schema.Boolean) }),\n success: Schema.Struct({ wiped: Schema.Boolean }),\n error: PanRpcError,\n})\n\n/** 14. Send input to a terminal session (command) */\nexport const SendTerminalInputRpc = Rpc.make(WS_METHODS.sendTerminalInput, {\n payload: Schema.Struct({ sessionName: Schema.String, data: Schema.String }),\n error: PanRpcError,\n})\n\n/** 15. Resize a terminal session (command) */\nexport const ResizeTerminalRpc = Rpc.make(WS_METHODS.resizeTerminal, {\n payload: Schema.Struct({ sessionName: Schema.String, cols: Schema.Number, rows: Schema.Number }),\n error: PanRpcError,\n})\n\n/** 16. Subscribe to structured conversation messages from a JSONL session file (stream, PAN-451) */\nexport const SubscribeConversationMessagesRpc = Rpc.make(WS_METHODS.subscribeConversationMessages, {\n payload: Schema.Struct({ conversationName: Schema.String }),\n success: ConversationEvent,\n error: PanRpcError,\n stream: true,\n})\n\n/** 17. Subscribe to live session tree deltas for a project (stream, PAN-821) */\nexport const SubscribeProjectSessionTreeRpc = Rpc.make(WS_METHODS.subscribeProjectSessionTree, {\n payload: Schema.Struct({ projectKey: Schema.String }),\n success: SessionTreeDelta,\n error: PanRpcError,\n stream: true,\n})\n\n/** 18. Subscribe to latest Flywheel status snapshots (stream) */\nexport const SubscribeFlywheelStatusRpc = Rpc.make(WS_METHODS.subscribeFlywheelStatus, {\n payload: Schema.Struct({}),\n success: Schema.NullOr(FlywheelStatus),\n error: PanRpcError,\n stream: true,\n})\n\n/** 19. Open a workspace in an editor (PAN-966) */\nexport const ShellOpenInEditorRpc = Rpc.make(WS_METHODS.shellOpenInEditor, {\n payload: OpenInEditorInput,\n error: PanRpcError,\n})\n\n/** 19. Get available (installed) editors (PAN-966) */\nexport const GetAvailableEditorsRpc = Rpc.make(WS_METHODS.getAvailableEditors, {\n success: Schema.Struct({\n editors: Schema.Array(EditorIdSchema),\n /**\n * Default cwd to open when no project/workspace is selected — the\n * \"devroot\" fallback. `~/Projects` if it exists, else `$HOME`.\n */\n defaultCwd: Schema.String,\n }),\n error: PanRpcError,\n})\n\n// ─── Conversation Discovery RPC procs (PAN-457) ───────────────────────────────\n\nconst DiscoveredSessionListResult = Schema.Struct({\n sessions: Schema.Array(DiscoveredSessionSnapshot),\n count: Schema.Number,\n total: Schema.Number,\n})\n\nconst SessionsFeedPayload = Schema.Struct({\n harness: Schema.optional(Schema.String),\n workspacePath: Schema.optional(Schema.String),\n primaryModel: Schema.optional(Schema.String),\n managed: Schema.optional(Schema.Boolean),\n unmanaged: Schema.optional(Schema.Boolean),\n since: Schema.optional(Schema.String),\n before: Schema.optional(Schema.String),\n after: Schema.optional(Schema.String),\n minCost: Schema.optional(Schema.Number),\n maxCost: Schema.optional(Schema.Number),\n minMessages: Schema.optional(Schema.Number),\n tags: Schema.optional(Schema.Array(Schema.String)),\n tools: Schema.optional(Schema.Array(Schema.String)),\n files: Schema.optional(Schema.Array(Schema.String)),\n issueId: Schema.optional(Schema.String),\n enrichmentLevel: Schema.optional(Schema.Number),\n enriched: Schema.optional(Schema.Boolean),\n notEnriched: Schema.optional(Schema.Boolean),\n query: Schema.optional(Schema.String),\n semantic: Schema.optional(Schema.Boolean),\n similarTo: Schema.optional(Schema.Number),\n limit: Schema.optional(Schema.Number),\n offset: Schema.optional(Schema.Number),\n cursor: Schema.optional(Schema.String),\n source: Schema.optional(Schema.Literals(['discovered', 'managed-archived'])),\n})\n\nconst SessionsFeedListResult = Schema.Struct({\n rows: Schema.Array(SessionsFeedRowSnapshot),\n nextCursor: Schema.NullOr(Schema.String),\n})\n\nconst DiscoveredSessionSearchResult = Schema.Struct({\n sessions: Schema.Array(DiscoveredSessionSnapshot),\n total: Schema.Number,\n mode: Schema.String,\n durationMs: Schema.Number,\n error: Schema.optional(Schema.String),\n})\n\nconst DiscoveredSessionStatsResult = Schema.Struct({\n total: Schema.Number,\n enriched: Schema.Number,\n embedded: Schema.Number,\n managedCount: Schema.Number,\n embeddingModels: Schema.optional(Schema.Array(Schema.Struct({\n model: Schema.String,\n embedded: Schema.Number,\n }))),\n})\n\nconst ConversationCostTotals = Schema.Struct({\n sessionCount: Schema.Number,\n totalCost: Schema.Number,\n totalTokensIn: Schema.Number,\n totalTokensOut: Schema.Number,\n})\n\n/** Scan conversations (trigger discovery) */\nexport const ScanConversationsRpc = Rpc.make(WS_METHODS.scanConversations, {\n payload: Schema.Struct({\n mode: Schema.Literals(['targeted', 'watched', 'system']),\n dirs: Schema.optional(Schema.Array(Schema.String)),\n dryRun: Schema.optional(Schema.Boolean),\n }),\n success: ScanResult,\n error: PanRpcError,\n})\n\n/** Search discovered sessions with filters + optional FTS query */\nexport const SearchConversationsRpc = Rpc.make(WS_METHODS.searchConversations, {\n payload: ConversationFilter,\n success: DiscoveredSessionSearchResult,\n error: PanRpcError,\n})\n\n/** List discovered sessions (recent, with optional managed/unmanaged filter) */\nexport const ListDiscoveredSessionsRpc = Rpc.make(WS_METHODS.listDiscoveredSessions, {\n payload: ConversationFilter,\n success: DiscoveredSessionListResult,\n error: PanRpcError,\n})\n\n/** List the unified discovered + managed archived sessions feed */\nexport const ListSessionsFeedRpc = Rpc.make(WS_METHODS.listSessionsFeed, {\n payload: SessionsFeedPayload,\n success: SessionsFeedListResult,\n error: PanRpcError,\n})\n\n/** Get facet buckets for the unified sessions feed */\nexport const GetSessionsFeedFacetsRpc = Rpc.make(WS_METHODS.getSessionsFeedFacets, {\n payload: SessionsFeedPayload,\n success: SessionsFeedFacetsSnapshot,\n error: PanRpcError,\n})\n\n/** Get a single discovered session by ID */\nexport const GetDiscoveredSessionRpc = Rpc.make(WS_METHODS.getDiscoveredSession, {\n payload: Schema.Struct({ id: Schema.Number }),\n success: DiscoveredSessionSnapshot,\n error: PanRpcError,\n})\n\n/** Enrich sessions by ID or filter */\nexport const EnrichSessionsRpc = Rpc.make(WS_METHODS.enrichSessions, {\n payload: Schema.Struct({\n ids: Schema.optional(Schema.Array(Schema.Number)),\n filter: Schema.optional(ConversationFilter),\n level: Schema.Literals([1, 2, 3]),\n model: Schema.optional(Schema.String),\n fullTranscript: Schema.optional(Schema.Boolean),\n customPrompt: Schema.optional(Schema.String),\n upgrade: Schema.optional(Schema.Boolean),\n limit: Schema.optional(Schema.Number),\n confirmed: Schema.optional(Schema.Boolean),\n force: Schema.optional(Schema.Boolean),\n }),\n success: Schema.Struct({\n processed: Schema.Number,\n totalCost: Schema.Number,\n failures: Schema.Number,\n }),\n error: PanRpcError,\n})\n\n/** Generate or update embeddings for enriched sessions */\nexport const EmbedSessionsRpc = Rpc.make(WS_METHODS.embedSessions, {\n payload: Schema.Struct({\n ids: Schema.optional(Schema.Array(Schema.Number)),\n regenerate: Schema.optional(Schema.Boolean),\n }),\n success: Schema.Struct({\n total: Schema.Number,\n embedded: Schema.Number,\n model: Schema.String,\n }),\n error: PanRpcError,\n})\n\n/** Aggregate cost totals for discovered sessions */\nexport const GetConversationCostRpc = Rpc.make(WS_METHODS.getConversationCost, {\n payload: ConversationFilter,\n success: ConversationCostTotals,\n error: PanRpcError,\n})\n\n/** Aggregate workspace cost totals for the full filtered corpus */\nexport const GetConversationCostByWorkspaceRpc = Rpc.make(WS_METHODS.getConversationCostByWorkspace, {\n payload: ConversationFilter,\n success: ConversationCostSummary,\n error: PanRpcError,\n})\n\n/** Discovery index statistics */\nexport const GetConversationStatsRpc = Rpc.make(WS_METHODS.getConversationStats, {\n payload: Schema.Struct({}),\n success: DiscoveredSessionStatsResult,\n error: PanRpcError,\n})\n\n// ─── RPC Group ────────────────────────────────────────────────────────────────\n\n/** All Overdeck WebSocket RPC methods */\nexport const PanRpcGroup = RpcGroup.make(\n SubscribeDomainEventsRpc,\n SubscribeIssueEventsRpc,\n SubscribeTerminalRpc,\n SubscribeAgentOutputRpc,\n GetSnapshotRpc,\n ReplayEventsRpc,\n GetWorkspaceDetailRpc,\n ReadWorkspaceFileRpc,\n ResolveFilePathExistsRpc,\n TerminalOpenRpc,\n TerminalWriteRpc,\n TerminalResizeRpc,\n TerminalCloseRpc,\n StartPlanningRpc,\n StartAgentRpc,\n DeepWipeRpc,\n SendTerminalInputRpc,\n ResizeTerminalRpc,\n SubscribeConversationMessagesRpc,\n SubscribeProjectSessionTreeRpc,\n SubscribeFlywheelStatusRpc,\n ShellOpenInEditorRpc,\n GetAvailableEditorsRpc,\n ScanConversationsRpc,\n SearchConversationsRpc,\n ListDiscoveredSessionsRpc,\n ListSessionsFeedRpc,\n GetSessionsFeedFacetsRpc,\n GetDiscoveredSessionRpc,\n EnrichSessionsRpc,\n EmbedSessionsRpc,\n GetConversationCostRpc,\n GetConversationCostByWorkspaceRpc,\n GetConversationStatsRpc,\n)\nexport type PanRpcGroup = typeof PanRpcGroup\n","/**\n * Shared event reducers — pure functions for applying domain events to state (PAN-433)\n *\n * Used by:\n * - Server read model (src/dashboard/server/read-model.ts)\n * - Frontend Zustand store (src/dashboard/frontend/src/lib/store.ts)\n *\n * Both produce identical results for the same event, keeping server and client\n * eventually consistent (the T3Code pattern).\n */\n\nimport type {\n AgentRuntimeSnapshot,\n AgentSnapshot,\n ChannelPermissionRequestSnapshot,\n DashboardSnapshot,\n EmbedProgressSnapshot,\n EnrichProgressSnapshot,\n EnrichStatsSnapshot,\n ResourceStats,\n ReviewStatusSnapshot,\n ScanProgressSnapshot,\n TurnDiffSummary,\n} from './types'\nimport type {\n MemoryObservation,\n MemoryStatus,\n PendingTurn,\n RagDecision,\n ResetMarker,\n} from './memory'\nimport type { DomainEvent } from './events'\n\n// ─── Read model state shape ──────────────────────────────────────────────────\n\nexport interface ResolvedChannelPermissionDecision {\n requestId: string\n agentId: string\n issueId?: string\n behavior: 'allow' | 'deny'\n}\n\nexport interface MemoryHealthSnapshot {\n projectId: string\n issueId: string\n status: 'healthy' | 'degraded' | 'failing'\n reason: string | null\n /** Human-readable cause of the most recent failure (provider error text). */\n detail?: string\n ragDecision?: RagDecision\n updatedAt: string\n}\n\nexport interface MemoryRollupTriggerSnapshot {\n projectId: string\n workspaceId: string\n issueId: string\n pendingTurns: PendingTurn[]\n pendingCount: number\n threshold: number\n triggeredAt: string\n}\n\nexport interface MemoryReadModelState {\n observationsByIssueId: Record<string, MemoryObservation[]>\n statusByIssueId: Record<string, MemoryStatus>\n rollupsByIssueId: Record<string, MemoryRollupTriggerSnapshot[]>\n resetMarkersByScopeId: Record<string, ResetMarker[]>\n healthByIssueId: Record<string, MemoryHealthSnapshot>\n}\n\nexport interface ReadModelState {\n sequence: number\n agentsById: Record<string, AgentSnapshot>\n /**\n * PAN-800 — per-agent runtime state derived from agent.* runtime events.\n * Kept separate from agentsById because it updates on every tool call; merging\n * would cause the whole AgentSnapshot to re-diff on the frontend.\n */\n agentRuntimeById: Record<string, AgentRuntimeSnapshot>\n reviewStatusByIssueId: Record<string, ReviewStatusSnapshot>\n resources: ResourceStats | null\n agentOutputById: Record<string, string[]>\n issuesRaw: unknown[]\n recentActivity: unknown[]\n detailedActivity: unknown[]\n ttsActivity: unknown[]\n shadowInferenceByIssueId: Record<string, string>\n turnDiffSummariesByAgentId: Record<string, TurnDiffSummary[]>\n channelPermissionRequestsById: Record<string, ChannelPermissionRequestSnapshot>\n channelPermissionRequestIdsByAgentId: Record<string, string[]>\n resolvedChannelPermissionDecisionsById: Record<string, ResolvedChannelPermissionDecision>\n resolvedChannelPermissionDecisionIdsByAgentId: Record<string, string[]>\n dashboardLifecycle: DashboardLifecycleState\n /** Conversation names currently undergoing Overdeck-native compaction. */\n conversationsCompactingByName: Record<string, boolean>\n /** Conversation names currently waiting for user permission (PermissionRequest hook). */\n conversationsAwaitingPermissionByName: Record<string, boolean>\n /** Bumped whenever a conversation is created, so the sidebar list can refresh\n * immediately instead of waiting for its poll tick. */\n conversationsListRevision: number\n observationsByIssueId: Record<string, MemoryObservation[]>\n statusByIssueId: Record<string, MemoryStatus>\n rollupsByIssueId: Record<string, MemoryRollupTriggerSnapshot[]>\n resetMarkersByScopeId: Record<string, ResetMarker[]>\n healthByIssueId: Record<string, MemoryHealthSnapshot>\n /** PAN-457 — active scan progress snapshot */\n scanProgress: ScanProgressSnapshot | null\n /** PAN-457 — latest enrichment stats */\n enrichStats: EnrichStatsSnapshot | null\n /** PAN-457 — latest per-session enrichment progress */\n enrichProgressBySessionId: Record<number, EnrichProgressSnapshot>\n /** PAN-457 — latest per-session embedding progress */\n embedProgressBySessionId: Record<number, EmbedProgressSnapshot>\n /** sessionId (from agent snapshot or runtime claudeSessionId) → agentId index */\n agentIdBySessionId: Record<string, string>\n}\n\nexport interface DashboardLifecycleState {\n active: boolean\n reason: string | null\n issueId: string | null\n trigger: string | null\n startedAt: string | null\n completedAt: string | null\n failedAt: string | null\n error: string | null\n}\n\nexport const INITIAL_READ_MODEL_STATE: ReadModelState = {\n sequence: 0,\n agentsById: {},\n agentRuntimeById: {},\n reviewStatusByIssueId: {},\n resources: null,\n agentOutputById: {},\n issuesRaw: [],\n recentActivity: [],\n detailedActivity: [],\n ttsActivity: [],\n shadowInferenceByIssueId: {},\n turnDiffSummariesByAgentId: {},\n channelPermissionRequestsById: {},\n channelPermissionRequestIdsByAgentId: {},\n resolvedChannelPermissionDecisionsById: {},\n resolvedChannelPermissionDecisionIdsByAgentId: {},\n conversationsCompactingByName: {},\n conversationsAwaitingPermissionByName: {},\n conversationsListRevision: 0,\n observationsByIssueId: {},\n statusByIssueId: {},\n rollupsByIssueId: {},\n resetMarkersByScopeId: {},\n healthByIssueId: {},\n scanProgress: null,\n enrichStats: null,\n enrichProgressBySessionId: {},\n embedProgressBySessionId: {},\n agentIdBySessionId: {},\n dashboardLifecycle: {\n active: false,\n reason: null,\n issueId: null,\n trigger: null,\n startedAt: null,\n completedAt: null,\n failedAt: null,\n error: null,\n },\n}\n\n// ─── Constants ───────────────────────────────────────────────────────────────\n\nconst MAX_AGENT_OUTPUT_LINES = 200\nconst MAX_ACTIVITY_ENTRIES = 50\nconst MAX_DETAILED_ENTRIES = 200\nconst MAX_TTS_ENTRIES = 50\nconst MAX_SESSION_PROGRESS_ENTRIES = 100\nexport const DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT = 200\nexport const DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE = 50\n\nexport function getMaxMemoryObservationsPerIssue(): number {\n const raw = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env?.OVERDECK_MEMORY_OBSERVATION_LIMIT\n const parsed = raw ? Number.parseInt(raw, 10) : Number.NaN\n return Number.isInteger(parsed) && parsed > 0 ? parsed : DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE\n}\n\nexport function trimMemoryObservations(observations: MemoryObservation[]): MemoryObservation[] {\n const max = getMaxMemoryObservationsPerIssue()\n return observations.length > max ? observations.slice(-max) : observations\n}\n\nexport function getMaxTurnDiffSummariesPerAgent(): number {\n const raw = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env?.OVERDECK_TURN_DIFF_SUMMARY_LIMIT\n const parsed = raw ? Number.parseInt(raw, 10) : Number.NaN\n return Number.isInteger(parsed) && parsed > 0 ? parsed : DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT\n}\n\nexport function isTerminalTurnDiffSummaryStatus(status: unknown): boolean {\n return status === 'stopped' || status === 'done' || status === 'archived' || status === 'closed'\n}\n\nexport function trimTurnDiffSummaries(summaries: TurnDiffSummary[]): TurnDiffSummary[] {\n const max = getMaxTurnDiffSummariesPerAgent()\n return summaries.length > max ? summaries.slice(-max) : summaries\n}\n\nfunction upsertBoundedSessionProgress<T extends { sessionId: number; timestamp: string }>(\n bySessionId: Record<number, T>,\n progress: T,\n): Record<number, T> {\n const existing = bySessionId[progress.sessionId]\n const entries = Object.values(bySessionId)\n if (existing || entries.length < MAX_SESSION_PROGRESS_ENTRIES) {\n return { ...bySessionId, [progress.sessionId]: progress }\n }\n const keep = entries\n .sort((a, b) => a.timestamp.localeCompare(b.timestamp))\n .slice(-(MAX_SESSION_PROGRESS_ENTRIES - 1))\n const next: Record<number, T> = {}\n for (const entry of [...keep, progress]) next[entry.sessionId] = entry\n return next\n}\n\nexport function omitTurnDiffSummariesForAgent(\n turnDiffSummariesByAgentId: ReadModelState['turnDiffSummariesByAgentId'] | undefined,\n agentId: string,\n): ReadModelState['turnDiffSummariesByAgentId'] {\n const { [agentId]: _removed, ...rest } = turnDiffSummariesByAgentId ?? {}\n return rest\n}\n\n/** Remove all entries in agentIdBySessionId that point to the given agentId. */\nfunction removeAgentFromSessionIndex(\n agentIdBySessionId: ReadModelState['agentIdBySessionId'] | undefined,\n agentId: string,\n): ReadModelState['agentIdBySessionId'] {\n const next: Record<string, string> = {}\n for (const [sessionId, id] of Object.entries(agentIdBySessionId ?? {})) {\n if (id !== agentId) next[sessionId] = id\n }\n return next\n}\n\n// ─── PAN-800 runtime helpers ─────────────────────────────────────────────────\n\nfunction defaultRuntimeSnapshot(agentId: string, timestamp: string, sequence: number): AgentRuntimeSnapshot {\n return {\n id: agentId,\n activity: 'idle',\n lastActivity: timestamp,\n updatedAtSequence: sequence,\n }\n}\n\n/**\n * Bump runtimeSnapshotSequence on the corresponding AgentSnapshot (if present)\n * so low-frequency subscribers can cheaply detect a runtime change. No-op if\n * the agent has no lifecycle snapshot yet (a runtime event arrived before\n * agent.created — unusual but defensive).\n */\nfunction bumpRuntimeSnapshotSequence(\n agentsById: Record<string, AgentSnapshot>,\n agentId: string,\n sequence: number,\n): Record<string, AgentSnapshot> {\n const agent = agentsById[agentId]\n if (!agent) return agentsById\n return { ...agentsById, [agentId]: { ...agent, runtimeSnapshotSequence: sequence } }\n}\n\n// ─── syncSnapshot — bootstrap from a full DashboardSnapshot ──────────────────\n\nexport function syncSnapshot(state: ReadModelState, snapshot: DashboardSnapshot): ReadModelState {\n const agentsById: Record<string, AgentSnapshot> = {}\n for (const agent of snapshot.agents) {\n agentsById[agent.id] = agent\n }\n\n const reviewStatusByIssueId: Record<string, ReviewStatusSnapshot> = {}\n for (const rs of snapshot.reviewStatuses) {\n reviewStatusByIssueId[rs.issueId] = rs\n }\n\n const channelPermissionRequestsById: Record<string, ChannelPermissionRequestSnapshot> = {}\n const channelPermissionRequestIdsByAgentId: Record<string, string[]> = {}\n for (const request of snapshot.channelPermissionRequests ?? []) {\n channelPermissionRequestsById[request.requestId] = request\n const existing = channelPermissionRequestIdsByAgentId[request.agentId] ?? []\n channelPermissionRequestIdsByAgentId[request.agentId] = [...existing, request.requestId]\n }\n\n const memory = snapshot.memory as Partial<MemoryReadModelState> | undefined\n\n // Rebuild sessionId → agentId index from snapshot\n const agentIdBySessionId: Record<string, string> = {}\n for (const agent of snapshot.agents) {\n if (agent.sessionId) agentIdBySessionId[agent.sessionId] = agent.id\n }\n for (const [agentId, runtime] of Object.entries(snapshot.agentRuntimeById ?? {})) {\n if (runtime.claudeSessionId) agentIdBySessionId[runtime.claudeSessionId] = agentId\n }\n\n return {\n ...state,\n sequence: snapshot.sequence,\n agentsById,\n reviewStatusByIssueId,\n agentRuntimeById: snapshot.agentRuntimeById ?? state.agentRuntimeById,\n channelPermissionRequestsById,\n channelPermissionRequestIdsByAgentId,\n resolvedChannelPermissionDecisionsById: {},\n resolvedChannelPermissionDecisionIdsByAgentId: {},\n resources: (snapshot.resources as ResourceStats | undefined) ?? null,\n issuesRaw: (snapshot as any).issues ?? state.issuesRaw,\n recentActivity: snapshot.recentActivity ? [...snapshot.recentActivity] : state.recentActivity,\n observationsByIssueId: memory?.observationsByIssueId ?? state.observationsByIssueId,\n statusByIssueId: memory?.statusByIssueId ?? state.statusByIssueId,\n rollupsByIssueId: memory?.rollupsByIssueId ?? state.rollupsByIssueId,\n resetMarkersByScopeId: memory?.resetMarkersByScopeId ?? state.resetMarkersByScopeId,\n healthByIssueId: memory?.healthByIssueId ?? state.healthByIssueId,\n scanProgress: snapshot.scanProgress ?? null,\n enrichStats: snapshot.enrichStats ?? null,\n enrichProgressBySessionId: snapshot.enrichProgressBySessionId ?? {},\n embedProgressBySessionId: snapshot.embedProgressBySessionId ?? {},\n agentIdBySessionId,\n }\n}\n\n// ─── applyEvent — apply a single domain event ───────────────────────────────\n\nexport function applyEvent(state: ReadModelState, event: DomainEvent): ReadModelState {\n switch (event.type) {\n case 'agent.created': {\n const existing = state.agentsById[event.payload.agentId]\n const agent = event.payload.agent\n const nextAgentIdBySessionId = agent.sessionId\n ? { ...state.agentIdBySessionId, [agent.sessionId]: agent.id }\n : state.agentIdBySessionId\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: existing\n ? { ...existing, ...agent }\n : agent,\n },\n agentIdBySessionId: nextAgentIdBySessionId,\n }\n }\n\n case 'agent.started': {\n const agent = event.payload.agent\n const nextAgentIdBySessionId = agent.sessionId\n ? { ...state.agentIdBySessionId, [agent.sessionId]: agent.id }\n : state.agentIdBySessionId\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: agent,\n },\n agentIdBySessionId: nextAgentIdBySessionId,\n }\n }\n\n case 'agent.enrichment_changed': {\n const agent = state.agentsById[event.payload.agentId]\n if (!agent) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: {\n ...agent,\n role: event.payload.role ?? agent.role,\n hasPendingQuestion: event.payload.hasPendingQuestion ?? false,\n pendingQuestionCount: event.payload.pendingQuestionCount ?? 0,\n pendingQuestionPrompt: event.payload.pendingQuestionPrompt,\n pendingQuestionReason: event.payload.pendingQuestionReason,\n pendingInputCount: event.payload.pendingInputCount,\n pendingInputKinds: event.payload.pendingInputKinds,\n pendingAskUserQuestion: event.payload.pendingAskUserQuestion,\n pendingProposedPlan: event.payload.pendingProposedPlan,\n resolution: event.payload.resolution,\n resolutionCount: event.payload.resolutionCount,\n },\n },\n }\n }\n\n case 'agent.stopped': {\n const { [event.payload.agentId]: _removed, ...rest } = state.agentsById\n // PAN-800 — mark the runtime snapshot stopped too. pan kill bypasses the\n // Stop hook, so without this fold a killed agent shows activity: \"idle\"\n // forever. Retain the row (don't delete) so the projection cache has the\n // last-known snapshot for forensics.\n const runtimeById = state.agentRuntimeById ?? {}\n const prevRuntime = runtimeById[event.payload.agentId]\n const nextRuntimeById = prevRuntime\n ? {\n ...runtimeById,\n [event.payload.agentId]: {\n ...prevRuntime,\n activity: 'stopped' as const,\n currentTool: undefined,\n thinking: undefined,\n waiting: undefined,\n channelReply: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n },\n }\n : runtimeById\n const permissionRequestIdsByAgentId = state.channelPermissionRequestIdsByAgentId ?? {}\n const pendingIds = permissionRequestIdsByAgentId[event.payload.agentId] ?? []\n const nextPermissionRequestsById = { ...state.channelPermissionRequestsById }\n for (const requestId of pendingIds) {\n delete nextPermissionRequestsById[requestId]\n }\n const { [event.payload.agentId]: _removedPendingIds, ...restPendingIds } =\n permissionRequestIdsByAgentId\n\n const resolvedDecisionIdsByAgentId = state.resolvedChannelPermissionDecisionIdsByAgentId ?? {}\n const resolvedIds = resolvedDecisionIdsByAgentId[event.payload.agentId] ?? []\n const nextResolvedDecisionsById = { ...(state.resolvedChannelPermissionDecisionsById ?? {}) }\n for (const requestId of resolvedIds) {\n delete nextResolvedDecisionsById[requestId]\n }\n const { [event.payload.agentId]: _removedResolvedIds, ...restResolvedIds } =\n resolvedDecisionIdsByAgentId\n\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: rest,\n agentRuntimeById: nextRuntimeById,\n channelPermissionRequestsById: nextPermissionRequestsById,\n channelPermissionRequestIdsByAgentId: restPendingIds,\n resolvedChannelPermissionDecisionsById: nextResolvedDecisionsById,\n resolvedChannelPermissionDecisionIdsByAgentId: restResolvedIds,\n turnDiffSummariesByAgentId: omitTurnDiffSummariesForAgent(state.turnDiffSummariesByAgentId, event.payload.agentId),\n agentIdBySessionId: removeAgentFromSessionIndex(state.agentIdBySessionId, event.payload.agentId),\n }\n }\n\n case 'agent.status_changed': {\n const agent = state.agentsById[event.payload.agentId] ?? (\n event.payload.role === 'strike' && event.payload.issueId\n ? {\n id: event.payload.agentId,\n issueId: event.payload.issueId,\n status: event.payload.status,\n role: 'strike' as const,\n startedAt: event.timestamp,\n }\n : undefined\n )\n if (!agent) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const nextTurnDiffSummariesByAgentId = isTerminalTurnDiffSummaryStatus(event.payload.status)\n ? omitTurnDiffSummariesForAgent(state.turnDiffSummariesByAgentId, event.payload.agentId)\n : state.turnDiffSummariesByAgentId\n const nextAgent: AgentSnapshot = (() => {\n const base: Record<string, unknown> = { ...agent, status: event.payload.status }\n const optionalFields = [\n 'hasLiveTmuxSession', 'stoppedByUser', 'stoppedByPause', 'paused', 'pausedReason', 'pausedAt',\n 'troubled', 'troubledAt', 'consecutiveFailures',\n 'firstFailureInRunAt', 'lastFailureAt', 'lastFailureReason', 'lastFailureNextRetryAt',\n 'kickoffDelivered', 'hostOverride', 'role', 'model', 'workspace', 'sessionId',\n 'lastActivity', 'lastResumeAt', 'stoppedAt', 'branch', 'costSoFar',\n 'phase', 'workType', 'roleRunHead',\n 'flywheelRunId', 'reviewSubRole', 'reviewRunId', 'reviewOutputPath',\n 'reviewSynthesisAgentId', 'reviewDeadlineAt', 'reviewMonitorSignaled', 'reviewRetryAttempt',\n 'inspectSubRole', 'deliveryMethod', 'supervisorEnabled', 'channelsEnabled',\n ] as const\n for (const field of optionalFields) {\n if (field in event.payload) {\n const value = (event.payload as Record<string, unknown>)[field]\n if (value === null || value === undefined) {\n delete base[field]\n } else {\n base[field] = value\n }\n }\n }\n // PAN-1520 (fixes #339) — clear stale pending-input fields whenever the\n // agent transitions out of an actively-running state. The enrichment\n // poller stops emitting events for non-running agents, so without this\n // a paused or stopped agent would keep showing INPUT/AskUserQuestion\n // forever from the operator's perspective.\n // PAN-2633 — an idle-alive agent (stopped-shaped status, live tmux pane)\n // is the archetypal awaiting-operator state and must keep its pending-input\n // payload; gate the wipe on the liveness flag carried in the event.\n const sessionAlive = event.payload.hasLiveTmuxSession === true\n if (event.payload.status !== 'running' && event.payload.status !== 'starting' && !sessionAlive) {\n delete base['hasPendingQuestion']\n delete base['pendingQuestionCount']\n delete base['pendingQuestionPrompt']\n delete base['pendingQuestionReason']\n delete base['pendingInputCount']\n delete base['pendingInputKinds']\n delete base['pendingAskUserQuestion']\n delete base['pendingProposedPlan']\n }\n return base as AgentSnapshot\n })()\n\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: nextAgent,\n },\n turnDiffSummariesByAgentId: nextTurnDiffSummariesByAgentId,\n agentIdBySessionId: event.payload.sessionId\n ? { ...state.agentIdBySessionId, [event.payload.sessionId]: event.payload.agentId }\n : state.agentIdBySessionId,\n }\n }\n\n case 'agent.heartbeat_dead': {\n const agent = state.agentsById[event.payload.agentId]\n if (!agent) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const runtimeById = state.agentRuntimeById ?? {}\n const prevRuntime = runtimeById[event.payload.agentId]\n const nextRuntimeById = prevRuntime\n ? {\n ...runtimeById,\n [event.payload.agentId]: {\n ...prevRuntime,\n activity: 'stopped' as const,\n currentTool: undefined,\n thinking: undefined,\n waiting: undefined,\n channelReply: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n },\n }\n : runtimeById\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [event.payload.agentId]: { ...agent, status: 'error' as const },\n },\n agentRuntimeById: nextRuntimeById,\n }\n }\n\n case 'agent.output_received': {\n const existing = state.agentOutputById[event.payload.agentId] ?? []\n const updated = [...existing, ...event.payload.lines].slice(-MAX_AGENT_OUTPUT_LINES)\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentOutputById: {\n ...state.agentOutputById,\n [event.payload.agentId]: updated,\n },\n }\n }\n\n case 'pipeline.status_changed':\n case 'review.status_changed':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n reviewStatusByIssueId: {\n ...state.reviewStatusByIssueId,\n [event.payload.issueId]: event.payload.status,\n },\n }\n\n // PAN-915 — event-driven reviewer sub-status. Avoids tmux polling in\n // enrichReviewStatusFromSessions for the common case (reviewer dispatched).\n case 'review.reviewer_started': {\n const { issueId, role, sessionName } = event.payload\n const existing = state.reviewStatusByIssueId[issueId]\n const prevSubs = existing?.reviewSubStatuses ?? {}\n const prevNames = existing?.reviewSessionNames ?? []\n const nextNames = prevNames.includes(sessionName) ? prevNames : [...prevNames, sessionName]\n const nextStatus: ReviewStatusSnapshot = {\n ...(existing ?? { issueId }),\n reviewSubStatuses: { ...prevSubs, [role]: 'running' },\n reviewSessionNames: nextNames,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n reviewStatusByIssueId: { ...state.reviewStatusByIssueId, [issueId]: nextStatus },\n }\n }\n\n case 'review.reviewer_completed': {\n const { issueId, role } = event.payload\n const existing = state.reviewStatusByIssueId[issueId]\n if (!existing) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const prevSubs = existing.reviewSubStatuses ?? {}\n const nextStatus: ReviewStatusSnapshot = {\n ...existing,\n reviewSubStatuses: { ...prevSubs, [role]: 'done' },\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n reviewStatusByIssueId: { ...state.reviewStatusByIssueId, [issueId]: nextStatus },\n }\n }\n\n case 'review.specialist.timed_out':\n // Telemetry-only event. Sequence update lets clients observe the event\n // stream without mutating the durable review-status snapshot.\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'review.coordinator_started': {\n const { issueId, sessionName } = event.payload\n const existing = state.reviewStatusByIssueId[issueId]\n const nextStatus: ReviewStatusSnapshot = {\n ...(existing ?? { issueId }),\n reviewCoordinatorSessionName: sessionName,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n reviewStatusByIssueId: { ...state.reviewStatusByIssueId, [issueId]: nextStatus },\n }\n }\n\n case 'review.coordinator.died':\n // Telemetry-only. The durable review-status row is updated by recovery\n // checks; keep clients in sequence so event stream subscribers can alert.\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'pipeline.review-started':\n case 'pipeline.review-completed':\n case 'pipeline.test-started':\n case 'pipeline.test-completed':\n // Handled by review.status_changed; sequence-only update keeps clients in lockstep.\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'merge.ready':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n // PAN-1048 — specialist.* events still flow but no longer feed a separate\n // projection. The same lifecycle is now visible via agent.started /\n // agent.stopped + role-filtered agentsById. Sequence-only update keeps\n // clients in lockstep.\n case 'specialist.started':\n case 'specialist.completed':\n case 'specialist.failed':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'resources.updated':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n resources: event.payload.resources,\n }\n\n case 'issues.snapshot':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n issuesRaw: event.payload.issues as unknown[],\n }\n\n case 'issues.updated':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'issue.statusChanged': {\n const { issueId, status, canonicalStatus, labels } = event.payload\n const updatedIssues = (state.issuesRaw as Array<Record<string, unknown>>).map(issue => {\n if (issue['identifier'] === issueId || issue['id'] === issueId) {\n const patch: Record<string, unknown> = { ...issue, status, canonicalStatus, state: canonicalStatus }\n if (labels) patch.labels = labels\n return patch\n }\n return issue\n })\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n issuesRaw: updatedIssues,\n }\n }\n\n case 'activity.updated':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n recentActivity: (event.payload.events as unknown[]).slice(0, MAX_ACTIVITY_ENTRIES),\n }\n\n case 'shadow.inference_update':\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n shadowInferenceByIssueId: {\n ...state.shadowInferenceByIssueId,\n [event.payload.issueId]: event.payload.content,\n },\n }\n\n case 'planning.started': {\n const sessionName = event.payload.sessionName as string\n const issueId = event.payload.issueId as string\n if (sessionName) {\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: {\n ...state.agentsById,\n [sessionName]: {\n ...state.agentsById[sessionName],\n id: sessionName,\n issueId,\n status: 'running',\n startedAt: event.timestamp,\n runtime: (event.payload.harness as 'claude-code' | 'pi' | 'codex') ?? 'claude-code',\n role: 'plan' as const,\n },\n },\n }\n }\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n }\n case 'workspace.created':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'workspace.wipe_started': {\n const { issueId } = event.payload\n const updatedIssues = (state.issuesRaw as Array<Record<string, unknown>>).map(issue => {\n if (issue['identifier'] === issueId || issue['id'] === issueId) {\n return { ...issue, canonicalStatus: 'wiping', state: 'wiping' }\n }\n return issue\n })\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n issuesRaw: updatedIssues,\n }\n }\n\n case 'workspace.destroyed':\n case 'workspace.deleted': {\n const { issueId } = event.payload\n const removedAgentIds = Object.entries(state.agentsById)\n .filter(([, agent]) => agent.issueId === issueId)\n .map(([agentId]) => agentId)\n const updatedAgents = Object.fromEntries(\n Object.entries(state.agentsById).filter(([, agent]) => agent.issueId !== issueId)\n )\n let nextTurnDiffSummariesByAgentId = state.turnDiffSummariesByAgentId\n let nextAgentIdBySessionId = state.agentIdBySessionId\n for (const agentId of removedAgentIds) {\n nextTurnDiffSummariesByAgentId = omitTurnDiffSummariesForAgent(nextTurnDiffSummariesByAgentId, agentId)\n nextAgentIdBySessionId = removeAgentFromSessionIndex(nextAgentIdBySessionId, agentId)\n }\n const updatedIssues = (state.issuesRaw as Array<Record<string, unknown>>).map(issue => {\n if (issue['identifier'] === issueId || issue['id'] === issueId) {\n return { ...issue, status: 'Todo', canonicalStatus: 'todo', state: 'todo' }\n }\n return issue\n })\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: updatedAgents,\n turnDiffSummariesByAgentId: nextTurnDiffSummariesByAgentId,\n agentIdBySessionId: nextAgentIdBySessionId,\n issuesRaw: updatedIssues,\n }\n }\n\n case 'workspace.aborted': {\n const { issueId, sessionName } = event.payload\n let updatedAgents: typeof state.agentsById\n let nextTurnDiffSummariesByAgentId = state.turnDiffSummariesByAgentId\n let nextAgentIdBySessionId = state.agentIdBySessionId\n if (sessionName) {\n const { [sessionName]: _removed, ...rest } = state.agentsById\n updatedAgents = rest\n nextTurnDiffSummariesByAgentId = omitTurnDiffSummariesForAgent(nextTurnDiffSummariesByAgentId, sessionName)\n nextAgentIdBySessionId = removeAgentFromSessionIndex(nextAgentIdBySessionId, sessionName)\n } else {\n const removedAgentIds = Object.entries(state.agentsById)\n .filter(([, agent]) => agent.issueId === issueId)\n .map(([agentId]) => agentId)\n updatedAgents = Object.fromEntries(\n Object.entries(state.agentsById).filter(([, agent]) => agent.issueId !== issueId)\n )\n for (const agentId of removedAgentIds) {\n nextTurnDiffSummariesByAgentId = omitTurnDiffSummariesForAgent(nextTurnDiffSummariesByAgentId, agentId)\n nextAgentIdBySessionId = removeAgentFromSessionIndex(nextAgentIdBySessionId, agentId)\n }\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentsById: updatedAgents,\n turnDiffSummariesByAgentId: nextTurnDiffSummariesByAgentId,\n agentIdBySessionId: nextAgentIdBySessionId,\n }\n }\n\n case 'planning.failed':\n case 'planning.sync':\n case 'plan.item_status_changed':\n case 'plan.subitem_status_changed':\n case 'plan.items_unblocked':\n case 'operator.intervention':\n case 'substrate.bug_filed':\n case 'cost.event_recorded':\n return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n\n case 'memory.observation_created': {\n const observation = event.payload.observation\n const existing = state.observationsByIssueId[observation.issueId] ?? []\n const index = existing.findIndex(entry => entry.id === observation.id)\n const updated = trimMemoryObservations(index === -1\n ? [...existing, observation]\n : existing.map((entry, entryIndex) => entryIndex === index ? observation : entry))\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n observationsByIssueId: {\n ...state.observationsByIssueId,\n [observation.issueId]: updated,\n },\n }\n }\n\n case 'memory.status_updated': {\n const { identity, status } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n statusByIssueId: {\n ...state.statusByIssueId,\n [identity.issueId]: status,\n },\n }\n }\n\n case 'memory.rollup_triggered': {\n const trigger: MemoryRollupTriggerSnapshot = {\n projectId: event.payload.projectId,\n workspaceId: event.payload.workspaceId,\n issueId: event.payload.issueId,\n pendingTurns: [],\n pendingCount: event.payload.pendingCount,\n threshold: event.payload.threshold,\n triggeredAt: event.timestamp,\n }\n const existing = state.rollupsByIssueId[event.payload.issueId] ?? []\n const updated = [...existing, trigger].slice(-10)\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n rollupsByIssueId: {\n ...state.rollupsByIssueId,\n [event.payload.issueId]: updated,\n },\n }\n }\n\n case 'memory.reset_marker_created': {\n const { marker } = event.payload\n const key = `${marker.scope}:${marker.scopeId}`\n const existing = state.resetMarkersByScopeId[key] ?? []\n const index = existing.findIndex(entry => entry.id === marker.id)\n const updated = index === -1\n ? [...existing, marker]\n : existing.map((entry, entryIndex) => entryIndex === index ? marker : entry)\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n resetMarkersByScopeId: {\n ...state.resetMarkersByScopeId,\n [key]: updated,\n },\n }\n }\n\n case 'memory.health_changed': {\n const health: MemoryHealthSnapshot = {\n projectId: event.payload.projectId,\n issueId: event.payload.issueId,\n status: event.payload.status,\n reason: event.payload.reason,\n // Omit absent optionals entirely — an explicit `key: undefined` is not a\n // valid JSON value and makes the whole DashboardSnapshot fail the\n // Schema.Json codec used for the `memory` field, breaking the RPC bootstrap.\n ...(event.payload.detail !== undefined ? { detail: event.payload.detail } : {}),\n ...(event.payload.ragDecision !== undefined ? { ragDecision: event.payload.ragDecision } : {}),\n updatedAt: event.timestamp,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n healthByIssueId: {\n ...state.healthByIssueId,\n [event.payload.issueId]: health,\n },\n }\n }\n\n // ─── PAN-800 Agent Runtime Events ──────────────────────────────────────\n case 'agent.activity_changed': {\n const { agentId, activity, currentTool } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n activity,\n currentTool: activity === 'working' ? currentTool : undefined,\n // Clear thinking/waiting on transitions away from those activities.\n thinking: activity === 'thinking' ? prev.thinking : undefined,\n waiting: activity === 'waiting' ? prev.waiting : undefined,\n channelReply: activity === 'working' ? undefined : prev.channelReply,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.thinking_started': {\n const { agentId, lastToolAt } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n activity: 'thinking',\n currentTool: undefined,\n thinking: { since: event.timestamp, lastToolAt },\n waiting: undefined,\n channelReply: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.thinking_stopped': {\n const { agentId } = event.payload\n const prev = state.agentRuntimeById[agentId]\n if (!prev) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n // Clear the thinking state but leave activity for the follow-up event\n // (agent.activity_changed / waiting_started / stopped) to set.\n const next: AgentRuntimeSnapshot = {\n ...prev,\n thinking: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.waiting_started': {\n const { agentId, reason, message } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n activity: 'waiting',\n currentTool: undefined,\n thinking: undefined,\n waiting: {\n reason,\n startedAt: event.timestamp,\n message,\n },\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.waiting_cleared': {\n const { agentId } = event.payload\n const prev = state.agentRuntimeById[agentId]\n if (!prev) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const next: AgentRuntimeSnapshot = {\n ...prev,\n waiting: undefined,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.permission_requested': {\n const request = event.payload\n const permissionRequestIdsByAgentId = state.channelPermissionRequestIdsByAgentId ?? {}\n const resolvedDecisionsById = state.resolvedChannelPermissionDecisionsById ?? {}\n const resolvedDecisionIdsByAgentId = state.resolvedChannelPermissionDecisionIdsByAgentId ?? {}\n const nextPendingIds = permissionRequestIdsByAgentId[request.agentId] ?? []\n const resolvedDecision = resolvedDecisionsById[request.requestId]\n const nextResolvedDecisionsById = { ...resolvedDecisionsById }\n const nextResolvedIdsByAgentId = { ...resolvedDecisionIdsByAgentId }\n if (resolvedDecision) {\n delete nextResolvedDecisionsById[request.requestId]\n const prevResolvedIds = nextResolvedIdsByAgentId[resolvedDecision.agentId] ?? []\n const filteredResolvedIds = prevResolvedIds.filter((id) => id !== request.requestId)\n if (filteredResolvedIds.length > 0) {\n nextResolvedIdsByAgentId[resolvedDecision.agentId] = filteredResolvedIds\n } else {\n delete nextResolvedIdsByAgentId[resolvedDecision.agentId]\n }\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n channelPermissionRequestsById: {\n ...state.channelPermissionRequestsById,\n [request.requestId]: request,\n },\n channelPermissionRequestIdsByAgentId: {\n ...permissionRequestIdsByAgentId,\n [request.agentId]: nextPendingIds.includes(request.requestId)\n ? nextPendingIds\n : [...nextPendingIds, request.requestId],\n },\n resolvedChannelPermissionDecisionsById: nextResolvedDecisionsById,\n resolvedChannelPermissionDecisionIdsByAgentId: nextResolvedIdsByAgentId,\n }\n }\n\n case 'agent.permission_resolved': {\n const { [event.payload.requestId]: _removed, ...rest } = state.channelPermissionRequestsById\n const nextPendingIdsByAgentId = { ...(state.channelPermissionRequestIdsByAgentId ?? {}) }\n const prevPendingIds = nextPendingIdsByAgentId[event.payload.agentId] ?? []\n const filteredPendingIds = prevPendingIds.filter((id) => id !== event.payload.requestId)\n if (filteredPendingIds.length > 0) {\n nextPendingIdsByAgentId[event.payload.agentId] = filteredPendingIds\n } else {\n delete nextPendingIdsByAgentId[event.payload.agentId]\n }\n\n const resolvedDecisionIdsByAgentId = state.resolvedChannelPermissionDecisionIdsByAgentId ?? {}\n const nextResolvedIds = resolvedDecisionIdsByAgentId[event.payload.agentId] ?? []\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n channelPermissionRequestsById: rest,\n channelPermissionRequestIdsByAgentId: nextPendingIdsByAgentId,\n resolvedChannelPermissionDecisionsById: {\n ...(state.resolvedChannelPermissionDecisionsById ?? {}),\n [event.payload.requestId]: {\n requestId: event.payload.requestId,\n agentId: event.payload.agentId,\n issueId: event.payload.issueId,\n behavior: event.payload.behavior,\n },\n },\n resolvedChannelPermissionDecisionIdsByAgentId: {\n ...resolvedDecisionIdsByAgentId,\n [event.payload.agentId]: nextResolvedIds.includes(event.payload.requestId)\n ? nextResolvedIds\n : [...nextResolvedIds, event.payload.requestId],\n },\n }\n }\n\n case 'agent.message_received': {\n const { agentId, direction } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n lastMessageAt: event.timestamp,\n channelReply: direction === 'to_agent' ? undefined : prev.channelReply,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.channel_reply': {\n const { agentId, reply } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n channelReply: {\n ...reply,\n reportedAt: event.timestamp,\n },\n resolution:\n reply.kind === 'done'\n ? 'done'\n : reply.kind === 'needs_input'\n ? 'needs_input'\n : prev.resolution,\n resolutionUpdatedAt:\n reply.kind === 'done' || reply.kind === 'needs_input'\n ? event.timestamp\n : prev.resolutionUpdatedAt,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.model_set': {\n const { agentId, model, claudeSessionId, sessionModel, sessionHarness } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const nextSessionId = claudeSessionId === null\n ? undefined\n : claudeSessionId ?? prev.claudeSessionId\n const next: AgentRuntimeSnapshot = {\n ...prev,\n model,\n claudeSessionId: nextSessionId,\n sessionModel: sessionModel ?? prev.sessionModel,\n sessionHarness: sessionHarness ?? prev.sessionHarness,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n let nextAgentIdBySessionId = state.agentIdBySessionId\n if (claudeSessionId !== undefined && nextSessionId !== prev.claudeSessionId) {\n if (prev.claudeSessionId && state.agentIdBySessionId[prev.claudeSessionId] === agentId) {\n const { [prev.claudeSessionId]: _removed, ...rest } = nextAgentIdBySessionId\n nextAgentIdBySessionId = rest\n }\n if (nextSessionId) {\n nextAgentIdBySessionId = { ...nextAgentIdBySessionId, [nextSessionId]: agentId }\n }\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n agentIdBySessionId: nextAgentIdBySessionId,\n }\n }\n\n case 'agent.current_issue_set': {\n const { agentId, currentIssue } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n currentIssue,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.context_saturation_changed': {\n const { agentId, contextSaturatedAt } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n contextSaturatedAt,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.resolution_changed': {\n const { agentId, resolution, resolutionCount } = event.payload\n const prev = state.agentRuntimeById[agentId]\n ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence)\n const next: AgentRuntimeSnapshot = {\n ...prev,\n resolution,\n resolutionCount,\n resolutionUpdatedAt: event.timestamp,\n lastActivity: event.timestamp,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'agent.state_restored': {\n const { agentId, snapshot } = event.payload\n // Seed directly from the restored snapshot but use the new event's sequence\n // so downstream consumers key off a monotonic value.\n const next: AgentRuntimeSnapshot = {\n ...snapshot,\n updatedAtSequence: event.sequence,\n }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n agentRuntimeById: { ...state.agentRuntimeById, [agentId]: next },\n agentsById: bumpRuntimeSnapshotSequence(state.agentsById, agentId, event.sequence),\n }\n }\n\n case 'activity.entry': {\n const entry = event.payload as Record<string, unknown>;\n const previousEntries = state.recentActivity as Array<Record<string, unknown>>;\n const previous = previousEntries.find(candidate => candidate.id === entry.id);\n const newEntry = { ...previous, id: entry.id, timestamp: event.timestamp, ...entry };\n const updated = [\n newEntry,\n ...previousEntries.filter(candidate => candidate.id !== entry.id),\n ].slice(0, MAX_ACTIVITY_ENTRIES);\n return { ...state, sequence: Math.max(state.sequence, event.sequence), recentActivity: updated };\n }\n\n case 'activity.detailed': {\n const entry = event.payload as Record<string, unknown>;\n const newEntry = { id: entry.id, timestamp: event.timestamp, ...entry };\n const updated = [newEntry, ...(state.detailedActivity as Array<Record<string, unknown>>)].slice(0, MAX_DETAILED_ENTRIES);\n return { ...state, sequence: Math.max(state.sequence, event.sequence), detailedActivity: updated };\n }\n\n case 'activity.tts': {\n const entry = event.payload as Record<string, unknown>;\n const newEntry = { id: entry.id, timestamp: event.timestamp, ...entry };\n const updated = [newEntry, ...(state.ttsActivity as Array<Record<string, unknown>>)].slice(0, MAX_TTS_ENTRIES);\n return { ...state, sequence: Math.max(state.sequence, event.sequence), ttsActivity: updated };\n }\n\n case 'dashboard.lifecycle_started': {\n const { reason, issueId, trigger } = event.payload as { reason: string; issueId: string | null; trigger: string };\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n dashboardLifecycle: {\n active: true,\n reason,\n issueId,\n trigger,\n startedAt: event.timestamp,\n completedAt: null,\n failedAt: null,\n error: null,\n },\n };\n }\n\n case 'dashboard.lifecycle_completed': {\n const { reason, issueId } = event.payload as { reason: string; issueId: string | null; durationMs: number };\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n dashboardLifecycle: {\n ...state.dashboardLifecycle,\n active: false,\n reason: reason ?? state.dashboardLifecycle.reason,\n issueId: issueId ?? state.dashboardLifecycle.issueId,\n completedAt: event.timestamp,\n },\n };\n }\n\n case 'dashboard.lifecycle_failed': {\n const { reason, issueId, error } = event.payload as { reason: string; issueId: string | null; error: string };\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n dashboardLifecycle: {\n ...state.dashboardLifecycle,\n active: false,\n reason: reason ?? state.dashboardLifecycle.reason,\n issueId: issueId ?? state.dashboardLifecycle.issueId,\n failedAt: event.timestamp,\n error,\n },\n };\n }\n\n case 'agent.turn_diff_completed': {\n const p = event.payload as {\n agentId: string\n turnId: string\n completedAt: string\n files: Array<{ path: string; kind?: string; additions?: number; deletions?: number }>\n checkpointRef?: string\n assistantMessageId?: string\n checkpointTurnCount?: number\n }\n const existing = state.turnDiffSummariesByAgentId[p.agentId] ?? []\n const summary: TurnDiffSummary = {\n turnId: p.turnId,\n completedAt: p.completedAt,\n files: p.files,\n checkpointRef: p.checkpointRef,\n assistantMessageId: p.assistantMessageId ?? undefined,\n checkpointTurnCount: p.checkpointTurnCount,\n }\n // Deduplicate by turnId — replace if exists, append otherwise\n const idx = existing.findIndex(s => s.turnId === p.turnId)\n const updated = trimTurnDiffSummaries(\n idx >= 0\n ? existing.map((s, i) => i === idx ? summary : s)\n : [...existing, summary]\n )\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n turnDiffSummariesByAgentId: {\n ...state.turnDiffSummariesByAgentId,\n [p.agentId]: updated,\n },\n }\n }\n\n case 'conversation.compacting_changed': {\n const { conversationName, compacting } = event.payload\n if (!compacting) {\n const { [conversationName]: _removed, ...rest } = state.conversationsCompactingByName\n return { ...state, conversationsCompactingByName: rest }\n }\n return {\n ...state,\n conversationsCompactingByName: { ...state.conversationsCompactingByName, [conversationName]: true },\n }\n }\n\n case 'conversation.created': {\n return { ...state, conversationsListRevision: state.conversationsListRevision + 1 }\n }\n\n case 'conversation.title_changed': {\n return { ...state, conversationsListRevision: state.conversationsListRevision + 1 }\n }\n\n case 'conversation.permission_changed': {\n const { conversationName, waiting } = event.payload\n if (!waiting) {\n const { [conversationName]: _removed, ...rest } = state.conversationsAwaitingPermissionByName\n return { ...state, conversationsAwaitingPermissionByName: rest }\n }\n return {\n ...state,\n conversationsAwaitingPermissionByName: { ...state.conversationsAwaitingPermissionByName, [conversationName]: true },\n }\n }\n\n // ─── Scan events (PAN-457) ───────────────────────────────────────────────\n\n case 'scan.started': {\n const { mode, dirs } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n scanProgress: {\n active: true,\n mode,\n dirs,\n dirsProcessed: 0,\n dirsTotal: 0,\n sessionsFound: 0,\n elapsedMs: 0,\n inserted: 0,\n updated: 0,\n skipped: 0,\n errors: 0,\n durationMs: 0,\n },\n }\n }\n\n case 'scan.progress': {\n if (!state.scanProgress) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const { dirsProcessed, dirsTotal, sessionsFound, elapsedMs } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n scanProgress: {\n ...state.scanProgress,\n dirsProcessed,\n dirsTotal,\n sessionsFound,\n elapsedMs,\n },\n }\n }\n\n case 'scan.complete': {\n if (!state.scanProgress) return { ...state, sequence: Math.max(state.sequence, event.sequence) }\n const { inserted, updated, skipped, errors, durationMs } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n scanProgress: {\n ...state.scanProgress,\n active: false,\n inserted,\n updated,\n skipped,\n errors,\n durationMs,\n },\n }\n }\n\n // ─── Enrich events (PAN-457) ─────────────────────────────────────────────\n\n case 'enrich.progress': {\n const { sessionId, level, model, cost, success, error } = event.payload\n const prev = state.enrichStats ?? { processed: 0, totalCost: 0, failures: 0, durationMs: 0 }\n const progress = { sessionId, level, model, cost, success, error, timestamp: event.timestamp }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n enrichStats: {\n processed: prev.processed + 1,\n totalCost: prev.totalCost + (success ? cost : 0),\n failures: prev.failures + (success ? 0 : 1),\n durationMs: 0,\n },\n enrichProgressBySessionId: upsertBoundedSessionProgress(state.enrichProgressBySessionId, progress),\n }\n }\n\n case 'enrich.complete': {\n const { processed, totalCost, failures, durationMs } = event.payload\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n enrichStats: { processed, totalCost, failures, durationMs },\n enrichProgressBySessionId: {},\n }\n }\n\n case 'embed.progress': {\n const { sessionId, model, success, error } = event.payload\n const progress = { sessionId, model, success, error, timestamp: event.timestamp }\n return {\n ...state,\n sequence: Math.max(state.sequence, event.sequence),\n embedProgressBySessionId: upsertBoundedSessionProgress(state.embedProgressBySessionId, progress),\n }\n }\n\n default: {\n void (event as never)\n return state\n }\n }\n}\n\n// ─── applyEvents — batch apply ───────────────────────────────────────────────\n\nexport function applyEvents(state: ReadModelState, events: DomainEvent[]): ReadModelState {\n return events.reduce(applyEvent, state)\n}\n","import { Schema } from \"effect\"\n\nexport const FlywheelStatsCriterionStatus = Schema.Literals([\n \"green\",\n \"yellow\",\n \"red\",\n \"insufficient_data\",\n])\nexport type FlywheelStatsCriterionStatus = typeof FlywheelStatsCriterionStatus.Type\n\nexport const FlywheelStatsTrend = Schema.Literals([\"up\", \"down\", \"flat\"])\nexport type FlywheelStatsTrend = typeof FlywheelStatsTrend.Type\n\nexport const FlywheelStatsCriterionValueObject = Schema.Record(Schema.String, Schema.Json)\nexport type FlywheelStatsCriterionValueObject = typeof FlywheelStatsCriterionValueObject.Type\n\nexport const FlywheelStatsCriterionValue = Schema.Union([\n Schema.Number,\n FlywheelStatsCriterionValueObject,\n])\nexport type FlywheelStatsCriterionValue = typeof FlywheelStatsCriterionValue.Type\n\nexport interface FlywheelStatsCriterion {\n label: string\n value: FlywheelStatsCriterionValue\n target: FlywheelStatsCriterionValue\n status: FlywheelStatsCriterionStatus\n trend?: FlywheelStatsTrend | undefined\n sampleSize: number\n dataSufficient: boolean\n}\n\nexport const FlywheelStatsCriterion = Schema.Struct({\n label: Schema.String,\n value: FlywheelStatsCriterionValue,\n target: FlywheelStatsCriterionValue,\n status: FlywheelStatsCriterionStatus,\n trend: Schema.optional(FlywheelStatsTrend),\n sampleSize: Schema.Number,\n dataSufficient: Schema.Boolean,\n})\n\nexport interface FlywheelStatsCriteria {\n c1_bugRate: FlywheelStatsCriterion\n c2_p0Bugs: FlywheelStatsCriterion\n c3_passRate: FlywheelStatsCriterion\n c4_mttr: FlywheelStatsCriterion\n c5_intervention: FlywheelStatsCriterion\n c6_timeConsistency: FlywheelStatsCriterion\n c7_flake: FlywheelStatsCriterion\n}\n\nexport const FlywheelStatsCriteria = Schema.Struct({\n c1_bugRate: FlywheelStatsCriterion,\n c2_p0Bugs: FlywheelStatsCriterion,\n c3_passRate: FlywheelStatsCriterion,\n c4_mttr: FlywheelStatsCriterion,\n c5_intervention: FlywheelStatsCriterion,\n c6_timeConsistency: FlywheelStatsCriterion,\n c7_flake: FlywheelStatsCriterion,\n})\n\nexport interface FlywheelStats {\n window: string\n generatedAt: string\n criteria: FlywheelStatsCriteria\n}\n\nexport const FlywheelStats = Schema.Struct({\n window: Schema.String,\n generatedAt: Schema.String,\n criteria: FlywheelStatsCriteria,\n})\n\nexport const decodeFlywheelStats = Schema.decodeUnknownSync(FlywheelStats)\nexport const encodeFlywheelStats = Schema.encodeSync(FlywheelStats)\n","import { Schema } from \"effect\"\n\nexport const OrderBookLane = Schema.Literals([\"A\", \"B\"])\nexport type OrderBookLane = typeof OrderBookLane.Type\n\nexport const OrderBookStatus = Schema.Literals([\n \"draft\",\n \"ready\",\n \"running\",\n \"drained\",\n \"complete\",\n])\nexport type OrderBookStatus = typeof OrderBookStatus.Type\n\nexport const OrderBookPosture = Schema.Literals([\"open\", \"drain\"])\nexport type OrderBookPosture = typeof OrderBookPosture.Type\n\nexport interface OrderBookItem {\n issue: string\n lane: OrderBookLane\n order: number\n prereqs: ReadonlyArray<string>\n reVerify: boolean\n planAtPickup?: boolean | undefined\n addedAt: string\n addedBy: string\n}\n\nexport const OrderBookItem = Schema.Struct({\n issue: Schema.String,\n lane: OrderBookLane,\n order: Schema.Number,\n prereqs: Schema.Array(Schema.String),\n reVerify: Schema.Boolean,\n planAtPickup: Schema.optional(Schema.Boolean),\n addedAt: Schema.String,\n addedBy: Schema.String,\n})\n\nexport interface OrderBookSettings {\n laneAConcurrency: number\n briefOverlay?: string | undefined\n posture: OrderBookPosture\n postureSetAt?: string | undefined\n postureSetBy?: string | undefined\n postureReason?: string | undefined\n}\n\nexport const OrderBookSettings = Schema.Struct({\n laneAConcurrency: Schema.Number,\n briefOverlay: Schema.optional(Schema.String),\n posture: OrderBookPosture,\n postureSetAt: Schema.optional(Schema.String),\n postureSetBy: Schema.optional(Schema.String),\n postureReason: Schema.optional(Schema.String),\n})\n\nexport interface OrderBook {\n id: string\n name: string\n status: OrderBookStatus\n settings: OrderBookSettings\n items: ReadonlyArray<OrderBookItem>\n runId?: string | undefined\n createdAt: string\n updatedAt: string\n}\n\nexport const OrderBook = Schema.Struct({\n id: Schema.String,\n name: Schema.String,\n status: OrderBookStatus,\n settings: OrderBookSettings,\n items: Schema.Array(OrderBookItem),\n runId: Schema.optional(Schema.String),\n createdAt: Schema.String,\n updatedAt: Schema.String,\n})\n\nexport interface OrderBookIndexEntry {\n id: string\n name: string\n status: OrderBookStatus\n runId?: string | undefined\n updatedAt: string\n}\n\nexport const OrderBookIndexEntry = Schema.Struct({\n id: Schema.String,\n name: Schema.String,\n status: OrderBookStatus,\n runId: Schema.optional(Schema.String),\n updatedAt: Schema.String,\n})\n","import { Schema } from \"effect\"\nimport type { Harness } from \"./types\"\n\nexport const CONTEXT_LAYER_KINDS = [\"global\", \"project\", \"workspace\"] as const\nexport const CONTEXT_PREVIEW_HARNESSES = [\"claude-code\", \"ohmypi\", \"codex\", \"acp\"] as const satisfies readonly Harness[]\n\nexport const ContextLayerKind = Schema.Literals(CONTEXT_LAYER_KINDS)\nexport type ContextLayerKind = typeof ContextLayerKind.Type\n\nexport const ContextPreviewHarness = Schema.Literals(CONTEXT_PREVIEW_HARNESSES)\nexport type ContextPreviewHarness = typeof ContextPreviewHarness.Type\n\nexport const ContextProjectSummary = Schema.Struct({\n projectKey: Schema.String,\n name: Schema.String,\n path: Schema.String,\n issuePrefix: Schema.optional(Schema.String),\n tracker: Schema.optional(Schema.Literals([\"linear\", \"github\", \"gitlab\", \"rally\"])),\n workspaceRoot: Schema.optional(Schema.String),\n})\nexport type ContextProjectSummary = typeof ContextProjectSummary.Type\n\nexport const ContextWorkspaceSummary = Schema.Struct({\n projectKey: Schema.String,\n path: Schema.String,\n name: Schema.String,\n issueId: Schema.optional(Schema.String),\n branch: Schema.optional(Schema.String),\n})\nexport type ContextWorkspaceSummary = typeof ContextWorkspaceSummary.Type\n\nconst ContextLayerBase = {\n file: Schema.String,\n exists: Schema.Boolean,\n content: Schema.String,\n editable: Schema.Boolean,\n}\n\nexport const GlobalContextLayerRecord = Schema.Struct({\n kind: Schema.Literal(\"global\"),\n ...ContextLayerBase,\n})\nexport type GlobalContextLayerRecord = typeof GlobalContextLayerRecord.Type\n\nexport const ProjectContextLayerRecord = Schema.Struct({\n kind: Schema.Literal(\"project\"),\n projectKey: Schema.String,\n ...ContextLayerBase,\n})\nexport type ProjectContextLayerRecord = typeof ProjectContextLayerRecord.Type\n\nexport const WorkspaceContextLayerRecord = Schema.Struct({\n kind: Schema.Literal(\"workspace\"),\n projectKey: Schema.String,\n workspacePath: Schema.String,\n ...ContextLayerBase,\n})\nexport type WorkspaceContextLayerRecord = typeof WorkspaceContextLayerRecord.Type\n\nexport const ContextEditableLayerRecord = Schema.Union([\n GlobalContextLayerRecord,\n ProjectContextLayerRecord,\n WorkspaceContextLayerRecord,\n])\nexport type ContextEditableLayerRecord = typeof ContextEditableLayerRecord.Type\n\nexport const GlobalContextLayerTarget = Schema.Struct({\n kind: Schema.Literal(\"global\"),\n})\nexport type GlobalContextLayerTarget = typeof GlobalContextLayerTarget.Type\n\nexport const ProjectContextLayerTarget = Schema.Struct({\n kind: Schema.Literal(\"project\"),\n projectKey: Schema.String,\n})\nexport type ProjectContextLayerTarget = typeof ProjectContextLayerTarget.Type\n\nexport const WorkspaceContextLayerTarget = Schema.Struct({\n kind: Schema.Literal(\"workspace\"),\n projectKey: Schema.String,\n workspacePath: Schema.String,\n})\nexport type WorkspaceContextLayerTarget = typeof WorkspaceContextLayerTarget.Type\n\nexport const ContextLayerTarget = Schema.Union([\n GlobalContextLayerTarget,\n ProjectContextLayerTarget,\n WorkspaceContextLayerTarget,\n])\nexport type ContextLayerTarget = typeof ContextLayerTarget.Type\n\nexport const ContextLayerDraft = Schema.Struct({\n target: ContextLayerTarget,\n content: Schema.String,\n})\nexport type ContextLayerDraft = typeof ContextLayerDraft.Type\n\n/**\n * A rendered output file `pan sync` writes a Overdeck-managed region into\n * (e.g. ~/.claude/CLAUDE.md, a project's CLAUDE.md or AGENTS.md). Distinct from\n * the editable *layer source* files — this describes the injection *target* so\n * the dashboard can show the user exactly where context lands and reassure them\n * their own content is preserved.\n */\nexport const ContextSyncTarget = Schema.Struct({\n harness: ContextPreviewHarness,\n layerKind: Schema.Literals([\"global\", \"project\"]),\n projectKey: Schema.optional(Schema.String),\n /** Short human label, e.g. \"Claude Code · global\". */\n label: Schema.String,\n /** Resolved absolute path of the target file. */\n path: Schema.String,\n exists: Schema.Boolean,\n /** True when the file already contains a Overdeck-managed region. */\n hasManagedRegion: Schema.Boolean,\n /** True when the file has hand-authored content outside the managed region. */\n hasUserContent: Schema.Boolean,\n})\nexport type ContextSyncTarget = typeof ContextSyncTarget.Type\n\nexport const ContextLayersResponse = Schema.Struct({\n operation: Schema.Literal(\"load\"),\n projects: Schema.Array(ContextProjectSummary),\n workspaces: Schema.Array(ContextWorkspaceSummary),\n layers: Schema.Array(ContextEditableLayerRecord),\n /** Injection targets `pan sync` writes managed regions into. */\n targets: Schema.Array(ContextSyncTarget),\n})\nexport type ContextLayersResponse = typeof ContextLayersResponse.Type\n\nexport const ContextPreviewRequest = Schema.Struct({\n operation: Schema.Literal(\"preview\"),\n selectedLayer: ContextLayerTarget,\n drafts: Schema.Array(ContextLayerDraft),\n})\nexport type ContextPreviewRequest = typeof ContextPreviewRequest.Type\n\nexport const ContextHarnessPreviews = Schema.Struct({\n \"claude-code\": Schema.String,\n ohmypi: Schema.String,\n codex: Schema.String,\n acp: Schema.String,\n fullPrompt: Schema.String,\n})\nexport type ContextHarnessPreviews = typeof ContextHarnessPreviews.Type\n\nexport const ContextPreviewDiagnostic = Schema.Struct({\n level: Schema.Literals([\"info\", \"warning\", \"error\"]),\n message: Schema.String,\n layer: Schema.optional(ContextLayerTarget),\n})\nexport type ContextPreviewDiagnostic = typeof ContextPreviewDiagnostic.Type\n\nexport const ContextPreviewResponse = Schema.Struct({\n operation: Schema.Literal(\"preview\"),\n previews: ContextHarnessPreviews,\n diagnostics: Schema.Array(ContextPreviewDiagnostic),\n})\nexport type ContextPreviewResponse = typeof ContextPreviewResponse.Type\n\nexport const ContextLayerSaveRequest = Schema.Struct({\n operation: Schema.Literal(\"save\"),\n target: ContextLayerTarget,\n content: Schema.String,\n})\nexport type ContextLayerSaveRequest = typeof ContextLayerSaveRequest.Type\n\nexport const ContextLayerSaveResponse = Schema.Struct({\n operation: Schema.Literal(\"save\"),\n layer: ContextEditableLayerRecord,\n savedAt: Schema.String,\n})\nexport type ContextLayerSaveResponse = typeof ContextLayerSaveResponse.Type\n\nexport const ContextSyncRequest = Schema.Struct({\n operation: Schema.Literal(\"sync\"),\n})\nexport type ContextSyncRequest = typeof ContextSyncRequest.Type\n\nexport const ContextSyncResponse = Schema.Struct({\n operation: Schema.Literal(\"sync\"),\n success: Schema.Boolean,\n exitCode: Schema.optional(Schema.Number),\n stdout: Schema.String,\n stderr: Schema.String,\n syncedAt: Schema.String,\n})\nexport type ContextSyncResponse = typeof ContextSyncResponse.Type\n","import { Schema } from \"effect\"\n\nexport const ArtifactId = Schema.String\nexport type ArtifactId = typeof ArtifactId.Type\n\nexport const ArtifactSlug = Schema.String\nexport type ArtifactSlug = typeof ArtifactSlug.Type\n\nexport const ArtifactHash = Schema.String\nexport type ArtifactHash = typeof ArtifactHash.Type\n\nexport const ArtifactAgentRole = Schema.Literals([\"plan\", \"work\", \"review\", \"test\", \"ship\", \"flywheel\", \"user\"])\nexport type ArtifactAgentRole = typeof ArtifactAgentRole.Type\n\nexport const ArtifactAgentHarness = Schema.Literals([\"claude-code\", \"pi\", \"ohmypi\", \"codex\", \"acp\", \"user\"])\nexport type ArtifactAgentHarness = typeof ArtifactAgentHarness.Type\n\nexport const ArtifactLifecycleState = Schema.Literals([\n \"published\",\n \"pending_changes\",\n \"unshared\",\n])\nexport type ArtifactLifecycleState = typeof ArtifactLifecycleState.Type\n\nexport const ArtifactValidationCode = Schema.Literals([\n \"invalid_file_type\",\n \"not_a_file\",\n \"size_limit_exceeded\",\n \"forbidden_asset_url\",\n \"secret_detected\",\n \"secret_allowed\",\n \"high_entropy_string\",\n \"inline_event_handler\",\n \"missing_image_alt\",\n])\nexport type ArtifactValidationCode = typeof ArtifactValidationCode.Type\n\nexport const ArtifactValidationFinding = Schema.Struct({\n code: ArtifactValidationCode,\n message: Schema.String,\n line: Schema.optional(Schema.Number),\n column: Schema.optional(Schema.Number),\n rule: Schema.optional(Schema.String),\n strict: Schema.optional(Schema.Boolean),\n})\nexport type ArtifactValidationFinding = typeof ArtifactValidationFinding.Type\n\nexport const ArtifactValidationResult = Schema.Struct({\n ok: Schema.Boolean,\n filePath: Schema.optional(Schema.String),\n size: Schema.Number,\n hash: ArtifactHash,\n strict: Schema.Boolean,\n errors: Schema.Array(ArtifactValidationFinding),\n warnings: Schema.Array(ArtifactValidationFinding),\n})\nexport type ArtifactValidationResult = typeof ArtifactValidationResult.Type\n\nexport const ArtifactMetadata = Schema.Struct({\n artifactId: ArtifactId,\n slug: ArtifactSlug,\n issueId: Schema.optional(Schema.NullOr(Schema.String)),\n workspaceId: Schema.optional(Schema.NullOr(Schema.String)),\n agentRole: Schema.optional(Schema.NullOr(ArtifactAgentRole)),\n agentHarness: Schema.optional(Schema.NullOr(ArtifactAgentHarness)),\n runId: Schema.optional(Schema.NullOr(Schema.String)),\n sessionId: Schema.optional(Schema.NullOr(Schema.String)),\n filePath: Schema.String,\n currentHash: ArtifactHash,\n lastPublishedHash: Schema.optional(Schema.NullOr(ArtifactHash)),\n supersedes: Schema.optional(Schema.NullOr(ArtifactId)),\n title: Schema.optional(Schema.NullOr(Schema.String)),\n description: Schema.optional(Schema.NullOr(Schema.String)),\n createdAt: Schema.String,\n publishedAt: Schema.optional(Schema.NullOr(Schema.String)),\n unsharedAt: Schema.optional(Schema.NullOr(Schema.String)),\n})\nexport type ArtifactMetadata = typeof ArtifactMetadata.Type\n\nexport const ArtifactUrls = Schema.Struct({\n wrapperUrl: Schema.String,\n rawUrl: Schema.String,\n})\nexport type ArtifactUrls = typeof ArtifactUrls.Type\n\nexport const ArtifactStatusResponse = Schema.Struct({\n artifact: Schema.optional(ArtifactMetadata),\n filePath: Schema.String,\n currentHash: ArtifactHash,\n lastPublishedHash: Schema.optional(Schema.NullOr(ArtifactHash)),\n pendingChanges: Schema.Boolean,\n validation: Schema.optional(ArtifactValidationResult),\n})\nexport type ArtifactStatusResponse = typeof ArtifactStatusResponse.Type\n\nexport const ArtifactCreateResponse = Schema.Struct({\n artifact: ArtifactMetadata,\n urls: ArtifactUrls,\n validation: ArtifactValidationResult,\n published: Schema.Boolean,\n})\nexport type ArtifactCreateResponse = typeof ArtifactCreateResponse.Type\n\nexport const ArtifactPublishResponse = Schema.Struct({\n artifact: ArtifactMetadata,\n urls: ArtifactUrls,\n validation: ArtifactValidationResult,\n published: Schema.Boolean,\n pendingChanges: Schema.Boolean,\n})\nexport type ArtifactPublishResponse = typeof ArtifactPublishResponse.Type\n\nexport const ArtifactUnshareResponse = Schema.Struct({\n artifact: ArtifactMetadata,\n unshared: Schema.Boolean,\n})\nexport type ArtifactUnshareResponse = typeof ArtifactUnshareResponse.Type\n\nexport const ArtifactListEntry = Schema.Struct({\n artifact: ArtifactMetadata,\n urls: ArtifactUrls,\n status: ArtifactLifecycleState,\n pendingChanges: Schema.Boolean,\n thumbnailUrl: Schema.optional(Schema.String),\n})\nexport type ArtifactListEntry = typeof ArtifactListEntry.Type\n\nexport const ArtifactListResponse = Schema.Struct({\n artifacts: Schema.Array(ArtifactListEntry),\n})\nexport type ArtifactListResponse = typeof ArtifactListResponse.Type\n\nexport const ArtifactDetailResponse = Schema.Struct({\n artifact: ArtifactMetadata,\n urls: ArtifactUrls,\n status: ArtifactLifecycleState,\n pendingChanges: Schema.Boolean,\n})\nexport type ArtifactDetailResponse = typeof ArtifactDetailResponse.Type\n\nexport const WorkspaceArtifactsResponse = Schema.Struct({\n issueId: Schema.optional(Schema.String),\n workspaceId: Schema.optional(Schema.String),\n artifacts: Schema.Array(ArtifactListEntry),\n})\nexport type WorkspaceArtifactsResponse = typeof WorkspaceArtifactsResponse.Type\n","import { Schema } from \"effect\"\n\nexport const FeatureRegistryStatus = Schema.Literals([\n \"active\",\n \"archived\",\n \"merged\",\n \"deferred\",\n])\nexport type FeatureRegistryStatus = typeof FeatureRegistryStatus.Type\n\nexport const FeatureRegistryEntry = Schema.Struct({\n featureId: Schema.String,\n featureName: Schema.String,\n description: Schema.NullOr(Schema.String),\n owningWorkspaceId: Schema.NullOr(Schema.String),\n owningIssueId: Schema.NullOr(Schema.String),\n owningAgentId: Schema.NullOr(Schema.String),\n status: FeatureRegistryStatus,\n createdAt: Schema.String,\n updatedAt: Schema.String,\n tags: Schema.Array(Schema.String),\n})\nexport type FeatureRegistryEntry = typeof FeatureRegistryEntry.Type\n\nexport interface FeatureRegistryListFilter {\n featureName?: string\n issueId?: string\n workspaceId?: string\n agentId?: string\n status?: FeatureRegistryStatus\n tags?: string[]\n limit?: number\n}\n\nexport interface FeatureRegistryTagInput {\n issueId: string\n featureName: string\n description?: string\n workspaceId?: string | null\n agentId?: string | null\n status?: FeatureRegistryStatus\n tags?: string[]\n now?: string\n}\n\nexport interface FeatureRegistryUntagInput {\n issueId: string\n featureName: string\n}\n\nexport interface FeatureRegistryOwnershipUpdate {\n featureName?: string\n issueId?: string | null\n workspaceId?: string | null\n agentId?: string | null\n status?: FeatureRegistryStatus\n tags?: string[]\n now?: string\n}\n","import type { Harness } from \"./types\"\n\nexport type RuntimeName = Harness\nexport type HarnessName = RuntimeName | \"pi\"\n\nexport type HarnessLaunchCommandKind = \"claude-code\" | \"ohmypi-rpc\" | \"codex-work-tui\" | \"codex-app-server\" | \"acp-host\"\nexport type HarnessDeliveryKind =\n | \"pty-supervisor\"\n | \"rpc-fifo\"\n | \"codex-exec-resume\"\n | \"codex-app-server-rpc\"\n | \"acp-host-rpc\"\n | \"tmux-paste\"\nexport type HarnessReadinessKind =\n | \"claude-session-signal\"\n | \"ohmypi-ready-file\"\n | \"codex-tui-prompt\"\n | \"codex-app-server-ready\"\n | \"acp-host-ready\"\nexport type HarnessTranscriptKind = \"claude-jsonl\" | \"ohmypi-jsonl\" | \"codex-rollout-jsonl\" | \"acp-jsonl\"\nexport type HarnessSessionIdSource = \"launcher-session-id\" | \"transcript-jsonl\" | \"codex-thread-id\" | \"acp-session-id\"\nexport type HarnessContextLayerKind = \"claude\" | \"pi\" | \"codex\" | \"acp\"\nexport type HarnessFeedKind = \"claude_code\" | \"pi\" | \"codex\" | \"acp\"\n\nexport interface HarnessNativeCommand {\n readonly name: string\n readonly description: string\n readonly insert: string\n}\n\nexport interface HarnessBehavior {\n readonly displayName: string\n readonly nativeCommands?: readonly HarnessNativeCommand[]\n readonly executableName: string\n readonly processNames: readonly string[]\n readonly launchCommandKind: HarnessLaunchCommandKind\n readonly deliveryKind: HarnessDeliveryKind\n readonly readinessKind: HarnessReadinessKind\n readonly transcriptKind: HarnessTranscriptKind\n readonly sessionIdSource: HarnessSessionIdSource\n readonly contextLayerKind: HarnessContextLayerKind\n readonly feedKind: HarnessFeedKind\n readonly supportsPtySupervisor: boolean\n readonly supportsChannelsBridge: boolean\n readonly supportsConversationStreaming: boolean\n readonly supportsPatchProjection: boolean\n readonly usesRpcFifo: boolean\n readonly usesCodexHome: boolean\n readonly injectsPromptTimeMemory: boolean\n readonly workAgentMode: \"claude-code\" | \"ohmypi-rpc\" | \"codex-work-tui\" | \"codex-app-server\" | \"acp-host\"\n readonly readyTimeoutSeconds: number\n}\n\nexport const CLAUDE_CODE_BEHAVIOR: HarnessBehavior = {\n displayName: \"Claude Code\",\n // Verified from the installed Claude Code 2.1.209 binary on 2026-07-24.\n nativeCommands: [\n { name: \"/model\", description: \"Switch the AI model for this conversation\", insert: \"/model \" },\n { name: \"/context\", description: \"Inspect or expand the current context window\", insert: \"/context \" },\n { name: \"/effort\", description: \"Set the reasoning effort level\", insert: \"/effort \" },\n { name: \"/cancel\", description: \"Cancel the current operation\", insert: \"/cancel\" },\n ],\n executableName: \"claude\",\n processNames: [\"claude\"],\n launchCommandKind: \"claude-code\",\n deliveryKind: \"pty-supervisor\",\n readinessKind: \"claude-session-signal\",\n transcriptKind: \"claude-jsonl\",\n sessionIdSource: \"launcher-session-id\",\n contextLayerKind: \"claude\",\n feedKind: \"claude_code\",\n supportsPtySupervisor: true,\n supportsChannelsBridge: true,\n supportsConversationStreaming: false,\n supportsPatchProjection: true,\n usesRpcFifo: false,\n usesCodexHome: false,\n injectsPromptTimeMemory: false,\n workAgentMode: \"claude-code\",\n readyTimeoutSeconds: 30,\n}\n\nexport const OHMYPI_BEHAVIOR: HarnessBehavior = {\n displayName: \"Pi\",\n // omp 16.3.11 does not expose a machine-readable native slash-command inventory (checked 2026-07-24).\n nativeCommands: [],\n executableName: \"omp\",\n processNames: [\"omp\"],\n launchCommandKind: \"ohmypi-rpc\",\n deliveryKind: \"rpc-fifo\",\n readinessKind: \"ohmypi-ready-file\",\n transcriptKind: \"ohmypi-jsonl\",\n sessionIdSource: \"transcript-jsonl\",\n contextLayerKind: \"pi\",\n feedKind: \"pi\",\n supportsPtySupervisor: false,\n supportsChannelsBridge: false,\n supportsConversationStreaming: true,\n supportsPatchProjection: false,\n usesRpcFifo: true,\n usesCodexHome: false,\n injectsPromptTimeMemory: true,\n workAgentMode: \"ohmypi-rpc\",\n readyTimeoutSeconds: 120,\n}\n\nexport const CODEX_BEHAVIOR: HarnessBehavior = {\n displayName: \"Codex\",\n // Codex CLI 0.144.4 does not expose a machine-readable native slash-command inventory (checked 2026-07-24).\n nativeCommands: [],\n executableName: \"codex\",\n processNames: [\"codex\"],\n launchCommandKind: \"codex-work-tui\",\n deliveryKind: \"codex-exec-resume\",\n readinessKind: \"codex-tui-prompt\",\n transcriptKind: \"codex-rollout-jsonl\",\n sessionIdSource: \"codex-thread-id\",\n contextLayerKind: \"codex\",\n feedKind: \"codex\",\n supportsPtySupervisor: true,\n supportsChannelsBridge: false,\n supportsConversationStreaming: true,\n supportsPatchProjection: true,\n usesRpcFifo: false,\n usesCodexHome: true,\n injectsPromptTimeMemory: false,\n workAgentMode: \"codex-work-tui\",\n readyTimeoutSeconds: 30,\n}\n\nexport const ACP_BEHAVIOR: HarnessBehavior = {\n displayName: \"ACP\",\n // Kimi Code CLI 0.28.1 via ACP does not expose a machine-readable native slash-command inventory (checked 2026-07-24).\n nativeCommands: [],\n executableName: \"acp-host\",\n processNames: [\"acp-host\", \"kimi\"],\n launchCommandKind: \"acp-host\",\n deliveryKind: \"acp-host-rpc\",\n readinessKind: \"acp-host-ready\",\n transcriptKind: \"acp-jsonl\",\n sessionIdSource: \"acp-session-id\",\n contextLayerKind: \"acp\",\n feedKind: \"acp\",\n supportsPtySupervisor: false,\n supportsChannelsBridge: false,\n supportsConversationStreaming: true,\n supportsPatchProjection: false,\n usesRpcFifo: false,\n usesCodexHome: false,\n injectsPromptTimeMemory: false,\n workAgentMode: \"acp-host\",\n readyTimeoutSeconds: 30,\n}\n\nconst BEHAVIORS: Record<RuntimeName, HarnessBehavior> = {\n \"claude-code\": CLAUDE_CODE_BEHAVIOR,\n ohmypi: OHMYPI_BEHAVIOR,\n codex: CODEX_BEHAVIOR,\n acp: ACP_BEHAVIOR,\n}\n\nexport function getHarnessBehavior(harness: HarnessName | undefined | null): HarnessBehavior {\n if (harness === \"ohmypi\" || harness === \"pi\") return OHMYPI_BEHAVIOR\n if (harness === \"codex\") return CODEX_BEHAVIOR\n if (harness === \"acp\") return ACP_BEHAVIOR\n return CLAUDE_CODE_BEHAVIOR\n}\n\nexport function getRuntimeBehavior(runtime: RuntimeName): HarnessBehavior {\n return BEHAVIORS[runtime]\n}\n","import { Schema } from \"effect\"\n\nexport const HygieneFinding = Schema.Struct({\n id: Schema.String,\n summary: Schema.String,\n detail: Schema.optional(Schema.String),\n urgent: Schema.optional(Schema.Boolean),\n})\nexport type HygieneFinding = typeof HygieneFinding.Type\n\nexport const HygienePullRequest = Schema.Struct({\n number: Schema.Number,\n branch: Schema.String,\n url: Schema.String,\n blocking: Schema.Literals([\"review-pending\", \"test-pending\", \"failing-checks\", \"awaiting-UAT\", \"clean\"]),\n})\n\nexport const HygieneReport = Schema.Struct({\n generatedAt: Schema.String,\n root: Schema.String,\n needsAttention: Schema.Boolean,\n skipped: Schema.Array(Schema.String),\n push: Schema.Struct({ ahead: Schema.Number, commits: Schema.Array(Schema.String) }),\n tree: Schema.Struct({ files: Schema.Array(Schema.String), backups: Schema.Array(Schema.String) }),\n prs: Schema.Array(HygienePullRequest),\n agents: Schema.Struct({\n counts: Schema.Record(Schema.String, Schema.Number),\n problems: Schema.Array(HygieneFinding),\n }),\n sessions: Schema.Struct({ total: Schema.Number, zombies: Schema.Array(Schema.String) }),\n branches: Schema.Struct({ stale: Schema.Array(Schema.String) }),\n workspaces: Schema.Struct({ stale: Schema.Array(Schema.String) }),\n disk: Schema.Struct({ availableGb: Schema.Number, thresholdGb: Schema.Number, urgent: Schema.Boolean }),\n fixes: Schema.Struct({\n branchesDeleted: Schema.Array(Schema.String),\n workspacesRemoved: Schema.Array(Schema.Struct({ path: Schema.String, freedBytes: Schema.Number })),\n errors: Schema.Array(Schema.String),\n }),\n})\nexport type HygieneReport = typeof HygieneReport.Type\n","export const OVERDECK_DASHBOARD_PROTOCOL_VERSION = 1;\nexport const OVERDECK_AGENT_PROTOCOL_VERSION = 1;\n\nexport type UpdateChannel = 'stable' | 'canary';\nexport type UpdatePhase =\n | 'idle'\n | 'checking'\n | 'current'\n | 'available'\n | 'downloading'\n | 'installing'\n | 'ready'\n | 'error';\nexport type UpdateInstallMode = 'desktop' | 'npm-global' | 'development';\nexport type UpdateCompatibility = 'compatible' | 'active-agents-block' | 'unknown';\n\nexport interface UpdateSnapshot {\n phase: UpdatePhase;\n installMode: UpdateInstallMode;\n channel: UpdateChannel;\n currentVersion: string;\n targetVersion: string | null;\n releaseName: string | null;\n releaseNotes: string | null;\n releaseUrl: string | null;\n publishedAt: string | null;\n progressPercent: number | null;\n error: string | null;\n lastCheckedAt: string | null;\n compatibility: UpdateCompatibility;\n currentDashboardProtocol: number;\n currentAgentProtocol: number;\n targetDashboardProtocol: number | null;\n targetAgentProtocol: number | null;\n}\n","import { Schema } from \"effect\"\n\nexport const DeployStalenessSnapshot = Schema.Struct({\n status: Schema.Literals([\"fresh\", \"stale\", \"unknown\"]),\n buildCommit: Schema.NullOr(Schema.String),\n originMainSha: Schema.NullOr(Schema.String),\n behindTotal: Schema.NullOr(Schema.Number),\n behindBuildInputs: Schema.NullOr(Schema.Number),\n originMainLastCommitAt: Schema.NullOr(Schema.Number),\n originMainLastBuildInputCommitAt: Schema.NullOr(Schema.Number),\n computedAt: Schema.Number,\n reason: Schema.optional(Schema.String),\n})\nexport type DeployStalenessSnapshot = typeof DeployStalenessSnapshot.Type\n","const collator = new Intl.Collator(\"en\", { numeric: true, sensitivity: \"base\" })\n\n/**\n * Compares issue identifiers numerically within their prefix, so PAN-532 sorts\n * before PAN-2822. Every issue-id sort should use this comparator (PAN-2831).\n */\nexport function compareIssueIds(a: string, b: string): number {\n return collator.compare(a, b)\n}\n","import type { Harness } from \"./types\"\n\nexport const TELEMETRY_EVENT_NAMES = [\n \"dashboard_tab_viewed\",\n \"agent_spawned\",\n \"project_created\",\n \"issue_merged\",\n \"force_merge_triggered\",\n \"issue_closed_out\",\n \"bulk_close_out_initiated\",\n \"auto_merge_toggled\",\n \"conversation_forked\",\n \"plan_approved\",\n \"plan_changes_requested\",\n \"agent_question_answered\",\n \"server_boot\",\n \"cli_command_run\",\n \"pipeline_stage_changed\",\n] as const\n\nexport type TelemetryEventName = typeof TELEMETRY_EVENT_NAMES[number]\n\nexport const TELEMETRY_CLI_VERBS = [\n \"abort\",\n \"approve\",\n \"backlog\",\n \"backup\",\n \"clean\",\n \"context\",\n \"destroy\",\n \"dev\",\n \"diff\",\n \"doctor\",\n \"done\",\n \"down\",\n \"edit\",\n \"finalize\",\n \"fork\",\n \"handoff\",\n \"health\",\n \"init\",\n \"issues\",\n \"kill\",\n \"list\",\n \"migrate\",\n \"mode\",\n \"open\",\n \"pause\",\n \"pending\",\n \"plan\",\n \"project\",\n \"projects\",\n \"recover\",\n \"reload\",\n \"reopen\",\n \"request\",\n \"reset\",\n \"restart\",\n \"restore\",\n \"resume\",\n \"review\",\n \"scope\",\n \"serve\",\n \"show\",\n \"skills\",\n \"spawn-reviewer\",\n \"staffing\",\n \"start\",\n \"status\",\n \"strike\",\n \"sync\",\n \"sync-main\",\n \"tell\",\n \"unarchive-conversation\",\n \"unpause\",\n \"untroubled\",\n \"up\",\n \"update\",\n \"validate\",\n \"wipe\",\n \"write-sequence\",\n \"other\",\n] as const\n\nconst TELEMETRY_HARNESSES = [\"claude-code\", \"ohmypi\", \"codex\", \"acp\"] as const satisfies readonly Harness[]\n\nexport const TELEMETRY_PROPERTY_DOMAINS = {\n agent_spawn_mode: [\"spawn-and-send\", \"spawn-work-and-send\"],\n answer_type: [\"custom\", \"selection\"],\n auto_merge_variant: [\"segmented\", \"badge\"],\n boolean: [false, true],\n cli_verb: TELEMETRY_CLI_VERBS,\n close_out_variant: [\"card\", \"inspector\"],\n count_bucket: [\"0\", \"1-2\", \"3-5\", \"6-10\", \"11+\"],\n dashboard_tab: [\n \"home\",\n \"pipeline\",\n \"kanban\",\n \"command-deck\",\n \"agents\",\n \"flywheel\",\n \"orders\",\n \"backlog\",\n \"resources\",\n \"knowledge\",\n \"skills\",\n \"context\",\n \"health\",\n \"activity\",\n \"metrics\",\n \"costs\",\n \"autopreso\",\n \"settings\",\n \"god-view\",\n \"deacon\",\n \"sessions\",\n \"awaiting-merge\",\n ],\n decision_subject: [\"agent\", \"conversation\"],\n duration_bucket: [\"under_100ms\", \"100ms-999ms\", \"1s-9s\", \"10s+\"],\n forge: [\"github\", \"gitlab\"],\n fork_kind: [\"summary\", \"handoff\", \"plain\"],\n harness: TELEMETRY_HARNESSES,\n merge_kind: [\"pipeline\"],\n model_family: [\"claude\", \"gpt\", \"gemini\", \"kimi\", \"minimax\", \"glm\", \"mimo\", \"other\"],\n pipeline_stage: [\"work_done\", \"review_passed\", \"verification_passed\", \"merged\", \"closed_out\"],\n project_mode: [\"existing\", \"new\"],\n} as const\n\nexport type TelemetryPropertyDomainName = keyof typeof TELEMETRY_PROPERTY_DOMAINS\n\nexport const TELEMETRY_EVENT_CATALOG = {\n dashboard_tab_viewed: { tab: \"dashboard_tab\" },\n agent_spawned: { spawn_mode: \"agent_spawn_mode\", has_message: \"boolean\" },\n project_created: { mode: \"project_mode\" },\n issue_merged: { merge_kind: \"merge_kind\" },\n force_merge_triggered: { forge: \"forge\" },\n issue_closed_out: { variant: \"close_out_variant\" },\n bulk_close_out_initiated: { issue_count: \"count_bucket\" },\n auto_merge_toggled: { auto_merge: \"boolean\", variant: \"auto_merge_variant\" },\n conversation_forked: {\n fork_intent: \"fork_kind\",\n fork_mode: \"fork_kind\",\n fast_summary: \"boolean\",\n launch_harness: \"harness\",\n },\n plan_approved: { subject_kind: \"decision_subject\" },\n plan_changes_requested: { subject_kind: \"decision_subject\" },\n agent_question_answered: {\n subject_kind: \"decision_subject\",\n answer_type: \"answer_type\",\n question_count: \"count_bucket\",\n },\n server_boot: { project_count: \"count_bucket\", active_agent_count: \"count_bucket\" },\n cli_command_run: { verb: \"cli_verb\", ok: \"boolean\", duration_ms: \"duration_bucket\" },\n pipeline_stage_changed: { stage: \"pipeline_stage\", harness: \"harness\", model: \"model_family\" },\n} as const satisfies Record<TelemetryEventName, Record<string, TelemetryPropertyDomainName>>\n\ntype TelemetryPropertyValue<Domain extends TelemetryPropertyDomainName> =\n (typeof TELEMETRY_PROPERTY_DOMAINS)[Domain][number]\n\ntype EventProperties<Event extends TelemetryEventName> = {\n readonly [Property in keyof (typeof TELEMETRY_EVENT_CATALOG)[Event]]:\n TelemetryPropertyValue<(typeof TELEMETRY_EVENT_CATALOG)[Event][Property] & TelemetryPropertyDomainName>\n}\n\nexport type TelemetryCountBucket = TelemetryPropertyValue<\"count_bucket\">\nexport type TelemetryDurationBucket = TelemetryPropertyValue<\"duration_bucket\">\nexport type TelemetryDecisionSubjectKind = TelemetryPropertyValue<\"decision_subject\">\nexport type TelemetryModelFamily = TelemetryPropertyValue<\"model_family\">\nexport type TelemetryCliVerb = TelemetryPropertyValue<\"cli_verb\">\nexport type TelemetryDashboardTab = TelemetryPropertyValue<\"dashboard_tab\">\n\nexport type DashboardTabViewedProperties = EventProperties<\"dashboard_tab_viewed\">\nexport type AgentSpawnedProperties = EventProperties<\"agent_spawned\">\nexport type ProjectCreatedProperties = EventProperties<\"project_created\">\nexport type IssueMergedProperties = EventProperties<\"issue_merged\">\nexport type ForceMergeTriggeredProperties = EventProperties<\"force_merge_triggered\">\nexport type IssueClosedOutProperties = EventProperties<\"issue_closed_out\">\nexport type BulkCloseOutInitiatedProperties = EventProperties<\"bulk_close_out_initiated\">\nexport type AutoMergeToggledProperties = EventProperties<\"auto_merge_toggled\">\nexport type ConversationForkedProperties = EventProperties<\"conversation_forked\">\nexport type PlanApprovedProperties = EventProperties<\"plan_approved\">\nexport type PlanChangesRequestedProperties = EventProperties<\"plan_changes_requested\">\nexport type AgentQuestionAnsweredProperties = EventProperties<\"agent_question_answered\">\nexport type ServerBootProperties = EventProperties<\"server_boot\">\nexport type CliCommandRunProperties = EventProperties<\"cli_command_run\">\nexport type PipelineStageChangedProperties = EventProperties<\"pipeline_stage_changed\">\n\nexport type TelemetryEventProperties = {\n readonly [Event in TelemetryEventName]: EventProperties<Event>\n}\n\nexport type TelemetryPropertiesFor<Event extends TelemetryEventName> = TelemetryEventProperties[Event]\n","// GENERATED FILE — do not edit by hand.\n// Source: the pan CLI command registry via `pan admin commands --json`.\n// Regenerate: npm run generate:slash-commands (drift-gated by scripts/lint-slash-commands.sh)\nimport type { ComposerCommandManifestEntry } from \"./composer-commands\"\n\nexport const COMPOSER_COMMAND_MANIFEST: ComposerCommandManifestEntry[] = [\n {\"id\":\"pan-init\",\"path\":[\"init\"],\"display\":\"/pan init\",\"description\":\"Initialize Overdeck (~/.overdeck/)\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-sync\",\"path\":[\"sync\"],\"display\":\"/pan sync\",\"description\":\"Sync skills/agents to ~/.claude/ and render the context layers\",\"args\":[],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Show what would be synced\",\"required\":false,\"valueHint\":null},{\"flags\":\"--force\",\"description\":\"Overwrite files modified since Overdeck installed them\",\"required\":false,\"valueHint\":null},{\"flags\":\"--diff\",\"description\":\"Show diff for modified files\",\"required\":false,\"valueHint\":null},{\"flags\":\"--backup-only\",\"description\":\"Only create backup\",\"required\":false,\"valueHint\":null},{\"flags\":\"--if-changed\",\"description\":\"Skip the sync when inputs are unchanged (used by startup)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-context\",\"path\":[\"context\"],\"display\":\"/pan context\",\"description\":\"Manage the layered context model (global / project / workspace)\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-context-list\",\"path\":[\"context\",\"list\"],\"display\":\"/pan context list\",\"description\":\"Show all three layers' files\",\"args\":[],\"options\":[{\"flags\":\"--layer <layer>\",\"description\":\"Limit to one layer: global, project, or workspace\",\"required\":true,\"valueHint\":\"layer\"},{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-context-edit\",\"path\":[\"context\",\"edit\"],\"display\":\"/pan context edit\",\"description\":\"Open a context layer in $EDITOR\",\"args\":[],\"options\":[{\"flags\":\"--layer <layer>\",\"description\":\"Layer to edit: global (default), project, or workspace\",\"required\":true,\"valueHint\":\"layer\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-context-sync\",\"path\":[\"context\",\"sync\"],\"display\":\"/pan context sync\",\"description\":\"Render the context layers into harness CLAUDE.md files\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-context-diff\",\"path\":[\"context\",\"diff\"],\"display\":\"/pan context diff\",\"description\":\"Show what each harness would receive after templating\",\"args\":[],\"options\":[{\"flags\":\"--harness <harness>\",\"description\":\"Limit to one harness: claude or pi\",\"required\":true,\"valueHint\":\"harness\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-context-validate\",\"path\":[\"context\",\"validate\"],\"display\":\"/pan context validate\",\"description\":\"Lint layer templates for unclosed or unknown harness blocks\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-context-migrate\",\"path\":[\"context\",\"migrate\"],\"display\":\"/pan context migrate\",\"description\":\"One-shot migration from the deprecated sync.devroot model\",\"args\":[],\"options\":[{\"flags\":\"--yes\",\"description\":\"Register every discovered project without prompting\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-restore\",\"path\":[\"restore\"],\"display\":\"/pan restore\",\"description\":\"Restore from backup\",\"args\":[{\"name\":\"timestamp\",\"required\":false,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-backup\",\"path\":[\"backup\"],\"display\":\"/pan backup\",\"description\":\"Manage backups\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-backup-list\",\"path\":[\"backup\",\"list\"],\"display\":\"/pan backup list\",\"description\":\"List all backups\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-backup-clean\",\"path\":[\"backup\",\"clean\"],\"display\":\"/pan backup clean\",\"description\":\"Remove old backups\",\"args\":[],\"options\":[{\"flags\":\"--keep <count>\",\"description\":\"Number of backups to keep\",\"required\":true,\"valueHint\":\"count\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-skills\",\"path\":[\"skills\"],\"display\":\"/pan skills\",\"description\":\"List and manage skills\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-issues\",\"path\":[\"issues\"],\"display\":\"/pan issues\",\"description\":\"List and triage work across configured trackers\",\"args\":[],\"options\":[{\"flags\":\"--all\",\"description\":\"Include closed issues\",\"required\":false,\"valueHint\":null},{\"flags\":\"--mine\",\"description\":\"Show only my assigned issues\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null},{\"flags\":\"--tracker <type>\",\"description\":\"Query specific tracker (linear/github/gitlab)\",\"required\":true,\"valueHint\":\"type\"},{\"flags\":\"--all-trackers\",\"description\":\"Query all configured trackers\",\"required\":false,\"valueHint\":null},{\"flags\":\"--shadow-only\",\"description\":\"Show only shadowed issues\",\"required\":false,\"valueHint\":null},{\"flags\":\"--triage\",\"description\":\"Show triage queue\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-show\",\"path\":[\"show\"],\"display\":\"/pan show\",\"description\":\"Unified lens: shadow state, CV, context, health for one issue\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--shadow\",\"description\":\"Shadow state details only\",\"required\":false,\"valueHint\":null},{\"flags\":\"--cv\",\"description\":\"Agent work history only\",\"required\":false,\"valueHint\":null},{\"flags\":\"--context\",\"description\":\"Context engineering state only\",\"required\":false,\"valueHint\":null},{\"flags\":\"--health\",\"description\":\"Health + heartbeat only\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-open\",\"path\":[\"open\"],\"display\":\"/pan open\",\"description\":\"Open an issue workspace in your preferred editor\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"-e, --editor <editor>\",\"description\":\"Editor to use (cursor, windsurf, vscode, zed, etc.)\",\"required\":true,\"valueHint\":\"editor\"}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-review\",\"path\":[\"review\"],\"display\":\"/pan review\",\"description\":\"Review-loop management: pending items, request re-review, reset cycles\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-review-pending\",\"path\":[\"review\",\"pending\"],\"display\":\"/pan review pending\",\"description\":\"List completed work awaiting review\",\"args\":[],\"options\":[{\"flags\":\"--ready\",\"description\":\"List issues ready for merge (review+test green, not merged) regardless of origin\",\"required\":false,\"valueHint\":null},{\"flags\":\"--blocked\",\"description\":\"List issues blocked in review/test/merge from the SQLite review-status store\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-review-request\",\"path\":[\"review\",\"request\"],\"display\":\"/pan review request\",\"description\":\"Request re-review after fixing feedback\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"-m, --message <text>\",\"description\":\"Message describing the fixes applied\",\"required\":true,\"valueHint\":\"text\"}],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-review-reset\",\"path\":[\"review\",\"reset\"],\"display\":\"/pan review reset\",\"description\":\"Reset review/test/merge cycles (human override)\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--session\",\"description\":\"Also clear all saved Claude review-session pointers\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-review-resync\",\"path\":[\"review\",\"resync\"],\"display\":\"/pan review resync\",\"description\":\"Re-emit canonical review status (heal a lost pipeline event)\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-review-abort\",\"path\":[\"review\",\"abort\"],\"display\":\"/pan review abort\",\"description\":\"Kill all running reviewer sessions and leave the worker idle\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-review-mode\",\"path\":[\"review\",\"mode\"],\"display\":\"/pan review mode\",\"description\":\"Set per-issue review mode (quick, full, or none)\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false},{\"name\":\"mode\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-review-scope\",\"path\":[\"review\",\"scope\"],\"display\":\"/pan review scope\",\"description\":\"Set per-issue re-review scope (all, changed, or blockers) — which convoy reviewers re-run (PAN-1874)\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false},{\"name\":\"scope\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-review-restart\",\"path\":[\"review\",\"restart\"],\"display\":\"/pan review restart\",\"description\":\"Kill running reviewers and dispatch fresh review pipeline\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--model <model>\",\"description\":\"Override model for all reviewers (e.g. gpt-5.4, claude-sonnet-5)\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--role <role>\",\"description\":\"Restart only a specific reviewer role (correctness/security/performance/requirements)\",\"required\":true,\"valueHint\":\"role\"}],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-staffing\",\"path\":[\"staffing\"],\"display\":\"/pan staffing\",\"description\":\"Show or set per-issue work-model and swarm overrides\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--model <model>\",\"description\":\"Set the work model, or default to clear the override\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--swarm <mode>\",\"description\":\"Set swarm mode (off, auto, always), or default to clear the override\",\"required\":true,\"valueHint\":\"mode\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-backlog\",\"path\":[\"backlog\"],\"display\":\"/pan backlog\",\"description\":\"Backlog sequencer management\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-backlog-write-sequence\",\"path\":[\"backlog\",\"write-sequence\"],\"display\":\"/pan backlog write-sequence\",\"description\":\"Validate a SequenceDoc JSON file and write it to .pan/backlog/sequence.md (triggers auto-commit)\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project-root <path>\",\"description\":\"Project root (default: cwd)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-backlog-forecast\",\"path\":[\"backlog\",\"forecast\"],\"display\":\"/pan backlog forecast\",\"description\":\"Pickup forecast (waves / needs-planning / cohort / stats) from sequence.md + SQLite — no HTTP (sandbox-safe)\",\"args\":[],\"options\":[{\"flags\":\"-n, --n <n>\",\"description\":\"Wave size (default 5)\",\"required\":true,\"valueHint\":\"n\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-plan\",\"path\":[\"plan\"],\"display\":\"/pan plan\",\"description\":\"Planning lifecycle commands\",\"args\":[{\"name\":\"id\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--auto\",\"description\":\"Run non-interactive planning; inferred choices are recorded in plan.autoDecisions[]\",\"required\":false,\"valueHint\":null},{\"flags\":\"--auto-start\",\"description\":\"[deprecated: use pan start <id>] After planning completes, automatically start the work agent — used by autonomous orchestrators\",\"required\":false,\"valueHint\":null},{\"flags\":\"--probe\",\"description\":\"Add an adversarial pre-finalize probe pass to the planning prompt\",\"required\":false,\"valueHint\":null},{\"flags\":\"--model <model>\",\"description\":\"Model to use for the planning role\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--harness <harness>\",\"description\":\"Coding-agent harness: claude-code | pi | codex | acp (defaults to role/provider settings)\",\"required\":true,\"valueHint\":\"harness\"},{\"flags\":\"--effort <level>\",\"description\":\"Planning effort: low | medium | high\",\"required\":true,\"valueHint\":\"level\"},{\"flags\":\"--remote\",\"description\":\"Use remote planning workspace (Fly.io)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--local\",\"description\":\"Use local planning workspace\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-plan-finalize\",\"path\":[\"plan\",\"finalize\"],\"display\":\"/pan plan finalize\",\"description\":\"Mark the workspace plan as proposed and promote it to canonical state\",\"args\":[],\"options\":[{\"flags\":\"-w, --workspace <path>\",\"description\":\"Workspace path (defaults to cwd, walks up to find .pan/)\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--json\",\"description\":\"Emit JSON result\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-promote\",\"description\":\"Skip auto-promotion to main; leave spec at status=proposed for manual Done\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-quality-lint\",\"description\":\"Emergency bypass for xBRIEF quality lint during finalize\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-prd\",\"description\":\"Bypass the PRD-first gate for a genuinely trivial issue (loud; prefer writing the PRD)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-plan-done\",\"path\":[\"plan\",\"done\"],\"display\":\"/pan plan done\",\"description\":\"Complete planning — promote the xBRIEF and transition the issue to Planned\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--no-prd\",\"description\":\"Bypass the PRD-first gate for a genuinely trivial issue (loud; prefer writing the PRD)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-tell\",\"path\":[\"tell\"],\"display\":\"/pan tell\",\"description\":\"Send message to running agent\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false},{\"name\":\"message\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-monitor\",\"path\":[\"monitor\"],\"display\":\"/pan monitor\",\"description\":\"Long-running background inbox: drain agent mail to stdout (run inside the agent session; PAN-3015)\",\"args\":[{\"name\":\"id\",\"required\":false,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-inbox\",\"path\":[\"inbox\"],\"display\":\"/pan inbox\",\"description\":\"Print full bodies of recent agent mail (unread + read archive); moves nothing\",\"args\":[{\"name\":\"id\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--limit <n>\",\"description\":\"Max messages to print (default 10)\",\"required\":true,\"valueHint\":\"n\"}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-kill\",\"path\":[\"kill\"],\"display\":\"/pan kill\",\"description\":\"Stop one qualified agent, or all agents when given an issue ID (workspace preserved)\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Force kill without confirmation\",\"required\":false,\"valueHint\":null}],\"aliases\":[\"stop\"],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-reset-to-planned\",\"path\":[\"reset-to-planned\"],\"display\":\"/pan reset-to-planned\",\"description\":\"Return a finalized issue to post-planning without deleting its workspace, plan, commits, or branch\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Show the exact reset without changing state\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-pause\",\"path\":[\"pause\"],\"display\":\"/pan pause\",\"description\":\"Persistently pause an agent and stop it if running\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--reason <reason>\",\"description\":\"Reason to store with the pause gate\",\"required\":true,\"valueHint\":\"reason\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-unpause\",\"path\":[\"unpause\"],\"display\":\"/pan unpause\",\"description\":\"Clear an agent pause gate without spawning it\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-untroubled\",\"path\":[\"untroubled\"],\"display\":\"/pan untroubled\",\"description\":\"Clear an agent troubled gate without spawning it\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-fork\",\"path\":[\"fork\"],\"display\":\"/pan fork\",\"description\":\"Summary Fork a conversation — creates new session from a summary of previous work; omit <conv> to fork the conversation you are in\",\"args\":[{\"name\":\"conv\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--model <model>\",\"description\":\"Model for the summary-forked session\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--cwd <path>\",\"description\":\"Working directory for the summary-forked session\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--plain\",\"description\":\"Skip summary generation and copy raw conversation history\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-handoff\",\"path\":[\"handoff\"],\"display\":\"/pan handoff\",\"description\":\"Conversation handoff that spawns a new conversation; omit <conv> (or pass \\\"self\\\") to hand off the conversation you are in; trailing text becomes the focus — MAX 500 characters. Very large source conversations are auto-degraded (truncated smart summary → heuristic → focus-only) and still hand off without aborting.\",\"args\":[{\"name\":\"conv\",\"required\":false,\"variadic\":false},{\"name\":\"focus\",\"required\":false,\"variadic\":true}],\"options\":[{\"flags\":\"--model <model>\",\"description\":\"Model for the handoff-forked (new) conversation\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--harness <harness>\",\"description\":\"Ignored: harness is provider-default-only (PAN-1984)\",\"required\":true,\"valueHint\":\"harness\"},{\"flags\":\"--cwd <path>\",\"description\":\"Working directory for the new conversation\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--issue <id>\",\"description\":\"Issue ID to associate with the new conversation\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--author <author>\",\"description\":\"Who authors the handoff doc: external (default) or source\",\"required\":true,\"valueHint\":\"author\"},{\"flags\":\"--author-model <model>\",\"description\":\"Model for the external authoring session (only when --author=external)\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--author-harness <harness>\",\"description\":\"Ignored: author harness is provider-default-only (PAN-1984)\",\"required\":true,\"valueHint\":\"harness\"}],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-unarchive-conversation\",\"path\":[\"unarchive-conversation\"],\"display\":\"/pan unarchive-conversation\",\"description\":\"Restore an archived conversation by exact name or matching title\",\"args\":[{\"name\":\"query\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-resume\",\"path\":[\"resume\"],\"display\":\"/pan resume\",\"description\":\"Resume from saved Claude session\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--host\",\"description\":\"Bypass workspace docker stack-health gate and resume on the host\",\"required\":false,\"valueHint\":null},{\"flags\":\"--yes\",\"description\":\"Confirm --host in non-interactive contexts\",\"required\":false,\"valueHint\":null},{\"flags\":\"--compact\",\"description\":\"Summarize the saved session out-of-band and respawn a fresh session seeded with the summary (recovers a context-wedged agent without the harness /compact deadlock)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-recover\",\"path\":[\"recover\"],\"display\":\"/pan recover\",\"description\":\"Recover crashed or stopped agent\",\"args\":[{\"name\":\"id\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--all\",\"description\":\"Auto-recover all crashed agents\",\"required\":false,\"valueHint\":null},{\"flags\":\"--compact\",\"description\":\"Compact-respawn a context-wedged agent, including troubled/user-stopped work agents that automatic recovery will not resume\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null},{\"flags\":\"--model <model>\",\"description\":\"Override model on recovery (e.g. switch off Kimi when quota is exhausted)\",\"required\":true,\"valueHint\":\"model\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-sync-main\",\"path\":[\"sync-main\"],\"display\":\"/pan sync-main\",\"description\":\"Merge latest main into workspace feature branch\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-done\",\"path\":[\"done\"],\"display\":\"/pan done\",\"description\":\"Mark work complete, move to review\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"-c, --comment <message>\",\"description\":\"Comment for the tracker\",\"required\":true,\"valueHint\":\"message\"},{\"flags\":\"--force\",\"description\":\"Skip pre-flight completion checks\",\"required\":false,\"valueHint\":null},{\"flags\":\"--test-waived <reason>\",\"description\":\"Skip the test-requirement gate; reason must include rationale and SHA of an existing test that covers the requirement\",\"required\":true,\"valueHint\":\"reason\"},{\"flags\":\"--strike\",\"description\":\"Strike-agent shape: skip review-pipeline dispatch (used by `pan strike` agents that merged directly to main)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-approve\",\"path\":[\"approve\"],\"display\":\"/pan approve\",\"description\":\"[REMOVED] Use dashboard MERGE button instead\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-reopen\",\"path\":[\"reopen\"],\"display\":\"/pan reopen\",\"description\":\"Re-enter the pipeline for a closed/completed/cancelled issue (resets specialist state). For issues already in progress, use `pan review restart`.\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--reason <reason>\",\"description\":\"Reason for reopening\",\"required\":true,\"valueHint\":\"reason\"},{\"flags\":\"--force\",\"description\":\"Skip the in-progress guard and confirmation prompt\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-wipe\",\"path\":[\"wipe\"],\"display\":\"/pan wipe\",\"description\":\"Destructive: removes workspace files, kills processes, deletes branches, clears review state, and resets tracker status\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Skip confirmation\",\"required\":false,\"valueHint\":null},{\"flags\":\"-y, --yes\",\"description\":\"Skip confirmation\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-destroy\",\"path\":[\"destroy\"],\"display\":\"/pan destroy\",\"description\":\"Alias for workspace destroy: remove the issue workspace worktree and branch\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Force removal even with uncommitted changes\",\"required\":false,\"valueHint\":null},{\"flags\":\"--project <path>\",\"description\":\"Explicit project path (overrides registry)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-close\",\"path\":[\"close\"],\"display\":\"/pan close\",\"description\":\"Verify, clean up, and close issue on tracker\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Skip confirmation prompt\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null},{\"flags\":\"--accept-review\",\"description\":\"Accept a missed DoD row 1 (Review passed) — recorded as an explicit override in the close-out record\",\"required\":false,\"valueHint\":null},{\"flags\":\"--accept-tests\",\"description\":\"Accept a missed DoD row 2 (Tests passed) — recorded as an explicit override in the close-out record\",\"required\":false,\"valueHint\":null},{\"flags\":\"--accept-verification\",\"description\":\"Accept a missed DoD row 3 (Verification green on the branch) — recorded as an explicit override in the close-out record\",\"required\":false,\"valueHint\":null},{\"flags\":\"--accept-merged\",\"description\":\"Accept a missed DoD row 4 (Merged to main) — recorded as an explicit override in the close-out record\",\"required\":false,\"valueHint\":null},{\"flags\":\"--accept-post-merge\",\"description\":\"Accept a missed DoD row 5 (Post-merge lifecycle ran) — recorded as an explicit override in the close-out record\",\"required\":false,\"valueHint\":null},{\"flags\":\"--accept-main-verify\",\"description\":\"Accept a missed DoD row 6 (Verified on main) — recorded as an explicit override in the close-out record\",\"required\":false,\"valueHint\":null},{\"flags\":\"--accept-deploy\",\"description\":\"Accept a missed DoD row 7 (Deployed) — recorded as an explicit override in the close-out record\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-start\",\"path\":[\"start\"],\"display\":\"/pan start\",\"description\":\"Create workspace and spawn agent for an issue\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--model <model>\",\"description\":\"Work model to use and persist for later respawns (defaults to Cloister config)\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--swarm <mode>\",\"description\":\"Per-issue swarm policy: off | auto | always\",\"required\":true,\"valueHint\":\"mode\"},{\"flags\":\"--review-mode <mode>\",\"description\":\"Per-issue review mode: quick | full | none\",\"required\":true,\"valueHint\":\"mode\"},{\"flags\":\"--review-model <model>\",\"description\":\"Per-issue review model override\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--harness <harness>\",\"description\":\"Coding-agent harness: claude-code | pi | codex | acp (defaults to role/provider settings)\",\"required\":true,\"valueHint\":\"harness\"},{\"flags\":\"--effort <level>\",\"description\":\"Claude Code effort: low | medium | high | xhigh | max (defaults to roles.work.effort)\",\"required\":true,\"valueHint\":\"level\"},{\"flags\":\"--tier <tier>\",\"description\":\"Remote workspace resiliency tier: ephemeral | durable (defaults to remote.resiliency_tier)\",\"required\":true,\"valueHint\":\"tier\"},{\"flags\":\"--dry-run\",\"description\":\"Show what would be created\",\"required\":false,\"valueHint\":null},{\"flags\":\"--shadow\",\"description\":\"Enable shadow mode\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-shadow\",\"description\":\"Disable shadow mode\",\"required\":false,\"valueHint\":null},{\"flags\":\"--remote\",\"description\":\"Use remote workspace (Fly.io)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--local\",\"description\":\"Use local workspace (explicit override)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--plan <mode>\",\"description\":\"Planning depth when no plan exists yet: interactive | auto | skip (default: config planning.default_mode, shipped default auto)\",\"required\":true,\"valueHint\":\"mode\"},{\"flags\":\"--plan-model <model>\",\"description\":\"Planning model override when this start auto-plans (defaults to roles.plan.model); the work model stays --model\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--auto\",\"description\":\"[deprecated: use --plan skip] Skip planning agent by synthesizing a minimal xBRIEF from the issue title/body\",\"required\":false,\"valueHint\":null},{\"flags\":\"--force\",\"description\":\"Clear a paused agent gate and start anyway\",\"required\":false,\"valueHint\":null},{\"flags\":\"--fresh\",\"description\":\"Drop the saved Claude session (non-destructive) and start a new one — e.g. to switch a stopped agent's model\",\"required\":false,\"valueHint\":null},{\"flags\":\"--host\",\"description\":\"Bypass workspace docker stack-health gate and spawn on the host\",\"required\":false,\"valueHint\":null},{\"flags\":\"--yes\",\"description\":\"Confirm --host in non-interactive contexts\",\"required\":false,\"valueHint\":null},{\"flags\":\"--off-book\",\"description\":\"Allow one work-agent dispatch outside the active order book and log the override\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-strike\",\"path\":[\"strike\"],\"display\":\"/pan strike\",\"description\":\"Spawn strike agent(s) — implement and push a strike branch for Deacon to land through the verified merge door. Bypasses plan/review/test/ship.\",\"args\":[{\"name\":\"ids\",\"required\":true,\"variadic\":true}],\"options\":[{\"flags\":\"--model <model>\",\"description\":\"Model override (defaults to roles.strike.model from config)\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--harness <harness>\",\"description\":\"Coding-agent harness: claude-code | pi | codex | acp (defaults to role/provider settings)\",\"required\":true,\"valueHint\":\"harness\"},{\"flags\":\"--effort <level>\",\"description\":\"Strike effort: low | medium | high | xhigh | max (default high)\",\"required\":true,\"valueHint\":\"level\"},{\"flags\":\"--dry-run\",\"description\":\"Print what would happen without spawning\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-strike-ready\",\"path\":[\"strike-ready\"],\"display\":\"/pan strike-ready\",\"description\":\"Persist readiness for a pushed strike branch so Deacon can land it\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-knowledge\",\"path\":[\"knowledge\"],\"display\":\"/pan knowledge\",\"description\":\"Maintain or open the project OKF bundle\",\"args\":[{\"name\":\"id\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--focus <topic>\",\"description\":\"Run /okf study for a focused topic before syncing\",\"required\":true,\"valueHint\":\"topic\"},{\"flags\":\"--retro\",\"description\":\"Run /okf retro before syncing\",\"required\":false,\"valueHint\":null},{\"flags\":\"--model <model>\",\"description\":\"Model override (defaults to roles.knowledge.model from config)\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--effort <level>\",\"description\":\"Knowledge effort: low | medium | high | xhigh | max\",\"required\":true,\"valueHint\":\"level\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-knowledge-open\",\"path\":[\"knowledge\",\"open\"],\"display\":\"/pan knowledge open\",\"description\":\"Open the project OKF bundle in the local knowledge viewer\",\"args\":[],\"options\":[{\"flags\":\"--no-install\",\"description\":\"Do not install @inkeep/open-knowledge when the ok binary is missing\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-browser\",\"description\":\"Start or reuse the viewer without opening a browser\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-swarm\",\"path\":[\"swarm\"],\"display\":\"/pan swarm\",\"description\":\"Start or recover parallel swarm slots for a planned issue\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-swarm-recover\",\"path\":[\"swarm\",\"recover\"],\"display\":\"/pan swarm recover\",\"description\":\"Recover a failed swarm slot\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false},{\"name\":\"slotIndex\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--action <action>\",\"description\":\"Recovery action: retry, drop, or handoff\",\"required\":true,\"valueHint\":\"action\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-swarm-freeze\",\"path\":[\"swarm\",\"freeze\"],\"display\":\"/pan swarm freeze\",\"description\":\"Freeze swarm coordination for an issue: the Deacon skips it until resume\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--reason <text>\",\"description\":\"Reason recorded on the hold\",\"required\":true,\"valueHint\":\"text\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-swarm-resume\",\"path\":[\"swarm\",\"resume\"],\"display\":\"/pan swarm resume\",\"description\":\"Resume swarm coordination for a frozen issue on the next Deacon patrol\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-swarm-status\",\"path\":[\"swarm\",\"status\"],\"display\":\"/pan swarm status\",\"description\":\"Read-only reconciled swarm state: per-slot rows, hold state, and capacity\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-swarm-stop\",\"path\":[\"swarm\",\"stop\"],\"display\":\"/pan swarm stop\",\"description\":\"Freeze swarm coordination, then stop all live slot agents (branches and worktrees preserved)\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--reason <text>\",\"description\":\"Reason recorded on the hold\",\"required\":true,\"valueHint\":\"text\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-swarm-reset\",\"path\":[\"swarm\",\"reset\"],\"display\":\"/pan swarm reset\",\"description\":\"Work-preserving reset: stop slots, push unmerged slot branches to origin, remove slot worktrees/branches, retire dead slot records, clear recorded slot state (hold stays set)\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Continue deleting even when pushing an unmerged branch to origin fails\",\"required\":false,\"valueHint\":null},{\"flags\":\"--reason <text>\",\"description\":\"Reason recorded on the hold\",\"required\":true,\"valueHint\":\"text\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-task\",\"path\":[\"task\"],\"display\":\"/pan task\",\"description\":\"Read and update xBRIEF task state for one issue\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-task-next\",\"path\":[\"task\",\"next\"],\"display\":\"/pan task next\",\"description\":\"\",\"args\":[{\"name\":\"issue\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Print JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-task-show\",\"path\":[\"task\",\"show\"],\"display\":\"/pan task show\",\"description\":\"\",\"args\":[{\"name\":\"issue\",\"required\":true,\"variadic\":false},{\"name\":\"item\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Print JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-task-claim\",\"path\":[\"task\",\"claim\"],\"display\":\"/pan task claim\",\"description\":\"\",\"args\":[{\"name\":\"issue\",\"required\":true,\"variadic\":false},{\"name\":\"item\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--reason <text>\",\"description\":\"Reason for the status change\",\"required\":true,\"valueHint\":\"text\"},{\"flags\":\"--expected-sequence <n>\",\"description\":\"Require the current task sequence\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--force\",\"description\":\"Override a non-terminal transition or claim owner; requires --reason\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Print JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-task-done\",\"path\":[\"task\",\"done\"],\"display\":\"/pan task done\",\"description\":\"\",\"args\":[{\"name\":\"issue\",\"required\":true,\"variadic\":false},{\"name\":\"item\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--reason <text>\",\"description\":\"Reason for the status change\",\"required\":true,\"valueHint\":\"text\"},{\"flags\":\"--expected-sequence <n>\",\"description\":\"Require the current task sequence\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--force\",\"description\":\"Override a non-terminal transition or claim owner; requires --reason\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Print JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-task-block\",\"path\":[\"task\",\"block\"],\"display\":\"/pan task block\",\"description\":\"\",\"args\":[{\"name\":\"issue\",\"required\":true,\"variadic\":false},{\"name\":\"item\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--reason <text>\",\"description\":\"Reason for the status change\",\"required\":true,\"valueHint\":\"text\"},{\"flags\":\"--expected-sequence <n>\",\"description\":\"Require the current task sequence\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--force\",\"description\":\"Override a non-terminal transition or claim owner; requires --reason\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Print JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-task-unblock\",\"path\":[\"task\",\"unblock\"],\"display\":\"/pan task unblock\",\"description\":\"\",\"args\":[{\"name\":\"issue\",\"required\":true,\"variadic\":false},{\"name\":\"item\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--reason <text>\",\"description\":\"Reason for the status change\",\"required\":true,\"valueHint\":\"text\"},{\"flags\":\"--expected-sequence <n>\",\"description\":\"Require the current task sequence\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--force\",\"description\":\"Override a non-terminal transition or claim owner; requires --reason\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Print JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-task-cancel\",\"path\":[\"task\",\"cancel\"],\"display\":\"/pan task cancel\",\"description\":\"\",\"args\":[{\"name\":\"issue\",\"required\":true,\"variadic\":false},{\"name\":\"item\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--reason <text>\",\"description\":\"Reason for the status change\",\"required\":true,\"valueHint\":\"text\"},{\"flags\":\"--expected-sequence <n>\",\"description\":\"Require the current task sequence\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--force\",\"description\":\"Override a non-terminal transition or claim owner; requires --reason\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Print JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-workspace\",\"path\":[\"workspace\"],\"display\":\"/pan workspace\",\"description\":\"Workspace management\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-create\",\"path\":[\"workspace\",\"create\"],\"display\":\"/pan workspace create\",\"description\":\"Create workspace for issue\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Show what would be created\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-skills\",\"description\":\"Skip skills/agents installation\",\"required\":false,\"valueHint\":null},{\"flags\":\"--labels <labels>\",\"description\":\"Comma-separated labels for routing (e.g., docs,marketing)\",\"required\":true,\"valueHint\":\"labels\"},{\"flags\":\"--project <path>\",\"description\":\"Explicit project path (overrides registry)\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--docker\",\"description\":\"Start Docker containers after workspace creation\",\"required\":false,\"valueHint\":null},{\"flags\":\"--remote\",\"description\":\"Create workspace on remote VM (Fly.io)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--local\",\"description\":\"Create workspace locally (explicit override)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-migrate\",\"path\":[\"workspace\",\"migrate\"],\"display\":\"/pan workspace migrate\",\"description\":\"Migrate workspace between local and remote (stops+pauses the local agent, commits and pushes all work first)\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--to <location>\",\"description\":\"Target location: \\\"remote\\\" or \\\"local\\\" (default: auto-detect from current location)\",\"required\":true,\"valueHint\":\"location\"},{\"flags\":\"--keep\",\"description\":\"Keep the source workspace after migration\",\"required\":false,\"valueHint\":null},{\"flags\":\"--force\",\"description\":\"Overwrite an existing destination workspace / ignore branch-drift guard\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-ssh\",\"path\":[\"workspace\",\"ssh\"],\"display\":\"/pan workspace ssh\",\"description\":\"SSH into remote workspace VM\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-sync-auth\",\"path\":[\"workspace\",\"sync-auth\"],\"display\":\"/pan workspace sync-auth\",\"description\":\"Sync Claude Code credentials to remote workspace\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-start\",\"path\":[\"workspace\",\"start\"],\"display\":\"/pan workspace start\",\"description\":\"Start a stopped remote workspace\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-stop\",\"path\":[\"workspace\",\"stop\"],\"display\":\"/pan workspace stop\",\"description\":\"Stop (hibernate) a remote workspace\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-list\",\"path\":[\"workspace\",\"list\"],\"display\":\"/pan workspace list\",\"description\":\"List all workspaces\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null},{\"flags\":\"--all\",\"description\":\"List workspaces across all registered projects\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-destroy\",\"path\":[\"workspace\",\"destroy\"],\"display\":\"/pan workspace destroy\",\"description\":\"Destroy workspace\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Force removal even with uncommitted changes\",\"required\":false,\"valueHint\":null},{\"flags\":\"--project <path>\",\"description\":\"Explicit project path (overrides registry)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-render-devcontainer\",\"path\":[\"workspace\",\"render-devcontainer\"],\"display\":\"/pan workspace render-devcontainer\",\"description\":\"Re-render <workspace>/.devcontainer/ from the project compose template\",\"args\":[{\"name\":\"featureName\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <key>\",\"description\":\"Project key in projects.yaml (e.g. mind-your-now)\",\"required\":true,\"valueHint\":\"key\"},{\"flags\":\"--workspace <path>\",\"description\":\"Override the inferred workspace path\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--json\",\"description\":\"Emit JSON instead of human-readable output\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-deep-clean\",\"path\":[\"workspace\",\"deep-clean\"],\"display\":\"/pan workspace deep-clean\",\"description\":\"Interactive: git clean -fd against a workspace (preserves protected paths)\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--yes\",\"description\":\"Skip confirmation prompt (still requires a TTY)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-rebuild\",\"path\":[\"workspace\",\"rebuild\"],\"display\":\"/pan workspace rebuild\",\"description\":\"Tear down, re-render, and restart a single workspace Docker stack\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-reap\",\"path\":[\"workspace\",\"reap\"],\"display\":\"/pan workspace reap\",\"description\":\"List or remove orphaned unhealthy workspace Docker stacks\",\"args\":[],\"options\":[{\"flags\":\"--days <days>\",\"description\":\"Minimum age in days\",\"required\":true,\"valueHint\":\"days\"},{\"flags\":\"--apply\",\"description\":\"Run docker compose down -v --remove-orphans for candidates\",\"required\":false,\"valueHint\":null},{\"flags\":\"--yes\",\"description\":\"Skip confirmation when using --apply\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-update\",\"path\":[\"workspace\",\"update\"],\"display\":\"/pan workspace update\",\"description\":\"Update skills/agents/rules in an existing workspace\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Overwrite user-modified files\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-use-config\",\"path\":[\"workspace\",\"use-config\"],\"display\":\"/pan workspace use-config\",\"description\":\"Copy installed Overdeck config into workspace (makes it user settings)\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <path>\",\"description\":\"Explicit project path (overrides registry)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-workspace-add-repo\",\"path\":[\"workspace\",\"add-repo\"],\"display\":\"/pan workspace add-repo\",\"description\":\"Add configured repositories or register a new repository in a polyrepo workspace\",\"args\":[{\"name\":\"workspaceId\",\"required\":true,\"variadic\":false},{\"name\":\"repoNames\",\"required\":false,\"variadic\":true}],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Show what would be added\",\"required\":false,\"valueHint\":null},{\"flags\":\"--group <groupName>\",\"description\":\"Add all repos from a named group (from groups_file)\",\"required\":true,\"valueHint\":\"groupName\"},{\"flags\":\"--new <gitUrl>\",\"description\":\"Register a repository that was created during this issue\",\"required\":true,\"valueHint\":\"gitUrl\"},{\"flags\":\"--project <key>\",\"description\":\"Explicit project key from projects.yaml (overrides registry)\",\"required\":true,\"valueHint\":\"key\"}],\"aliases\":[],\"category\":\"Workspace\"},\n {\"id\":\"pan-test\",\"path\":[\"test\"],\"display\":\"/pan test\",\"description\":\"Test running and management\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-test-run\",\"path\":[\"test\",\"run\"],\"display\":\"/pan test run\",\"description\":\"Run tests for a project or workspace\",\"args\":[{\"name\":\"target\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--project <name>\",\"description\":\"Project name from registry\",\"required\":true,\"valueHint\":\"name\"},{\"flags\":\"--tests <names>\",\"description\":\"Comma-separated test names to run\",\"required\":true,\"valueHint\":\"names\"},{\"flags\":\"--no-notify\",\"description\":\"Skip desktop notification\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-test-list\",\"path\":[\"test\",\"list\"],\"display\":\"/pan test list\",\"description\":\"List configured tests for a project\",\"args\":[{\"name\":\"project\",\"required\":false,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts\",\"path\":[\"tts\"],\"display\":\"/pan tts\",\"description\":\"Local TTS daemon helpers\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-voices\",\"path\":[\"tts\",\"voices\"],\"display\":\"/pan tts voices\",\"description\":\"List and inspect saved TTS voices\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-voices-list\",\"path\":[\"tts\",\"voices\",\"list\"],\"display\":\"/pan tts voices list\",\"description\":\"List saved TTS voices\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-voices-show\",\"path\":[\"tts\",\"voices\",\"show\"],\"display\":\"/pan tts voices show\",\"description\":\"Show saved TTS voice details\",\"args\":[{\"name\":\"name\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-voices-play\",\"path\":[\"tts\",\"voices\",\"play\"],\"display\":\"/pan tts voices play\",\"description\":\"Speak with a saved TTS voice\",\"args\":[{\"name\":\"name\",\"required\":true,\"variadic\":false},{\"name\":\"text\",\"required\":false,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-voices-delete\",\"path\":[\"tts\",\"voices\",\"delete\"],\"display\":\"/pan tts voices delete\",\"description\":\"Delete a saved TTS voice\",\"args\":[{\"name\":\"name\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-voices-set-default\",\"path\":[\"tts\",\"voices\",\"set-default\"],\"display\":\"/pan tts voices set-default\",\"description\":\"Set the system TTS voice\",\"args\":[{\"name\":\"name\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-voices-map\",\"path\":[\"tts\",\"voices\",\"map\"],\"display\":\"/pan tts voices map\",\"description\":\"Map a TTS event key to a saved voice\",\"args\":[{\"name\":\"event\",\"required\":true,\"variadic\":false},{\"name\":\"name\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-start\",\"path\":[\"tts\",\"start\"],\"display\":\"/pan tts start\",\"description\":\"Start the local Qwen TTS daemon\",\"args\":[],\"options\":[{\"flags\":\"--detach\",\"description\":\"Run the daemon detached in the background\",\"required\":false,\"valueHint\":null},{\"flags\":\"--foreground\",\"description\":\"Run the daemon in the foreground\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-wait-for-health\",\"description\":\"Return without waiting for /health\",\"required\":false,\"valueHint\":null},{\"flags\":\"--timeout-ms <ms>\",\"description\":\"Health wait timeout in milliseconds\",\"required\":true,\"valueHint\":\"ms\"}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-stop\",\"path\":[\"tts\",\"stop\"],\"display\":\"/pan tts stop\",\"description\":\"Stop the local Qwen TTS daemon\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-status\",\"path\":[\"tts\",\"status\"],\"display\":\"/pan tts status\",\"description\":\"Show local Qwen TTS daemon status\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-restart\",\"path\":[\"tts\",\"restart\"],\"display\":\"/pan tts restart\",\"description\":\"Restart the local Qwen TTS daemon\",\"args\":[],\"options\":[{\"flags\":\"--no-wait-for-health\",\"description\":\"Return without waiting for /health\",\"required\":false,\"valueHint\":null},{\"flags\":\"--timeout-ms <ms>\",\"description\":\"Health wait timeout in milliseconds\",\"required\":true,\"valueHint\":\"ms\"}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-install-systemd\",\"path\":[\"tts\",\"install-systemd\"],\"display\":\"/pan tts install-systemd\",\"description\":\"Install a user systemd unit for the local Qwen TTS daemon\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-tts-test\",\"path\":[\"tts\",\"test\"],\"display\":\"/pan tts test\",\"description\":\"Speak a test phrase using the configured system (priority) voice\",\"args\":[{\"name\":\"text\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--status\",\"description\":\"Use the status voice instead of the system (priority) voice\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-release\",\"path\":[\"release\"],\"display\":\"/pan release\",\"description\":\"Intentional release flow for stable and canary publishes\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-release-check\",\"path\":[\"release\",\"check\"],\"display\":\"/pan release check\",\"description\":\"Run release preflight checks\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-release-stable\",\"path\":[\"release\",\"stable\"],\"display\":\"/pan release stable\",\"description\":\"Create a stable release commit and tag\",\"args\":[],\"options\":[{\"flags\":\"--version <version>\",\"description\":\"Stable semver version (x.y.z)\",\"required\":true,\"valueHint\":\"version\"},{\"flags\":\"--skip-tests\",\"description\":\"Skip the test suite in preflight (build + guards still run)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-release-canary\",\"path\":[\"release\",\"canary\"],\"display\":\"/pan release canary\",\"description\":\"Create a canary release commit and tag\",\"args\":[],\"options\":[{\"flags\":\"--version <version>\",\"description\":\"Canary semver version (x.y.z-canary.n)\",\"required\":true,\"valueHint\":\"version\"},{\"flags\":\"--skip-tests\",\"description\":\"Skip the test suite in preflight (build + guards still run)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-release-sourcemaps\",\"path\":[\"release\",\"sourcemaps\"],\"display\":\"/pan release sourcemaps\",\"description\":\"Upload the built dashboard sourcemaps to PostHog\",\"args\":[],\"options\":[{\"flags\":\"--version <version>\",\"description\":\"Release version associated with the built dashboard\",\"required\":true,\"valueHint\":\"version\"}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-release-notes\",\"path\":[\"release\",\"notes\"],\"display\":\"/pan release notes\",\"description\":\"Draft release notes from git history\",\"args\":[{\"name\":\"from\",\"required\":false,\"variadic\":false},{\"name\":\"to\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--write <path>\",\"description\":\"Write the generated notes to a file\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-rollout\",\"path\":[\"rollout\"],\"display\":\"/pan rollout\",\"description\":\"Post-merge release status and retry\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-rollout-status\",\"path\":[\"rollout\",\"status\"],\"display\":\"/pan rollout status\",\"description\":\"Print the release set for an issue (releaseStatus + per-component status)\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-rollout-retry\",\"path\":[\"rollout\",\"retry\"],\"display\":\"/pan rollout retry\",\"description\":\"Re-run the release engine for an issue and print the resulting status\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-memory\",\"path\":[\"memory\"],\"display\":\"/pan memory\",\"description\":\"Search and inspect Overdeck memory\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-memory-search\",\"path\":[\"memory\",\"search\"],\"display\":\"/pan memory search\",\"description\":\"Search memory observations\",\"args\":[{\"name\":\"query\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <id>\",\"description\":\"Project ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--workspace <id>\",\"description\":\"Workspace ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--issue <id>\",\"description\":\"Issue ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--tag <tag>\",\"description\":\"Filter by tag\",\"required\":true,\"valueHint\":\"tag\"},{\"flags\":\"--sibling\",\"description\":\"Search same-project sibling issues instead of the selected issue\",\"required\":false,\"valueHint\":null},{\"flags\":\"--include-archived\",\"description\":\"Include observations hidden by reset markers\",\"required\":false,\"valueHint\":null},{\"flags\":\"--limit <n>\",\"description\":\"Maximum results\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-memory-status\",\"path\":[\"memory\",\"status\"],\"display\":\"/pan memory status\",\"description\":\"Show current memory status for an issue\",\"args\":[{\"name\":\"issue\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <id>\",\"description\":\"Project ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-memory-reset\",\"path\":[\"memory\",\"reset\"],\"display\":\"/pan memory reset\",\"description\":\"Create a memory reset marker\",\"args\":[{\"name\":\"scope\",\"required\":true,\"variadic\":false},{\"name\":\"scopeId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <id>\",\"description\":\"Project ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--reason <text>\",\"description\":\"Reason for the reset marker\",\"required\":true,\"valueHint\":\"text\"},{\"flags\":\"--from <iso>\",\"description\":\"Reset from timestamp\",\"required\":true,\"valueHint\":\"iso\"},{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-memory-summary\",\"path\":[\"memory\",\"summary\"],\"display\":\"/pan memory summary\",\"description\":\"Generate a daily markdown memory summary\",\"args\":[{\"name\":\"issue\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <id>\",\"description\":\"Project ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--date <yyyy-mm-dd>\",\"description\":\"Summary date\",\"required\":true,\"valueHint\":\"yyyy-mm-dd\"},{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-memory-doctor\",\"path\":[\"memory\",\"doctor\"],\"display\":\"/pan memory doctor\",\"description\":\"Print memory health, pending counts, and provider configuration\",\"args\":[],\"options\":[{\"flags\":\"--project <id>\",\"description\":\"Project ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-memory-config\",\"path\":[\"memory\",\"config\"],\"display\":\"/pan memory config\",\"description\":\"Show memory provider and rollup configuration\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-briefing\",\"path\":[\"briefing\"],\"display\":\"/pan briefing\",\"description\":\"Print the live Overdeck session briefing markdown\",\"args\":[],\"options\":[{\"flags\":\"--cwd <path>\",\"description\":\"Resolve workspace context from this directory\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-compliance\",\"path\":[\"compliance\"],\"display\":\"/pan compliance\",\"description\":\"Inspect memory-first compliance state\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-compliance-status\",\"path\":[\"compliance\",\"status\"],\"display\":\"/pan compliance status\",\"description\":\"Show compliance mode and recent compliance misses\",\"args\":[],\"options\":[{\"flags\":\"--project <id>\",\"description\":\"Project ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--workspace <id>\",\"description\":\"Workspace ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--issue <id>\",\"description\":\"Issue ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--session <id>\",\"description\":\"Session ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--since-hours <n>\",\"description\":\"Hours to count recent misses\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-registry\",\"path\":[\"registry\"],\"display\":\"/pan registry\",\"description\":\"Manage and inspect feature ownership records\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-registry-tag\",\"path\":[\"registry\",\"tag\"],\"display\":\"/pan registry tag\",\"description\":\"Create or update a feature ownership record for an issue\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false},{\"name\":\"feature\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--description <text>\",\"description\":\"Feature description\",\"required\":true,\"valueHint\":\"text\"},{\"flags\":\"--workspace <id>\",\"description\":\"Owning workspace ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--agent <id>\",\"description\":\"Owning agent ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--status <status>\",\"description\":\"Feature status: active, archived, merged, deferred\",\"required\":true,\"valueHint\":\"status\"},{\"flags\":\"--tag <tag...>\",\"description\":\"Feature tags\",\"required\":true,\"valueHint\":\"tag...\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-registry-list\",\"path\":[\"registry\",\"list\"],\"display\":\"/pan registry list\",\"description\":\"List feature ownership records\",\"args\":[],\"options\":[{\"flags\":\"--issue <id>\",\"description\":\"Owning issue ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--workspace <id>\",\"description\":\"Owning workspace ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--agent <id>\",\"description\":\"Owning agent ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--status <status>\",\"description\":\"Feature status: active, archived, merged, deferred\",\"required\":true,\"valueHint\":\"status\"},{\"flags\":\"--tag <tag...>\",\"description\":\"Require tag(s)\",\"required\":true,\"valueHint\":\"tag...\"},{\"flags\":\"--limit <n>\",\"description\":\"Maximum rows\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-registry-show\",\"path\":[\"registry\",\"show\"],\"display\":\"/pan registry show\",\"description\":\"Show one feature ownership record\",\"args\":[{\"name\":\"feature\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-orders\",\"path\":[\"orders\"],\"display\":\"/pan orders\",\"description\":\"Create and manage Flywheel order books\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-orders-create\",\"path\":[\"orders\",\"create\"],\"display\":\"/pan orders create\",\"description\":\"Create a draft order book\",\"args\":[{\"name\":\"name\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-orders-list\",\"path\":[\"orders\",\"list\"],\"display\":\"/pan orders list\",\"description\":\"List order books\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-orders-show\",\"path\":[\"orders\",\"show\"],\"display\":\"/pan orders show\",\"description\":\"Show an order book\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-orders-add\",\"path\":[\"orders\",\"add\"],\"display\":\"/pan orders add\",\"description\":\"Add issues to an order book\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false},{\"name\":\"issues\",\"required\":true,\"variadic\":true}],\"options\":[{\"flags\":\"--lane <lane>\",\"description\":\"Target lane: A or B\",\"required\":true,\"valueHint\":\"lane\"},{\"flags\":\"--after <issue>\",\"description\":\"Insert after an issue in the target lane\",\"required\":true,\"valueHint\":\"issue\"},{\"flags\":\"--reverify\",\"description\":\"Require PRD re-verification before pickup\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-orders-remove\",\"path\":[\"orders\",\"remove\"],\"display\":\"/pan orders remove\",\"description\":\"Remove an issue from an order book\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false},{\"name\":\"issue\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-orders-move\",\"path\":[\"orders\",\"move\"],\"display\":\"/pan orders move\",\"description\":\"Move an issue within or between lanes\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false},{\"name\":\"issue\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--lane <lane>\",\"description\":\"Target lane: A or B\",\"required\":true,\"valueHint\":\"lane\"},{\"flags\":\"--order <n>\",\"description\":\"One-based position in the target lane\",\"required\":true,\"valueHint\":\"n\"}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-orders-start\",\"path\":[\"orders\",\"start\"],\"display\":\"/pan orders start\",\"description\":\"Start a Flywheel run bound to an order book\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-docs\",\"path\":[\"docs\"],\"display\":\"/pan docs\",\"description\":\"Overdeck documentation RAG (PAN-1203)\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-docs-query\",\"path\":[\"docs\",\"query\"],\"display\":\"/pan docs query\",\"description\":\"Query the docs index for relevant snippets\",\"args\":[{\"name\":\"text\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--top <n>\",\"description\":\"Maximum number of snippets to return\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--format <fmt>\",\"description\":\"Output format: markdown | json | text\",\"required\":true,\"valueHint\":\"fmt\"},{\"flags\":\"--index-path <path>\",\"description\":\"Override the docs index path\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--kind <kind>\",\"description\":\"Filter by doc kind (docs|skill|rule|claude-md|prd)\",\"required\":true,\"valueHint\":\"kind\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-docs-reindex\",\"path\":[\"docs\",\"reindex\"],\"display\":\"/pan docs reindex\",\"description\":\"Regenerate the docs index from current docs/, skills/, etc.\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-docs-disable\",\"path\":[\"docs\",\"disable\"],\"display\":\"/pan docs disable\",\"description\":\"Disable docs RAG injection\",\"args\":[],\"options\":[{\"flags\":\"--scope <scope>\",\"description\":\"Scope: session | project | global\",\"required\":true,\"valueHint\":\"scope\"},{\"flags\":\"--reason <text>\",\"description\":\"Reason recorded in disable state\",\"required\":true,\"valueHint\":\"text\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-docs-enable\",\"path\":[\"docs\",\"enable\"],\"display\":\"/pan docs enable\",\"description\":\"Re-enable docs RAG injection\",\"args\":[],\"options\":[{\"flags\":\"--scope <scope>\",\"description\":\"Scope: session | project | global\",\"required\":true,\"valueHint\":\"scope\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-admin\",\"path\":[\"admin\"],\"display\":\"/pan admin\",\"description\":\"Plumbing commands: watchdog, specialists, infra, db, config, and more\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-commands\",\"path\":[\"admin\",\"commands\"],\"display\":\"/pan admin commands\",\"description\":\"List every visible pan command (plumbing; feeds composer autocomplete codegen)\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Emit machine-readable JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-state\",\"path\":[\"admin\",\"state\"],\"display\":\"/pan admin state\",\"description\":\"Permanent state administration\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-state-migrate\",\"path\":[\"admin\",\"state\",\"migrate\"],\"display\":\"/pan admin state migrate\",\"description\":\"Move permanent state to the orphan overdeck-state branch\",\"args\":[{\"name\":\"project\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Print the exact migration plan without mutating anything\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-state-migrate-xbrief\",\"path\":[\"admin\",\"state\",\"migrate-xbrief\"],\"display\":\"/pan admin state migrate-xbrief\",\"description\":\"Rename state documents to .xbrief.json and migrate legacy envelopes\",\"args\":[{\"name\":\"project\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Print the exact xBRIEF migration plan without mutating anything\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-reconcile-labels\",\"path\":[\"admin\",\"reconcile-labels\"],\"display\":\"/pan admin reconcile-labels\",\"description\":\"Reconcile pipeline labels from permanent issue truth\",\"args\":[],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Print changes without mutating labels\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-cloister\",\"path\":[\"admin\",\"cloister\"],\"display\":\"/pan admin cloister\",\"description\":\"Cloister agent watchdog commands\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-cloister-status\",\"path\":[\"admin\",\"cloister\",\"status\"],\"display\":\"/pan admin cloister status\",\"description\":\"Show Cloister service status and agent health\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output in JSON format\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-cloister-start\",\"path\":[\"admin\",\"cloister\",\"start\"],\"display\":\"/pan admin cloister start\",\"description\":\"Start Cloister monitoring service\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-cloister-stop\",\"path\":[\"admin\",\"cloister\",\"stop\"],\"display\":\"/pan admin cloister stop\",\"description\":\"Stop Cloister monitoring (agents continue running)\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-cloister-emergency-stop\",\"path\":[\"admin\",\"cloister\",\"emergency-stop\"],\"display\":\"/pan admin cloister emergency-stop\",\"description\":\"Emergency stop - kill ALL agents immediately\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-cloister-brake\",\"path\":[\"admin\",\"cloister\",\"brake\"],\"display\":\"/pan admin cloister brake\",\"description\":\"Emergency brake - trim running work agents down to the concurrency cap (idle-first, resumable)\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output in JSON format\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-cloister-freeze\",\"path\":[\"admin\",\"cloister\",\"freeze\"],\"display\":\"/pan admin cloister freeze\",\"description\":\"Globally pause the Deacon (patrols run but skip all actions); running agents unaffected\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-cloister-unfreeze\",\"path\":[\"admin\",\"cloister\",\"unfreeze\"],\"display\":\"/pan admin cloister unfreeze\",\"description\":\"Resume the Deacon from a global pause\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-specialists\",\"path\":[\"admin\",\"specialists\"],\"display\":\"/pan admin specialists\",\"description\":\"Manage specialist agents (review-agent, test-agent, merge-agent)\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-specialists-list\",\"path\":[\"admin\",\"specialists\",\"list\"],\"display\":\"/pan admin specialists list\",\"description\":\"Show all specialists with their status\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output in JSON format\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-specialists-wake\",\"path\":[\"admin\",\"specialists\",\"wake\"],\"display\":\"/pan admin specialists wake\",\"description\":\"Wake up a specialist agent (for testing/debugging)\",\"args\":[{\"name\":\"name\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--task <description>\",\"description\":\"Optional task description to wake with\",\"required\":true,\"valueHint\":\"description\"}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-specialists-reset\",\"path\":[\"admin\",\"specialists\",\"reset\"],\"display\":\"/pan admin specialists reset\",\"description\":\"Reset a specialist (clear session, start fresh)\",\"args\":[{\"name\":\"name\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Skip confirmation prompt\",\"required\":false,\"valueHint\":null},{\"flags\":\"--all\",\"description\":\"Reset ALL specialists (wipe all context)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-specialists-discovery-ready\",\"path\":[\"admin\",\"specialists\",\"discovery-ready\"],\"display\":\"/pan admin specialists discovery-ready\",\"description\":\"Signal that the review parent finished shared discovery — forks + launches the convoy (PAN-1862)\",\"args\":[{\"name\":\"type\",\"required\":true,\"variadic\":false},{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-specialists-done\",\"path\":[\"admin\",\"specialists\",\"done\"],\"display\":\"/pan admin specialists done\",\"description\":\"Signal specialist completion (deterministic status update)\",\"args\":[{\"name\":\"type\",\"required\":true,\"variadic\":false},{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--status <status>\",\"description\":\"Result status: passed, failed, or review-only blocked\",\"required\":true,\"valueHint\":\"status\"},{\"flags\":\"--item <itemId>\",\"description\":\"xBRIEF item ID (required for inspect verdicts)\",\"required\":true,\"valueHint\":\"itemId\"},{\"flags\":\"--notes <notes>\",\"description\":\"Optional notes about the result\",\"required\":true,\"valueHint\":\"notes\"},{\"flags\":\"--run-id <runId>\",\"description\":\"Review cycle ID used to deduplicate review feedback\",\"required\":true,\"valueHint\":\"runId\"},{\"flags\":\"--reviewers <verdicts>\",\"description\":\"PAN-1862 (review only): per-reviewer verdicts, e.g. \\\"security=passed,correctness=blocked\\\"\",\"required\":true,\"valueHint\":\"verdicts\"}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-specialists-logs\",\"path\":[\"admin\",\"specialists\",\"logs\"],\"display\":\"/pan admin specialists logs\",\"description\":\"View specialist run logs\",\"args\":[{\"name\":\"project\",\"required\":false,\"variadic\":false},{\"name\":\"type\",\"required\":false,\"variadic\":false},{\"name\":\"runId\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Output in JSON format\",\"required\":false,\"valueHint\":null},{\"flags\":\"--limit <count>\",\"description\":\"Number of runs to show (default: 10)\",\"required\":true,\"valueHint\":\"count\"},{\"flags\":\"--tail\",\"description\":\"Follow active run log in real-time\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-specialists-cleanup-logs\",\"path\":[\"admin\",\"specialists\",\"cleanup-logs\"],\"display\":\"/pan admin specialists cleanup-logs\",\"description\":\"Clean up old specialist logs\",\"args\":[{\"name\":\"project\",\"required\":false,\"variadic\":false},{\"name\":\"type\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Skip confirmation prompt\",\"required\":false,\"valueHint\":null},{\"flags\":\"--all\",\"description\":\"Clean up logs for all projects\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-remote\",\"path\":[\"admin\",\"remote\"],\"display\":\"/pan admin remote\",\"description\":\"Remote workspace management (Fly.io)\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-remote-status\",\"path\":[\"admin\",\"remote\",\"status\"],\"display\":\"/pan admin remote status\",\"description\":\"Show Fly.io connection and machine status\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output in JSON format\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-remote-init\",\"path\":[\"admin\",\"remote\",\"init\"],\"display\":\"/pan admin remote init\",\"description\":\"Initialize Fly.io app for workspace machines\",\"args\":[],\"options\":[{\"flags\":\"--app <app>\",\"description\":\"Fly app name\",\"required\":true,\"valueHint\":\"app\"},{\"flags\":\"--org <org>\",\"description\":\"Fly org slug\",\"required\":true,\"valueHint\":\"org\"},{\"flags\":\"--region <region>\",\"description\":\"Default region\",\"required\":true,\"valueHint\":\"region\"}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-remote-resources\",\"path\":[\"admin\",\"remote\",\"resources\"],\"display\":\"/pan admin remote resources\",\"description\":\"Show RAM/disk usage across VMs\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output in JSON format\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-remote-setup\",\"path\":[\"admin\",\"remote\",\"setup\"],\"display\":\"/pan admin remote setup\",\"description\":\"Setup Fly.io integration (install flyctl, configure auth)\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-remote-reap\",\"path\":[\"admin\",\"remote\",\"reap\"],\"display\":\"/pan admin remote reap\",\"description\":\"Hand completed remote agents (PAN_REMOTE_DONE) to the review pipeline and stop their machines\",\"args\":[],\"options\":[{\"flags\":\"--issue <id>\",\"description\":\"Target a single issue instead of scanning all remote agents\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--dry-run\",\"description\":\"Report what would be reaped without acting\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db\",\"path\":[\"admin\",\"db\"],\"display\":\"/pan admin db\",\"description\":\"Database seeding and management\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-snapshot\",\"path\":[\"admin\",\"db\",\"snapshot\"],\"display\":\"/pan admin db snapshot\",\"description\":\"Create a database snapshot from an external source\",\"args\":[],\"options\":[{\"flags\":\"--project <key>\",\"description\":\"Project key\",\"required\":true,\"valueHint\":\"key\"},{\"flags\":\"--output <path>\",\"description\":\"Output file path\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--sanitize\",\"description\":\"Run sanitization script after snapshot\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-seed\",\"path\":[\"admin\",\"db\",\"seed\"],\"display\":\"/pan admin db seed\",\"description\":\"Seed a workspace database with the configured seed file\",\"args\":[{\"name\":\"workspaceOrIssue\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--force\",\"description\":\"Force reseed even if already initialized\",\"required\":false,\"valueHint\":null},{\"flags\":\"--file <path>\",\"description\":\"Override seed file path\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-status\",\"path\":[\"admin\",\"db\",\"status\"],\"display\":\"/pan admin db status\",\"description\":\"Check database status for a workspace\",\"args\":[{\"name\":\"workspaceOrIssue\",\"required\":false,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-clean\",\"path\":[\"admin\",\"db\",\"clean\"],\"display\":\"/pan admin db clean\",\"description\":\"Clean kubectl/stderr garbage from a database dump file\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--output <path>\",\"description\":\"Output file (default: overwrite input)\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--dry-run\",\"description\":\"Show what would be cleaned without modifying\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-config\",\"path\":[\"admin\",\"db\",\"config\"],\"display\":\"/pan admin db config\",\"description\":\"Show database configuration for a project\",\"args\":[{\"name\":\"project\",\"required\":false,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-rebuild-agents\",\"path\":[\"admin\",\"db\",\"rebuild-agents\"],\"display\":\"/pan admin db rebuild-agents\",\"description\":\"Rebuild the SQLite agents table from state.json rollback sources (PAN-1908)\",\"args\":[],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Show what would be backfilled without writing\",\"required\":false,\"valueHint\":null},{\"flags\":\"--verbose\",\"description\":\"Log each processed agent\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-gc-agents\",\"path\":[\"admin\",\"db\",\"gc-agents\"],\"display\":\"/pan admin db gc-agents\",\"description\":\"Remove stopped work-agent rows for terminal issues\",\"args\":[],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Show what would be removed without writing\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-rebuild\",\"path\":[\"admin\",\"db\",\"rebuild\"],\"display\":\"/pan admin db rebuild\",\"description\":\"Reconstruct the dashboard cache from git + GitHub sources (PAN-1920)\",\"args\":[],\"options\":[{\"flags\":\"--verbose\",\"description\":\"Log each enumerated issue and agent\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-backfill-records\",\"path\":[\"admin\",\"db\",\"backfill-records\"],\"display\":\"/pan admin db backfill-records\",\"description\":\"Backfill per-issue permanent records into the infra repo (PAN-1908)\",\"args\":[],\"options\":[{\"flags\":\"--issue-id <id>\",\"description\":\"Backfill only this issue\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--force\",\"description\":\"Overwrite records even if unchanged\",\"required\":false,\"valueHint\":null},{\"flags\":\"--verbose\",\"description\":\"Log each processed issue\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-restore-verdicts\",\"path\":[\"admin\",\"db\",\"restore-verdicts\"],\"display\":\"/pan admin db restore-verdicts\",\"description\":\"Rebuild review_status verdicts from per-issue records + live GitHub PR state (PAN-1922)\",\"args\":[],\"options\":[{\"flags\":\"--issue-id <id>\",\"description\":\"Restore only this issue\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--dry-run\",\"description\":\"Show what would be restored without writing\",\"required\":false,\"valueHint\":null},{\"flags\":\"--verbose\",\"description\":\"Log each processed issue\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-db-reconcile-merges\",\"path\":[\"admin\",\"db\",\"reconcile-merges\"],\"display\":\"/pan admin db reconcile-merges\",\"description\":\"Backfill fulfilled merge state from tracked PR and branch ancestry evidence (PAN-2311)\",\"args\":[],\"options\":[{\"flags\":\"--issue-id <id>\",\"description\":\"Reconcile only this issue\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--dry-run\",\"description\":\"Show what would be reconciled without writing\",\"required\":false,\"valueHint\":null},{\"flags\":\"--verbose\",\"description\":\"Log each processed issue\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-config\",\"path\":[\"admin\",\"config\"],\"display\":\"/pan admin config\",\"description\":\"Manage Overdeck configuration\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-config-shadow\",\"path\":[\"admin\",\"config\",\"shadow\"],\"display\":\"/pan admin config shadow\",\"description\":\"Manage shadow mode settings\",\"args\":[],\"options\":[{\"flags\":\"--enable\",\"description\":\"Enable global shadow mode\",\"required\":false,\"valueHint\":null},{\"flags\":\"--disable\",\"description\":\"Disable global shadow mode\",\"required\":false,\"valueHint\":null},{\"flags\":\"--status\",\"description\":\"Show current shadow mode configuration\",\"required\":false,\"valueHint\":null},{\"flags\":\"--tracker <type>\",\"description\":\"Configure specific tracker (linear/github/gitlab/rally)\",\"required\":true,\"valueHint\":\"type\"}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-hooks\",\"path\":[\"admin\",\"hooks\"],\"display\":\"/pan admin hooks\",\"description\":\"Manage heartbeat hooks\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-hooks-install\",\"path\":[\"admin\",\"hooks\",\"install\"],\"display\":\"/pan admin hooks install\",\"description\":\"Configure heartbeat hooks for Claude Code and/or Pi\",\"args\":[],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Preview the proposed settings.json diff without writing\",\"required\":false,\"valueHint\":null},{\"flags\":\"--harness <harness>\",\"description\":\"Target harness: claude-code, pi, or both\",\"required\":true,\"valueHint\":\"harness\"}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-hooks-status\",\"path\":[\"admin\",\"hooks\",\"status\"],\"display\":\"/pan admin hooks status\",\"description\":\"Show installed hook harness support\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-tldr\",\"path\":[\"admin\",\"tldr\"],\"display\":\"/pan admin tldr\",\"description\":\"TLDR daemon: status, start, stop, warm\",\"args\":[{\"name\":\"action\",\"required\":false,\"variadic\":false},{\"name\":\"workspace\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-fpp\",\"path\":[\"admin\",\"fpp\"],\"display\":\"/pan admin fpp\",\"description\":\"FPP hooks: check, push, pop, clear, mail\",\"args\":[{\"name\":\"action\",\"required\":false,\"variadic\":false},{\"name\":\"idOrMessage\",\"required\":false,\"variadic\":true}],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-conversations\",\"path\":[\"admin\",\"conversations\"],\"display\":\"/pan admin conversations\",\"description\":\"Conversation maintenance utilities\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-conversations-backfill-titles\",\"path\":[\"admin\",\"conversations\",\"backfill-titles\"],\"display\":\"/pan admin conversations backfill-titles\",\"description\":\"Backfill titles for conversations stuck on \\\"New conversation\\\"\",\"args\":[],\"options\":[{\"flags\":\"--dry-run\",\"description\":\"Preview changes without writing to the database\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-tracker\",\"path\":[\"admin\",\"tracker\"],\"display\":\"/pan admin tracker\",\"description\":\"Tracker-specific operations (Linear, GitHub, etc.)\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-tracker-linear-states\",\"path\":[\"admin\",\"tracker\",\"linear-states\"],\"display\":\"/pan admin tracker linear-states\",\"description\":\"Manage Linear workflow states\",\"args\":[],\"options\":[{\"flags\":\"-t, --team <team>\",\"description\":\"Team key (default: MIN)\",\"required\":true,\"valueHint\":\"team\"}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-tracker-linear-cleanup\",\"path\":[\"admin\",\"tracker\",\"linear-cleanup\"],\"display\":\"/pan admin tracker linear-cleanup\",\"description\":\"Archive old Linear custom states\",\"args\":[],\"options\":[{\"flags\":\"-t, --team <team>\",\"description\":\"Team key (default: MIN)\",\"required\":true,\"valueHint\":\"team\"},{\"flags\":\"-s, --state <state>\",\"description\":\"State name to archive (default: Planning)\",\"required\":true,\"valueHint\":\"state\"},{\"flags\":\"--dry-run\",\"description\":\"Show what would be archived without making changes\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-admin-migrate-config\",\"path\":[\"admin\",\"migrate-config\"],\"display\":\"/pan admin migrate-config\",\"description\":\"One-time migration from settings.json to config.yaml\",\"args\":[],\"options\":[{\"flags\":\"--force\",\"description\":\"Force migration even if config.yaml exists\",\"required\":false,\"valueHint\":null},{\"flags\":\"--preview\",\"description\":\"Preview migration without applying changes\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-backup\",\"description\":\"Do not back up settings.json\",\"required\":false,\"valueHint\":null},{\"flags\":\"--delete-legacy\",\"description\":\"Delete settings.json after migration\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Admin\"},\n {\"id\":\"pan-conversations\",\"path\":[\"conversations\"],\"display\":\"/pan conversations\",\"description\":\"Discover, index, and search Claude Code session history\",\"args\":[],\"options\":[],\"aliases\":[\"conv\"],\"category\":\"Conversation\"},\n {\"id\":\"pan-conversations-scan\",\"path\":[\"conversations\",\"scan\"],\"display\":\"/pan conversations scan\",\"description\":\"Scan ~/.claude/projects/ and index discovered sessions\",\"args\":[{\"name\":\"dirs\",\"required\":false,\"variadic\":true}],\"options\":[{\"flags\":\"--watched\",\"description\":\"Scan configured watch directories (from config.yaml)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--system\",\"description\":\"Scan system-wide ~/.claude/projects/ (default when no dirs given)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--dry-run\",\"description\":\"Preview without writing to database\",\"required\":false,\"valueHint\":null},{\"flags\":\"--max-parallel <n>\",\"description\":\"Override parallelism (default: auto)\",\"required\":true,\"valueHint\":\"n\"}],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-conversations-search\",\"path\":[\"conversations\",\"search\"],\"display\":\"/pan conversations search\",\"description\":\"Full-text search across session summaries and tags\",\"args\":[{\"name\":\"query\",\"required\":false,\"variadic\":false}],\"options\":[{\"flags\":\"--workspace <path>\",\"description\":\"Filter by workspace path\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--model <name>\",\"description\":\"Filter by primary model\",\"required\":true,\"valueHint\":\"name\"},{\"flags\":\"--since <time>\",\"description\":\"Filter sessions after time (ISO or \\\"7d\\\", \\\"today\\\")\",\"required\":true,\"valueHint\":\"time\"},{\"flags\":\"--after <time>\",\"description\":\"Alias for --since (sessions after this time)\",\"required\":true,\"valueHint\":\"time\"},{\"flags\":\"--before <time>\",\"description\":\"Filter sessions before time\",\"required\":true,\"valueHint\":\"time\"},{\"flags\":\"--min-cost <n>\",\"description\":\"Filter by minimum estimated cost\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--max-cost <n>\",\"description\":\"Filter by maximum estimated cost\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--min-messages <n>\",\"description\":\"Filter sessions with at least N messages\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--managed\",\"description\":\"Show only Overdeck-managed sessions\",\"required\":false,\"valueHint\":null},{\"flags\":\"--unmanaged\",\"description\":\"Show only unmanaged (personal) sessions\",\"required\":false,\"valueHint\":null},{\"flags\":\"--enriched\",\"description\":\"Show only enriched sessions\",\"required\":false,\"valueHint\":null},{\"flags\":\"--not-enriched\",\"description\":\"Show only unenriched sessions\",\"required\":false,\"valueHint\":null},{\"flags\":\"--tag <value>\",\"description\":\"Filter by tag (repeatable: --tag foo --tag bar)\",\"required\":true,\"valueHint\":\"value\"},{\"flags\":\"--tool <name>\",\"description\":\"Filter by tool used (repeatable)\",\"required\":true,\"valueHint\":\"name\"},{\"flags\":\"--file <path>\",\"description\":\"Filter by file referenced (repeatable)\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--issue <id>\",\"description\":\"Filter by associated issue ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--similar <id>\",\"description\":\"Find sessions similar to this session ID (semantic)\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--semantic <query>\",\"description\":\"Find sessions semantically similar to query text\",\"required\":true,\"valueHint\":\"query\"},{\"flags\":\"--format <fmt>\",\"description\":\"Output format: table | json | brief | ids\",\"required\":true,\"valueHint\":\"fmt\"},{\"flags\":\"--limit <n>\",\"description\":\"Maximum results\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--offset <n>\",\"description\":\"Pagination offset\",\"required\":true,\"valueHint\":\"n\"}],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-conversations-list\",\"path\":[\"conversations\",\"list\"],\"display\":\"/pan conversations list\",\"description\":\"List discovered sessions with structured filters\",\"args\":[],\"options\":[{\"flags\":\"--workspace <path>\",\"description\":\"Filter by workspace path\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--model <name>\",\"description\":\"Filter by primary model\",\"required\":true,\"valueHint\":\"name\"},{\"flags\":\"--since <time>\",\"description\":\"Sessions after time (ISO or relative)\",\"required\":true,\"valueHint\":\"time\"},{\"flags\":\"--managed\",\"description\":\"Show only Overdeck-managed sessions\",\"required\":false,\"valueHint\":null},{\"flags\":\"--enriched\",\"description\":\"Show only enriched sessions\",\"required\":false,\"valueHint\":null},{\"flags\":\"--format <fmt>\",\"description\":\"Output: table | json | brief | ids\",\"required\":true,\"valueHint\":\"fmt\"},{\"flags\":\"--limit <n>\",\"description\":\"Maximum results\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--offset <n>\",\"description\":\"Pagination offset\",\"required\":true,\"valueHint\":\"n\"}],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-conversations-show\",\"path\":[\"conversations\",\"show\"],\"display\":\"/pan conversations show\",\"description\":\"Show detailed information for a session by ID\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-conversations-jsonl\",\"path\":[\"conversations\",\"jsonl\"],\"display\":\"/pan conversations jsonl\",\"description\":\"Print the Claude JSONL transcript path for a conversation id (the /conv/<N> number)\",\"args\":[{\"name\":\"conv-id\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Output status/path as JSON; read the status field\",\"required\":false,\"valueHint\":null}],\"aliases\":[\"transcript\"],\"category\":\"Conversation\"},\n {\"id\":\"pan-conversations-current\",\"path\":[\"conversations\",\"current\"],\"display\":\"/pan conversations current\",\"description\":\"Print the conversation you are currently running inside (deterministic — no scanning/guessing)\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[\"whoami\"],\"category\":\"Conversation\"},\n {\"id\":\"pan-conversations-cost\",\"path\":[\"conversations\",\"cost\"],\"display\":\"/pan conversations cost\",\"description\":\"Summarize estimated API costs across discovered sessions\",\"args\":[],\"options\":[{\"flags\":\"--since <time>\",\"description\":\"Summarize sessions since time (ISO or relative)\",\"required\":true,\"valueHint\":\"time\"},{\"flags\":\"--workspace <path>\",\"description\":\"Filter by workspace path\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--by <field>\",\"description\":\"Group by: workspace | model | day | month\",\"required\":true,\"valueHint\":\"field\"},{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-conversations-embed\",\"path\":[\"conversations\",\"embed\"],\"display\":\"/pan conversations embed\",\"description\":\"Generate embeddings for enriched sessions (required for --semantic search)\",\"args\":[{\"name\":\"ids\",\"required\":false,\"variadic\":true}],\"options\":[{\"flags\":\"--regenerate\",\"description\":\"Regenerate embeddings even for sessions that already have them\",\"required\":false,\"valueHint\":null},{\"flags\":\"--status\",\"description\":\"Show embedding coverage stats and exit\",\"required\":false,\"valueHint\":null},{\"flags\":\"--provider <name>\",\"description\":\"Embedding provider: openai | voyage | ollama\",\"required\":true,\"valueHint\":\"name\"},{\"flags\":\"--model <name>\",\"description\":\"Embedding model override\",\"required\":true,\"valueHint\":\"name\"},{\"flags\":\"--max-parallel <n>\",\"description\":\"Override parallelism\",\"required\":true,\"valueHint\":\"n\"}],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-conversations-enrich\",\"path\":[\"conversations\",\"enrich\"],\"display\":\"/pan conversations enrich\",\"description\":\"Enrich sessions with AI-generated summaries and tags\",\"args\":[{\"name\":\"ids\",\"required\":false,\"variadic\":true}],\"options\":[{\"flags\":\"--tier <n>\",\"description\":\"Enrichment tier: 1 (quick) | 2 (detailed) | 3 (deep)\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--deep\",\"description\":\"Shorthand for --tier 3\",\"required\":false,\"valueHint\":null},{\"flags\":\"--full\",\"description\":\"Use full-transcript enrichment with --with; enrich even already-enriched sessions\",\"required\":false,\"valueHint\":null},{\"flags\":\"--upgrade\",\"description\":\"Re-enrich sessions at a lower tier than requested\",\"required\":false,\"valueHint\":null},{\"flags\":\"--with <model>\",\"description\":\"Override the model used for enrichment\",\"required\":true,\"valueHint\":\"model\"},{\"flags\":\"--prompt <text>\",\"description\":\"Append custom prompt text to the enrichment request\",\"required\":true,\"valueHint\":\"text\"},{\"flags\":\"--limit <n>\",\"description\":\"Cap the number of sessions to enrich\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--workspace <path>\",\"description\":\"Restrict to sessions from this workspace path\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--since <time>\",\"description\":\"Only enrich sessions after this time (ISO or relative)\",\"required\":true,\"valueHint\":\"time\"},{\"flags\":\"--ids <ids>\",\"description\":\"Comma-separated session IDs to enrich (legacy; prefer positional args)\",\"required\":true,\"valueHint\":\"ids\"},{\"flags\":\"--max-parallel <n>\",\"description\":\"Override parallelism\",\"required\":true,\"valueHint\":\"n\"},{\"flags\":\"--yes\",\"description\":\"Skip cost confirmation prompt\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Conversation\"},\n {\"id\":\"pan-ohmypi-auth\",\"path\":[\"ohmypi-auth\"],\"display\":\"/pan ohmypi-auth\",\"description\":\"Manage omp's ChatGPT/Codex (openai-codex) OAuth login used by GPT-5.x omp conversations\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-ohmypi-auth-status\",\"path\":[\"ohmypi-auth\",\"status\"],\"display\":\"/pan ohmypi-auth status\",\"description\":\"Show whether omp's openai-codex login is valid (auto-refreshes if possible)\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-ohmypi-auth-login\",\"path\":[\"ohmypi-auth\",\"login\"],\"display\":\"/pan ohmypi-auth login\",\"description\":\"Re-authenticate omp's openai-codex login via headless device code\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-install\",\"path\":[\"install\"],\"display\":\"/pan install\",\"description\":\"Install Overdeck prerequisites\",\"args\":[],\"options\":[{\"flags\":\"--check\",\"description\":\"Check prerequisites only\",\"required\":false,\"valueHint\":null},{\"flags\":\"--minimal\",\"description\":\"Skip Traefik and mkcert (use port-based routing)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--skip-mkcert\",\"description\":\"Skip mkcert/HTTPS setup\",\"required\":false,\"valueHint\":null},{\"flags\":\"--skip-docker\",\"description\":\"Skip Docker network setup\",\"required\":false,\"valueHint\":null},{\"flags\":\"--skip-moonshine\",\"description\":\"Skip Moonshine voice sidecar build (AutoPreso + Voice STT will not work without it)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--skip-tts-daemon\",\"description\":\"Skip Qwen TTS daemon venv install (CUDA torch download is large)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-inspect\",\"path\":[\"inspect\"],\"display\":\"/pan inspect\",\"description\":\"Request inspection of a completed xBRIEF item before proceeding to the next\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--item <itemId>\",\"description\":\"xBRIEF item ID to inspect\",\"required\":true,\"valueHint\":\"itemId\"},{\"flags\":\"--workspace <path>\",\"description\":\"Workspace path (auto-detected if not provided)\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--deep\",\"description\":\"Use the deep inspection sub-role\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-caveman-compress\",\"path\":[\"caveman-compress\"],\"display\":\"/pan caveman-compress\",\"description\":\"Compress a static reference doc using caveman-compress (manual use only, never automated). Calls the Claude API recursively to compress prose by ~65-75% while preserving technical accuracy.\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-scope\",\"path\":[\"scope\"],\"display\":\"/pan scope\",\"description\":\"xBRIEF lifecycle management\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-scope-list\",\"path\":[\"scope\",\"list\"],\"display\":\"/pan scope list\",\"description\":\"List all scope xBRIEFs across registered projects (lifecycle dirs + in-flight worktrees)\",\"args\":[],\"options\":[{\"flags\":\"--project <path>\",\"description\":\"Limit to a single project path (defaults to all registered projects)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-scope-show\",\"path\":[\"scope\",\"show\"],\"display\":\"/pan scope show\",\"description\":\"Display xBRIEF plan + items + continue-state summary\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <path>\",\"description\":\"Project path (defaults to resolved from issue)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-scope-propose\",\"path\":[\"scope\",\"propose\"],\"display\":\"/pan scope propose\",\"description\":\"Move xBRIEF to proposed/\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <path>\",\"description\":\"Project path (defaults to resolved from issue)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-scope-approve\",\"path\":[\"scope\",\"approve\"],\"display\":\"/pan scope approve\",\"description\":\"Move xBRIEF to active/ and set status approved\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <path>\",\"description\":\"Project path (defaults to resolved from issue)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-scope-complete\",\"path\":[\"scope\",\"complete\"],\"display\":\"/pan scope complete\",\"description\":\"Move xBRIEF to completed/\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <path>\",\"description\":\"Project path (defaults to resolved from issue)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-scope-cancel\",\"path\":[\"scope\",\"cancel\"],\"display\":\"/pan scope cancel\",\"description\":\"Move xBRIEF to cancelled/\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <path>\",\"description\":\"Project path (defaults to resolved from issue)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-scope-restore\",\"path\":[\"scope\",\"restore\"],\"display\":\"/pan scope restore\",\"description\":\"Restore xBRIEF from completed/ or cancelled/ to active/\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--project <path>\",\"description\":\"Project path (defaults to resolved from issue)\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Lifecycle\"},\n {\"id\":\"pan-flywheel\",\"path\":[\"flywheel\"],\"display\":\"/pan flywheel\",\"description\":\"Flywheel orchestrator lifecycle and status helpers\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-merge-blockers\",\"path\":[\"flywheel\",\"merge-blockers\"],\"display\":\"/pan flywheel merge-blockers\",\"description\":\"PRs that passed review but cannot merge (GitHub-native reasons) — reads SQLite directly, no HTTP (sandbox-safe)\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-weights\",\"path\":[\"flywheel\",\"weights\"],\"display\":\"/pan flywheel weights\",\"description\":\"Weighted substrate bugs by affected v1.0 criterion — reads SQLite directly, no HTTP (sandbox-safe)\",\"args\":[],\"options\":[{\"flags\":\"--issue <id>\",\"description\":\"Filter to a single issue\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--window <dur>\",\"description\":\"Stats window like 30d, 7d (default 30d)\",\"required\":true,\"valueHint\":\"dur\"},{\"flags\":\"--json\",\"description\":\"Output JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-start\",\"path\":[\"flywheel\",\"start\"],\"display\":\"/pan flywheel start\",\"description\":\"Start the Flywheel orchestrator\",\"args\":[],\"options\":[{\"flags\":\"--brief <path>\",\"description\":\"Path to the Flywheel brief\",\"required\":true,\"valueHint\":\"path\"},{\"flags\":\"--orders <book-id>\",\"description\":\"Bind the run to a validated order book\",\"required\":true,\"valueHint\":\"book-id\"}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-emit-status\",\"path\":[\"flywheel\",\"emit-status\"],\"display\":\"/pan flywheel emit-status\",\"description\":\"Validate and publish a FlywheelStatus JSON snapshot to the local dashboard\",\"args\":[],\"options\":[{\"flags\":\"--file <path>\",\"description\":\"Path to FlywheelStatus JSON, or - to read from stdin\",\"required\":true,\"valueHint\":\"path\"}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-config\",\"path\":[\"flywheel\",\"config\"],\"display\":\"/pan flywheel config\",\"description\":\"Get or set Flywheel autonomy configuration\",\"args\":[],\"options\":[{\"flags\":\"--get [key]\",\"description\":\"Print Flywheel config values\",\"required\":false,\"valueHint\":\"key\"},{\"flags\":\"--set <key=value>\",\"description\":\"Set a Flywheel config boolean\",\"required\":true,\"valueHint\":\"key=value\"}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-status\",\"path\":[\"flywheel\",\"status\"],\"display\":\"/pan flywheel status\",\"description\":\"Show the active Flywheel run status\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Emit the raw FlywheelStatus JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-stats\",\"path\":[\"flywheel\",\"stats\"],\"display\":\"/pan flywheel stats\",\"description\":\"Show Flywheel v1.0 readiness stats\",\"args\":[],\"options\":[{\"flags\":\"--window <duration>\",\"description\":\"Stats window duration\",\"required\":true,\"valueHint\":\"duration\"},{\"flags\":\"--json\",\"description\":\"Emit the raw FlywheelStats JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-pause\",\"path\":[\"flywheel\",\"pause\"],\"display\":\"/pan flywheel pause\",\"description\":\"Pause the active Flywheel orchestrator run\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-resume\",\"path\":[\"flywheel\",\"resume\"],\"display\":\"/pan flywheel resume\",\"description\":\"Resume the paused Flywheel orchestrator run\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-report\",\"path\":[\"flywheel\",\"report\"],\"display\":\"/pan flywheel report\",\"description\":\"Finalize the active Flywheel run: write report.md, commit FLYWHEEL-STATE.md changes, and clear the active-run gate. Refuses to run while the orchestrator session is alive (pause or abort first).\",\"args\":[],\"options\":[{\"flags\":\"--force\",\"description\":\"Bypass the orchestrator-alive guard. Intended for the orchestrator role's own end-of-run call.\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-complete\",\"path\":[\"flywheel\",\"complete\"],\"display\":\"/pan flywheel complete\",\"description\":\"Complete a drained order-book run, write its report and retrospective, then continue mechanically\",\"args\":[],\"options\":[{\"flags\":\"--force\",\"description\":\"Complete even when the order book still has non-terminal items\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-stop\",\"path\":[\"flywheel\",\"stop\"],\"display\":\"/pan flywheel stop\",\"description\":\"Stop the Flywheel orchestrator gracefully: kill any live session, write report.md, commit FLYWHEEL-STATE.md changes, and clear the active-run gate\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-flywheel-abort\",\"path\":[\"flywheel\",\"abort\"],\"display\":\"/pan flywheel abort\",\"description\":\"Discard the active Flywheel run without writing a report\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Flywheel\"},\n {\"id\":\"pan-merge\",\"path\":[\"merge\"],\"display\":\"/pan merge\",\"description\":\"Merge workflow helpers\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-merge-cancel\",\"path\":[\"merge\",\"cancel\"],\"display\":\"/pan merge cancel\",\"description\":\"Cancel a pending Flywheel auto-merge during its cooldown window\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Review\"},\n {\"id\":\"pan-artifacts\",\"path\":[\"artifacts\"],\"display\":\"/pan artifacts\",\"description\":\"Create, publish, validate, inspect, and open shared HTML artifacts\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-artifacts-create\",\"path\":[\"artifacts\",\"create\"],\"display\":\"/pan artifacts create\",\"description\":\"Validate and publish an HTML artifact\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--issue <id>\",\"description\":\"Issue ID for artifact provenance\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--workspace <id>\",\"description\":\"Workspace ID for artifact provenance\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--agent-role <role>\",\"description\":\"Agent role: plan, work, review, test, ship, flywheel, or user\",\"required\":true,\"valueHint\":\"role\"},{\"flags\":\"--agent-harness <harness>\",\"description\":\"Agent harness: claude-code, pi, codex, acp, or user\",\"required\":true,\"valueHint\":\"harness\"},{\"flags\":\"--run-id <id>\",\"description\":\"Run ID for artifact provenance\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--session-id <id>\",\"description\":\"Session ID for artifact provenance\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--title <title>\",\"description\":\"Artifact title\",\"required\":true,\"valueHint\":\"title\"},{\"flags\":\"--description <text>\",\"description\":\"Artifact description\",\"required\":true,\"valueHint\":\"text\"},{\"flags\":\"--strict\",\"description\":\"Enable strict validation warnings\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Emit JSON result\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-artifacts-publish\",\"path\":[\"artifacts\",\"publish\"],\"display\":\"/pan artifacts publish\",\"description\":\"Revalidate and republish an existing artifact when changes are pending\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--strict\",\"description\":\"Enable strict validation warnings\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Emit JSON result\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-artifacts-unshare\",\"path\":[\"artifacts\",\"unshare\"],\"display\":\"/pan artifacts unshare\",\"description\":\"Disable an artifact URL without deleting source, snapshots, or metadata\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--yes\",\"description\":\"Confirm unsharing without an interactive prompt\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Emit JSON result\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-artifacts-share\",\"path\":[\"artifacts\",\"share\"],\"display\":\"/pan artifacts share\",\"description\":\"Share an artifact through an external tunnel\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--tunnel\",\"description\":\"Request tunnel-backed sharing\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Emit JSON result\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-artifacts-validate\",\"path\":[\"artifacts\",\"validate\"],\"display\":\"/pan artifacts validate\",\"description\":\"Validate an artifact HTML file\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--strict\",\"description\":\"Enable strict warnings\",\"required\":false,\"valueHint\":null},{\"flags\":\"--json\",\"description\":\"Output validation result as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-artifacts-status\",\"path\":[\"artifacts\",\"status\"],\"display\":\"/pan artifacts status\",\"description\":\"Show artifact hash and publication status for a file\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Output status as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-artifacts-list\",\"path\":[\"artifacts\",\"list\"],\"display\":\"/pan artifacts list\",\"description\":\"List artifacts\",\"args\":[],\"options\":[{\"flags\":\"--workspace <id>\",\"description\":\"Filter artifacts by workspace ID\",\"required\":true,\"valueHint\":\"id\"},{\"flags\":\"--json\",\"description\":\"Output artifacts as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-artifacts-url\",\"path\":[\"artifacts\",\"url\"],\"display\":\"/pan artifacts url\",\"description\":\"Print the wrapper URL for an artifact file\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Output URL metadata as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-artifacts-open\",\"path\":[\"artifacts\",\"open\"],\"display\":\"/pan artifacts open\",\"description\":\"Open the wrapper URL for an artifact file\",\"args\":[{\"name\":\"file\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--json\",\"description\":\"Output opened URL as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-status\",\"path\":[\"status\"],\"display\":\"/pan status\",\"description\":\"Show running agents\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null},{\"flags\":\"--tldr\",\"description\":\"Show TLDR index health across all workspaces\",\"required\":false,\"valueHint\":null},{\"flags\":\"--context\",\"description\":\"Show context window usage % for each agent\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-dev\",\"path\":[\"dev\"],\"display\":\"/pan dev\",\"description\":\"Start dashboard in development mode with Vite HMR\",\"args\":[],\"options\":[{\"flags\":\"--skip-traefik\",\"description\":\"Skip Traefik startup\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-deacon\",\"description\":\"Skip Cloister/Deacon auto-start (escape hatch when deacon's startup scan is starving the event loop)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-resume\",\"description\":\"Disable agent auto-resume (opt out of the default-on auto-resume)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-up\",\"path\":[\"up\"],\"display\":\"/pan up\",\"description\":\"Start dashboard (and Traefik if enabled)\",\"args\":[],\"options\":[{\"flags\":\"--detach\",\"description\":\"Run in background\",\"required\":false,\"valueHint\":null},{\"flags\":\"--skip-traefik\",\"description\":\"Skip Traefik startup\",\"required\":false,\"valueHint\":null},{\"flags\":\"--deacon\",\"description\":\"Force Cloister/Deacon auto-start even if the shell inherited OVERDECK_DISABLE_DEACON\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-deacon\",\"description\":\"Skip Cloister/Deacon auto-start (escape hatch when deacon's startup scan is starving the event loop)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--resume\",\"description\":\"Enable agent auto-resume on boot — auto-resume is ON by default (flag kept for explicitness)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-resume\",\"description\":\"Disable agent auto-resume (opt out of the default-on auto-resume)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-open\",\"description\":\"Do not open the dashboard app/browser after startup\",\"required\":false,\"valueHint\":null},{\"flags\":\"--seed-from-legacy\",\"description\":\"Seed a fresh local database from the legacy database (copy conversations + reconstruct in-flight agents/issues). Default is an empty local database.\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-down\",\"path\":[\"down\"],\"display\":\"/pan down\",\"description\":\"Stop dashboard (and Traefik if enabled)\",\"args\":[],\"options\":[{\"flags\":\"--skip-traefik\",\"description\":\"Skip Traefik shutdown\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-reload\",\"path\":[\"reload\"],\"display\":\"/pan reload\",\"description\":\"Build Overdeck, then restart the dashboard only after the build succeeds\",\"args\":[],\"options\":[{\"flags\":\"--skip-build\",\"description\":\"Skip npm run build and restart the existing bundle\",\"required\":false,\"valueHint\":null},{\"flags\":\"--force\",\"description\":\"Bypass the agent deploy-window gate (agent-initiated reloads are otherwise refused while deploy-window block reasons are active)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--health-timeout <duration>\",\"description\":\"Dashboard /api/health wait budget — ms, or Ns/Nm suffix (default 30s; floor 1000ms)\",\"required\":true,\"valueHint\":\"duration\"},{\"flags\":\"--no-deacon\",\"description\":\"Skip Cloister/Deacon auto-start after reload\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-restart\",\"path\":[\"restart\"],\"display\":\"/pan restart\",\"description\":\"Restart a platform component (default: dashboard only — leaves CLIProxy, Traefik, TLDR running)\",\"args\":[],\"options\":[{\"flags\":\"--dashboard\",\"description\":\"Restart only the dashboard (default)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--cliproxy\",\"description\":\"Restart only the CLIProxy sidecar\",\"required\":false,\"valueHint\":null},{\"flags\":\"--traefik\",\"description\":\"Restart only Traefik\",\"required\":false,\"valueHint\":null},{\"flags\":\"--full\",\"description\":\"Restart the entire stack (equivalent to pan down && pan up)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--force\",\"description\":\"For --cliproxy: redownload binary at the pinned version before restarting (use after bumping CLIPROXY_RELEASE_VERSION). For dashboard scope: bypass the agent deploy-window gate (agent-initiated restarts are otherwise refused while deploy-window block reasons are active)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--health-timeout <duration>\",\"description\":\"Dashboard /api/health wait budget — ms, or Ns/Nm suffix (default 15s; floor 1000ms)\",\"required\":true,\"valueHint\":\"duration\"},{\"flags\":\"--deacon\",\"description\":\"Force Cloister/Deacon auto-start even if the shell inherited OVERDECK_DISABLE_DEACON\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-deacon\",\"description\":\"Skip Cloister/Deacon auto-start on restart (escape hatch when deacon's startup scan is starving the event loop)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--resume\",\"description\":\"Enable agent auto-resume on boot — auto-resume is ON by default (flag kept for explicitness)\",\"required\":false,\"valueHint\":null},{\"flags\":\"--no-resume\",\"description\":\"Disable agent auto-resume on restart (opt out of the default-on auto-resume)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-project\",\"path\":[\"project\"],\"display\":\"/pan project\",\"description\":\"Project registry for multi-project workspace support\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-project-add\",\"path\":[\"project\",\"add\"],\"display\":\"/pan project add\",\"description\":\"Register a project with Overdeck\",\"args\":[{\"name\":\"path\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--name <name>\",\"description\":\"Project name\",\"required\":true,\"valueHint\":\"name\"},{\"flags\":\"--type <type>\",\"description\":\"Project type (standalone/monorepo)\",\"required\":true,\"valueHint\":\"type\"},{\"flags\":\"--linear-team <team>\",\"description\":\"Linear team prefix (e.g., MIN, PAN)\",\"required\":true,\"valueHint\":\"team\"},{\"flags\":\"--rally-project <oid>\",\"description\":\"Rally project OID (e.g., /project/822404704163)\",\"required\":true,\"valueHint\":\"oid\"}],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-project-list\",\"path\":[\"project\",\"list\"],\"display\":\"/pan project list\",\"description\":\"List all registered projects\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-project-show\",\"path\":[\"project\",\"show\"],\"display\":\"/pan project show\",\"description\":\"Show details for a specific project\",\"args\":[{\"name\":\"key\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-project-rename\",\"path\":[\"project\",\"rename\"],\"display\":\"/pan project rename\",\"description\":\"Rename a project's display name (the registration key stays unchanged)\",\"args\":[{\"name\":\"key\",\"required\":true,\"variadic\":false},{\"name\":\"newName\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-project-remove\",\"path\":[\"project\",\"remove\"],\"display\":\"/pan project remove\",\"description\":\"Remove a project from the registry\",\"args\":[{\"name\":\"nameOrPath\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-project-init\",\"path\":[\"project\",\"init\"],\"display\":\"/pan project init\",\"description\":\"Initialize projects.yaml with example configuration\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-projects\",\"path\":[\"projects\"],\"display\":\"/pan projects\",\"description\":\"Project registry for multi-project workspace support\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-projects-add\",\"path\":[\"projects\",\"add\"],\"display\":\"/pan projects add\",\"description\":\"Register a project with Overdeck\",\"args\":[{\"name\":\"path\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"--name <name>\",\"description\":\"Project name\",\"required\":true,\"valueHint\":\"name\"},{\"flags\":\"--type <type>\",\"description\":\"Project type (standalone/monorepo)\",\"required\":true,\"valueHint\":\"type\"},{\"flags\":\"--linear-team <team>\",\"description\":\"Linear team prefix (e.g., MIN, PAN)\",\"required\":true,\"valueHint\":\"team\"},{\"flags\":\"--rally-project <oid>\",\"description\":\"Rally project OID (e.g., /project/822404704163)\",\"required\":true,\"valueHint\":\"oid\"}],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-projects-list\",\"path\":[\"projects\",\"list\"],\"display\":\"/pan projects list\",\"description\":\"List all registered projects\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-projects-show\",\"path\":[\"projects\",\"show\"],\"display\":\"/pan projects show\",\"description\":\"Show details for a specific project\",\"args\":[{\"name\":\"key\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-projects-rename\",\"path\":[\"projects\",\"rename\"],\"display\":\"/pan projects rename\",\"description\":\"Rename a project's display name (the registration key stays unchanged)\",\"args\":[{\"name\":\"key\",\"required\":true,\"variadic\":false},{\"name\":\"newName\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-projects-remove\",\"path\":[\"projects\",\"remove\"],\"display\":\"/pan projects remove\",\"description\":\"Remove a project from the registry\",\"args\":[{\"name\":\"nameOrPath\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-projects-init\",\"path\":[\"projects\",\"init\"],\"display\":\"/pan projects init\",\"description\":\"Initialize projects.yaml with example configuration\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Project\"},\n {\"id\":\"pan-health\",\"path\":[\"health\"],\"display\":\"/pan health\",\"description\":\"Show runtime health of Overdeck services\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-doctor\",\"path\":[\"doctor\"],\"display\":\"/pan doctor\",\"description\":\"Check system health and dependencies\",\"args\":[],\"options\":[{\"flags\":\"--strict\",\"description\":\"Exit non-zero if any optional dependency is missing (e.g. Pi binary)\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Core\"},\n {\"id\":\"pan-resources\",\"path\":[\"resources\"],\"display\":\"/pan resources\",\"description\":\"Show RAM usage by agents, conversations, and system processes\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Output as JSON\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Observation\"},\n {\"id\":\"pan-hygiene\",\"path\":[\"hygiene\"],\"display\":\"/pan hygiene\",\"description\":\"Audit push, worktree, PR, agent, session, branch, workspace, and disk hygiene\",\"args\":[],\"options\":[{\"flags\":\"--json\",\"description\":\"Emit a schema-validated JSON report\",\"required\":false,\"valueHint\":null},{\"flags\":\"--strict\",\"description\":\"Exit 1 when any finding needs attention\",\"required\":false,\"valueHint\":null},{\"flags\":\"--skip <check...>\",\"description\":\"Skip checks: push tree prs agents sessions branches workspaces\",\"required\":true,\"valueHint\":\"check...\"},{\"flags\":\"--since <duration>\",\"description\":\"Age threshold for stale branches/workspaces\",\"required\":true,\"valueHint\":\"duration\"},{\"flags\":\"--fix-safe\",\"description\":\"Delete only confirmed merged branches; under disk pressure remove independently verified clean terminal workspaces\",\"required\":false,\"valueHint\":null},{\"flags\":\"--fix-disk-pressure-floor <GB>\",\"description\":\"Override the disk cleanup floor used with --fix-safe\",\"required\":true,\"valueHint\":\"GB\"}],\"aliases\":[],\"category\":\"CLI\"},\n {\"id\":\"pan-update\",\"path\":[\"update\"],\"display\":\"/pan update\",\"description\":\"Update Overdeck to latest version\",\"args\":[],\"options\":[{\"flags\":\"--check\",\"description\":\"Only check for updates, don't install\",\"required\":false,\"valueHint\":null},{\"flags\":\"--force\",\"description\":\"Force update even if on latest\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"CLI\"},\n {\"id\":\"pan-cost\",\"path\":[\"cost\"],\"display\":\"/pan cost\",\"description\":\"Track and report AI usage costs\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-today\",\"path\":[\"cost\",\"today\"],\"display\":\"/pan cost today\",\"description\":\"Show today's cost summary\",\"args\":[],\"options\":[{\"flags\":\"-d, --detail\",\"description\":\"Show individual entries\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-week\",\"path\":[\"cost\",\"week\"],\"display\":\"/pan cost week\",\"description\":\"Show weekly cost summary\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-month\",\"path\":[\"cost\",\"month\"],\"display\":\"/pan cost month\",\"description\":\"Show monthly cost summary\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-report\",\"path\":[\"cost\",\"report\"],\"display\":\"/pan cost report\",\"description\":\"Generate a cost report\",\"args\":[],\"options\":[{\"flags\":\"-s, --start <date>\",\"description\":\"Start date (YYYY-MM-DD)\",\"required\":true,\"valueHint\":\"date\"},{\"flags\":\"-e, --end <date>\",\"description\":\"End date (YYYY-MM-DD)\",\"required\":true,\"valueHint\":\"date\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-issue\",\"path\":[\"cost\",\"issue\"],\"display\":\"/pan cost issue\",\"description\":\"Show costs for a specific issue\",\"args\":[{\"name\":\"issueId\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"-d, --days <n>\",\"description\":\"Number of days to look back\",\"required\":true,\"valueHint\":\"n\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-budget\",\"path\":[\"cost\",\"budget\"],\"display\":\"/pan cost budget\",\"description\":\"Manage cost budgets\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-budget-create\",\"path\":[\"cost\",\"budget\",\"create\"],\"display\":\"/pan cost budget create\",\"description\":\"Create a cost budget\",\"args\":[{\"name\":\"name\",\"required\":true,\"variadic\":false}],\"options\":[{\"flags\":\"-l, --limit <amount>\",\"description\":\"Budget limit in USD\",\"required\":true,\"valueHint\":\"amount\"},{\"flags\":\"-t, --type <type>\",\"description\":\"Budget type (daily, monthly, project, issue, feature)\",\"required\":true,\"valueHint\":\"type\"},{\"flags\":\"-a, --alert <threshold>\",\"description\":\"Alert threshold (0-1)\",\"required\":true,\"valueHint\":\"threshold\"}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-budget-list\",\"path\":[\"cost\",\"budget\",\"list\"],\"display\":\"/pan cost budget list\",\"description\":\"List all budgets\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-budget-check\",\"path\":[\"cost\",\"budget\",\"check\"],\"display\":\"/pan cost budget check\",\"description\":\"Check budget status\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-budget-delete\",\"path\":[\"cost\",\"budget\",\"delete\"],\"display\":\"/pan cost budget delete\",\"description\":\"Delete a budget\",\"args\":[{\"name\":\"id\",\"required\":true,\"variadic\":false}],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-sync\",\"path\":[\"cost\",\"sync\"],\"display\":\"/pan cost sync\",\"description\":\"Import cost events from per-project WAL files into the local database\",\"args\":[],\"options\":[],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-cost-backfill\",\"path\":[\"cost\",\"backfill\"],\"display\":\"/pan cost backfill\",\"description\":\"Reconstruct cost events from stored harness session transcripts\",\"args\":[],\"options\":[{\"flags\":\"--write\",\"description\":\"Persist non-duplicate reconstructed cost events\",\"required\":false,\"valueHint\":null}],\"aliases\":[],\"category\":\"Data\"},\n {\"id\":\"pan-serve\",\"path\":[\"serve\"],\"display\":\"/pan serve\",\"description\":\"Start the dashboard server and open it in the default browser (npx launcher)\",\"args\":[],\"options\":[{\"flags\":\"--port <port>\",\"description\":\"Port to listen on\",\"required\":true,\"valueHint\":\"port\"}],\"aliases\":[],\"category\":\"CLI\"},\n]\n\nexport const COMPOSER_COMMAND_INSERT_OVERRIDES: Readonly<Record<string, string>> = {\n \"plan finalize\": \"/pan plan finalize \",\n \"admin specialists done\": \"/pan admin specialists done\",\n \"admin specialists logs\": \"/pan admin specialists logs\",\n \"admin specialists cleanup-logs\": \"/pan admin specialists cleanup-logs\"\n}\n\nexport const COMPOSER_COMMAND_VARIANTS = [\n {\"id\":\"pan-show-cv\",\"path\":[\"show\"],\"display\":\"/pan show --cv\",\"description\":\"Show agent work history (CV)\",\"insert\":\"/pan show --cv\",\"category\":\"Observation\"},\n {\"id\":\"pan-show-context\",\"path\":[\"show\"],\"display\":\"/pan show --context\",\"description\":\"Show context engineering state\",\"insert\":\"/pan show --context\",\"category\":\"Observation\"},\n {\"id\":\"pan-show-health\",\"path\":[\"show\"],\"display\":\"/pan show --health\",\"description\":\"Show health + heartbeat status\",\"insert\":\"/pan show --health\",\"category\":\"Observation\"},\n {\"id\":\"pan-plan-auto-start\",\"path\":[\"plan\"],\"display\":\"/pan plan --auto --auto-start\",\"description\":\"Auto-plan the issue, then auto-start the work agent\",\"insert\":\"/pan plan --auto --auto-start \",\"category\":\"Lifecycle\"},\n {\"id\":\"pan-review-reset-session\",\"path\":[\"review\",\"reset\"],\"display\":\"/pan review reset --session\",\"description\":\"Reset review and clear saved Claude session\",\"insert\":\"/pan review reset --session\",\"category\":\"Review\"},\n {\"id\":\"pan-fork-plain\",\"path\":[\"fork\"],\"display\":\"/pan fork --plain\",\"description\":\"Plain fork — copy raw history, skip summary\",\"insert\":\"/pan fork --plain\",\"category\":\"Conversation\"},\n {\"id\":\"pan-handoff-model\",\"path\":[\"handoff\"],\"display\":\"/pan handoff --model\",\"description\":\"Model for the new conversation\",\"insert\":\"/pan handoff --model \",\"category\":\"Conversation\"},\n {\"id\":\"pan-handoff-harness\",\"path\":[\"handoff\"],\"display\":\"/pan handoff --harness\",\"description\":\"Harness for the new conversation (claude-code|pi)\",\"insert\":\"/pan handoff --harness \",\"category\":\"Conversation\"},\n {\"id\":\"pan-handoff-cwd\",\"path\":[\"handoff\"],\"display\":\"/pan handoff --cwd\",\"description\":\"Working directory for the new conversation\",\"insert\":\"/pan handoff --cwd \",\"category\":\"Conversation\"},\n] as const\n"],"mappings":"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AQ,OAAO;EACf,YAAY,OAAO;EACpB,CAAC;CACH,CAAC;;AAIF,MAAa,sBAAsB,OAAO,OAAO;CAC/C,MAAM,OAAO,QAAQ,kBAAkB;CACvC,UAAU;CACV,WAAW,OAAO;CAClB,SAAS,OAAO,OAAO;EACrB,WAAW,OAAO;EAClB,OAAO,OAAO;EACd,OAAO,OAAO;EACd,MAAM,OAAO;EACb,SAAS,OAAO;EAChB,OAAO,OAAO,SAAS,OAAO,OAAO;EACtC,CAAC;CACH,CAAC;;AAIF,MAAa,sBAAsB,OAAO,OAAO;CAC/C,MAAM,OAAO,QAAQ,kBAAkB;CACvC,UAAU;CACV,WAAW,OAAO;CAClB,SAAS,OAAO,OAAO;EACrB,WAAW,OAAO;EAClB,WAAW,OAAO;EAClB,UAAU,OAAO;EACjB,YAAY,OAAO;EACpB,CAAC;CACH,CAAC;;AAIF,MAAa,qBAAqB,OAAO,OAAO;CAC9C,MAAM,OAAO,QAAQ,iBAAiB;CACtC,UAAU;CACV,WAAW,OAAO;CAClB,SAAS,OAAO,OAAO;EACrB,WAAW,OAAO;EAClB,OAAO,OAAO;EACd,SAAS,OAAO;EAChB,OAAO,OAAO,SAAS,OAAO,OAAO;EACtC,CAAC;CACH,CAAC;;AAMF,MAAa,cAAc,OAAO,MAAM;CACtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;;;AClzCF,MAAa,UAAU;CACrB;EAAE,IAAI;EA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"}
|