dsh-openwrite 0.2.10 → 0.2.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["isRecord","useState","useRef","useSyncExternalStore","useCallback","useMemo","Fragment","useState"],"sources":["../src/debug-contract.ts","../src/client/agentTelemetry.ts","../src/client/graph-layout.ts","../src/logic.ts","../src/model.ts","../src/graph.ts","../src/client/snapshot.ts","../src/client/DogDebugger.tsx","../src/client/sessionNavigation.ts","../src/client/styles.ts","../src/client/index.tsx"],"sourcesContent":["/** Shared browser-safe debugger protocol. */\nimport type { CompiledGraph, DogRun } from './model.ts'\n\nexport const DOG_DEBUG_RPC_CHANNEL = '/dog-rpc'\nexport const DOG_DEBUG_SNAPSHOT_ENDPOINT = 'snapshot'\nexport const DOG_RUNTIME_TRACE_ENDPOINT = 'goal-runtime'\n\n/** One immutable graph revision and every run bound to that exact digest. */\nexport interface DogDebugGraphRevision {\n readonly graph: CompiledGraph\n readonly current: boolean\n readonly runs: readonly DogRun[]\n}\n\n/** Complete, point-in-time view exposed to the debugger. */\nexport interface DogDebugSnapshot {\n readonly schemaVersion: '0.1'\n readonly generatedAt: string\n readonly graphs: readonly DogDebugGraphRevision[]\n}\n\n","import type { SessionId } from '@deepseek-ai/dsh-session'\n/** Live DSH session telemetry projected onto persisted DoG Agent bindings. */\n\nimport type { SessionListState, SessionSummary } from '@deepseek-ai/dsh-api-session-controller/client'\nimport type { DogDebugSnapshot } from '../debug-contract.ts'\nimport type { DogRun, GoalAgentSessionRef, GoalState } from '../model.ts'\n\nexport interface GoalAgentTelemetry {\n readonly ref: GoalAgentSessionRef\n readonly label: string\n readonly available: boolean\n readonly running: boolean\n readonly needsInput: boolean\n readonly tokens?: number\n readonly durationMs?: number\n}\n\nexport interface RunAgentSummary {\n readonly linked: number\n readonly visible: number\n readonly running: number\n readonly tokens?: number\n readonly partialTokens: boolean\n}\n\n/** Stable, de-duplicated bindings for one goal. */\nexport function goalAgentRefs(run: DogRun | undefined, goalId: string): readonly GoalAgentSessionRef[] {\n if (run === undefined) return []\n const seen = new Set<string>()\n const result: GoalAgentSessionRef[] = []\n for (const ref of run.goals[goalId]?.agentSessions ?? []) {\n if (seen.has(ref.sessionId)) continue\n seen.add(ref.sessionId)\n result.push(ref)\n }\n return result\n}\n\n/** Stable, de-duplicated Agent bindings across a run. */\nexport function runAgentRefs(run: DogRun | undefined): readonly GoalAgentSessionRef[] {\n if (run === undefined) return []\n const seen = new Set<string>()\n const result: GoalAgentSessionRef[] = []\n for (const goal of Object.values(run.goals)) {\n for (const ref of goal.agentSessions ?? []) {\n if (seen.has(ref.sessionId)) continue\n seen.add(ref.sessionId)\n result.push(ref)\n }\n }\n return result\n}\n\n/** Direct parent catalogs that can resolve bound subagent sessions in the host UI. */\nexport function agentParentSessionIds(snapshot: DogDebugSnapshot): readonly string[] {\n const parents = new Set<string>()\n for (const revision of snapshot.graphs) {\n for (const run of revision.runs) {\n for (const ref of runAgentRefs(run)) {\n if (ref.parentSessionId !== undefined) parents.add(ref.parentSessionId)\n }\n }\n }\n return [...parents]\n}\n\n/** Merge one persisted binding with the newest host-projected session facts. */\nexport function goalAgentTelemetry(\n ref: GoalAgentSessionRef,\n sessions: SessionListState & { pendingInteractions?: ReadonlyMap<string, unknown> },\n now = Date.now(),\n): GoalAgentTelemetry {\n const summary = sessions.byId[ref.sessionId as SessionId]\n const tokens = summary === undefined ? undefined : sessionTokenTotal(summary)\n const durationMs = summary === undefined ? undefined : sessionDuration(summary, now)\n return {\n ref,\n label: summary?.displayTitle ?? summary?.title ?? `${capitalize(ref.role)} Agent`,\n available: summary !== undefined,\n running: summary?.running ?? false,\n needsInput: sessions.pendingInteractions?.has(ref.sessionId) ?? false,\n ...(tokens === undefined ? {} : { tokens }),\n ...(durationMs === undefined ? {} : { durationMs }),\n }\n}\n\n/** DoG-level Agent counts and de-duplicated token usage. */\nexport function summarizeRunAgents(\n run: DogRun | undefined,\n sessions: SessionListState & { pendingInteractions?: ReadonlyMap<string, unknown> },\n now = Date.now(),\n): RunAgentSummary {\n const refs = runAgentRefs(run)\n let visible = 0\n let running = 0\n let tokens = 0\n let measured = 0\n for (const ref of refs) {\n const telemetry = goalAgentTelemetry(ref, sessions, now)\n if (telemetry.available) visible += 1\n if (telemetry.running) running += 1\n if (telemetry.tokens !== undefined) {\n tokens += telemetry.tokens\n measured += 1\n }\n }\n return {\n linked: refs.length,\n visible,\n running,\n ...(measured === 0 ? {} : { tokens }),\n partialTokens: measured > 0 && measured < refs.length,\n }\n}\n\n/** Count goals that reached any terminal state, independently of success. */\nexport function settledGoalCount(run: DogRun | undefined): number {\n if (run === undefined) return 0\n return Object.values(run.goals).filter(result => isTerminalGoalState(result.state)).length\n}\n\nfunction isTerminalGoalState(state: GoalState): boolean {\n return state !== 'pending' && state !== 'running'\n}\n\nfunction sessionTokenTotal(summary: SessionSummary): number | undefined {\n const projections = summary.projectionValues as Readonly<Record<string, unknown>> | undefined\n const usage = projections?.tokenUsage\n if (!isRecord(usage)) return undefined\n const uncached = finiteNonNegative(usage.uncachedInputTokens)\n const output = finiteNonNegative(usage.outputTokens)\n const cacheRead = finiteNonNegative(usage.cacheReadTokens)\n const cacheWrite = finiteNonNegative(usage.cacheWriteTokens)\n if (uncached === undefined || output === undefined || cacheRead === undefined || cacheWrite === undefined) return undefined\n return uncached + output + cacheRead + cacheWrite\n}\n\nfunction sessionDuration(summary: SessionSummary, now: number): number | undefined {\n const projections = summary.projectionValues as Readonly<Record<string, unknown>> | undefined\n const timing = projections?.subagentTiming\n if (!isRecord(timing)) return undefined\n const settledMs = finiteNonNegative(timing.settledMs)\n if (settledMs === undefined) return undefined\n if (!isRecord(timing.active)) return settledMs\n const since = finiteNumber(timing.active.since)\n const through = finiteNumber(timing.active.through)\n if (since === undefined || through === undefined) return settledMs\n const end = summary.running ? now : through\n return settledMs + Math.max(0, end - since)\n}\n\nfunction finiteNonNegative(value: unknown): number | undefined {\n const number = finiteNumber(value)\n return number === undefined || number < 0 ? undefined : number\n}\n\nfunction finiteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction capitalize(value: string): string {\n return value.length === 0 ? value : `${value[0]?.toUpperCase() ?? ''}${value.slice(1)}`\n}\n","/** Deterministic browser-side layout for containment and dependency edges. */\n\nimport type { DogGraphInput } from '../model.ts'\n\nexport const GOAL_WIDTH = 218\nexport const GOAL_HEIGHT = 88\nconst HORIZONTAL_GAP = 44\nconst VERTICAL_GAP = 92\nconst CANVAS_PADDING_X = 56\nconst CANVAS_PADDING_Y = 48\nconst MIN_CANVAS_WIDTH = 700\n\nexport interface PositionedGoal {\n readonly id: string\n readonly x: number\n readonly y: number\n readonly width: number\n readonly height: number\n readonly depth: number\n}\n\nexport interface PositionedEdge {\n readonly id: string\n readonly kind: 'contains' | 'dependsOn'\n readonly source: string\n readonly target: string\n readonly path: string\n}\n\nexport interface DagLayout {\n readonly width: number\n readonly height: number\n readonly nodes: readonly PositionedGoal[]\n readonly edges: readonly PositionedEdge[]\n}\n\n/** Lay containment levels top-to-bottom while retaining declared node order within a level. */\nexport function layoutDag(graph: DogGraphInput): DagLayout {\n const parents = new Map<string, string[]>()\n for (const edge of graph.contains) {\n const values = parents.get(edge.child) ?? []\n values.push(edge.parent)\n parents.set(edge.child, values)\n }\n const depths = new Map<string, number>()\n const visiting = new Set<string>()\n const depthOf = (id: string): number => {\n const known = depths.get(id)\n if (known !== undefined) return known\n if (id === graph.root) {\n depths.set(id, 0)\n return 0\n }\n if (visiting.has(id)) return 0\n visiting.add(id)\n const incoming = parents.get(id) ?? []\n const depth = incoming.length === 0 ? 0 : Math.max(...incoming.map(parent => depthOf(parent) + 1))\n visiting.delete(id)\n depths.set(id, depth)\n return depth\n }\n\n const layers = new Map<number, string[]>()\n for (const id of Object.keys(graph.nodes)) {\n const depth = depthOf(id)\n const layer = layers.get(depth) ?? []\n layer.push(id)\n layers.set(depth, layer)\n }\n const layerEntries = [...layers.entries()].sort(([left], [right]) => left - right)\n const widest = Math.max(1, ...layerEntries.map(([, ids]) => ids.length))\n const naturalWidth = widest * GOAL_WIDTH + Math.max(0, widest - 1) * HORIZONTAL_GAP + CANVAS_PADDING_X * 2\n const width = Math.max(MIN_CANVAS_WIDTH, naturalWidth)\n const positioned: PositionedGoal[] = []\n for (const [depth, ids] of layerEntries) {\n const layerWidth = ids.length * GOAL_WIDTH + Math.max(0, ids.length - 1) * HORIZONTAL_GAP\n const startX = (width - layerWidth) / 2\n ids.forEach((id, index) => positioned.push({\n id,\n x: startX + index * (GOAL_WIDTH + HORIZONTAL_GAP),\n y: CANVAS_PADDING_Y + depth * (GOAL_HEIGHT + VERTICAL_GAP),\n width: GOAL_WIDTH,\n height: GOAL_HEIGHT,\n depth,\n }))\n }\n const maximumDepth = Math.max(0, ...positioned.map(node => node.depth))\n const height = CANVAS_PADDING_Y * 2 + GOAL_HEIGHT + maximumDepth * (GOAL_HEIGHT + VERTICAL_GAP)\n const byId = new Map(positioned.map(node => [node.id, node]))\n const edges: PositionedEdge[] = []\n graph.contains.forEach((edge, index) => {\n const source = byId.get(edge.parent)\n const target = byId.get(edge.child)\n if (source === undefined || target === undefined) return\n edges.push({\n id: `contains:${index}:${edge.parent}:${edge.child}`,\n kind: 'contains',\n source: edge.parent,\n target: edge.child,\n path: containmentPath(source, target),\n })\n })\n graph.dependsOn.forEach((edge, index) => {\n const source = byId.get(edge.source)\n const target = byId.get(edge.target)\n if (source === undefined || target === undefined) return\n edges.push({\n id: `depends:${index}:${edge.source}:${edge.target}`,\n kind: 'dependsOn',\n source: edge.source,\n target: edge.target,\n // \"source depends on target\" means target runs first, so the edge is\n // drawn target -> source (dependency arrow points at the dependent).\n path: dependencyPath(target, source, index),\n })\n })\n return { width, height, nodes: positioned, edges }\n}\n\nfunction containmentPath(source: PositionedGoal, target: PositionedGoal): string {\n const startX = source.x + source.width / 2\n const startY = source.y + source.height\n const endX = target.x + target.width / 2\n const endY = target.y\n const middleY = startY + (endY - startY) / 2\n return `M ${startX} ${startY} C ${startX} ${middleY}, ${endX} ${middleY}, ${endX} ${endY}`\n}\n\nfunction dependencyPath(source: PositionedGoal, target: PositionedGoal, index: number): string {\n const sourceCenterX = source.x + source.width / 2\n const targetCenterX = target.x + target.width / 2\n const rightward = targetCenterX >= sourceCenterX\n const startX = rightward ? source.x + source.width : source.x\n const endX = rightward ? target.x : target.x + target.width\n const startY = source.y + source.height / 2\n const endY = target.y + target.height / 2\n const bend = (rightward ? 1 : -1) * (54 + (index % 3) * 12)\n return `M ${startX} ${startY} C ${startX + bend} ${startY}, ${endX - bend} ${endY}, ${endX} ${endY}`\n}\n","/** Restricted, non-interpreted Boolean expressions for DoG completion rules. */\n\nimport type { AllExpr, AnyExpr, AtLeastExpr, BoolExpr, NotExpr, RefExpr } from './model.ts'\n\nexport type TruthValue = true | false | 'unknown'\n\nexport interface ExpressionLimits {\n readonly maxNodes: number\n readonly maxDepth: number\n}\n\nexport interface ParsedExpression {\n readonly expression?: BoolExpr\n readonly errors: readonly string[]\n}\n\n/**\n * Parse and type-check the only expression language accepted by DoG.\n * @param value - untrusted JSON value from a graph draft.\n * @param allowedRefs - child IDs that the enclosing composite may reference.\n * @param limits - expression size limits.\n * @returns a typed AST or validation errors; never evaluates source text.\n */\nexport function parseBoolExpr(\n value: unknown,\n allowedRefs: ReadonlySet<string>,\n limits: ExpressionLimits,\n): ParsedExpression {\n const errors: string[] = []\n let nodeCount = 0\n\n function visit(candidate: unknown, depth: number, path: string): BoolExpr | undefined {\n if (depth > limits.maxDepth) {\n errors.push(`${path}: expression depth exceeds ${limits.maxDepth}`)\n return undefined\n }\n if (!isRecord(candidate)) {\n errors.push(`${path}: expression must be an object`)\n return undefined\n }\n nodeCount += 1\n if (nodeCount > limits.maxNodes) {\n errors.push(`expression exceeds ${limits.maxNodes} nodes`)\n return undefined\n }\n const keys = Object.keys(candidate)\n if (!Object.prototype.hasOwnProperty.call(candidate, 'op') || keys.length === 0) {\n errors.push(`${path}: expression requires exactly one operator`)\n return undefined\n }\n const op = candidate.op\n if (typeof op !== 'string') {\n errors.push(`${path}.op: operator must be a string`)\n return undefined\n }\n if (op === 'ref') return parseRef(candidate, allowedRefs, errors, path)\n if (op === 'not') return parseNot(candidate, depth, path, visit, errors)\n if (op === 'all' || op === 'any') return parseNary(candidate, op, depth, path, visit, errors)\n if (op === 'atLeast') return parseThreshold(candidate, depth, path, visit, errors)\n errors.push(`${path}.op: unsupported operator ${JSON.stringify(op)}`)\n return undefined\n }\n\n const expression = visit(value, 0, '$')\n return errors.length === 0 && expression !== undefined ? { expression, errors } : { errors }\n}\n\n/**\n * Evaluate a typed AST against settled child truth values.\n * @param expression - validated DoG Boolean AST.\n * @param values - child success values; missing values are unresolved.\n * @returns three-valued result so pending work cannot be mistaken for failure.\n */\nexport function evaluateBoolExpr(expression: BoolExpr, values: ReadonlyMap<string, boolean | undefined>): TruthValue {\n switch (expression.op) {\n case 'ref': {\n const value = values.get(expression.id)\n return value === undefined ? 'unknown' : value\n }\n case 'not': {\n const value = evaluateBoolExpr(expression.item, values)\n return value === 'unknown' ? 'unknown' : !value\n }\n case 'all':\n return evaluateAll(expression, values)\n case 'any':\n return evaluateAny(expression, values)\n case 'atLeast':\n return evaluateAtLeast(expression, values)\n }\n}\n\nfunction parseRef(\n candidate: Record<string, unknown>,\n allowedRefs: ReadonlySet<string>,\n errors: string[],\n path: string,\n): RefExpr | undefined {\n if (Object.keys(candidate).length !== 2 || typeof candidate.id !== 'string' || candidate.id.length === 0) {\n errors.push(`${path}: ref requires only a non-empty string id`)\n return undefined\n }\n if (!allowedRefs.has(candidate.id)) {\n errors.push(`${path}.id: ${JSON.stringify(candidate.id)} is not a containment child`)\n return undefined\n }\n return { op: 'ref', id: candidate.id }\n}\n\nfunction parseNot(\n candidate: Record<string, unknown>,\n depth: number,\n path: string,\n visit: (value: unknown, depth: number, path: string) => BoolExpr | undefined,\n errors: string[],\n): NotExpr | undefined {\n if (Object.keys(candidate).length !== 2 || !Object.prototype.hasOwnProperty.call(candidate, 'item')) {\n errors.push(`${path}: not requires only item`)\n return undefined\n }\n const item = visit(candidate.item, depth + 1, `${path}.item`)\n return item === undefined ? undefined : { op: 'not', item }\n}\n\nfunction parseNary(\n candidate: Record<string, unknown>,\n op: 'all' | 'any',\n depth: number,\n path: string,\n visit: (value: unknown, depth: number, path: string) => BoolExpr | undefined,\n errors: string[],\n): AllExpr | AnyExpr | undefined {\n if (Object.keys(candidate).length !== 2 || !Array.isArray(candidate.items) || candidate.items.length === 0) {\n errors.push(`${path}: ${op} requires only a non-empty items array`)\n return undefined\n }\n const items: BoolExpr[] = []\n for (const [index, itemValue] of candidate.items.entries()) {\n const item = visit(itemValue, depth + 1, `${path}.items[${index}]`)\n if (item !== undefined) items.push(item)\n }\n if (items.length !== candidate.items.length) return undefined\n return op === 'all' ? { op, items } : { op, items }\n}\n\nfunction parseThreshold(\n candidate: Record<string, unknown>,\n depth: number,\n path: string,\n visit: (value: unknown, depth: number, path: string) => BoolExpr | undefined,\n errors: string[],\n): AtLeastExpr | undefined {\n if (\n Object.keys(candidate).length !== 3\n || !Array.isArray(candidate.items)\n || candidate.items.length === 0\n || typeof candidate.count !== 'number'\n || !Number.isInteger(candidate.count)\n || candidate.count < 1\n || candidate.count > candidate.items.length\n ) {\n errors.push(`${path}: atLeast requires count and a non-empty items array with 1 <= count <= items.length`)\n return undefined\n }\n const items: BoolExpr[] = []\n for (const [index, itemValue] of candidate.items.entries()) {\n const item = visit(itemValue, depth + 1, `${path}.items[${index}]`)\n if (item !== undefined) items.push(item)\n }\n if (items.length !== candidate.items.length) return undefined\n return { op: 'atLeast', count: candidate.count, items }\n}\n\nfunction evaluateAll(expression: AllExpr, values: ReadonlyMap<string, boolean | undefined>): TruthValue {\n let unknown = false\n for (const item of expression.items) {\n const result = evaluateBoolExpr(item, values)\n if (result === false) return false\n if (result === 'unknown') unknown = true\n }\n return unknown ? 'unknown' : true\n}\n\nfunction evaluateAny(expression: AnyExpr, values: ReadonlyMap<string, boolean | undefined>): TruthValue {\n let unknown = false\n for (const item of expression.items) {\n const result = evaluateBoolExpr(item, values)\n if (result === true) return true\n if (result === 'unknown') unknown = true\n }\n return unknown ? 'unknown' : false\n}\n\nfunction evaluateAtLeast(expression: AtLeastExpr, values: ReadonlyMap<string, boolean | undefined>): TruthValue {\n let passed = 0\n let unknown = 0\n for (const item of expression.items) {\n const result = evaluateBoolExpr(item, values)\n if (result === true) passed += 1\n if (result === 'unknown') unknown += 1\n }\n if (passed >= expression.count) return true\n return passed + unknown >= expression.count ? 'unknown' : false\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n","/** Core JSON-compatible types for the DoG v0.9 protocol. */\n\nexport const DOG_SCHEMA_VERSION = '0.9' as const\n\nexport type JsonPrimitive = string | number | boolean | null\nexport type JsonValue = JsonPrimitive | JsonValue[] | { [key: string]: JsonValue }\n\nexport type GoalId = string\nexport type ConstraintKind = 'hard' | 'soft'\nexport type GoalKind = 'leaf' | 'composite'\nexport type FailurePolicy = 'fatal' | 'tolerable' | 'degrade'\nexport type GoalState =\n | 'pending'\n | 'running'\n | 'success'\n | 'failure'\n | 'blocked'\n | 'needs_human'\n | 'cancelled'\n | 'invalidated'\n | 'partial'\n | 'inherited'\n\nexport interface RefExpr {\n readonly op: 'ref'\n readonly id: GoalId\n}\n\nexport interface AllExpr {\n readonly op: 'all'\n readonly items: readonly BoolExpr[]\n}\n\nexport interface AnyExpr {\n readonly op: 'any'\n readonly items: readonly BoolExpr[]\n}\n\nexport interface NotExpr {\n readonly op: 'not'\n readonly item: BoolExpr\n}\n\nexport interface AtLeastExpr {\n readonly op: 'atLeast'\n readonly count: number\n readonly items: readonly BoolExpr[]\n}\n\nexport type BoolExpr = RefExpr | AllExpr | AnyExpr | NotExpr | AtLeastExpr\n\n/** One of exactly two judgment kernels: a script, or a natural-language instruction. */\nexport type VerifierShape =\n | { readonly mode: 'programmatic'; readonly script: string }\n | { readonly mode: 'agentic'; readonly instruction: string }\n\nexport interface GoalNodeInput {\n readonly kind: GoalKind\n readonly title: string\n readonly constraint: ConstraintKind\n /** Single file path or a directory/collection (engine packs it into .tar). */\n readonly target: string\n /** Leaf: required. Composite: optional whole-object assertion (runs after subtree settles). */\n readonly verifier?: VerifierShape\n /** Composite only: boolean combination of children. */\n readonly completion?: BoolExpr\n}\n\nexport interface ContainsEdge {\n readonly parent: GoalId\n readonly child: GoalId\n readonly required: boolean\n readonly failure: FailurePolicy\n readonly degradeTo?: GoalId\n}\n\nexport interface DependencyEdge {\n readonly source: GoalId\n readonly target: GoalId\n readonly data?: readonly string[]\n}\n\nexport interface DogGraphInput {\n readonly schemaVersion: typeof DOG_SCHEMA_VERSION\n readonly id: string\n readonly root: GoalId\n readonly nodes: Record<GoalId, GoalNodeInput>\n readonly contains: readonly ContainsEdge[]\n readonly dependsOn: readonly DependencyEdge[]\n}\n\nexport interface DogConfig {\n readonly storageDirectory: string\n /** Sandbox/root for captured inputs: verifiers' objects come from this tree. */\n readonly workspaceRoot: string\n /** Host-registered script library directory (programmatic kernels). */\n readonly scriptsDirectory: string\n readonly maxGraphNodes: number\n readonly maxExpressionNodes: number\n readonly maxExpressionDepth: number\n readonly maxSandboxBytes: number\n readonly allowPartialRoot: boolean\n readonly maxConcurrentVerifications: number\n readonly revalidateThreshold: number\n readonly gmDigestAlgo: string\n}\n\nexport interface GraphLimits {\n readonly maxGraphNodes: number\n readonly maxExpressionNodes: number\n readonly maxExpressionDepth: number\n}\n\n/** One captured object (file, or packed .tar for a collection). */\nexport interface CapturedInput {\n readonly path: string\n readonly digest: string\n readonly exists: boolean\n readonly byteLength: number\n readonly sha256: string\n /** True when the capture is a .tar of a directory/collection. */\n readonly packed?: boolean\n}\n\n/** Deterministic or agentic: judgment identity double-anchors incremental reuse. */\nexport type JudgmentIdentity =\n | { readonly mode: 'programmatic'; readonly script: string; readonly scriptDigest: string }\n | { readonly mode: 'agentic'; readonly instructionHash: string }\n\nexport interface AcceptancePlan {\n readonly goalId: GoalId\n /** Which kernel judges this goal. */\n readonly verifier: VerifierShape\n /** Identity of the judgment source; part of the inheritance anchor. */\n readonly judgment: JudgmentIdentity\n readonly target: string\n /** Captured object metadata (absent when target is missing/empty). */\n readonly input?: CapturedInput\n readonly gmDigest?: string\n}\n\nexport interface VerificationRecord {\n readonly schemaVersion: '0.1'\n readonly runId: string\n readonly graphId: string\n readonly graphDigest: string\n readonly goalId: GoalId\n readonly judgment: JudgmentIdentity\n readonly gmDigest?: string\n readonly passed: boolean | null\n readonly evidence?: JsonValue\n readonly at: string\n}\n\nexport interface GoalRuntimeVerifier {\n readonly mode: 'programmatic' | 'agentic'\n}\n\nexport interface GoalRuntimeError {\n readonly kind: 'acceptance_plan_missing' | 'completion_expression_missing' | 'verification_error' | 'agentic_unavailable'\n readonly stage: 'scheduling' | 'verification' | 'composition'\n readonly message: string\n}\n\nexport type GoalRuntimePhase =\n | 'goal_started'\n | 'dependency_blocked'\n | 'grounding_extracted'\n | 'workspace_allocated'\n | 'verifier_started'\n | 'verifier_passed'\n | 'verifier_failed'\n | 'verifier_inconclusive'\n | 'composite_evaluated'\n | 'result_inherited'\n | 'verifier_released'\n | 'verifier_bind_failed'\n | 'structured_error'\n | 'goal_settled'\n | 'run_warning'\n\nexport interface GoalRuntimeEvent {\n readonly schemaVersion: '0.1'\n readonly runId: string\n readonly goalId: GoalId\n readonly phase: GoalRuntimePhase\n readonly state?: GoalState\n readonly at: string\n readonly reason?: string\n readonly verifier?: GoalRuntimeVerifier\n readonly gmDigest?: string\n readonly attempt?: number\n readonly durationMs?: number\n}\n\nexport type GoalAgentRole = 'orchestrator' | 'verifier' | 'reviewer'\n\nexport interface GoalAgentSessionRef {\n readonly sessionId: string\n readonly parentSessionId?: string\n readonly role: GoalAgentRole\n readonly boundAt: string\n}\n\nexport interface RunInvocationContext {\n readonly callId: string\n readonly agentSessionId?: string\n readonly parentSessionId?: string\n readonly invokedAt: string\n}\n\nexport interface GoalResult {\n readonly state: GoalState\n readonly reason?: string\n readonly verification?: VerificationRecord\n readonly inheritedFrom?: string\n readonly agentSessions?: readonly GoalAgentSessionRef[]\n}\n\nexport type RootTerminalState =\n | 'success'\n | 'partial_success'\n | 'failure'\n | 'infeasible'\n | 'needs_replan'\n | 'cancelled'\n\nexport interface CompiledGraph {\n readonly input: DogGraphInput\n readonly graphDigest: string\n readonly acceptancePlans: Readonly<Record<GoalId, AcceptancePlan>>\n}\n\nexport interface DogRun {\n readonly runId: string\n readonly graphId: string\n readonly graphDigest: string\n /** Calling session's cwd; verifier workspaces are allocated under it. */\n readonly workspaceBaseDir?: string\n readonly state: 'running' | 'completed' | 'cancelled' | 'failed'\n readonly rootState?: RootTerminalState\n readonly invocation?: RunInvocationContext\n readonly runtimeWarning?: string\n readonly gmDigests: Readonly<Record<GoalId, string>>\n readonly goals: Readonly<Record<GoalId, GoalResult>>\n readonly createdAt: string\n readonly updatedAt: string\n}\n\nexport interface GoalRuntimeTrace {\n readonly schemaVersion: '0.1'\n readonly runId: string\n readonly graphId: string\n readonly graphDigest: string\n readonly runState: DogRun['state']\n readonly rootState?: RootTerminalState\n readonly goalId: GoalId\n readonly result: GoalResult\n readonly invocation?: RunInvocationContext\n readonly runtimeWarning?: string\n readonly events: readonly GoalRuntimeEvent[]\n readonly truncated: boolean\n}\n\nexport interface GraphValidationReport {\n readonly valid: boolean\n readonly errors: readonly string[]\n readonly warnings: readonly string[]\n}\n\nexport interface CiGoalReport {\n readonly goalId: GoalId\n readonly state: GoalState\n readonly verifier?: GoalRuntimeVerifier\n readonly evidence?: readonly Record<string, JsonValue>[]\n readonly defect?: string\n readonly settledAt?: string\n}\n\nexport interface CiReport {\n readonly runId: string\n readonly graphId: string\n readonly graphDigest?: string\n readonly rootState: RootTerminalState | 'running' | 'cancelled'\n readonly goals: readonly CiGoalReport[]\n readonly revalidated?: readonly GoalId[]\n readonly inherited?: readonly { goalId: GoalId; fromRunId: string; state: 'inherited' }[]\n readonly warning?: string\n readonly generatedAt: string\n}\n\nexport function isJsonValue(value: unknown): value is JsonValue {\n if (value === null || typeof value === 'string' || typeof value === 'boolean') return true\n if (typeof value === 'number') return Number.isFinite(value)\n if (Array.isArray(value)) return value.every(isJsonValue)\n if (typeof value !== 'object') return false\n return Object.values(value).every(isJsonValue)\n}\n","/** Graph parser, structural validator, and cycle checker for DoG v0.2. */\n\nimport { parseBoolExpr } from './logic.ts'\nimport type {\n ContainsEdge,\n DependencyEdge,\n DogGraphInput,\n GoalId,\n GoalNodeInput,\n GraphLimits,\n} from './model.ts'\nimport { DOG_SCHEMA_VERSION } from './model.ts'\n\nconst ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u\n\n/** Structured validation failure at the model-to-core boundary. */\nexport class DogValidationError extends Error {\n readonly errors: readonly string[]\n\n constructor(errors: readonly string[]) {\n super(`invalid DoG graph: ${errors.join('; ')}`)\n this.name = 'DogValidationError'\n this.errors = errors\n }\n}\n\n/** Parse an untrusted graph value into a normalized, acyclic DoG graph. */\nexport function parseGraph(value: unknown, limits: GraphLimits): DogGraphInput {\n const errors: string[] = []\n const root = asRecord(value, '$', errors)\n if (root === undefined) throw new DogValidationError(errors)\n checkExactKeys(root, ['schemaVersion', 'id', 'root', 'nodes', 'contains', 'dependsOn'], '$', errors)\n if (root.schemaVersion !== DOG_SCHEMA_VERSION) errors.push(`$.schemaVersion: expected ${DOG_SCHEMA_VERSION}`)\n const graphId = parseId(root.id, '$.id', errors)\n const rootId = parseId(root.root, '$.root', errors)\n const nodes = parseNodes(root.nodes, limits, errors)\n const contains = parseContains(root.contains, errors)\n const dependsOn = parseDependencies(root.dependsOn, errors)\n if (graphId === undefined || rootId === undefined || nodes === undefined || contains === undefined || dependsOn === undefined) {\n throw new DogValidationError(errors)\n }\n validateGraphReferences(rootId, nodes, contains, dependsOn, limits, errors)\n validateAcyclic(nodes, contains, dependsOn, errors)\n if (errors.length > 0) throw new DogValidationError(errors)\n return {\n schemaVersion: DOG_SCHEMA_VERSION,\n id: graphId,\n root: rootId,\n nodes,\n contains,\n dependsOn,\n }\n}\n\nfunction parseNodes(\n value: unknown,\n limits: GraphLimits,\n errors: string[],\n): Record<GoalId, GoalNodeInput> | undefined {\n const record = asRecord(value, '$.nodes', errors)\n if (record === undefined) return undefined\n const ids = Object.keys(record)\n if (ids.length === 0) errors.push('$.nodes: must not be empty')\n if (ids.length > limits.maxGraphNodes) errors.push(`$.nodes: exceeds ${limits.maxGraphNodes} nodes`)\n const nodes: Record<string, GoalNodeInput> = {}\n for (const id of ids) {\n if (!ID_PATTERN.test(id)) errors.push(`$.nodes.${id}: invalid goal ID`)\n const node = asRecord(record[id], `$.nodes.${id}`, errors)\n if (node === undefined) continue\n checkExactKeys(node, ['kind', 'title', 'constraint', 'target', 'completion', 'verifier'], `$.nodes.${id}`, errors)\n const kind = parseEnum(node.kind, ['leaf', 'composite'] as const, `$.nodes.${id}.kind`, errors)\n const title = parseNonEmptyString(node.title, `$.nodes.${id}.title`, errors)\n const constraint = parseEnum(node.constraint, ['hard', 'soft'] as const, `$.nodes.${id}.constraint`, errors)\n const target = parseNonEmptyString(node.target, `$.nodes.${id}.target`, errors)\n const verifier = parseVerifier(node.verifier, `$.nodes.${id}.verifier`, errors)\n if (kind === undefined || title === undefined || constraint === undefined || target === undefined) continue\n if (kind === 'leaf' && verifier === undefined) errors.push(`$.nodes.${id}: leaf requires verifier`)\n if (kind === 'composite' && verifier !== undefined) {\n // Optional whole-object assertion: allowed and runs after the subtree settles.\n }\n if (kind === 'composite' && node.completion === undefined) errors.push(`$.nodes.${id}: composite requires completion`)\n if (kind === 'leaf' && node.completion !== undefined) errors.push(`$.nodes.${id}: leaf cannot declare completion`)\n const nodeValue = {\n kind,\n title,\n constraint,\n target,\n ...(verifier === undefined ? {} : { verifier }),\n ...(kind === 'composite' && node.completion !== undefined ? { completion: node.completion } : {}),\n } as unknown as GoalNodeInput\n nodes[id] = nodeValue\n }\n return nodes\n}\n\nfunction parseContains(value: unknown, errors: string[]): ContainsEdge[] | undefined {\n if (!Array.isArray(value)) {\n errors.push('$.contains: must be an array')\n return undefined\n }\n const edges: ContainsEdge[] = []\n for (const [index, candidate] of value.entries()) {\n const path = `$.contains[${index}]`\n const record = asRecord(candidate, path, errors)\n if (record === undefined) continue\n checkExactKeys(record, ['parent', 'child', 'required', 'failure', 'degradeTo'], path, errors)\n const parent = parseId(record.parent, `${path}.parent`, errors)\n const child = parseId(record.child, `${path}.child`, errors)\n const required = parseBoolean(record.required, `${path}.required`, errors)\n const failure = parseEnum(record.failure, ['fatal', 'tolerable', 'degrade'] as const, `${path}.failure`, errors)\n const degradeTo = record.degradeTo === undefined ? undefined : parseId(record.degradeTo, `${path}.degradeTo`, errors)\n if (failure !== 'degrade' && degradeTo !== undefined) errors.push(`${path}.degradeTo: only valid with failure=degrade`)\n if (failure === 'degrade' && degradeTo === undefined) errors.push(`${path}: failure=degrade requires degradeTo`)\n if (parent !== undefined && child !== undefined && required !== undefined && failure !== undefined) {\n edges.push({ parent, child, required, failure, ...(degradeTo === undefined ? {} : { degradeTo }) })\n }\n }\n return edges\n}\n\nfunction parseDependencies(value: unknown, errors: string[]): DependencyEdge[] | undefined {\n if (!Array.isArray(value)) {\n errors.push('$.dependsOn: must be an array')\n return undefined\n }\n const edges: DependencyEdge[] = []\n for (const [index, candidate] of value.entries()) {\n const path = `$.dependsOn[${index}]`\n const record = asRecord(candidate, path, errors)\n if (record === undefined) continue\n checkExactKeys(record, ['source', 'target', 'data'], path, errors)\n const source = parseId(record.source, `${path}.source`, errors)\n const target = parseId(record.target, `${path}.target`, errors)\n const data = parseStringArray(record.data, `${path}.data`, errors)\n if (source !== undefined && target !== undefined) edges.push({ source, target, ...(data === undefined ? {} : { data }) })\n }\n return edges\n}\n\nfunction parseVerifier(value: unknown, path: string, errors: string[]): GoalNodeInput['verifier'] | undefined {\n if (value === undefined) return undefined\n const record = asRecord(value, path, errors)\n if (record === undefined) return undefined\n const mode = parseEnum(record.mode, ['programmatic', 'agentic'] as const, `${path}.mode`, errors)\n if (mode === undefined) return undefined\n if (mode === 'programmatic') {\n checkExactKeys(record, ['mode', 'script'], path, errors)\n const script = parseNonEmptyString(record.script, `${path}.script`, errors)\n return script === undefined ? undefined : { mode: 'programmatic', script }\n }\n checkExactKeys(record, ['mode', 'instruction'], path, errors)\n const instruction = parseNonEmptyString(record.instruction, `${path}.instruction`, errors)\n return instruction === undefined ? undefined : { mode: 'agentic', instruction }\n}\n\nfunction validateGraphReferences(\n root: GoalId,\n nodes: Record<GoalId, GoalNodeInput>,\n contains: readonly ContainsEdge[],\n dependsOn: readonly DependencyEdge[],\n limits: GraphLimits,\n errors: string[],\n): void {\n if (!Object.prototype.hasOwnProperty.call(nodes, root)) errors.push(`$.root: unknown node ${root}`)\n const rootNode = nodes[root]\n if (rootNode !== undefined && rootNode.constraint !== 'hard') errors.push('$.root: root goal must be a hard constraint')\n const children = new Map<string, string[]>()\n const edgeKeys = new Set<string>()\n for (const edge of contains) {\n const key = `${edge.parent}\\u0000${edge.child}`\n if (edgeKeys.has(key)) errors.push(`$.contains: duplicate edge ${edge.parent}->${edge.child}`)\n edgeKeys.add(key)\n if (!Object.prototype.hasOwnProperty.call(nodes, edge.parent)) errors.push(`$.contains: unknown parent ${edge.parent}`)\n if (!Object.prototype.hasOwnProperty.call(nodes, edge.child)) errors.push(`$.contains: unknown child ${edge.child}`)\n const parent = nodes[edge.parent]\n if (parent !== undefined && parent.kind !== 'composite') errors.push(`$.contains: ${edge.parent} is not composite`)\n const siblings = children.get(edge.parent) ?? []\n siblings.push(edge.child)\n children.set(edge.parent, siblings)\n }\n for (const edge of contains) {\n if (edge.degradeTo === edge.child) errors.push(`$.contains: degradeTo cannot equal child ${edge.child}`)\n else if (edge.degradeTo !== undefined && !(children.get(edge.parent) ?? []).includes(edge.degradeTo)) {\n errors.push(`$.contains: degradeTo ${edge.degradeTo} is not a child of ${edge.parent}`)\n }\n }\n const dependencyKeys = new Set<string>()\n for (const edge of dependsOn) {\n const key = `${edge.source}\\u0000${edge.target}`\n if (dependencyKeys.has(key)) errors.push(`$.dependsOn: duplicate edge ${edge.source}->${edge.target}`)\n dependencyKeys.add(key)\n if (edge.source === edge.target) errors.push(`$.dependsOn: self-dependency ${edge.source}`)\n if (!Object.prototype.hasOwnProperty.call(nodes, edge.source)) errors.push(`$.dependsOn: unknown source ${edge.source}`)\n if (!Object.prototype.hasOwnProperty.call(nodes, edge.target)) errors.push(`$.dependsOn: unknown target ${edge.target}`)\n }\n for (const [parent, node] of Object.entries(nodes)) {\n if (node.kind !== 'composite') continue\n const childIds = children.get(parent) ?? []\n if (childIds.length === 0) errors.push(`$.nodes.${parent}: composite requires at least one child`)\n if (node.completion === undefined) {\n errors.push(`$.nodes.${parent}.completion: missing completion expression`)\n continue\n }\n const parsed = parseBoolExpr(node.completion, new Set(childIds), {\n maxNodes: limits.maxExpressionNodes,\n maxDepth: limits.maxExpressionDepth,\n })\n if (parsed.errors.length > 0) errors.push(...parsed.errors.map(error => `$.nodes.${parent}.completion${error.slice(1)}`))\n else if (parsed.expression !== undefined) nodes[parent] = { ...node, completion: parsed.expression }\n }\n const reachable = new Set<string>()\n const queue = [root]\n while (queue.length > 0) {\n const current = queue.shift()\n if (current === undefined || reachable.has(current)) continue\n reachable.add(current)\n for (const child of children.get(current) ?? []) queue.push(child)\n }\n for (const id of Object.keys(nodes)) if (!reachable.has(id)) errors.push(`$.nodes.${id}: unreachable from root through containment`)\n}\n\nfunction validateAcyclic(\n nodes: Record<GoalId, GoalNodeInput>,\n contains: readonly ContainsEdge[],\n dependsOn: readonly DependencyEdge[],\n errors: string[],\n): void {\n const outgoing = new Map<string, string[]>()\n for (const id of Object.keys(nodes)) outgoing.set(id, [])\n for (const edge of contains) outgoing.get(edge.parent)?.push(edge.child)\n for (const edge of dependsOn) outgoing.get(edge.source)?.push(edge.target)\n const visiting = new Set<string>()\n const visited = new Set<string>()\n function visit(id: string, path: string[]): void {\n if (visiting.has(id)) {\n errors.push(`graph contains a cycle: ${[...path, id].join(' -> ')}`)\n return\n }\n if (visited.has(id)) return\n visiting.add(id)\n for (const target of outgoing.get(id) ?? []) visit(target, [...path, id])\n visiting.delete(id)\n visited.add(id)\n }\n for (const id of Object.keys(nodes)) visit(id, [])\n}\n\nfunction asRecord(value: unknown, path: string, errors: string[]): Record<string, unknown> | undefined {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n errors.push(`${path}: must be an object`)\n return undefined\n }\n return value as Record<string, unknown>\n}\n\nfunction checkExactKeys(value: Record<string, unknown>, allowed: readonly string[], path: string, errors: string[]): void {\n const allowedSet = new Set(allowed)\n for (const key of Object.keys(value)) if (!allowedSet.has(key)) errors.push(`${path}: unknown field ${key}`)\n}\n\nfunction parseId(value: unknown, path: string, errors: string[]): string | undefined {\n if (typeof value !== 'string' || !ID_PATTERN.test(value)) {\n errors.push(`${path}: must be an ASCII ID matching ${ID_PATTERN.source}`)\n return undefined\n }\n return value\n}\n\nfunction parseNonEmptyString(value: unknown, path: string, errors: string[]): string | undefined {\n if (typeof value !== 'string' || value.trim().length === 0) {\n errors.push(`${path}: must be a non-empty string`)\n return undefined\n }\n return value\n}\n\nfunction parseBoolean(value: unknown, path: string, errors: string[]): boolean | undefined {\n if (typeof value !== 'boolean') {\n errors.push(`${path}: must be boolean`)\n return undefined\n }\n return value\n}\n\nfunction parseEnum<T extends string>(value: unknown, allowed: readonly T[], path: string, errors: string[]): T | undefined {\n if (typeof value !== 'string' || !allowed.includes(value as T)) {\n errors.push(`${path}: expected one of ${allowed.join(', ')}`)\n return undefined\n }\n return value as T\n}\n\nfunction parseStringArray(value: unknown, path: string, errors: string[]): string[] | undefined {\n if (value === undefined) return undefined\n if (!Array.isArray(value) || value.some(item => typeof item !== 'string')) {\n errors.push(`${path}: must be an array of strings`)\n return undefined\n }\n return [...value]\n}\n","/** Runtime validation for trusted debugger RPC responses. */\n\nimport { parseGraph } from '../graph.ts'\nimport { isJsonValue } from '../model.ts'\nimport type {\n AcceptancePlan,\n DogRun,\n GoalAgentRole,\n GoalAgentSessionRef,\n GoalResult,\n GoalRuntimeEvent,\n GoalRuntimeTrace,\n GoalState,\n JsonValue,\n RootTerminalState,\n RunInvocationContext,\n CapturedInput,\n VerificationRecord,\n} from '../model.ts'\nimport type { DogDebugGraphRevision, DogDebugSnapshot } from '../debug-contract.ts'\n\nconst DIGEST = /^[a-f0-9]{64}$/u\nconst GOAL_STATES = new Set<GoalState>([\n 'pending', 'running', 'success', 'failure', 'blocked', 'needs_human',\n 'cancelled', 'invalidated', 'partial', 'inherited',\n])\nconst ROOT_STATES = new Set<RootTerminalState>([\n 'success', 'partial_success', 'failure', 'infeasible', 'needs_replan', 'cancelled',\n])\nconst GOAL_AGENT_ROLES = new Set<GoalAgentRole>(['orchestrator', 'verifier', 'reviewer'])\nconst RUNTIME_PHASES = new Set<GoalRuntimeEvent['phase']>([\n 'goal_started', 'dependency_blocked', 'grounding_extracted', 'workspace_allocated',\n 'verifier_started', 'verifier_released', 'verifier_passed', 'verifier_failed', 'verifier_inconclusive',\n 'composite_evaluated', 'result_inherited', 'structured_error', 'goal_settled', 'run_warning',\n])\n\n/** Parse JSON from the debugger endpoint before it reaches render code. */\nexport function parseDogDebugSnapshot(value: unknown): DogDebugSnapshot {\n const root = requireRecord(value, '$')\n if (root.schemaVersion !== '0.1') throw new Error('debug snapshot schemaVersion must be 0.1')\n const graphs = requireArray(root.graphs, '$.graphs').map((item, index) => parseRevision(item, `$.graphs[${index}]`))\n return {\n schemaVersion: '0.1',\n generatedAt: requireString(root.generatedAt, '$.generatedAt'),\n graphs,\n }\n}\n\n/** Parse one lazy per-goal runtime trace before it reaches render code. */\nexport function parseGoalRuntimeTrace(value: unknown): GoalRuntimeTrace {\n const root = requireRecord(value, '$')\n if (root.schemaVersion !== '0.1') throw new Error('runtime trace schemaVersion must be 0.1')\n const runId = requireBoundedString(root.runId, '$.runId')\n const graphDigest = requireDigest(root.graphDigest, '$.graphDigest')\n const goalId = requireBoundedString(root.goalId, '$.goalId')\n const runState = parseRunState(root.runState, '$.runState')\n const result = parseGoalResult(root.result, '$.result')\n const rootState = root.rootState === undefined ? undefined : parseRootState(root.rootState, '$.rootState')\n const invocation = root.invocation === undefined ? undefined : parseInvocation(root.invocation, '$.invocation')\n const events = requireArray(root.events, '$.events').map((item, index) => (\n parseRuntimeEvent(item, `$.events[${index}]`, { runId, goalId })\n ))\n if (typeof root.truncated !== 'boolean') throw new Error('$.truncated must be a boolean')\n const runtimeWarning = root.runtimeWarning === undefined\n ? undefined\n : requireBoundedString(root.runtimeWarning, '$.runtimeWarning')\n return {\n schemaVersion: '0.1',\n runId,\n graphId: requireBoundedString(root.graphId, '$.graphId'),\n graphDigest,\n runState,\n ...(rootState === undefined ? {} : { rootState }),\n goalId,\n result,\n ...(invocation === undefined ? {} : { invocation }),\n ...(runtimeWarning === undefined ? {} : { runtimeWarning }),\n events,\n truncated: root.truncated,\n }\n}\n\nfunction parseRuntimeEvent(\n value: unknown,\n path: string,\n expected: { readonly runId: string; readonly goalId: string },\n): GoalRuntimeEvent {\n const root = requireRecord(value, path)\n if (root.schemaVersion !== '0.1') throw new Error(`${path}.schemaVersion must be 0.1`)\n const runId = requireBoundedString(root.runId, `${path}.runId`)\n const goalId = requireBoundedString(root.goalId, `${path}.goalId`)\n if (runId !== expected.runId || goalId !== expected.goalId) {\n throw new Error(`${path} does not belong to the requested goal trace`)\n }\n const phase = requireString(root.phase, `${path}.phase`)\n if (!RUNTIME_PHASES.has(phase as GoalRuntimeEvent['phase'])) throw new Error(`${path}.phase is invalid`)\n const state = root.state === undefined ? undefined : parseGoalState(root.state, `${path}.state`)\n const reason = root.reason === undefined ? undefined : requireBoundedString(root.reason, `${path}.reason`)\n const durationMs = root.durationMs === undefined\n ? undefined\n : requireNonNegativeInteger(root.durationMs, `${path}.durationMs`)\n const attempt = root.attempt === undefined\n ? undefined\n : requireNonNegativeInteger(root.attempt, `${path}.attempt`)\n const gmDigest = root.gmDigest === undefined ? undefined : requireString(root.gmDigest, `${path}.gmDigest`)\n const verifierRecord = root.verifier === undefined ? undefined : requireRecord(root.verifier, `${path}.verifier`)\n const verifier = verifierRecord === undefined ? undefined : {\n mode: requireEnumValue(verifierRecord.mode, ['programmatic', 'agentic'], `${path}.verifier.mode`),\n }\n return {\n schemaVersion: '0.1',\n runId,\n goalId,\n phase: phase as GoalRuntimeEvent['phase'],\n at: requireString(root.at, `${path}.at`),\n ...(state === undefined ? {} : { state }),\n ...(reason === undefined ? {} : { reason }),\n ...(verifier === undefined ? {} : { verifier }),\n ...(gmDigest === undefined ? {} : { gmDigest }),\n ...(attempt === undefined ? {} : { attempt }),\n ...(durationMs === undefined ? {} : { durationMs }),\n }\n}\n\nfunction parseRevision(value: unknown, path: string): DogDebugGraphRevision {\n const root = requireRecord(value, path)\n const graphRecord = requireRecord(root.graph, `${path}.graph`)\n const graphDigest = requireDigest(graphRecord.graphDigest, `${path}.graph.graphDigest`)\n const input = parseGraph(graphRecord.input, {\n maxGraphNodes: 4096,\n maxExpressionNodes: 8192,\n maxExpressionDepth: 256,\n })\n const acceptancePlans = parseAcceptancePlans(graphRecord.acceptancePlans, `${path}.graph.acceptancePlans`)\n const runs = requireArray(root.runs, `${path}.runs`).map((item, index) => {\n const run = parseRun(item, `${path}.runs[${index}]`)\n if (run.graphDigest !== graphDigest) throw new Error(`${path}.runs[${index}]: graph digest mismatch`)\n return run\n })\n if (typeof root.current !== 'boolean') throw new Error(`${path}.current must be a boolean`)\n return {\n graph: { input, graphDigest, acceptancePlans },\n current: root.current,\n runs,\n }\n}\n\nfunction parseAcceptancePlans(value: unknown, path: string): Record<string, AcceptancePlan> {\n const root = requireRecord(value, path)\n const result: Record<string, AcceptancePlan> = {}\n for (const [key, item] of Object.entries(root)) {\n const plan = parseAcceptancePlan(item, `${path}.${key}`)\n if (plan.goalId !== key) throw new Error(`${path}.${key}: goalId mismatch`)\n result[key] = plan\n }\n return result\n}\n\nfunction parseAcceptancePlan(value: unknown, path: string): AcceptancePlan {\n const root = requireRecord(value, path)\n const input = root.input === undefined ? undefined : parseCapturedInput(root.input, `${path}.input`)\n const verifier = parseVerifierShape(root.verifier ?? root.v09Verifier, `${path}.verifier`)\n const judgment = parseJudgment(root.judgment, `${path}.judgment`)\n return {\n goalId: requireString(root.goalId, `${path}.goalId`),\n verifier,\n judgment,\n target: requireString(root.target, `${path}.target`),\n ...(input === undefined ? {} : { input }),\n ...(root.gmDigest === undefined ? {} : { gmDigest: requireString(root.gmDigest, `${path}.gmDigest`) }),\n }\n}\n\nfunction parseVerifierShape(value: unknown, path: string): AcceptancePlan['verifier'] {\n const record = requireRecord(value, path)\n const mode = requireString(record.mode, `${path}.mode`)\n if (mode === 'programmatic') {\n return { mode: 'programmatic', script: requireString(record.script, `${path}.script`) }\n }\n if (mode === 'agentic') {\n return { mode: 'agentic', instruction: requireString(record.instruction, `${path}.instruction`) }\n }\n throw new Error(`${path}.mode is invalid`)\n}\n\nfunction parseJudgment(value: unknown, path: string): AcceptancePlan['judgment'] {\n const record = requireRecord(value, path)\n const mode = requireString(record.mode, `${path}.mode`)\n if (mode === 'programmatic') {\n return { mode: 'programmatic', script: requireString(record.script, `${path}.script`), scriptDigest: requireString(record.scriptDigest, `${path}.scriptDigest`) }\n }\n return { mode: 'agentic', instructionHash: requireString(record.instructionHash, `${path}.instructionHash`) }\n}\n\nfunction parseCapturedInput(value: unknown, path: string): CapturedInput {\n const root = requireRecord(value, path)\n const exists = root.exists\n const byteLength = root.byteLength\n if (typeof exists !== 'boolean') throw new Error(`${path}.exists must be a boolean`)\n if (typeof byteLength !== 'number' || !Number.isSafeInteger(byteLength) || byteLength < 0) {\n throw new Error(`${path}.byteLength must be a non-negative safe integer`)\n }\n return {\n path: requireBoundedString(root.path, `${path}.path`),\n digest: requireString(root.digest, `${path}.digest`),\n exists,\n byteLength,\n sha256: requireString(root.sha256, `${path}.sha256`),\n }\n}\n\nfunction parseRun(value: unknown, path: string): DogRun {\n const root = requireRecord(value, path)\n const state = parseRunState(root.state, `${path}.state`)\n const goalsRecord = requireRecord(root.goals, `${path}.goals`)\n const goals: Record<string, GoalResult> = {}\n for (const [id, result] of Object.entries(goalsRecord)) goals[id] = parseGoalResult(result, `${path}.goals.${id}`)\n const rootState = root.rootState === undefined ? undefined : parseRootState(root.rootState, `${path}.rootState`)\n const invocation = root.invocation === undefined ? undefined : parseInvocation(root.invocation, `${path}.invocation`)\n const runtimeWarning = root.runtimeWarning === undefined\n ? undefined\n : requireBoundedString(root.runtimeWarning, `${path}.runtimeWarning`)\n const gmDigestsRecord = root.gmDigests === undefined ? {} : requireRecord(root.gmDigests, `${path}.gmDigests`)\n const gmDigests: Record<string, string> = {}\n for (const [id, digest] of Object.entries(gmDigestsRecord)) gmDigests[id] = requireString(digest, `${path}.gmDigests.${id}`)\n return {\n runId: requireString(root.runId, `${path}.runId`),\n graphId: requireString(root.graphId, `${path}.graphId`),\n graphDigest: requireDigest(root.graphDigest, `${path}.graphDigest`),\n state,\n ...(rootState === undefined ? {} : { rootState }),\n gmDigests,\n goals,\n ...(invocation === undefined ? {} : { invocation }),\n ...(runtimeWarning === undefined ? {} : { runtimeWarning }),\n createdAt: requireString(root.createdAt, `${path}.createdAt`),\n updatedAt: requireString(root.updatedAt, `${path}.updatedAt`),\n }\n}\n\nfunction parseInvocation(value: unknown, path: string): RunInvocationContext {\n const root = requireRecord(value, path)\n const agentSessionId = root.agentSessionId === undefined\n ? undefined\n : requireBoundedString(root.agentSessionId, `${path}.agentSessionId`)\n const parentSessionId = root.parentSessionId === undefined\n ? undefined\n : requireBoundedString(root.parentSessionId, `${path}.parentSessionId`)\n if (parentSessionId !== undefined && agentSessionId === undefined) {\n throw new Error(`${path}.parentSessionId requires agentSessionId`)\n }\n return {\n callId: requireBoundedString(root.callId, `${path}.callId`),\n ...(agentSessionId === undefined ? {} : { agentSessionId }),\n ...(parentSessionId === undefined ? {} : { parentSessionId }),\n invokedAt: requireString(root.invokedAt, `${path}.invokedAt`),\n }\n}\n\nfunction parseGoalResult(value: unknown, path: string): GoalResult {\n const root = requireRecord(value, path)\n const state = parseGoalState(root.state, `${path}.state`)\n const reason = root.reason === undefined ? undefined : requireString(root.reason, `${path}.reason`)\n const verification = root.verification === undefined\n ? undefined\n : parseVerification(root.verification, `${path}.verification`)\n const agentSessions = root.agentSessions === undefined\n ? undefined\n : requireArray(root.agentSessions, `${path}.agentSessions`).map((agent, index) => (\n parseGoalAgentSession(agent, `${path}.agentSessions[${index}]`)\n ))\n const inheritedFrom = root.inheritedFrom === undefined\n ? undefined\n : requireString(root.inheritedFrom, `${path}.inheritedFrom`)\n return {\n state,\n ...(reason === undefined ? {} : { reason }),\n ...(verification === undefined ? {} : { verification }),\n ...(inheritedFrom === undefined ? {} : { inheritedFrom }),\n ...(agentSessions === undefined ? {} : { agentSessions }),\n }\n}\n\nfunction parseGoalAgentSession(value: unknown, path: string): GoalAgentSessionRef {\n const root = requireRecord(value, path)\n const role = requireBoundedString(root.role, `${path}.role`) as GoalAgentRole\n if (!GOAL_AGENT_ROLES.has(role)) throw new Error(`${path}.role is invalid`)\n const parentSessionId = root.parentSessionId === undefined\n ? undefined\n : requireBoundedString(root.parentSessionId, `${path}.parentSessionId`)\n return {\n sessionId: requireBoundedString(root.sessionId, `${path}.sessionId`),\n ...(parentSessionId === undefined ? {} : { parentSessionId }),\n role,\n boundAt: requireBoundedString(root.boundAt, `${path}.boundAt`),\n }\n}\n\nfunction parseVerification(value: unknown, path: string): VerificationRecord {\n const root = requireRecord(value, path)\n if (root.passed !== null && typeof root.passed !== 'boolean') throw new Error(`${path}.passed must be a boolean or null`)\n return {\n schemaVersion: '0.1' as const,\n goalId: requireString(root.goalId, `${path}.goalId`),\n runId: requireString(root.runId, `${path}.runId`),\n graphId: requireString(root.graphId, `${path}.graphId`),\n graphDigest: requireDigest(root.graphDigest, `${path}.graphDigest`),\n judgment: parseJudgment(root.judgment, `${path}.judgment`),\n ...(root.gmDigest === undefined ? {} : { gmDigest: requireString(root.gmDigest, `${path}.gmDigest`) }),\n passed: root.passed === null ? null : root.passed,\n ...(root.evidence === undefined ? {} : { evidence: requireJson(root.evidence, `${path}.evidence`) }),\n at: requireString(root.at, `${path}.at`),\n }\n}\n\nfunction requireEnumValue(value: unknown, allowed: readonly string[], path: string): 'programmatic' | 'agentic' {\n const candidate = requireString(value, path)\n if (!allowed.includes(candidate)) throw new Error(`${path} is invalid`)\n return candidate as 'programmatic' | 'agentic'\n}\n\nfunction requireJson(value: unknown, path: string): JsonValue {\n if (!isJsonValue(value)) throw new Error(`${path} must be JSON-compatible`)\n return value\n}\n\nfunction parseGoalState(value: unknown, path: string): GoalState {\n if (typeof value !== 'string' || !GOAL_STATES.has(value as GoalState)) throw new Error(`${path} is invalid`)\n return value as GoalState\n}\n\nfunction parseRootState(value: unknown, path: string): RootTerminalState {\n if (typeof value !== 'string' || !ROOT_STATES.has(value as RootTerminalState)) throw new Error(`${path} is invalid`)\n return value as RootTerminalState\n}\n\nfunction parseRunState(value: unknown, path: string): DogRun['state'] {\n if (value !== 'running' && value !== 'completed' && value !== 'cancelled' && value !== 'failed') {\n throw new Error(`${path} is invalid`)\n }\n return value\n}\n\nfunction requireDigest(value: unknown, path: string): string {\n const text = requireString(value, path)\n if (!DIGEST.test(text)) throw new Error(`${path} must be a SHA-256 digest`)\n return text\n}\n\nfunction requireRecord(value: unknown, path: string): Record<string, unknown> {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) throw new Error(`${path} must be an object`)\n return Object.fromEntries(Object.entries(value))\n}\n\nfunction requireArray(value: unknown, path: string): readonly unknown[] {\n if (!Array.isArray(value)) throw new Error(`${path} must be an array`)\n return value\n}\n\nfunction requireString(value: unknown, path: string): string {\n if (typeof value !== 'string') throw new Error(`${path} must be a string`)\n return value\n}\n\nfunction requireBoundedString(value: unknown, path: string): string {\n const text = requireString(value, path)\n if (text.length === 0 || text.length > 512) throw new Error(`${path} must contain 1-512 characters`)\n return text\n}\n\nfunction requireNonNegativeInteger(value: unknown, path: string): number {\n if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {\n throw new Error(`${path} must be a non-negative safe integer`)\n }\n return value\n}\n","import {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type CSSProperties,\n type ReactNode,\n} from 'react'\nimport type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client'\nimport type { DogDebugGraphRevision, DogDebugSnapshot } from '../debug-contract.ts'\nimport type {\n BoolExpr,\n CompiledGraph,\n DogRun,\n GoalAgentSessionRef,\n GoalNodeInput,\n GoalRuntimeEvent,\n GoalRuntimeTrace,\n GoalResult,\n GoalState,\n JsonValue,\n RootTerminalState,\n} from '../model.ts'\nimport {\n agentParentSessionIds,\n goalAgentRefs,\n goalAgentTelemetry,\n settledGoalCount,\n summarizeRunAgents,\n} from './agentTelemetry.ts'\nimport { layoutDag, type PositionedGoal } from './graph-layout.ts'\nimport { parseDogDebugSnapshot, parseGoalRuntimeTrace } from './snapshot.ts'\n\nconst REFRESH_INTERVAL_MS = 3_000\nconst RECENT_DOG_LIMIT = 4\nconst DOG_DOCK_RESERVED_WIDTH = 370\nconst HOST_CENTER_MIN_WIDTH = 640\nconst DOG_DOCK_COLLAPSED_KEY = '@dsh-external/dsh-dog/dock-collapsed'\nconst MIN_ZOOM = 0.6\nconst MAX_ZOOM = 1.2\n\nexport interface DogDebuggerProps {\n readonly initialOpen?: boolean\n readonly hideDock?: boolean\n readonly readSnapshot: (signal: AbortSignal) => Promise<unknown>\n readonly readGoalRuntime: (runId: string, goalId: string, signal: AbortSignal) => Promise<unknown>\n readonly openSession: (sessionId: string, parentSessionId?: string) => Promise<boolean>\n readonly getSessionState: () => SessionListState\n readonly subscribeSessions: (listener: () => void) => () => void\n readonly refreshAgentCatalog: (parentSessionId: string) => Promise<void>\n}\n\nexport function DogDebugger({\n initialOpen = false,\n hideDock = false,\n readSnapshot,\n readGoalRuntime,\n openSession,\n getSessionState,\n subscribeSessions,\n refreshAgentCatalog,\n}: DogDebuggerProps): JSX.Element {\n const [open, setOpen] = useState(initialOpen)\n const [dockCollapsed, setDockCollapsed] = useState(readDogDockCollapsed)\n const [snapshot, setSnapshot] = useState<DogDebugSnapshot>()\n const [selectedDigest, setSelectedDigest] = useState<string>()\n const [selectedRunId, setSelectedRunId] = useState<string>()\n const [selectedNodeId, setSelectedNodeId] = useState<string>()\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string>()\n const [zoom, setZoom] = useState(0.9)\n const inFlight = useRef(false)\n const dialogRef = useRef<HTMLDivElement>(null)\n const overlayRootRef = useRef<HTMLDivElement>(null)\n const sessionState = useSyncExternalStore(subscribeSessions, getSessionState, getSessionState)\n const updateDockCollapsed = useCallback((collapsed: boolean): void => {\n setDockCollapsed(collapsed)\n writeDogDockCollapsed(collapsed)\n }, [])\n\n useEffect(() => {\n if (hideDock) return\n const root = overlayRootRef.current\n const overlayLayer = root?.parentElement?.parentElement\n const details = overlayLayer?.previousElementSibling\n const center = details?.previousElementSibling\n const sidebar = center?.previousElementSibling\n const frame = overlayLayer?.parentElement\n if (!(root instanceof HTMLElement)\n || !(overlayLayer instanceof HTMLElement)\n || !(details instanceof HTMLElement)\n || !(center instanceof HTMLElement)\n || !(sidebar instanceof HTMLElement)\n || !(frame instanceof HTMLElement)) return\n\n const previousMarginRight = center.style.marginRight\n const previousMinWidth = center.style.minWidth\n const update = (): void => {\n const frameWidth = frame.getBoundingClientRect().width\n const sidebarWidth = sidebar.getBoundingClientRect().width\n const detailsWidth = details.getBoundingClientRect().width\n const centerWidth = frameWidth - sidebarWidth - detailsWidth\n const canReserve = !open\n && !dockCollapsed\n && detailsWidth < 1\n && centerWidth - DOG_DOCK_RESERVED_WIDTH >= HOST_CENTER_MIN_WIDTH\n if (canReserve) {\n center.style.marginRight = `${DOG_DOCK_RESERVED_WIDTH}px`\n center.style.minWidth = '0'\n root.dataset.dogDockLayout = 'reserved'\n return\n }\n center.style.marginRight = previousMarginRight\n center.style.minWidth = previousMinWidth\n root.dataset.dogDockLayout = open || detailsWidth >= 1 ? 'hidden' : dockCollapsed ? 'collapsed' : 'floating'\n }\n\n update()\n const observer = new ResizeObserver(update)\n observer.observe(frame)\n observer.observe(sidebar)\n observer.observe(details)\n window.addEventListener('resize', update)\n return () => {\n window.removeEventListener('resize', update)\n observer.disconnect()\n center.style.marginRight = previousMarginRight\n center.style.minWidth = previousMinWidth\n delete root.dataset.dogDockLayout\n }\n }, [dockCollapsed, open, hideDock])\n\n const refresh = useCallback(async (): Promise<void> => {\n if (inFlight.current) return\n inFlight.current = true\n setLoading(true)\n try {\n const next = parseDogDebugSnapshot(await readSnapshot(new AbortController().signal))\n setSnapshot(next)\n setError(undefined)\n await Promise.allSettled(agentParentSessionIds(next).map(refreshAgentCatalog))\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : String(cause))\n } finally {\n inFlight.current = false\n setLoading(false)\n }\n }, [readSnapshot, refreshAgentCatalog])\n\n const openInvokingSession = useCallback(async (sessionId: string, parentSessionId?: string): Promise<boolean> => {\n const opened = await openSession(sessionId, parentSessionId)\n if (opened) setOpen(false)\n return opened\n }, [openSession])\n\n useEffect(() => {\n if (hideDock && !open) return\n void refresh()\n const timer = window.setInterval(() => void refresh(), REFRESH_INTERVAL_MS)\n return () => window.clearInterval(timer)\n }, [refresh, open, hideDock])\n\n useEffect(() => {\n if (!open) return\n const previouslyFocused = document.activeElement\n dialogRef.current?.focus()\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') setOpen(false)\n }\n window.addEventListener('keydown', onKeyDown)\n return () => {\n window.removeEventListener('keydown', onKeyDown)\n if (previouslyFocused instanceof HTMLElement) previouslyFocused.focus()\n }\n }, [open])\n\n const selectedRevision = snapshot?.graphs.find(item => item.graph.graphDigest === selectedDigest)\n ?? snapshot?.graphs[0]\n const selectedRun = selectedRevision?.runs.find(run => run.runId === selectedRunId)\n ?? selectedRevision?.runs[0]\n const effectiveNodeId = selectedNodeId !== undefined && selectedRevision?.graph.input.nodes[selectedNodeId] !== undefined\n ? selectedNodeId\n : selectedRevision?.graph.input.root\n\n const chooseRevision = (revision: DogDebugGraphRevision): void => {\n setSelectedDigest(revision.graph.graphDigest)\n setSelectedRunId(revision.runs[0]?.runId)\n setSelectedNodeId(revision.graph.input.root)\n }\n const enterRevision = (revision: DogDebugGraphRevision): void => {\n chooseRevision(revision)\n setOpen(true)\n }\n\n return (\n <div ref={overlayRootRef} className=\"dog-overlay-root\">\n {open || hideDock ? null : (\n <DogDock\n snapshot={snapshot}\n sessions={sessionState}\n loading={loading}\n error={error}\n onOpenRevision={enterRevision}\n collapsed={dockCollapsed}\n onCollapsedChange={updateDockCollapsed}\n onRefresh={() => void refresh()}\n />\n )}\n {open ? (\n <div className=\"dog-backdrop\">\n <div\n ref={dialogRef}\n className=\"dog-dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"DoG graph\"\n tabIndex={-1}\n >\n <header className=\"dog-header\">\n <div className=\"dog-brand\">\n <span className=\"dog-brand-mark\"><NetworkIcon size={18} /></span>\n <div className=\"dog-brand-copy\">\n <h2 className=\"dog-brand-title\">DoG</h2>\n <p className=\"dog-brand-subtitle\">Goals · Agents · trusted evidence</p>\n </div>\n </div>\n <span className=\"dog-header-divider\" />\n <div className=\"dog-context\">\n <span className=\"dog-context-title\">{selectedRevision?.graph.input.nodes[selectedRevision.graph.input.root]?.title ?? 'No graph selected'}</span>\n {selectedRevision?.current ? <span className=\"dog-revision-chip\">Current revision</span> : null}\n </div>\n <div className=\"dog-header-actions\">\n <span className=\"dog-sync-copy\" title={error}>{error === undefined ? 'Live · 3s' : 'Refresh failed'}</span>\n <IconButton label=\"Refresh DoG data\" busy={loading} onClick={() => void refresh()}><RefreshIcon /></IconButton>\n <IconButton label=\"Close DoG\" busy={false} onClick={() => setOpen(false)}><CloseIcon /></IconButton>\n </div>\n </header>\n {selectedRevision === undefined ? (\n <EmptyWorkspace loading={loading} error={error} />\n ) : (\n <div className={loading ? 'dog-workspace dog-loading' : 'dog-workspace'}>\n <Sidebar\n snapshot={snapshot}\n selectedRevision={selectedRevision}\n selectedRun={selectedRun}\n onSelectRevision={chooseRevision}\n onSelectRun={setSelectedRunId}\n />\n <main className=\"dog-main\">\n <Summary revision={selectedRevision} run={selectedRun} sessions={sessionState} />\n {error === undefined ? null : <div className=\"dog-error-banner\" role=\"status\">Live refresh failed: {error}</div>}\n <section className=\"dog-canvas-shell\" aria-label=\"Goal DAG canvas\">\n <CanvasToolbar zoom={zoom} onZoom={setZoom} />\n <GraphCanvas\n graph={selectedRevision.graph}\n run={selectedRun}\n sessions={sessionState}\n selectedNodeId={effectiveNodeId}\n zoom={zoom}\n onSelectNode={setSelectedNodeId}\n openSession={openInvokingSession}\n />\n </section>\n </main>\n <Inspector\n graph={selectedRevision.graph}\n run={selectedRun}\n nodeId={effectiveNodeId}\n readGoalRuntime={readGoalRuntime}\n openSession={openInvokingSession}\n />\n </div>\n )}\n </div>\n </div>\n ) : null}\n </div>\n )\n}\n\ninterface DogDockProps {\n readonly snapshot: DogDebugSnapshot | undefined\n readonly sessions: SessionListState\n readonly loading: boolean\n readonly error: string | undefined\n readonly onOpenRevision: (revision: DogDebugGraphRevision) => void\n readonly onRefresh: () => void\n readonly collapsed: boolean\n readonly onCollapsedChange: (collapsed: boolean) => void\n}\n\nfunction DogDock({ snapshot, sessions, loading, error, onOpenRevision, onRefresh, collapsed, onCollapsedChange }: DogDockProps): JSX.Element {\n const revisions = snapshot?.graphs.filter(revision => revision.current).slice(0, RECENT_DOG_LIMIT) ?? []\n if (collapsed) {\n return (\n <aside className=\"dog-dock\" data-collapsed=\"true\" aria-label=\"Collapsed DoG panel\">\n <button\n className=\"dog-dock-rail\"\n type=\"button\"\n aria-label=\"Expand DoG panel\"\n title=\"Expand DoG panel\"\n aria-expanded=\"false\"\n onClick={() => onCollapsedChange(false)}\n >\n <span className=\"dog-dock-rail-mark\"><NetworkIcon size={16} /></span>\n <strong>DoG</strong>\n <DockExpandIcon />\n </button>\n </aside>\n )\n }\n return (\n <aside className=\"dog-dock\" data-collapsed=\"false\" aria-label=\"Recent DoG runs\" aria-busy={loading}>\n <div className=\"dog-dock-collapse-slot\">\n <button\n className=\"dog-dock-collapse-handle\"\n type=\"button\"\n aria-label=\"Collapse DoG panel\"\n title=\"Collapse DoG panel\"\n aria-expanded=\"true\"\n onClick={() => onCollapsedChange(true)}\n >\n <DockCollapseIcon />\n </button>\n </div>\n <div className=\"dog-dock-content\">\n <header className=\"dog-dock-header\">\n <span className=\"dog-dock-mark\"><NetworkIcon size={16} /></span>\n <div className=\"dog-dock-heading\">\n <h2>DoG</h2>\n <span>{loading ? 'Syncing…' : error === undefined ? 'Live goals' : 'Refresh failed'}</span>\n </div>\n <IconButton label=\"Refresh recent DoGs\" busy={loading} onClick={onRefresh}><RefreshIcon /></IconButton>\n </header>\n {error === undefined ? null : <div className=\"dog-dock-error\" title={error}>Last sync failed</div>}\n {revisions.length === 0 ? (\n <div className=\"dog-dock-empty\">\n <span className=\"dog-dock-empty-icon\"><NetworkIcon size={19} /></span>\n <strong>{loading ? 'Loading DoGs' : 'No DoG yet'}</strong>\n <span>dog_create adds the first graph.</span>\n </div>\n ) : (\n <ul className=\"dog-dock-list\">\n {revisions.map(revision => {\n const run = latestRun(revision)\n const total = Object.keys(revision.graph.input.nodes).length\n const settled = settledGoalCount(run)\n const agents = summarizeRunAgents(run, sessions)\n const state = run?.rootState ?? run?.state ?? 'pending'\n const progress = total === 0 ? 0 : Math.round((settled / total) * 100)\n const rootTitle = revision.graph.input.nodes[revision.graph.input.root]?.title ?? revision.graph.input.id\n return (\n <li key={revision.graph.graphDigest}>\n <button\n className=\"dog-dock-card\"\n type=\"button\"\n onClick={() => onOpenRevision(revision)}\n aria-label={`Open ${rootTitle}: ${humanizeState(state)}, ${settled} of ${total} goals complete`}\n >\n <span className=\"dog-dock-card-head\">\n <span className=\"dog-dock-title-wrap\">\n <span className=\"dog-dock-title\">{rootTitle}</span>\n <span className=\"dog-dock-id\">{revision.graph.input.id}</span>\n </span>\n <StatusChip state={state} />\n </span>\n <span className=\"dog-dock-progress\" aria-hidden=\"true\">\n <span style={{ width: `${progress}%` }} />\n </span>\n <span className=\"dog-dock-metrics\">\n <span><strong>{settled}/{total}</strong> nodes</span>\n <span><strong>{agents.linked}</strong> agents</span>\n <span><strong>{agents.running}</strong> live</span>\n <span><strong>{formatTokenMetric(agents.tokens, agents.partialTokens)}</strong> tok</span>\n </span>\n </button>\n </li>\n )\n })}\n </ul>\n )}\n <div className=\"dog-dock-footer\">Open a DoG to inspect its graph and Agents</div>\n </div>\n </aside>\n )\n}\n\ninterface SidebarProps {\n readonly snapshot: DogDebugSnapshot | undefined\n readonly selectedRevision: DogDebugGraphRevision\n readonly selectedRun: DogRun | undefined\n readonly onSelectRevision: (revision: DogDebugGraphRevision) => void\n readonly onSelectRun: (runId: string) => void\n}\n\nfunction Sidebar({ snapshot, selectedRevision, selectedRun, onSelectRevision, onSelectRun }: SidebarProps): JSX.Element {\n return (\n <aside className=\"dog-sidebar\" aria-label=\"Graphs and run history\">\n <h3 className=\"dog-section-label\">Graph revisions</h3>\n <ul className=\"dog-graph-list\">\n {snapshot?.graphs.map(revision => {\n const run = latestRun(revision)\n const state = run?.rootState ?? run?.state ?? 'pending'\n return (\n <li key={revision.graph.graphDigest}>\n <button\n className=\"dog-list-button\"\n type=\"button\"\n data-selected={revision.graph.graphDigest === selectedRevision.graph.graphDigest}\n onClick={() => onSelectRevision(revision)}\n >\n <span className=\"dog-list-row\">\n <span className={`dog-state-dot ${stateClass(state)}`} />\n <span className=\"dog-list-title\">{revision.graph.input.id}</span>\n </span>\n <span className=\"dog-list-meta\">\n <span className={revision.current ? 'dog-list-current' : undefined}>{revision.current ? 'current' : 'historical'}</span>\n <span>·</span>\n <span>{Object.keys(revision.graph.input.nodes).length} goals</span>\n <span>·</span>\n <span className=\"dog-mono\">{shortDigest(revision.graph.graphDigest)}</span>\n </span>\n </button>\n </li>\n )\n })}\n </ul>\n <div className=\"dog-sidebar-divider\" />\n <h3 className=\"dog-section-label\">Run history</h3>\n {selectedRevision.runs.length === 0 ? (\n <p className=\"dog-empty-small\">No runs are bound to this immutable revision.</p>\n ) : (\n <ul className=\"dog-run-list\">\n {selectedRevision.runs.map(run => {\n const state = run.rootState ?? run.state\n return (\n <li key={run.runId}>\n <button\n className=\"dog-list-button\"\n type=\"button\"\n data-selected={run.runId === selectedRun?.runId}\n onClick={() => onSelectRun(run.runId)}\n >\n <span className=\"dog-list-row\">\n <span className={`dog-state-dot ${stateClass(state)}`} />\n <span className=\"dog-list-title\">{humanizeState(state)}</span>\n </span>\n <span className=\"dog-list-meta\">\n <span>{formatTime(run.updatedAt)}</span>\n <span>·</span>\n <span className=\"dog-mono\">{shortId(run.runId)}</span>\n </span>\n </button>\n </li>\n )\n })}\n </ul>\n )}\n </aside>\n )\n}\n\nfunction Summary({ revision, run, sessions }: {\n readonly revision: DogDebugGraphRevision\n readonly run: DogRun | undefined\n readonly sessions: SessionListState\n}): JSX.Element {\n const results = Object.values(run?.goals ?? {})\n const attention = results.filter(result => isAttentionGoal(result.state)).length\n const total = Object.keys(revision.graph.input.nodes).length\n const settled = settledGoalCount(run)\n const agents = summarizeRunAgents(run, sessions)\n const state = run?.rootState ?? run?.state ?? 'pending'\n return (\n <section className=\"dog-summary\" aria-label=\"Run summary\">\n <div className={`dog-summary-primary ${stateClass(state)}`}>\n <span className=\"dog-root-orb\"><RootIcon /></span>\n <div className=\"dog-summary-copy\">\n <div className=\"dog-summary-kicker\">Root outcome</div>\n <div className=\"dog-summary-value\">{humanizeState(state)}</div>\n </div>\n </div>\n <Metric label=\"Nodes\" value={`${settled}/${total}`} />\n <Metric label=\"Agent tokens\" value={formatTokenMetric(agents.tokens, agents.partialTokens)} />\n <Metric label=\"Agents\" value={`${agents.linked} · ${agents.running} live`} />\n <Metric label=\"Attention\" value={String(attention)} />\n </section>\n )\n}\n\nfunction Metric({ label, value }: { readonly label: string; readonly value: string }): JSX.Element {\n return <div className=\"dog-metric\"><div className=\"dog-metric-label\">{label}</div><div className=\"dog-metric-value\">{value}</div></div>\n}\n\nfunction CanvasToolbar({ zoom, onZoom }: { readonly zoom: number; readonly onZoom: (value: number) => void }): JSX.Element {\n const adjust = (delta: number): void => onZoom(clampZoom(zoom + delta))\n return (\n <div className=\"dog-canvas-toolbar\">\n <div className=\"dog-legend\" aria-label=\"Edge legend\">\n <span className=\"dog-legend-item\"><span className=\"dog-legend-line\" />Contains</span>\n <span className=\"dog-legend-item\"><span className=\"dog-legend-line\" data-kind=\"depends\" />Depends on</span>\n </div>\n <span className=\"dog-canvas-spacer\" />\n <div className=\"dog-zoom\" aria-label=\"Canvas zoom\">\n <button className=\"dog-zoom-button\" type=\"button\" aria-label=\"Zoom out\" onClick={() => adjust(-0.1)}>−</button>\n <span className=\"dog-zoom-value\">{Math.round(zoom * 100)}%</span>\n <button className=\"dog-zoom-button\" type=\"button\" aria-label=\"Zoom in\" onClick={() => adjust(0.1)}>+</button>\n </div>\n </div>\n )\n}\n\ninterface GraphCanvasProps {\n readonly graph: CompiledGraph\n readonly run: DogRun | undefined\n readonly sessions: SessionListState\n readonly selectedNodeId: string | undefined\n readonly zoom: number\n readonly onSelectNode: (id: string) => void\n readonly openSession: DogDebuggerProps['openSession']\n}\n\nfunction GraphCanvas({ graph, run, sessions, selectedNodeId, zoom, onSelectNode, openSession }: GraphCanvasProps): JSX.Element {\n const layout = useMemo(() => layoutDag(graph.input), [graph])\n const [expandedAgentNodeId, setExpandedAgentNodeId] = useState<string>()\n const scaledWidth = layout.width * zoom\n const scaledHeight = layout.height * zoom\n const stageStyle: CSSProperties = { width: layout.width, height: layout.height, transform: `scale(${zoom})` }\n const wrapStyle: CSSProperties = { width: scaledWidth, height: scaledHeight, minWidth: '100%' }\n\n useEffect(() => setExpandedAgentNodeId(undefined), [graph.graphDigest, run?.runId])\n\n return (\n <div className=\"dog-canvas-scroll\">\n <div className=\"dog-canvas-stage-wrap\" style={wrapStyle}>\n <div className=\"dog-canvas-stage\" style={stageStyle}>\n <svg className=\"dog-edges\" width={layout.width} height={layout.height} aria-hidden=\"true\">\n <defs>\n <marker id=\"dog-dependency-arrow\" markerWidth=\"8\" markerHeight=\"8\" refX=\"7\" refY=\"4\" orient=\"auto\" markerUnits=\"strokeWidth\">\n <path d=\"M 0 0 L 8 4 L 0 8 z\" fill=\"#c07a39\" />\n </marker>\n </defs>\n {layout.edges.map(edge => {\n const connected = selectedNodeId === undefined || edge.source === selectedNodeId || edge.target === selectedNodeId\n return <path\n key={edge.id}\n className=\"dog-edge\"\n data-kind={edge.kind}\n data-muted={!connected}\n data-highlighted={connected && selectedNodeId !== undefined}\n d={edge.path}\n markerEnd={edge.kind === 'dependsOn' ? 'url(#dog-dependency-arrow)' : undefined}\n />\n })}\n </svg>\n {layout.nodes.map(position => {\n const node = graph.input.nodes[position.id]\n if (node === undefined) return null\n const result = run?.goals[position.id] ?? { state: 'pending' as const }\n const agents = goalAgentRefs(run, position.id)\n const expanded = expandedAgentNodeId === position.id\n const style: CSSProperties = {\n left: position.x,\n top: position.y,\n width: position.width,\n height: position.height,\n }\n return (\n <Fragment key={position.id}>\n <button\n className=\"dog-node\"\n type=\"button\"\n style={style}\n data-selected={position.id === selectedNodeId}\n data-root={position.id === graph.input.root}\n data-agents-expanded={expanded || undefined}\n aria-expanded={expanded}\n aria-label={`${node.title}: ${humanizeState(result.state)}. Click to ${expanded ? 'hide' : 'show'} ${agents.length} related Agents.`}\n onClick={() => {\n onSelectNode(position.id)\n setExpandedAgentNodeId(current => current === position.id ? undefined : position.id)\n }}\n >\n <span className=\"dog-node-top\">\n <span className={position.id === graph.input.root ? 'dog-node-kind dog-node-root' : 'dog-node-kind'}>\n {position.id === graph.input.root ? 'Root goal' : `${node.constraint} · ${node.kind}`}\n </span>\n <StatusChip state={result.state} />\n </span>\n <span className=\"dog-node-title\">{node.title}</span>\n <span className=\"dog-node-foot\">\n <span className=\"dog-node-id\">{position.id}</span>\n <span className=\"dog-node-agents\"><AgentIcon />{agents.length}</span>\n </span>\n </button>\n {expanded ? (\n <AgentFlyout\n goalTitle={node.title}\n refs={agents}\n sessions={sessions}\n style={agentFlyoutStyle(position, layout.width, layout.height)}\n onClose={() => setExpandedAgentNodeId(undefined)}\n openSession={openSession}\n />\n ) : null}\n </Fragment>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n\ninterface AgentFlyoutProps {\n readonly goalTitle: string\n readonly refs: readonly GoalAgentSessionRef[]\n readonly sessions: SessionListState\n readonly style: CSSProperties\n readonly onClose: () => void\n readonly openSession: DogDebuggerProps['openSession']\n}\n\nfunction AgentFlyout({ goalTitle, refs, sessions, style, onClose, openSession }: AgentFlyoutProps): JSX.Element {\n const [openingSession, setOpeningSession] = useState<string>()\n const [error, setError] = useState<string>()\n const agents = refs.map(ref => goalAgentTelemetry(ref, sessions))\n const open = async (ref: GoalAgentSessionRef): Promise<void> => {\n setOpeningSession(ref.sessionId)\n setError(undefined)\n try {\n if (!await openSession(ref.sessionId, ref.parentSessionId)) {\n setError('This Agent session is no longer addressable.')\n }\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : String(cause))\n } finally {\n setOpeningSession(undefined)\n }\n }\n return (\n <section className=\"dog-agent-flyout\" style={style} aria-label={`Agents related to ${goalTitle}`}>\n <header className=\"dog-agent-flyout-head\">\n <span><AgentIcon /> Related Agents</span>\n <button type=\"button\" onClick={onClose} aria-label=\"Close related Agents\"><CloseIcon /></button>\n </header>\n {agents.length === 0 ? (\n <div className=\"dog-agent-empty\">No Agent has bound itself to this node.</div>\n ) : (\n <ul className=\"dog-agent-list\">\n {agents.map(agent => {\n const activity = agent.needsInput ? 'Needs input' : agent.running ? 'Running' : agent.available ? 'Finished' : 'Unavailable'\n return (\n <li key={agent.ref.sessionId}>\n <button\n className=\"dog-agent-row\"\n type=\"button\"\n disabled={openingSession !== undefined}\n onClick={() => void open(agent.ref)}\n aria-label={`Open ${agent.label}, ${activity}`}\n >\n <span className={`dog-agent-state ${agent.running ? 'dog-state-running' : agent.available ? 'dog-state-success' : 'dog-state-blocked'}`} />\n <span className=\"dog-agent-copy\">\n <span className=\"dog-agent-name\">{agent.label}</span>\n <span className=\"dog-agent-meta\">{humanizeState(agent.ref.role)} · {activity}</span>\n </span>\n <span className=\"dog-agent-metrics\">\n <span>{agent.tokens === undefined ? '— tok' : `${formatCompactNumber(agent.tokens)} tok`}</span>\n <span>{agent.durationMs === undefined ? '—' : formatAgentDuration(agent.durationMs)}</span>\n </span>\n </button>\n </li>\n )\n })}\n </ul>\n )}\n {error === undefined ? null : <div className=\"dog-agent-error\" role=\"status\">{error}</div>}\n <div className=\"dog-agent-hint\">Click an Agent to open its native DSH conversation.</div>\n </section>\n )\n}\n\nfunction Inspector({ graph, run, nodeId, readGoalRuntime, openSession }: {\n readonly graph: CompiledGraph\n readonly run: DogRun | undefined\n readonly nodeId: string | undefined\n readonly readGoalRuntime: DogDebuggerProps['readGoalRuntime']\n readonly openSession: DogDebuggerProps['openSession']\n}): JSX.Element {\n const node = nodeId === undefined ? undefined : graph.input.nodes[nodeId]\n if (node === undefined || nodeId === undefined) {\n return <aside className=\"dog-inspector\"><p className=\"dog-empty-small\">Select a goal to inspect its contract and evidence.</p></aside>\n }\n const result = run?.goals[nodeId] ?? { state: 'pending' as const }\n const plan = graph.acceptancePlans[nodeId]\n const parents = graph.input.contains.filter(edge => edge.child === nodeId)\n const children = graph.input.contains.filter(edge => edge.parent === nodeId)\n const dependencies = graph.input.dependsOn.filter(edge => edge.source === nodeId || edge.target === nodeId)\n const reason = result.reason ?? (result.verification?.passed === false\n ? 'Trusted verifier returned false for this sandboxed input.'\n : undefined)\n return (\n <aside className=\"dog-inspector\" aria-label=\"Selected goal details\">\n <div className=\"dog-inspector-head\">\n <div className=\"dog-inspector-title-wrap\">\n <div className=\"dog-inspector-eyebrow\">{nodeId === graph.input.root ? 'Root goal' : 'Goal contract'}</div>\n <h3 className=\"dog-inspector-title\">{node.title}</h3>\n </div>\n <StatusChip state={result.state} />\n </div>\n <div className=\"dog-inspector-chips\">\n <span className=\"dog-mini-chip\">{node.constraint}</span>\n <span className=\"dog-mini-chip\">{node.kind}</span>\n <span className=\"dog-mini-chip dog-mono\">{nodeId}</span>\n </div>\n {reason === undefined ? null : (\n <section className={`dog-inspector-section ${stateClass(result.state)}`}>\n <h4 className=\"dog-inspector-section-title\">Why this state</h4>\n <div className=\"dog-reason\">{reason}</div>\n </section>\n )}\n <section className=\"dog-inspector-section\">\n <h4 className=\"dog-inspector-section-title\">Contract</h4>\n <dl className=\"dog-definition\">\n <dt>Constraint</dt><dd>{node.constraint}</dd>\n <dt>Completion</dt><dd className=\"dog-mono\">{node.completion === undefined ? 'atomic verifier' : formatExpression(node.completion)}</dd>\n <dt>Updated</dt><dd>{run === undefined ? 'No run yet' : formatTimestamp(run.updatedAt)}</dd>\n <dt>Graph digest</dt><dd className=\"dog-mono\" title={graph.graphDigest}>{shortDigest(graph.graphDigest)}</dd>\n </dl>\n </section>\n <RuntimeContextPanel\n run={run}\n goalId={nodeId}\n readGoalRuntime={readGoalRuntime}\n openSession={openSession}\n />\n <Evidence node={node} result={result} plan={plan} />\n <section className=\"dog-inspector-section\">\n <h4 className=\"dog-inspector-section-title\">Relations</h4>\n {parents.length + children.length + dependencies.length === 0 ? <p className=\"dog-empty-small\">No graph relations.</p> : (\n <ul className=\"dog-relation-list\">\n {parents.map((edge, index) => <li className=\"dog-relation\" key={`parent:${index}`}><strong>{edge.parent}</strong> contains this goal · {edge.required ? 'required' : 'optional'} · {edge.failure}</li>)}\n {children.map((edge, index) => <li className=\"dog-relation\" key={`child:${index}`}>Contains <strong>{edge.child}</strong> · {edge.required ? 'required' : 'optional'} · {edge.failure}</li>)}\n {dependencies.map((edge, index) => <li className=\"dog-relation\" data-kind=\"dependsOn\" key={`dependency:${index}`}><strong>{edge.source}</strong> depends on <strong>{edge.target}</strong>{edge.data === undefined ? '' : ` · ${edge.data.join(', ')}`}</li>)}\n </ul>\n )}\n </section>\n <section className=\"dog-inspector-section\">\n <details className=\"dog-raw\">\n <summary>Raw goal record</summary>\n <pre>{JSON.stringify({ nodeId, node, result, acceptancePlan: plan }, null, 2)}</pre>\n </details>\n </section>\n </aside>\n )\n}\n\ninterface RuntimeContextPanelProps {\n readonly run: DogRun | undefined\n readonly goalId: string\n readonly readGoalRuntime: DogDebuggerProps['readGoalRuntime']\n readonly openSession: DogDebuggerProps['openSession']\n}\n\nfunction RuntimeContextPanel({ run, goalId, readGoalRuntime, openSession }: RuntimeContextPanelProps): JSX.Element {\n const [trace, setTrace] = useState<GoalRuntimeTrace>()\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string>()\n const [sessionError, setSessionError] = useState<string>()\n const [openingSession, setOpeningSession] = useState(false)\n const runId = run?.runId\n const runState = run?.state\n\n useEffect(() => {\n setTrace(undefined)\n setError(undefined)\n setSessionError(undefined)\n setOpeningSession(false)\n if (runId === undefined || runState === undefined) {\n setLoading(false)\n return\n }\n let disposed = false\n let inFlight = false\n const controller = new AbortController()\n const refresh = async (): Promise<void> => {\n if (inFlight) return\n inFlight = true\n setLoading(true)\n try {\n const next = parseGoalRuntimeTrace(await readGoalRuntime(runId, goalId, controller.signal))\n if (next.runId !== runId || next.goalId !== goalId) throw new Error('runtime trace identity mismatch')\n if (!disposed) {\n setTrace(next)\n setError(undefined)\n }\n } catch (cause) {\n if (!disposed && !controller.signal.aborted) setError(cause instanceof Error ? cause.message : String(cause))\n } finally {\n inFlight = false\n if (!disposed) setLoading(false)\n }\n }\n void refresh()\n const timer = runState === 'running'\n ? window.setInterval(() => void refresh(), 1_500)\n : undefined\n return () => {\n disposed = true\n controller.abort()\n if (timer !== undefined) window.clearInterval(timer)\n }\n }, [goalId, readGoalRuntime, runId, runState])\n\n if (run === undefined) {\n return (\n <section className=\"dog-inspector-section\">\n <h4 className=\"dog-inspector-section-title\">Runtime context</h4>\n <p className=\"dog-empty-small dog-runtime-empty\">Run this graph to capture node activity and failure context.</p>\n </section>\n )\n }\n\n const events = trace?.events ?? []\n const latestEvent = events[events.length - 1]\n const errorEvent = [...events].reverse().find(event => event.phase === 'structured_error')\n const attempts = new Set(events.map(event => event.attempt ?? 1)).size\n const invocation = trace?.invocation\n const goalState = trace?.result.state ?? run.goals[goalId]?.state ?? 'pending'\n const activity = runtimeActivity(goalState, latestEvent, loading)\n const openInvoker = async (): Promise<void> => {\n setSessionError(undefined)\n const sessionId = invocation?.agentSessionId\n const parentSessionId = invocation?.parentSessionId\n if (sessionId === undefined) return\n setOpeningSession(true)\n try {\n if (!await openSession(sessionId, parentSessionId)) {\n setSessionError('The invoking session is no longer available in this client.')\n }\n } catch (cause) {\n setSessionError(cause instanceof Error ? cause.message : String(cause))\n } finally {\n setOpeningSession(false)\n }\n }\n\n return (\n <section className=\"dog-inspector-section\" aria-label=\"Goal runtime context\">\n <div className=\"dog-runtime-heading\">\n <h4 className=\"dog-inspector-section-title\">Runtime context</h4>\n {loading ? <span className=\"dog-runtime-live\"><span className=\"dog-runtime-pulse\" />refreshing</span> : null}\n </div>\n {error === undefined ? null : <div className=\"dog-runtime-warning\">Context unavailable: {error}</div>}\n {trace?.runtimeWarning === undefined ? null : <div className=\"dog-runtime-warning\">{trace.runtimeWarning}</div>}\n <div className={`dog-runtime-card ${stateClass(goalState)}`}>\n <span className=\"dog-runtime-orb\" />\n <div className=\"dog-runtime-card-copy\">\n <div className=\"dog-runtime-activity\">{activity}</div>\n <div className=\"dog-runtime-meta\">\n {events.length === 0 ? 'No events yet' : `${events.length} events · ${attempts} attempt${attempts === 1 ? '' : 's'}`}\n {latestEvent?.durationMs === undefined ? '' : ` · ${formatDuration(latestEvent.durationMs)}`}\n </div>\n </div>\n </div>\n {errorEvent === undefined || errorEvent.reason === undefined ? null : (\n <div className={`dog-runtime-error ${stateClass(errorEvent.state ?? 'needs_human')}`}>\n <strong>Verification error</strong>\n <span>{errorEvent.reason}</span>\n </div>\n )}\n {invocation === undefined ? null : (\n <div className=\"dog-runtime-session\">\n <div className=\"dog-runtime-session-head\">\n <span>Invoking DSH session</span>\n {invocation.agentSessionId === undefined ? null : (\n <button className=\"dog-runtime-session-button\" type=\"button\" disabled={openingSession} onClick={() => void openInvoker()}>{openingSession ? 'Opening…' : 'Open session'}</button>\n )}\n </div>\n <dl className=\"dog-definition\">\n <dt>Session</dt><dd className=\"dog-mono\">{invocation.agentSessionId === undefined ? 'headless / unavailable' : shortId(invocation.agentSessionId)}</dd>\n {invocation.parentSessionId === undefined ? null : <><dt>Parent</dt><dd className=\"dog-mono\">{shortId(invocation.parentSessionId)}</dd></>}\n <dt>Tool call</dt><dd className=\"dog-mono\" title={invocation.callId}>{shortId(invocation.callId)}</dd>\n <dt>Invoked</dt><dd>{formatTimestamp(invocation.invokedAt)}</dd>\n </dl>\n {sessionError === undefined ? null : <div className=\"dog-runtime-session-error\">{sessionError}</div>}\n </div>\n )}\n {events.length === 0 ? (\n <p className=\"dog-empty-small dog-runtime-empty\">\n {loading ? 'Loading node activity…' : 'No runtime events were recorded for this node.'}\n </p>\n ) : (\n <ol className=\"dog-runtime-timeline\" aria-label=\"Runtime event timeline\">\n {events.map((event, index) => (\n <li className={`dog-runtime-event ${stateClass(event.state ?? 'running')}`} key={index}>\n <span className=\"dog-runtime-marker\" />\n <div className=\"dog-runtime-event-copy\">\n <div className=\"dog-runtime-event-head\">\n <strong>{runtimeEventLabel(event.phase)}</strong>\n <time dateTime={event.at}>{formatTime(event.at)}</time>\n </div>\n {event.attempt === undefined ? null : <div className=\"dog-runtime-event-meta\">Attempt {event.attempt}</div>}\n {runtimeEventDetail(event) === undefined ? null : <div className=\"dog-runtime-event-detail\">{runtimeEventDetail(event)}</div>}\n </div>\n </li>\n ))}\n </ol>\n )}\n {trace?.truncated === true ? <div className=\"dog-runtime-warning\">Showing the latest 64 events for this goal.</div> : null}\n {trace === undefined ? null : (\n <details className=\"dog-raw dog-runtime-raw\">\n <summary>Raw runtime trace</summary>\n <pre>{JSON.stringify(trace, null, 2)}</pre>\n </details>\n )}\n </section>\n )\n}\n\nfunction runtimeActivity(state: GoalState, event: GoalRuntimeEvent | undefined, loading: boolean): string {\n if (event === undefined) return loading ? 'Loading runtime context' : state === 'pending' ? 'Waiting for scheduler' : humanizeState(state)\n if (event.phase === 'verifier_started' && event.verifier !== undefined) return `Running ${event.verifier.mode} kernel`\n if (event.phase === 'dependency_blocked') return 'Blocked by an upstream dependency'\n if (event.phase === 'structured_error') return 'Execution needs human review'\n if (event.phase === 'goal_settled') return `Settled as ${humanizeState(event.state ?? state)}`\n return runtimeEventLabel(event.phase)\n}\n\nfunction runtimeEventLabel(phase: GoalRuntimeEvent['phase']): string {\n switch (phase) {\n case 'goal_started': return 'Goal started'\n case 'dependency_blocked': return 'Dependency blocked'\n case 'grounding_extracted': return 'Grounding material extracted'\n case 'workspace_allocated': return 'Isolated workspace allocated'\n case 'verifier_started': return 'Verifier started'\n case 'verifier_passed': return 'Verifier passed'\n case 'verifier_failed': return 'Verifier failed'\n case 'verifier_inconclusive': return 'Verifier inconclusive'\n case 'composite_evaluated': return 'Completion rule evaluated'\n case 'result_inherited': return 'Verification reused: material unchanged'\n case 'verifier_released': return 'Verifier worker released'\n case 'verifier_bind_failed': return 'Verifier worker binding failed'\n case 'structured_error': return 'Runtime error'\n case 'goal_settled': return 'Goal settled'\n case 'run_warning': return 'Run warning'\n }\n}\n\nfunction runtimeEventDetail(event: GoalRuntimeEvent): string | undefined {\n if (event.reason !== undefined) return event.reason\n if (event.verifier !== undefined) return `${event.verifier.mode} kernel`\n return undefined\n}\n\nfunction formatDuration(value: number): string {\n return value < 1_000 ? `${value} ms` : `${(value / 1_000).toFixed(value < 10_000 ? 1 : 0)} s`\n}\n\nfunction Evidence({ node, result, plan }: { readonly node: GoalNodeInput; readonly result: GoalResult; readonly plan: CompiledGraph['acceptancePlans'][string] | undefined }): JSX.Element | null {\n if (node.kind !== 'leaf') return null\n return (\n <section className=\"dog-inspector-section\">\n <h4 className=\"dog-inspector-section-title\">Trusted evidence</h4>\n {plan === undefined ? <div className=\"dog-reason dog-state-needs_human\">No compiled acceptance plan is available.</div> : (\n <div className=\"dog-evidence\">\n <div className=\"dog-evidence-head\">\n <span className=\"dog-evidence-name\">{plan.verifier.mode === 'programmatic' ? `script:${plan.verifier.script}` : 'agentic'}</span>\n {result.verification === undefined ? <span className=\"dog-mini-chip\">not run</span> : <StatusChip state={result.verification.passed ? 'success' : 'failure'} />}\n </div>\n <div className=\"dog-evidence-body\">\n <dl className=\"dog-definition\">\n <dt>Sandbox file</dt><dd className=\"dog-mono\">{(typeof plan.input?.path === 'string' && plan.input.path.length > 0) ? plan.input.path : '(run workspace)'}</dd>\n <dt>Digest</dt><dd className=\"dog-mono\" title={plan.input?.digest}>{plan.input === undefined ? '—' : shortId(plan.input.digest)}</dd>\n <dt>Bytes</dt><dd>{plan.input === undefined ? '—' : plan.input.byteLength.toLocaleString()}</dd>\n <dt>Target</dt><dd className=\"dog-mono\">{plan.target}</dd>\n </dl>\n {result.verification === undefined ? null : (\n <div className=\"dog-inspector-section\">\n <h5 className=\"dog-inspector-section-title\">Evidence</h5>\n <div className=\"dog-observation\">\n {Object.entries(result.verification.evidence as unknown as Record<string, JsonValue> ?? {}).map(([key, value]) => (\n <div className=\"dog-observation-row\" key={key}>\n <span className=\"dog-observation-key\">{key}</span>\n <span className=\"dog-observation-value\">{formatJson(value)}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n </section>\n )\n}\n\nfunction EmptyWorkspace({ loading, error }: { readonly loading: boolean; readonly error: string | undefined }): JSX.Element {\n return (\n <div className=\"dog-workspace\">\n <div className=\"dog-empty\">\n <div className=\"dog-empty-card\">\n <div className=\"dog-empty-icon\">{loading ? <RefreshIcon /> : <NetworkIcon size={22} />}</div>\n <h3 className=\"dog-empty-title\">{loading ? 'Loading DoG revisions…' : error === undefined ? 'No persisted graphs yet' : 'Debugger data unavailable'}</h3>\n <p className=\"dog-empty-copy\">{error ?? 'Create a graph with dog_create, then run it. The immutable revision and verifier evidence will appear here automatically.'}</p>\n </div>\n </div>\n </div>\n )\n}\n\nfunction StatusChip({ state }: { readonly state: GoalState | RootTerminalState | DogRun['state'] }): JSX.Element {\n const title = state === 'inherited'\n ? 'Reused the prior run verification record: same material digest (GM) and same verifier contract. Not re-run.'\n : undefined\n return <span className={`dog-status-chip ${stateClass(state)}`} title={title}>{humanizeState(state)}</span>\n}\n\nfunction IconButton({ label, busy, onClick, children }: { readonly label: string; readonly busy: boolean; readonly onClick: () => void; readonly children: ReactNode }): JSX.Element {\n return <button className=\"dog-icon-button\" type=\"button\" aria-label={label} title={label} aria-busy={busy} onClick={onClick}>{children}</button>\n}\n\nfunction readDogDockCollapsed(): boolean {\n try {\n if (typeof window === 'undefined') return true\n const stored = window.localStorage.getItem(DOG_DOCK_COLLAPSED_KEY)\n return stored === null ? true : stored === 'true'\n } catch {\n return true\n }\n}\n\nfunction writeDogDockCollapsed(collapsed: boolean): void {\n try {\n window.localStorage.setItem(DOG_DOCK_COLLAPSED_KEY, String(collapsed))\n } catch {\n // Storage can be unavailable in restricted browser contexts; in-memory state still works.\n }\n}\n\nfunction latestRun(revision: DogDebugGraphRevision): DogRun | undefined {\n return revision.runs[0]\n}\n\nfunction isAttentionGoal(state: GoalState): boolean {\n return state === 'failure' || state === 'needs_human' || state === 'blocked' || state === 'partial'\n}\n\n\nfunction stateClass(state: string): string {\n return `dog-state-${state}`\n}\n\nfunction humanizeState(state: string): string {\n return state.replaceAll('_', ' ').replace(/\\b\\w/gu, letter => letter.toUpperCase())\n}\n\nfunction formatExpression(expression: BoolExpr): string {\n switch (expression.op) {\n case 'ref': return expression.id\n case 'not': return `NOT(${formatExpression(expression.item)})`\n case 'all': return `ALL(${expression.items.map(formatExpression).join(', ')})`\n case 'any': return `ANY(${expression.items.map(formatExpression).join(', ')})`\n case 'atLeast': return `AT_LEAST ${expression.count}(${expression.items.map(formatExpression).join(', ')})`\n }\n}\n\nfunction formatJson(value: JsonValue): string {\n return typeof value === 'string' ? value : JSON.stringify(value)\n}\n\nfunction formatTime(value: string): string {\n const date = new Date(value)\n if (Number.isNaN(date.getTime())) return value\n return new Intl.DateTimeFormat(undefined, { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric' }).format(date)\n}\n\nfunction formatTimestamp(value: string): string {\n const date = new Date(value)\n if (Number.isNaN(date.getTime())) return value\n return new Intl.DateTimeFormat(undefined, { dateStyle: 'medium', timeStyle: 'short' }).format(date)\n}\n\nfunction shortDigest(value: string): string {\n return `${value.slice(0, 8)}…${value.slice(-5)}`\n}\n\nfunction shortId(value: string): string {\n return value.length <= 17 ? value : `${value.slice(0, 9)}…${value.slice(-6)}`\n}\n\nfunction formatCompactNumber(value: number): string {\n return new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1 }).format(value)\n}\n\nfunction formatTokenMetric(tokens: number | undefined, partial: boolean): string {\n if (tokens === undefined) return '—'\n const formatted = formatCompactNumber(tokens)\n return partial ? `≥${formatted}` : formatted\n}\n\nfunction formatAgentDuration(value: number): string {\n if (value < 60_000) return `${Math.max(1, Math.round(value / 1_000))}s`\n if (value < 3_600_000) return `${Math.round(value / 60_000)}m`\n return `${(value / 3_600_000).toFixed(value < 36_000_000 ? 1 : 0)}h`\n}\n\nfunction agentFlyoutStyle(position: PositionedGoal, canvasWidth: number, canvasHeight: number): CSSProperties {\n const width = 228\n const gap = 10\n const right = position.x + position.width + gap\n const left = right + width <= canvasWidth ? right : Math.max(gap, position.x - width - gap)\n const maxHeight = Math.max(150, canvasHeight - gap * 2)\n const top = Math.min(Math.max(gap, position.y - 4), Math.max(gap, canvasHeight - Math.min(250, maxHeight) - gap))\n return { left, top, width, maxHeight }\n}\n\nfunction clampZoom(value: number): number {\n return Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, Math.round(value * 10) / 10))\n}\n\n\nfunction NetworkIcon({ size = 16 }: { readonly size?: number }): JSX.Element {\n return <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"5\" r=\"2.5\" fill=\"currentColor\" /><circle cx=\"5\" cy=\"18\" r=\"2.5\" fill=\"currentColor\" /><circle cx=\"19\" cy=\"18\" r=\"2.5\" fill=\"currentColor\" /><path d=\"M10.6 7.1 6.4 15.6M13.4 7.1l4.2 8.5M7.5 18h9\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" /></svg>\n}\nfunction AgentIcon(): JSX.Element {\n return <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"8\" r=\"3.2\" stroke=\"currentColor\" strokeWidth=\"1.7\" /><path d=\"M5.5 19c.5-3.4 2.7-5.3 6.5-5.3s6 1.9 6.5 5.3\" stroke=\"currentColor\" strokeWidth=\"1.7\" strokeLinecap=\"round\" /><path d=\"M18.3 7.2h2.2M19.4 6.1v2.2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></svg>\n}\nfunction RefreshIcon(): JSX.Element {\n return <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M19 8a8 8 0 1 0 1 7M19 4v4h-4\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n}\nfunction CloseIcon(): JSX.Element {\n return <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"m6 6 12 12M18 6 6 18\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" /></svg>\n}\nfunction DockCollapseIcon(): JSX.Element {\n return <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"m14.5 6-6 6 6 6\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n}\nfunction DockExpandIcon(): JSX.Element {\n return <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"m9.5 6 6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n}\nfunction RootIcon(): JSX.Element {\n return <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M12 3 4.5 7.2v9.6L12 21l7.5-4.2V7.2L12 3Z\" stroke=\"currentColor\" strokeWidth=\"1.7\" /><circle cx=\"12\" cy=\"12\" r=\"2.3\" fill=\"currentColor\" /></svg>\n}\n","import type { SessionId } from '@deepseek-ai/dsh-session'\n/** Reliable navigation from persisted DoG invocation metadata into the canonical DSH session stage. */\n\nimport type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client'\n\nconst DEFAULT_SELECTION_TIMEOUT_MS = 2_000\n\ntype SessionNavigator = Pick<\n ISessions,\n 'list' | 'open' | 'openSubagent' | 'subagentAddress' | 'refreshSubagents'\n>\n\n/**\n * Select a persisted invocation session and confirm that DSH actually staged it.\n * Returns false only when neither the ordinary session list nor a refreshed\n * direct-parent catalog can address the target.\n */\nexport async function openInvocationSession(\n sessions: SessionNavigator,\n rawSessionId: string,\n rawParentSessionId?: string,\n timeoutMs = DEFAULT_SELECTION_TIMEOUT_MS,\n): Promise<boolean> {\n const sessionId = rawSessionId as SessionId\n if (sessions.list.getSnapshot().current === sessionId) return true\n\n if (sessions.list.getSnapshot().ids.includes(sessionId)) {\n await selectAndConfirm(sessions, sessionId, () => sessions.open(sessionId), timeoutMs)\n return true\n }\n\n let address = sessions.subagentAddress(sessionId)\n if (address === undefined && rawParentSessionId !== undefined) {\n await sessions.refreshSubagents(rawParentSessionId as SessionId)\n address = sessions.subagentAddress(sessionId)\n }\n if (address === undefined) return false\n\n await selectAndConfirm(sessions, sessionId, () => sessions.openSubagent(address), timeoutMs)\n return true\n}\n\nasync function selectAndConfirm(\n sessions: SessionNavigator,\n sessionId: SessionId,\n select: () => void,\n timeoutMs: number,\n): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n let settled = false\n let unsubscribe = (): void => undefined\n const finish = (error?: Error): void => {\n if (settled) return\n settled = true\n clearTimeout(timer)\n unsubscribe()\n if (error === undefined) resolve()\n else reject(error)\n }\n const confirm = (): void => {\n if (sessions.list.getSnapshot().current === sessionId) finish()\n }\n const timer = setTimeout(() => {\n finish(new Error(`DSH did not select session ${sessionId} within ${timeoutMs} ms`))\n }, timeoutMs)\n unsubscribe = sessions.list.subscribe(confirm)\n try {\n select()\n confirm()\n } catch (cause) {\n finish(cause instanceof Error ? cause : new Error(String(cause)))\n }\n })\n}\n","/** Scoped styles for the frame overlay; installed and removed with the client plugin fiber. */\n\nexport const DOG_DEBUG_STYLE_ID = '@dsh-external/dsh-dog/debugger'\n\nexport const DOG_DEBUG_CSS = String.raw`\n.dog-overlay-root,\n.dog-overlay-root * { box-sizing: border-box; }\n.dog-overlay-root { pointer-events: none; font-family: inherit; }\n.dog-dock {\n pointer-events: auto; position: fixed; top: 14px; right: 16px; bottom: 14px; z-index: 380;\n width: min(354px, calc(100vw - 24px)); display: flex; flex-direction: column;\n color: var(--dsw-alias-label-primary); background: color-mix(in srgb, var(--dsw-alias-bg-base) 92%, #7065e9 8%);\n border: 1px solid color-mix(in srgb, #7165e9 35%, var(--dsw-alias-border-l1)); border-radius: 16px;\n box-shadow: 0 16px 48px rgba(12, 16, 29, .22); backdrop-filter: blur(18px) saturate(1.08); overflow: hidden;\n}\n.dog-overlay-root[data-dog-dock-layout=hidden] .dog-dock { display: none; }\n.dog-overlay-root[data-dog-dock-layout=floating] .dog-dock { top: 70px; bottom: auto; max-height: min(346px, calc(100dvh - 84px)); }\n.dog-overlay-root[data-dog-dock-layout=collapsed] .dog-dock { top: 50%; right: 10px; bottom: auto; width: 46px; max-height: none; transform: translateY(-50%); border-radius: 14px; }\n.dog-dock-rail { width: 100%; min-height: 112px; border: 0; padding: 9px 4px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px; color: var(--dsw-alias-label-secondary); background: transparent; cursor: pointer; font: inherit; }\n.dog-dock-rail:hover { color: var(--dsw-alias-label-primary); background: color-mix(in srgb, #7165e9 9%, transparent); }\n.dog-dock-rail-mark { width: 28px; height: 28px; border-radius: 9px; display: grid; place-items: center; color: #fff; background: linear-gradient(145deg, #8174ff, #4b41ba); box-shadow: 0 5px 13px rgba(92, 78, 203, .22); }\n.dog-dock-rail strong { font-size: 10px; line-height: 14px; letter-spacing: .035em; }\n.dog-dock[data-collapsed=false] { display: grid; grid-template-columns: 32px minmax(0, 1fr); }\n.dog-dock-collapse-slot { min-height: 0; display: flex; align-items: center; justify-content: center; border-right: 1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 72%, transparent); background: color-mix(in srgb, #7165e9 4%, transparent); }\n.dog-dock-collapse-handle { width: 24px; height: 64px; border: 1px solid color-mix(in srgb, #7165e9 28%, var(--dsw-alias-border-l2)); border-radius: 8px; display: grid; place-items: center; color: var(--dsw-alias-label-secondary); background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 92%, #7165e9 8%); cursor: pointer; }\n.dog-dock-collapse-handle:hover { color: var(--dsw-alias-label-primary); border-color: color-mix(in srgb, #7165e9 48%, var(--dsw-alias-border-l2)); background: color-mix(in srgb, #7165e9 13%, var(--dsw-alias-bg-base)); }\n.dog-dock-content { min-width: 0; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }\n.dog-dock-header { min-height: 50px; padding: 7px 8px 7px 10px; display: flex; align-items: center; gap: 9px; border-bottom: 1px solid var(--dsw-alias-border-l2); }\n.dog-dock-mark { width: 30px; height: 30px; flex: none; border-radius: 10px; display: grid; place-items: center; color: #fff; background: linear-gradient(145deg, #8174ff, #4b41ba); box-shadow: 0 6px 16px rgba(92, 78, 203, .23); }\n.dog-dock-heading { min-width: 0; flex: 1; display: flex; flex-direction: column; }\n.dog-dock-heading h2 { margin: 0; font-size: 12px; line-height: 17px; font-weight: 680; letter-spacing: -.01em; }\n.dog-dock-heading span { color: var(--dsw-alias-label-tertiary); font-size: 9.5px; line-height: 14px; }\n.dog-dock-error { padding: 4px 10px; color: #c94a45; background: color-mix(in srgb, #d5534d 7%, transparent); font-size: 8.5px; line-height: 12px; }\n.dog-dock-list { min-height: 0; flex: 1; margin: 0; padding: 7px; list-style: none; display: flex; flex-direction: column; gap: 5px; overflow: auto; }\n.dog-dock-list li { min-width: 0; }\n.dog-dock-card { width: 100%; min-width: 0; border: 1px solid var(--dsw-alias-border-l2); border-radius: 11px; padding: 8px 9px; display: block; color: inherit; background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 92%, #7165e9 3%); cursor: pointer; text-align: left; font: inherit; transition: border-color 120ms ease, background 120ms ease, transform 120ms ease; }\n.dog-dock-card:hover { transform: translateY(-1px); border-color: color-mix(in srgb, #7165e9 42%, var(--dsw-alias-border-l2)); background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 88%, #7165e9 7%); }\n.dog-dock-card:has(.dog-state-failure), .dog-dock-card:has(.dog-state-needs_replan), .dog-dock-card:has(.dog-state-needs_human) { border-color: color-mix(in srgb, #d18135 34%, var(--dsw-alias-border-l2)); }\n.dog-dock-card-head { min-width: 0; display: flex; align-items: flex-start; gap: 7px; }\n.dog-dock-title-wrap { min-width: 0; flex: 1; display: flex; flex-direction: column; }\n.dog-dock-title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 11px; line-height: 16px; font-weight: 630; }\n.dog-dock-id { margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--dsw-alias-label-tertiary); font: 8px/12px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-dock-progress { height: 3px; margin-top: 7px; display: block; border-radius: 999px; background: color-mix(in srgb, var(--dsw-alias-label-tertiary) 16%, transparent); overflow: hidden; }\n.dog-dock-progress > span { display: block; height: 100%; border-radius: inherit; background: #7165e9; transition: width 180ms ease; }\n.dog-dock-metrics { min-width: 0; margin-top: 5px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; color: var(--dsw-alias-label-tertiary); font-size: 8px; line-height: 12px; }\n.dog-dock-metrics > span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.dog-dock-metrics strong { color: var(--dsw-alias-label-secondary); font-weight: 650; }\n.dog-dock-empty { padding: 17px 14px; display: flex; flex-direction: column; align-items: center; gap: 3px; color: var(--dsw-alias-label-tertiary); text-align: center; font-size: 9px; line-height: 14px; }\n.dog-dock-empty strong { margin-top: 3px; color: var(--dsw-alias-label-secondary); font-size: 10px; }\n.dog-dock-empty-icon { width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; color: #7165e9; background: color-mix(in srgb, #7165e9 11%, transparent); }\n.dog-dock-footer { padding: 6px 10px 7px; border-top: 1px solid var(--dsw-alias-border-l2); color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font-size: 8.5px; line-height: 12px; text-align: center; }\n.dog-dock-card:focus-visible, .dog-dock-rail:focus-visible, .dog-dock-collapse-handle:focus-visible, .dog-icon-button:focus-visible, .dog-list-button:focus-visible, .dog-node:focus-visible, .dog-agent-row:focus-visible,\n.dog-segment-button:focus-visible, .dog-zoom-button:focus-visible, .dog-runtime-session-button:focus-visible { outline: 2px solid #776cf1; outline-offset: 2px; }\n.dog-backdrop { pointer-events: auto; position: fixed; inset: 0; z-index: 400; display: block; background: var(--dsw-alias-bg-base); animation: dog-fade-in 120ms ease-out; }\n.dog-dialog {\n width: 100vw; height: 100dvh; min-height: 0; display: grid; grid-template-rows: 68px minmax(0, 1fr);\n color: var(--dsw-alias-label-primary); background: var(--dsw-alias-bg-base); overflow: hidden; animation: dog-dialog-in 160ms cubic-bezier(.2,.8,.2,1);\n}\n.dog-header { min-width: 0; padding: 0 18px 0 20px; display: flex; align-items: center; gap: 14px; border-bottom: 1px solid var(--dsw-alias-border-l2); background: color-mix(in srgb, var(--dsw-alias-bg-base) 94%, #7065e9 6%); }\n.dog-brand { min-width: 0; display: flex; align-items: center; gap: 11px; }\n.dog-brand-mark { width: 34px; height: 34px; border-radius: 11px; display: grid; place-items: center; color: #fff; background: linear-gradient(145deg, #8174ff, #4b41ba); box-shadow: 0 7px 18px rgba(92, 78, 203, .24); }\n.dog-brand-copy { min-width: 0; }\n.dog-brand-title { margin: 0; font-size: 15px; line-height: 21px; font-weight: 680; letter-spacing: -.01em; }\n.dog-brand-subtitle { margin: 1px 0 0; color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 16px; }\n.dog-header-divider { width: 1px; height: 28px; margin: 0 2px; background: var(--dsw-alias-border-l2); }\n.dog-context { min-width: 0; display: flex; flex: 1; align-items: center; gap: 9px; }\n.dog-context-title { min-width: 0; max-width: 420px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 13px; font-weight: 560; }\n.dog-revision-chip, .dog-status-chip, .dog-mini-chip { border-radius: 999px; white-space: nowrap; display: inline-flex; align-items: center; gap: 5px; }\n.dog-revision-chip { height: 24px; padding: 0 8px; color: #655acb; background: color-mix(in srgb, #7165e9 13%, transparent); font-size: 10px; font-weight: 650; letter-spacing: .045em; text-transform: uppercase; }\n.dog-header-actions { flex: none; display: flex; align-items: center; gap: 7px; }\n.dog-sync-copy { margin-right: 3px; color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font-size: 10px; white-space: nowrap; }\n.dog-icon-button, .dog-zoom-button { border: 0; color: var(--dsw-alias-label-secondary); background: transparent; cursor: pointer; font: inherit; display: inline-grid; place-items: center; }\n.dog-icon-button { width: 34px; height: 34px; border-radius: 10px; }\n.dog-icon-button:hover, .dog-zoom-button:hover { color: var(--dsw-alias-label-primary); background: var(--dsw-alias-interactive-bg-hover); }\n.dog-icon-button[aria-busy=true] svg { animation: dog-spin .8s linear infinite; }\n.dog-workspace { position: relative; min-width: 0; min-height: 0; display: grid; grid-template-columns: 246px minmax(0, 1fr) 324px; }\n.dog-sidebar, .dog-inspector { min-width: 0; min-height: 0; background: color-mix(in srgb, var(--dsw-specific-sidebar-fill, var(--dsw-alias-bg-base)) 82%, var(--dsw-alias-bg-base) 18%); overflow: auto; }\n.dog-sidebar { border-right: 1px solid var(--dsw-alias-border-l2); padding: 17px 12px 18px; }\n.dog-inspector { border-left: 1px solid var(--dsw-alias-border-l2); padding: 18px 16px 28px; }\n.dog-section-label { margin: 0 7px 9px; color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font-size: 10px; line-height: 16px; font-weight: 700; letter-spacing: .095em; text-transform: uppercase; }\n.dog-graph-list, .dog-run-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }\n.dog-sidebar-divider { height: 1px; margin: 17px 7px; background: var(--dsw-alias-border-l2); }\n.dog-list-button { width: 100%; border: 1px solid transparent; border-radius: 11px; padding: 9px 9px 8px; color: inherit; background: transparent; cursor: pointer; text-align: left; font: inherit; transition: background 120ms ease, border-color 120ms ease; }\n.dog-list-button:hover { background: var(--dsw-alias-interactive-bg-hover); }\n.dog-list-button[data-selected=true] { border-color: color-mix(in srgb, #7165e9 30%, var(--dsw-alias-border-l2)); background: color-mix(in srgb, #7165e9 10%, var(--dsw-alias-bg-base)); }\n.dog-list-row { min-width: 0; display: flex; align-items: center; gap: 8px; }\n.dog-list-title { min-width: 0; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 12px; line-height: 18px; font-weight: 590; }\n.dog-list-meta { min-width: 0; margin-top: 4px; padding-left: 16px; display: flex; align-items: center; gap: 6px; overflow: hidden; white-space: nowrap; color: var(--dsw-alias-label-tertiary); font-size: 10px; line-height: 15px; }\n.dog-list-meta > :last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.dog-list-current { color: #6e63dd; font-weight: 650; }\n.dog-state-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; background: #8a929c; box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 12%, transparent); }\n.dog-empty-small { margin: 0 7px; color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 18px; }\n.dog-main { min-width: 0; min-height: 0; display: grid; grid-template-rows: auto minmax(0, 1fr); background: var(--dsw-alias-bg-base); }\n.dog-summary { min-width: 0; padding: 14px 18px 13px; display: grid; grid-template-columns: minmax(190px, 1fr) repeat(4, minmax(82px, 116px)); gap: 10px; border-bottom: 1px solid var(--dsw-alias-border-l2); }\n.dog-summary-primary, .dog-metric { min-width: 0; min-height: 55px; border: 1px solid var(--dsw-alias-border-l2); border-radius: 12px; background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 88%, #7065e9 3%); }\n.dog-summary-primary { padding: 9px 11px; display: flex; align-items: center; gap: 11px; }\n.dog-root-orb { width: 34px; height: 34px; flex: none; border-radius: 50%; display: grid; place-items: center; color: white; }\n.dog-summary-copy { min-width: 0; }\n.dog-summary-kicker, .dog-metric-label { color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 14px; font-weight: 680; letter-spacing: .08em; text-transform: uppercase; }\n.dog-summary-value { margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 12px; line-height: 18px; font-weight: 610; }\n.dog-metric { padding: 8px 10px; }\n.dog-metric-value { margin-top: 1px; font-size: 17px; line-height: 23px; font-weight: 680; letter-spacing: -.025em; }\n.dog-canvas-shell { min-width: 0; min-height: 0; display: grid; grid-template-rows: 40px minmax(0, 1fr); }\n.dog-canvas-toolbar { padding: 0 15px 0 18px; display: flex; align-items: center; gap: 14px; border-bottom: 1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 70%, transparent); }\n.dog-legend { display: flex; align-items: center; gap: 12px; color: var(--dsw-alias-label-tertiary); font-size: 10px; }\n.dog-legend-item { display: inline-flex; align-items: center; gap: 5px; }\n.dog-legend-line { width: 21px; height: 0; border-top: 1.5px solid #857ce2; }\n.dog-legend-line[data-kind=depends] { border-top-style: dashed; border-color: #c07a39; }\n.dog-canvas-spacer { flex: 1; }\n.dog-zoom { height: 28px; padding: 0 3px; border: 1px solid var(--dsw-alias-border-l2); border-radius: 9px; display: flex; align-items: center; }\n.dog-zoom-button { width: 24px; height: 22px; border-radius: 6px; font-size: 15px; }\n.dog-zoom-value { width: 39px; text-align: center; color: var(--dsw-alias-label-tertiary); font-size: 10px; }\n.dog-canvas-scroll { min-width: 0; min-height: 0; position: relative; overflow: auto; background-color: color-mix(in srgb, var(--dsw-alias-bg-base) 96%, #7065e9 4%); background-image: radial-gradient(color-mix(in srgb, var(--dsw-alias-label-tertiary) 20%, transparent) .7px, transparent .7px); background-size: 20px 20px; }\n.dog-canvas-stage-wrap { position: relative; margin: 0 auto; }\n.dog-canvas-stage { position: absolute; top: 0; left: 0; transform-origin: top left; }\n.dog-edges { position: absolute; inset: 0; overflow: visible; pointer-events: none; }\n.dog-edge { fill: none; stroke-width: 1.5; }\n.dog-edge[data-kind=contains] { stroke: #857ce2; }\n.dog-edge[data-kind=dependsOn] { stroke: #c07a39; stroke-width: 1.35; stroke-dasharray: 6 5; }\n.dog-edge[data-muted=true] { opacity: .22; }\n.dog-edge[data-highlighted=true] { stroke-width: 2.4; filter: drop-shadow(0 0 3px color-mix(in srgb, currentColor 45%, transparent)); }\n.dog-node { position: absolute; border: 1px solid var(--dsw-alias-border-l2); border-radius: 14px; padding: 10px 11px 9px; display: flex; flex-direction: column; color: var(--dsw-alias-label-primary); background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 94%, #7165e9 2%); box-shadow: 0 4px 14px rgba(14, 18, 29, .05); cursor: pointer; text-align: left; font: inherit; transition: border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease; }\n.dog-node:hover { transform: translateY(-2px); border-color: color-mix(in srgb, #7165e9 45%, var(--dsw-alias-border-l2)); box-shadow: 0 8px 22px rgba(28, 31, 52, .11); }\n.dog-node[data-selected=true] { border-color: #7165e9; box-shadow: 0 0 0 3px color-mix(in srgb, #7165e9 14%, transparent), 0 9px 24px rgba(28,31,52,.12); }\n.dog-node[data-root=true] { background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 88%, #7165e9 8%); }\n.dog-node-top { display: flex; align-items: center; gap: 7px; }\n.dog-node-kind { flex: 1; color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 13px; font-weight: 700; letter-spacing: .085em; text-transform: uppercase; }\n.dog-node-root { color: #6c61d6; }\n.dog-node-title { margin-top: 8px; min-height: 34px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; font-size: 12px; line-height: 17px; font-weight: 620; }\n.dog-node-foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 7px; }\n.dog-node-id { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font: 9px/13px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-status-chip { height: 19px; padding: 0 6px; color: var(--dog-state-color); background: color-mix(in srgb, var(--dog-state-color) 13%, transparent); font-size: 9px; line-height: 14px; font-weight: 700; letter-spacing: .035em; text-transform: uppercase; }\n.dog-status-chip:before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: var(--dog-state-color); }\n.dog-node[data-agents-expanded=true] { border-color: color-mix(in srgb, #7165e9 62%, var(--dsw-alias-border-l2)); }\n.dog-node-agents { flex: none; display: inline-flex; align-items: center; gap: 3px; color: #6b60d4; font-size: 9px; line-height: 13px; font-weight: 650; }\n.dog-agent-flyout { position: absolute; z-index: 8; min-height: 116px; display: flex; flex-direction: column; color: var(--dsw-alias-label-primary); background: color-mix(in srgb, var(--dsw-alias-bg-base) 96%, #7165e9 4%); border: 1px solid color-mix(in srgb, #7165e9 35%, var(--dsw-alias-border-l2)); border-radius: 13px; box-shadow: 0 14px 34px rgba(12, 16, 29, .22); overflow: hidden; }\n.dog-agent-flyout-head { min-height: 35px; padding: 6px 7px 6px 9px; display: flex; align-items: center; gap: 6px; border-bottom: 1px solid var(--dsw-alias-border-l2); }\n.dog-agent-flyout-head > span { min-width: 0; flex: 1; display: inline-flex; align-items: center; gap: 5px; font-size: 9.5px; line-height: 14px; font-weight: 680; }\n.dog-agent-flyout-head button { width: 25px; height: 25px; border: 0; border-radius: 7px; display: grid; place-items: center; color: var(--dsw-alias-label-tertiary); background: transparent; cursor: pointer; }\n.dog-agent-flyout-head button:hover { color: var(--dsw-alias-label-primary); background: var(--dsw-alias-interactive-bg-hover); }\n.dog-agent-list { min-height: 0; margin: 0; padding: 5px; list-style: none; overflow: auto; }\n.dog-agent-list li + li { margin-top: 3px; }\n.dog-agent-row { width: 100%; min-width: 0; border: 0; border-radius: 8px; padding: 7px 6px; display: grid; grid-template-columns: 8px minmax(0, 1fr) auto; align-items: center; gap: 7px; color: inherit; background: transparent; cursor: pointer; text-align: left; font: inherit; }\n.dog-agent-row:hover { background: var(--dsw-alias-interactive-bg-hover); }\n.dog-agent-row:disabled { cursor: wait; opacity: .66; }\n.dog-agent-state { width: 7px; height: 7px; border-radius: 50%; background: var(--dog-state-color); box-shadow: 0 0 0 3px color-mix(in srgb, var(--dog-state-color) 12%, transparent); }\n.dog-agent-copy, .dog-agent-metrics { min-width: 0; display: flex; flex-direction: column; }\n.dog-agent-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 9.5px; line-height: 14px; font-weight: 630; }\n.dog-agent-meta { color: var(--dsw-alias-label-tertiary); font-size: 8px; line-height: 12px; }\n.dog-agent-metrics { align-items: flex-end; color: var(--dsw-alias-label-tertiary); font: 8px/12px ui-monospace, SFMono-Regular, Menlo, monospace; white-space: nowrap; }\n.dog-agent-empty { margin: auto 0; padding: 13px 10px; color: var(--dsw-alias-label-tertiary); text-align: center; font-size: 9px; line-height: 14px; }\n.dog-agent-hint { padding: 5px 8px 6px; border-top: 1px solid var(--dsw-alias-border-l2); color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); text-align: center; font-size: 7.5px; line-height: 11px; }\n.dog-agent-error { padding: 5px 8px; color: #c94a45; background: color-mix(in srgb, #d5534d 7%, transparent); font-size: 8px; line-height: 12px; overflow-wrap: anywhere; }\n.dog-inspector-head { display: flex; align-items: flex-start; gap: 10px; }\n.dog-inspector-title-wrap { min-width: 0; flex: 1; }\n.dog-inspector-eyebrow { color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 14px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }\n.dog-inspector-title { margin: 3px 0 0; overflow-wrap: anywhere; font-size: 15px; line-height: 21px; font-weight: 660; }\n.dog-inspector-chips { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 6px; }\n.dog-mini-chip { height: 21px; padding: 0 7px; color: var(--dsw-alias-label-secondary); background: var(--dsw-alias-interactive-bg-hover); font-size: 9px; font-weight: 650; text-transform: uppercase; letter-spacing: .045em; }\n.dog-inspector-section { margin-top: 18px; }\n.dog-inspector-section-title { margin: 0 0 8px; color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 14px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }\n.dog-reason { border: 1px solid color-mix(in srgb, var(--dog-state-color) 33%, var(--dsw-alias-border-l2)); border-radius: 10px; padding: 9px 10px; color: var(--dsw-alias-label-secondary); background: color-mix(in srgb, var(--dog-state-color) 7%, transparent); font-size: 11px; line-height: 17px; overflow-wrap: anywhere; }\n.dog-definition { margin: 0; display: grid; grid-template-columns: minmax(82px, .7fr) minmax(0, 1.3fr); gap: 7px 9px; font-size: 10px; line-height: 16px; }\n.dog-definition dt { color: var(--dsw-alias-label-tertiary); }\n.dog-definition dd { min-width: 0; margin: 0; color: var(--dsw-alias-label-secondary); overflow-wrap: anywhere; }\n.dog-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 9.5px; }\n.dog-evidence { border: 1px solid var(--dsw-alias-border-l2); border-radius: 11px; overflow: hidden; }\n.dog-evidence-head { min-height: 35px; padding: 7px 9px; display: flex; align-items: center; gap: 8px; background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 90%, #7165e9 4%); border-bottom: 1px solid var(--dsw-alias-border-l2); }\n.dog-evidence-name { min-width: 0; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font: 10px/16px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-evidence-body { padding: 8px 9px 9px; }\n.dog-observation { margin: 0; display: grid; gap: 5px; }\n.dog-observation-row { display: grid; grid-template-columns: minmax(76px, .75fr) minmax(0, 1.25fr); gap: 8px; font-size: 10px; line-height: 15px; }\n.dog-observation-key { color: var(--dsw-alias-label-tertiary); overflow-wrap: anywhere; }\n.dog-observation-value { color: var(--dsw-alias-label-secondary); overflow-wrap: anywhere; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-relation-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; }\n.dog-relation { border-left: 2px solid #857ce2; padding-left: 8px; color: var(--dsw-alias-label-secondary); font-size: 10px; line-height: 15px; }\n.dog-relation[data-kind=dependsOn] { border-color: #c07a39; }\n.dog-relation strong { color: var(--dsw-alias-label-primary); font-weight: 600; }\n.dog-raw { border: 1px solid var(--dsw-alias-border-l2); border-radius: 10px; overflow: hidden; }\n.dog-raw summary { padding: 7px 9px; color: var(--dsw-alias-label-secondary); cursor: pointer; font-size: 10px; }\n.dog-raw pre { max-height: 240px; margin: 0; padding: 9px; border-top: 1px solid var(--dsw-alias-border-l2); color: var(--dsw-alias-label-tertiary); background: color-mix(in srgb, var(--dsw-alias-bg-base) 94%, #000 6%); white-space: pre-wrap; overflow: auto; font: 9px/15px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-runtime-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }\n.dog-runtime-heading .dog-inspector-section-title { margin-bottom: 8px; }\n.dog-runtime-live { display: inline-flex; align-items: center; gap: 5px; color: #3c7fe1; font-size: 9px; font-weight: 650; letter-spacing: .04em; text-transform: uppercase; }\n.dog-runtime-pulse { width: 6px; height: 6px; border-radius: 50%; background: #3c7fe1; box-shadow: 0 0 0 0 rgba(60,127,225,.35); animation: dog-runtime-pulse 1.5s ease-out infinite; }\n.dog-runtime-card { min-width: 0; border: 1px solid color-mix(in srgb, var(--dog-state-color) 25%, var(--dsw-alias-border-l2)); border-radius: 11px; padding: 9px 10px; display: flex; align-items: center; gap: 9px; background: color-mix(in srgb, var(--dog-state-color) 6%, var(--dsw-alias-bg-base)); }\n.dog-runtime-orb { width: 10px; height: 10px; flex: none; border-radius: 50%; background: var(--dog-state-color); box-shadow: 0 0 0 4px color-mix(in srgb, var(--dog-state-color) 13%, transparent); }\n.dog-runtime-card-copy { min-width: 0; }\n.dog-runtime-activity { color: var(--dsw-alias-label-primary); overflow-wrap: anywhere; font-size: 11px; line-height: 16px; font-weight: 620; }\n.dog-runtime-meta { margin-top: 2px; color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 14px; }\n.dog-runtime-warning { margin-top: 7px; border: 1px solid color-mix(in srgb, #d18135 28%, var(--dsw-alias-border-l2)); border-radius: 9px; padding: 7px 8px; color: #b66d28; background: color-mix(in srgb, #d18135 7%, transparent); overflow-wrap: anywhere; font-size: 9.5px; line-height: 15px; }\n.dog-runtime-error { margin-top: 8px; border-left: 3px solid var(--dog-state-color); border-radius: 8px; padding: 8px 9px; display: flex; flex-direction: column; gap: 3px; color: var(--dsw-alias-label-secondary); background: color-mix(in srgb, var(--dog-state-color) 8%, transparent); font-size: 9.5px; line-height: 15px; overflow-wrap: anywhere; }\n.dog-runtime-error strong { color: var(--dog-state-color); font-size: 9px; letter-spacing: .035em; text-transform: uppercase; }\n.dog-runtime-session { margin-top: 8px; border: 1px solid var(--dsw-alias-border-l2); border-radius: 10px; padding: 8px 9px; background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 92%, #7165e9 3%); }\n.dog-runtime-session-head { margin-bottom: 7px; display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--dsw-alias-label-secondary); font-size: 10px; font-weight: 620; }\n.dog-runtime-session-button { flex: none; border: 1px solid color-mix(in srgb, #7165e9 32%, var(--dsw-alias-border-l2)); border-radius: 7px; padding: 4px 7px; color: #655acb; background: color-mix(in srgb, #7165e9 8%, var(--dsw-alias-bg-base)); cursor: pointer; font: 600 9px/13px inherit; }\n.dog-runtime-session-button:hover { background: color-mix(in srgb, #7165e9 15%, var(--dsw-alias-bg-base)); }\n.dog-runtime-session-button:disabled { cursor: wait; opacity: .62; }\n.dog-runtime-session-error { margin-top: 7px; color: #c94a45; font-size: 9px; line-height: 14px; overflow-wrap: anywhere; }\n.dog-runtime-empty { margin: 8px 0 0; }\n.dog-runtime-timeline { margin: 10px 0 0; padding: 0; list-style: none; }\n.dog-runtime-event { --dog-runtime-line: color-mix(in srgb, var(--dog-state-color) 32%, var(--dsw-alias-border-l2)); position: relative; min-width: 0; padding: 0 0 12px 19px; }\n.dog-runtime-event:not(:last-child):before { content: ''; position: absolute; left: 4px; top: 10px; bottom: 0; width: 1px; background: var(--dog-runtime-line); }\n.dog-runtime-marker { position: absolute; left: 0; top: 4px; width: 9px; height: 9px; border: 2px solid var(--dsw-alias-bg-base); border-radius: 50%; background: var(--dog-state-color); box-shadow: 0 0 0 1px var(--dog-runtime-line); }\n.dog-runtime-event-copy { min-width: 0; }\n.dog-runtime-event-head { min-width: 0; display: flex; align-items: baseline; justify-content: space-between; gap: 7px; color: var(--dsw-alias-label-secondary); font-size: 9.5px; line-height: 14px; }\n.dog-runtime-event-head strong { min-width: 0; overflow-wrap: anywhere; font-weight: 620; }\n.dog-runtime-event-head time { flex: none; color: var(--dsw-alias-label-tertiary); font-size: 8.5px; }\n.dog-runtime-event-meta { margin-top: 1px; color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font: 8px/12px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-runtime-event-detail { margin-top: 3px; color: var(--dsw-alias-label-tertiary); overflow-wrap: anywhere; font-size: 9px; line-height: 14px; }\n.dog-runtime-raw { margin-top: 4px; }\n.dog-empty { grid-column: 1 / -1; min-height: 320px; display: grid; place-items: center; padding: 40px; text-align: center; }\n.dog-empty-card { max-width: 380px; }\n.dog-empty-icon { width: 48px; height: 48px; margin: 0 auto 13px; border-radius: 16px; display: grid; place-items: center; color: #7165e9; background: color-mix(in srgb, #7165e9 12%, transparent); }\n.dog-empty-title { margin: 0; font-size: 15px; line-height: 22px; font-weight: 650; }\n.dog-empty-copy { margin: 6px 0 0; color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 18px; }\n.dog-error-banner { margin: 12px 18px 0; border: 1px solid color-mix(in srgb, #d5534d 35%, var(--dsw-alias-border-l2)); border-radius: 10px; padding: 8px 10px; color: #c94a45; background: color-mix(in srgb, #d5534d 8%, transparent); font-size: 11px; line-height: 17px; }\n.dog-loading { opacity: .65; }\n.dog-state-success { --dog-state-color: #1c9a69; }\n.dog-state-failure { --dog-state-color: #d5534d; }\n.dog-state-needs_human { --dog-state-color: #d18135; }\n.dog-state-partial { --dog-state-color: #b88a22; }\n.dog-state-blocked, .dog-state-cancelled, .dog-state-invalidated { --dog-state-color: #828b97; }\n.dog-state-running { --dog-state-color: #3c7fe1; }\n.dog-state-pending, .dog-state-created { --dog-state-color: #8c859f; }\n.dog-state-partial_success { --dog-state-color: #b88a22; }\n.dog-state-infeasible, .dog-state-needs_replan { --dog-state-color: #d18135; }\n.dog-root-orb { background: var(--dog-state-color); box-shadow: 0 7px 18px color-mix(in srgb, var(--dog-state-color) 26%, transparent); }\n@keyframes dog-fade-in { from { opacity: 0; } }\n@keyframes dog-dialog-in { from { opacity: 0; transform: translateY(8px) scale(.992); } }\n@keyframes dog-runtime-pulse { 70%, 100% { box-shadow: 0 0 0 6px rgba(60,127,225,0); } }\n@keyframes dog-spin { to { transform: rotate(360deg); } }\n@media (max-width: 1180px) {\n .dog-workspace { grid-template-columns: 220px minmax(0, 1fr) 292px; }\n .dog-summary { grid-template-columns: minmax(170px, 1fr) repeat(4, minmax(76px, 92px)); gap: 7px; }\n}\n@media (min-width: 981px) and (max-width: 1080px) {\n .dog-workspace { grid-template-columns: 190px minmax(0, 1fr) 270px; }\n .dog-summary { grid-template-columns: minmax(160px, 1fr) repeat(3, minmax(72px, 84px)); }\n .dog-metric:last-child { display: none; }\n}\n@media (max-width: 980px) {\n .dog-dialog { width: 100%; height: 100dvh; min-height: 0; }\n .dog-workspace { grid-template-columns: 210px minmax(0, 1fr); }\n .dog-inspector { position: absolute; z-index: 3; top: 0; right: 0; bottom: 0; width: min(330px, 84%); box-shadow: -16px 0 36px rgba(7, 10, 18, .16); }\n .dog-summary { grid-template-columns: minmax(170px, 1fr) repeat(3, minmax(72px, 88px)); }\n .dog-metric:last-child { display: none; }\n}\n@media (max-width: 720px) {\n .dog-overlay-root[data-dog-dock-layout=floating] .dog-dock { top: 64px; right: 8px; bottom: auto; width: calc(100vw - 16px); max-height: min(286px, calc(100dvh - 72px)); }\n .dog-workspace { grid-template-columns: 1fr; }\n .dog-sidebar { display: none; }\n .dog-header-divider, .dog-brand-subtitle, .dog-sync-copy { display: none; }\n .dog-summary { grid-template-columns: minmax(145px, 1fr) repeat(2, minmax(66px, 76px)); padding-inline: 10px; }\n .dog-metric:nth-of-type(n+4) { display: none; }\n}\n@media (prefers-reduced-motion: reduce) {\n .dog-launcher, .dog-node, .dog-backdrop, .dog-dialog, .dog-runtime-pulse { animation: none; transition: none; }\n}\n`\n","import { useEffect, useState } from 'react'\n/** Browser half: a frame overlay that visualizes persisted DoG revisions and runs. */\n\nimport type { ConnectionHandle } from '@deepseek-ai/dsh-client-connection/client'\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-ui-session/client'\nimport type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client'\nimport type { SessionId } from '@deepseek-ai/dsh-session'\nimport type {} from '@deepseek-ai/dsh-client-ui-renderer/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-layout/client'\nimport {\n DOG_DEBUG_RPC_CHANNEL,\n DOG_DEBUG_SNAPSHOT_ENDPOINT,\n DOG_RUNTIME_TRACE_ENDPOINT,\n} from '../debug-contract.ts'\nimport { DogDebugger } from './DogDebugger.tsx'\nimport { openInvocationSession } from './sessionNavigation.ts'\nimport { DOG_DEBUG_CSS, DOG_DEBUG_STYLE_ID } from './styles.ts'\n\n/** The overlay uses the shared trusted RPC transport and canonical session navigator. */\nexport const inject = ['slots', 'sessions', 'connection', 'uiSession']\n\n/** Register the debugger beside other frame-wide overlays without replacing shipped UI. */\nexport function apply(ctx: ClientContext): void {\n const connection = ctx.get('connection') as unknown as ConnectionHandle\n const sessions = ctx.get('sessions') as unknown as ISessions\n const call = async (endpoint: string, payload: unknown, signal?: AbortSignal): Promise<unknown> => {\n const result = await connection.rpc.call(DOG_DEBUG_RPC_CHANNEL, endpoint, payload, signal)\n if (!result.ok) throw new Error(result.error.message)\n return result.value\n }\n const openSession = (sessionId: string, parentSessionId?: string): Promise<boolean> =>\n openInvocationSession(sessions, sessionId, parentSessionId)\n let lastSessions = sessions.list.getSnapshot()\n let lastPending = ctx.uiSession.pendingInteractions.getSnapshot()\n let combined = { ...lastSessions, pendingInteractions: lastPending }\n const getSessionState = () => {\n const next = sessions.list.getSnapshot()\n const pending = ctx.uiSession.pendingInteractions.getSnapshot()\n if (next !== lastSessions || pending !== lastPending) {\n lastSessions = next; lastPending = pending\n combined = { ...next, pendingInteractions: pending }\n }\n return combined\n }\n const subscribeSessions = (listener: () => void) => {\n const stopSession = sessions.list.subscribe(listener)\n const stopPending = ctx.uiSession.pendingInteractions.subscribe(listener)\n return () => { stopSession(); stopPending() }\n }\n const DogDebuggerHost = (): JSX.Element | null => {\n const [request, setRequest] = useState(0)\n useEffect(() => {\n const show = () => setRequest(value => value + 1)\n window.addEventListener('openwrite:dog-open', show)\n return () => window.removeEventListener('openwrite:dog-open', show)\n }, [])\n return request === 0 ? null : <DogDebugger key={request} initialOpen hideDock\n readSnapshot={signal => call(DOG_DEBUG_SNAPSHOT_ENDPOINT, {}, signal)}\n readGoalRuntime={(runId, goalId, signal) => call(DOG_RUNTIME_TRACE_ENDPOINT, { runId, goalId }, signal)}\n openSession={openSession}\n getSessionState={getSessionState}\n subscribeSessions={subscribeSessions}\n refreshAgentCatalog={parentSessionId => sessions.refreshSubagents(parentSessionId as SessionId)}\n />\n }\n ctx.effect(installStyles, 'dog-debugger: styles')\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'openwrite.dog-debugger',\n order: 80,\n }, DogDebuggerHost))\n}\n\nfunction installStyles(): () => void {\n const existing = document.querySelector<HTMLStyleElement>(`style[data-plugin-css=\"${DOG_DEBUG_STYLE_ID}\"]`)\n if (existing !== null) return () => undefined\n const style = document.createElement('style')\n style.dataset.plugin = '@dsh-external/dsh-dog'\n style.dataset.pluginCss = DOG_DEBUG_STYLE_ID\n style.textContent = DOG_DEBUG_CSS\n document.head.appendChild(style)\n return () => style.remove()\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["isRecord","useState","useRef","useSyncExternalStore","useCallback","useMemo","Fragment","useState"],"sources":["../src/debug-contract.ts","../src/client/agentTelemetry.ts","../src/client/graph-layout.ts","../src/logic.ts","../src/model.ts","../src/graph.ts","../src/client/snapshot.ts","../src/client/DogDebugger.tsx","../src/client/sessionNavigation.ts","../src/client/styles.ts","../src/client/sessionState.ts","../src/client/index.tsx"],"sourcesContent":["/** Shared browser-safe debugger protocol. */\nimport type { CompiledGraph, DogRun } from './model.ts'\n\nexport const DOG_DEBUG_RPC_CHANNEL = '/dog-rpc'\nexport const DOG_DEBUG_SNAPSHOT_ENDPOINT = 'snapshot'\nexport const DOG_RUNTIME_TRACE_ENDPOINT = 'goal-runtime'\n\n/** One immutable graph revision and every run bound to that exact digest. */\nexport interface DogDebugGraphRevision {\n readonly graph: CompiledGraph\n readonly current: boolean\n readonly runs: readonly DogRun[]\n}\n\n/** Complete, point-in-time view exposed to the debugger. */\nexport interface DogDebugSnapshot {\n readonly schemaVersion: '0.1'\n readonly generatedAt: string\n readonly graphs: readonly DogDebugGraphRevision[]\n}\n\n","import type { SessionId } from '@deepseek-ai/dsh-session'\n/** Live DSH session telemetry projected onto persisted DoG Agent bindings. */\n\nimport type { SessionListState, SessionSummary } from '@deepseek-ai/dsh-api-session-controller/client'\nimport type { DogDebugSnapshot } from '../debug-contract.ts'\nimport type { DogRun, GoalAgentSessionRef, GoalState } from '../model.ts'\n\nexport interface GoalAgentTelemetry {\n readonly ref: GoalAgentSessionRef\n readonly label: string\n readonly available: boolean\n readonly running: boolean\n readonly needsInput: boolean\n readonly tokens?: number\n readonly durationMs?: number\n}\n\nexport interface RunAgentSummary {\n readonly linked: number\n readonly visible: number\n readonly running: number\n readonly tokens?: number\n readonly partialTokens: boolean\n}\n\n/** Stable, de-duplicated bindings for one goal. */\nexport function goalAgentRefs(run: DogRun | undefined, goalId: string): readonly GoalAgentSessionRef[] {\n if (run === undefined) return []\n const seen = new Set<string>()\n const result: GoalAgentSessionRef[] = []\n for (const ref of run.goals[goalId]?.agentSessions ?? []) {\n if (seen.has(ref.sessionId)) continue\n seen.add(ref.sessionId)\n result.push(ref)\n }\n return result\n}\n\n/** Stable, de-duplicated Agent bindings across a run. */\nexport function runAgentRefs(run: DogRun | undefined): readonly GoalAgentSessionRef[] {\n if (run === undefined) return []\n const seen = new Set<string>()\n const result: GoalAgentSessionRef[] = []\n for (const goal of Object.values(run.goals)) {\n for (const ref of goal.agentSessions ?? []) {\n if (seen.has(ref.sessionId)) continue\n seen.add(ref.sessionId)\n result.push(ref)\n }\n }\n return result\n}\n\n/** Direct parent catalogs that can resolve bound subagent sessions in the host UI. */\nexport function agentParentSessionIds(snapshot: DogDebugSnapshot): readonly string[] {\n const parents = new Set<string>()\n for (const revision of snapshot.graphs) {\n for (const run of revision.runs) {\n for (const ref of runAgentRefs(run)) {\n if (ref.parentSessionId !== undefined) parents.add(ref.parentSessionId)\n }\n }\n }\n return [...parents]\n}\n\n/** Merge one persisted binding with the newest host-projected session facts. */\nexport function goalAgentTelemetry(\n ref: GoalAgentSessionRef,\n sessions: SessionListState & { pendingInteractions?: ReadonlyMap<string, unknown> },\n now = Date.now(),\n): GoalAgentTelemetry {\n const summary = sessions.byId[ref.sessionId as SessionId]\n const tokens = summary === undefined ? undefined : sessionTokenTotal(summary)\n const durationMs = summary === undefined ? undefined : sessionDuration(summary, now)\n return {\n ref,\n label: summary?.displayTitle ?? summary?.title ?? `${capitalize(ref.role)} Agent`,\n available: summary !== undefined,\n running: summary?.running ?? false,\n needsInput: sessions.pendingInteractions?.has(ref.sessionId) ?? false,\n ...(tokens === undefined ? {} : { tokens }),\n ...(durationMs === undefined ? {} : { durationMs }),\n }\n}\n\n/** DoG-level Agent counts and de-duplicated token usage. */\nexport function summarizeRunAgents(\n run: DogRun | undefined,\n sessions: SessionListState & { pendingInteractions?: ReadonlyMap<string, unknown> },\n now = Date.now(),\n): RunAgentSummary {\n const refs = runAgentRefs(run)\n let visible = 0\n let running = 0\n let tokens = 0\n let measured = 0\n for (const ref of refs) {\n const telemetry = goalAgentTelemetry(ref, sessions, now)\n if (telemetry.available) visible += 1\n if (telemetry.running) running += 1\n if (telemetry.tokens !== undefined) {\n tokens += telemetry.tokens\n measured += 1\n }\n }\n return {\n linked: refs.length,\n visible,\n running,\n ...(measured === 0 ? {} : { tokens }),\n partialTokens: measured > 0 && measured < refs.length,\n }\n}\n\n/** Count goals that reached any terminal state, independently of success. */\nexport function settledGoalCount(run: DogRun | undefined): number {\n if (run === undefined) return 0\n return Object.values(run.goals).filter(result => isTerminalGoalState(result.state)).length\n}\n\nfunction isTerminalGoalState(state: GoalState): boolean {\n return state !== 'pending' && state !== 'running'\n}\n\nfunction sessionTokenTotal(summary: SessionSummary): number | undefined {\n const projections = summary.projectionValues as Readonly<Record<string, unknown>> | undefined\n const usage = projections?.tokenUsage\n if (!isRecord(usage)) return undefined\n const uncached = finiteNonNegative(usage.uncachedInputTokens)\n const output = finiteNonNegative(usage.outputTokens)\n const cacheRead = finiteNonNegative(usage.cacheReadTokens)\n const cacheWrite = finiteNonNegative(usage.cacheWriteTokens)\n if (uncached === undefined || output === undefined || cacheRead === undefined || cacheWrite === undefined) return undefined\n return uncached + output + cacheRead + cacheWrite\n}\n\nfunction sessionDuration(summary: SessionSummary, now: number): number | undefined {\n const projections = summary.projectionValues as Readonly<Record<string, unknown>> | undefined\n const timing = projections?.subagentTiming\n if (!isRecord(timing)) return undefined\n const settledMs = finiteNonNegative(timing.settledMs)\n if (settledMs === undefined) return undefined\n if (!isRecord(timing.active)) return settledMs\n const since = finiteNumber(timing.active.since)\n const through = finiteNumber(timing.active.through)\n if (since === undefined || through === undefined) return settledMs\n const end = summary.running ? now : through\n return settledMs + Math.max(0, end - since)\n}\n\nfunction finiteNonNegative(value: unknown): number | undefined {\n const number = finiteNumber(value)\n return number === undefined || number < 0 ? undefined : number\n}\n\nfunction finiteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction capitalize(value: string): string {\n return value.length === 0 ? value : `${value[0]?.toUpperCase() ?? ''}${value.slice(1)}`\n}\n","/** Deterministic browser-side layout for containment and dependency edges. */\n\nimport type { DogGraphInput } from '../model.ts'\n\nexport const GOAL_WIDTH = 218\nexport const GOAL_HEIGHT = 88\nconst HORIZONTAL_GAP = 44\nconst VERTICAL_GAP = 92\nconst CANVAS_PADDING_X = 56\nconst CANVAS_PADDING_Y = 48\nconst MIN_CANVAS_WIDTH = 700\n\nexport interface PositionedGoal {\n readonly id: string\n readonly x: number\n readonly y: number\n readonly width: number\n readonly height: number\n readonly depth: number\n}\n\nexport interface PositionedEdge {\n readonly id: string\n readonly kind: 'contains' | 'dependsOn'\n readonly source: string\n readonly target: string\n readonly path: string\n}\n\nexport interface DagLayout {\n readonly width: number\n readonly height: number\n readonly nodes: readonly PositionedGoal[]\n readonly edges: readonly PositionedEdge[]\n}\n\n/** Lay containment levels top-to-bottom while retaining declared node order within a level. */\nexport function layoutDag(graph: DogGraphInput): DagLayout {\n const parents = new Map<string, string[]>()\n for (const edge of graph.contains) {\n const values = parents.get(edge.child) ?? []\n values.push(edge.parent)\n parents.set(edge.child, values)\n }\n const depths = new Map<string, number>()\n const visiting = new Set<string>()\n const depthOf = (id: string): number => {\n const known = depths.get(id)\n if (known !== undefined) return known\n if (id === graph.root) {\n depths.set(id, 0)\n return 0\n }\n if (visiting.has(id)) return 0\n visiting.add(id)\n const incoming = parents.get(id) ?? []\n const depth = incoming.length === 0 ? 0 : Math.max(...incoming.map(parent => depthOf(parent) + 1))\n visiting.delete(id)\n depths.set(id, depth)\n return depth\n }\n\n const layers = new Map<number, string[]>()\n for (const id of Object.keys(graph.nodes)) {\n const depth = depthOf(id)\n const layer = layers.get(depth) ?? []\n layer.push(id)\n layers.set(depth, layer)\n }\n const layerEntries = [...layers.entries()].sort(([left], [right]) => left - right)\n const widest = Math.max(1, ...layerEntries.map(([, ids]) => ids.length))\n const naturalWidth = widest * GOAL_WIDTH + Math.max(0, widest - 1) * HORIZONTAL_GAP + CANVAS_PADDING_X * 2\n const width = Math.max(MIN_CANVAS_WIDTH, naturalWidth)\n const positioned: PositionedGoal[] = []\n for (const [depth, ids] of layerEntries) {\n const layerWidth = ids.length * GOAL_WIDTH + Math.max(0, ids.length - 1) * HORIZONTAL_GAP\n const startX = (width - layerWidth) / 2\n ids.forEach((id, index) => positioned.push({\n id,\n x: startX + index * (GOAL_WIDTH + HORIZONTAL_GAP),\n y: CANVAS_PADDING_Y + depth * (GOAL_HEIGHT + VERTICAL_GAP),\n width: GOAL_WIDTH,\n height: GOAL_HEIGHT,\n depth,\n }))\n }\n const maximumDepth = Math.max(0, ...positioned.map(node => node.depth))\n const height = CANVAS_PADDING_Y * 2 + GOAL_HEIGHT + maximumDepth * (GOAL_HEIGHT + VERTICAL_GAP)\n const byId = new Map(positioned.map(node => [node.id, node]))\n const edges: PositionedEdge[] = []\n graph.contains.forEach((edge, index) => {\n const source = byId.get(edge.parent)\n const target = byId.get(edge.child)\n if (source === undefined || target === undefined) return\n edges.push({\n id: `contains:${index}:${edge.parent}:${edge.child}`,\n kind: 'contains',\n source: edge.parent,\n target: edge.child,\n path: containmentPath(source, target),\n })\n })\n graph.dependsOn.forEach((edge, index) => {\n const source = byId.get(edge.source)\n const target = byId.get(edge.target)\n if (source === undefined || target === undefined) return\n edges.push({\n id: `depends:${index}:${edge.source}:${edge.target}`,\n kind: 'dependsOn',\n source: edge.source,\n target: edge.target,\n // \"source depends on target\" means target runs first, so the edge is\n // drawn target -> source (dependency arrow points at the dependent).\n path: dependencyPath(target, source, index),\n })\n })\n return { width, height, nodes: positioned, edges }\n}\n\nfunction containmentPath(source: PositionedGoal, target: PositionedGoal): string {\n const startX = source.x + source.width / 2\n const startY = source.y + source.height\n const endX = target.x + target.width / 2\n const endY = target.y\n const middleY = startY + (endY - startY) / 2\n return `M ${startX} ${startY} C ${startX} ${middleY}, ${endX} ${middleY}, ${endX} ${endY}`\n}\n\nfunction dependencyPath(source: PositionedGoal, target: PositionedGoal, index: number): string {\n const sourceCenterX = source.x + source.width / 2\n const targetCenterX = target.x + target.width / 2\n const rightward = targetCenterX >= sourceCenterX\n const startX = rightward ? source.x + source.width : source.x\n const endX = rightward ? target.x : target.x + target.width\n const startY = source.y + source.height / 2\n const endY = target.y + target.height / 2\n const bend = (rightward ? 1 : -1) * (54 + (index % 3) * 12)\n return `M ${startX} ${startY} C ${startX + bend} ${startY}, ${endX - bend} ${endY}, ${endX} ${endY}`\n}\n","/** Restricted, non-interpreted Boolean expressions for DoG completion rules. */\n\nimport type { AllExpr, AnyExpr, AtLeastExpr, BoolExpr, NotExpr, RefExpr } from './model.ts'\n\nexport type TruthValue = true | false | 'unknown'\n\nexport interface ExpressionLimits {\n readonly maxNodes: number\n readonly maxDepth: number\n}\n\nexport interface ParsedExpression {\n readonly expression?: BoolExpr\n readonly errors: readonly string[]\n}\n\n/**\n * Parse and type-check the only expression language accepted by DoG.\n * @param value - untrusted JSON value from a graph draft.\n * @param allowedRefs - child IDs that the enclosing composite may reference.\n * @param limits - expression size limits.\n * @returns a typed AST or validation errors; never evaluates source text.\n */\nexport function parseBoolExpr(\n value: unknown,\n allowedRefs: ReadonlySet<string>,\n limits: ExpressionLimits,\n): ParsedExpression {\n const errors: string[] = []\n let nodeCount = 0\n\n function visit(candidate: unknown, depth: number, path: string): BoolExpr | undefined {\n if (depth > limits.maxDepth) {\n errors.push(`${path}: expression depth exceeds ${limits.maxDepth}`)\n return undefined\n }\n if (!isRecord(candidate)) {\n errors.push(`${path}: expression must be an object`)\n return undefined\n }\n nodeCount += 1\n if (nodeCount > limits.maxNodes) {\n errors.push(`expression exceeds ${limits.maxNodes} nodes`)\n return undefined\n }\n const keys = Object.keys(candidate)\n if (!Object.prototype.hasOwnProperty.call(candidate, 'op') || keys.length === 0) {\n errors.push(`${path}: expression requires exactly one operator`)\n return undefined\n }\n const op = candidate.op\n if (typeof op !== 'string') {\n errors.push(`${path}.op: operator must be a string`)\n return undefined\n }\n if (op === 'ref') return parseRef(candidate, allowedRefs, errors, path)\n if (op === 'not') return parseNot(candidate, depth, path, visit, errors)\n if (op === 'all' || op === 'any') return parseNary(candidate, op, depth, path, visit, errors)\n if (op === 'atLeast') return parseThreshold(candidate, depth, path, visit, errors)\n errors.push(`${path}.op: unsupported operator ${JSON.stringify(op)}`)\n return undefined\n }\n\n const expression = visit(value, 0, '$')\n return errors.length === 0 && expression !== undefined ? { expression, errors } : { errors }\n}\n\n/**\n * Evaluate a typed AST against settled child truth values.\n * @param expression - validated DoG Boolean AST.\n * @param values - child success values; missing values are unresolved.\n * @returns three-valued result so pending work cannot be mistaken for failure.\n */\nexport function evaluateBoolExpr(expression: BoolExpr, values: ReadonlyMap<string, boolean | undefined>): TruthValue {\n switch (expression.op) {\n case 'ref': {\n const value = values.get(expression.id)\n return value === undefined ? 'unknown' : value\n }\n case 'not': {\n const value = evaluateBoolExpr(expression.item, values)\n return value === 'unknown' ? 'unknown' : !value\n }\n case 'all':\n return evaluateAll(expression, values)\n case 'any':\n return evaluateAny(expression, values)\n case 'atLeast':\n return evaluateAtLeast(expression, values)\n }\n}\n\nfunction parseRef(\n candidate: Record<string, unknown>,\n allowedRefs: ReadonlySet<string>,\n errors: string[],\n path: string,\n): RefExpr | undefined {\n if (Object.keys(candidate).length !== 2 || typeof candidate.id !== 'string' || candidate.id.length === 0) {\n errors.push(`${path}: ref requires only a non-empty string id`)\n return undefined\n }\n if (!allowedRefs.has(candidate.id)) {\n errors.push(`${path}.id: ${JSON.stringify(candidate.id)} is not a containment child`)\n return undefined\n }\n return { op: 'ref', id: candidate.id }\n}\n\nfunction parseNot(\n candidate: Record<string, unknown>,\n depth: number,\n path: string,\n visit: (value: unknown, depth: number, path: string) => BoolExpr | undefined,\n errors: string[],\n): NotExpr | undefined {\n if (Object.keys(candidate).length !== 2 || !Object.prototype.hasOwnProperty.call(candidate, 'item')) {\n errors.push(`${path}: not requires only item`)\n return undefined\n }\n const item = visit(candidate.item, depth + 1, `${path}.item`)\n return item === undefined ? undefined : { op: 'not', item }\n}\n\nfunction parseNary(\n candidate: Record<string, unknown>,\n op: 'all' | 'any',\n depth: number,\n path: string,\n visit: (value: unknown, depth: number, path: string) => BoolExpr | undefined,\n errors: string[],\n): AllExpr | AnyExpr | undefined {\n if (Object.keys(candidate).length !== 2 || !Array.isArray(candidate.items) || candidate.items.length === 0) {\n errors.push(`${path}: ${op} requires only a non-empty items array`)\n return undefined\n }\n const items: BoolExpr[] = []\n for (const [index, itemValue] of candidate.items.entries()) {\n const item = visit(itemValue, depth + 1, `${path}.items[${index}]`)\n if (item !== undefined) items.push(item)\n }\n if (items.length !== candidate.items.length) return undefined\n return op === 'all' ? { op, items } : { op, items }\n}\n\nfunction parseThreshold(\n candidate: Record<string, unknown>,\n depth: number,\n path: string,\n visit: (value: unknown, depth: number, path: string) => BoolExpr | undefined,\n errors: string[],\n): AtLeastExpr | undefined {\n if (\n Object.keys(candidate).length !== 3\n || !Array.isArray(candidate.items)\n || candidate.items.length === 0\n || typeof candidate.count !== 'number'\n || !Number.isInteger(candidate.count)\n || candidate.count < 1\n || candidate.count > candidate.items.length\n ) {\n errors.push(`${path}: atLeast requires count and a non-empty items array with 1 <= count <= items.length`)\n return undefined\n }\n const items: BoolExpr[] = []\n for (const [index, itemValue] of candidate.items.entries()) {\n const item = visit(itemValue, depth + 1, `${path}.items[${index}]`)\n if (item !== undefined) items.push(item)\n }\n if (items.length !== candidate.items.length) return undefined\n return { op: 'atLeast', count: candidate.count, items }\n}\n\nfunction evaluateAll(expression: AllExpr, values: ReadonlyMap<string, boolean | undefined>): TruthValue {\n let unknown = false\n for (const item of expression.items) {\n const result = evaluateBoolExpr(item, values)\n if (result === false) return false\n if (result === 'unknown') unknown = true\n }\n return unknown ? 'unknown' : true\n}\n\nfunction evaluateAny(expression: AnyExpr, values: ReadonlyMap<string, boolean | undefined>): TruthValue {\n let unknown = false\n for (const item of expression.items) {\n const result = evaluateBoolExpr(item, values)\n if (result === true) return true\n if (result === 'unknown') unknown = true\n }\n return unknown ? 'unknown' : false\n}\n\nfunction evaluateAtLeast(expression: AtLeastExpr, values: ReadonlyMap<string, boolean | undefined>): TruthValue {\n let passed = 0\n let unknown = 0\n for (const item of expression.items) {\n const result = evaluateBoolExpr(item, values)\n if (result === true) passed += 1\n if (result === 'unknown') unknown += 1\n }\n if (passed >= expression.count) return true\n return passed + unknown >= expression.count ? 'unknown' : false\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n","/** Core JSON-compatible types for the DoG v0.9 protocol. */\n\nexport const DOG_SCHEMA_VERSION = '0.9' as const\n\nexport type JsonPrimitive = string | number | boolean | null\nexport type JsonValue = JsonPrimitive | JsonValue[] | { [key: string]: JsonValue }\n\nexport type GoalId = string\nexport type ConstraintKind = 'hard' | 'soft'\nexport type GoalKind = 'leaf' | 'composite'\nexport type FailurePolicy = 'fatal' | 'tolerable' | 'degrade'\nexport type GoalState =\n | 'pending'\n | 'running'\n | 'success'\n | 'failure'\n | 'blocked'\n | 'needs_human'\n | 'cancelled'\n | 'invalidated'\n | 'partial'\n | 'inherited'\n\nexport interface RefExpr {\n readonly op: 'ref'\n readonly id: GoalId\n}\n\nexport interface AllExpr {\n readonly op: 'all'\n readonly items: readonly BoolExpr[]\n}\n\nexport interface AnyExpr {\n readonly op: 'any'\n readonly items: readonly BoolExpr[]\n}\n\nexport interface NotExpr {\n readonly op: 'not'\n readonly item: BoolExpr\n}\n\nexport interface AtLeastExpr {\n readonly op: 'atLeast'\n readonly count: number\n readonly items: readonly BoolExpr[]\n}\n\nexport type BoolExpr = RefExpr | AllExpr | AnyExpr | NotExpr | AtLeastExpr\n\n/** One of exactly two judgment kernels: a script, or a natural-language instruction. */\nexport type VerifierShape =\n | { readonly mode: 'programmatic'; readonly script: string }\n | { readonly mode: 'agentic'; readonly instruction: string }\n\nexport interface GoalNodeInput {\n readonly kind: GoalKind\n readonly title: string\n readonly constraint: ConstraintKind\n /** Single file path or a directory/collection (engine packs it into .tar). */\n readonly target: string\n /** Leaf: required. Composite: optional whole-object assertion (runs after subtree settles). */\n readonly verifier?: VerifierShape\n /** Composite only: boolean combination of children. */\n readonly completion?: BoolExpr\n}\n\nexport interface ContainsEdge {\n readonly parent: GoalId\n readonly child: GoalId\n readonly required: boolean\n readonly failure: FailurePolicy\n readonly degradeTo?: GoalId\n}\n\nexport interface DependencyEdge {\n readonly source: GoalId\n readonly target: GoalId\n readonly data?: readonly string[]\n}\n\nexport interface DogGraphInput {\n readonly schemaVersion: typeof DOG_SCHEMA_VERSION\n readonly id: string\n readonly root: GoalId\n readonly nodes: Record<GoalId, GoalNodeInput>\n readonly contains: readonly ContainsEdge[]\n readonly dependsOn: readonly DependencyEdge[]\n}\n\nexport interface DogConfig {\n readonly storageDirectory: string\n /** Sandbox/root for captured inputs: verifiers' objects come from this tree. */\n readonly workspaceRoot: string\n /** Host-registered script library directory (programmatic kernels). */\n readonly scriptsDirectory: string\n readonly maxGraphNodes: number\n readonly maxExpressionNodes: number\n readonly maxExpressionDepth: number\n readonly maxSandboxBytes: number\n readonly allowPartialRoot: boolean\n readonly maxConcurrentVerifications: number\n readonly revalidateThreshold: number\n readonly gmDigestAlgo: string\n}\n\nexport interface GraphLimits {\n readonly maxGraphNodes: number\n readonly maxExpressionNodes: number\n readonly maxExpressionDepth: number\n}\n\n/** One captured object (file, or packed .tar for a collection). */\nexport interface CapturedInput {\n readonly path: string\n readonly digest: string\n readonly exists: boolean\n readonly byteLength: number\n readonly sha256: string\n /** True when the capture is a .tar of a directory/collection. */\n readonly packed?: boolean\n}\n\n/** Deterministic or agentic: judgment identity double-anchors incremental reuse. */\nexport type JudgmentIdentity =\n | { readonly mode: 'programmatic'; readonly script: string; readonly scriptDigest: string }\n | { readonly mode: 'agentic'; readonly instructionHash: string }\n\nexport interface AcceptancePlan {\n readonly goalId: GoalId\n /** Which kernel judges this goal. */\n readonly verifier: VerifierShape\n /** Identity of the judgment source; part of the inheritance anchor. */\n readonly judgment: JudgmentIdentity\n readonly target: string\n /** Captured object metadata (absent when target is missing/empty). */\n readonly input?: CapturedInput\n readonly gmDigest?: string\n}\n\nexport interface VerificationRecord {\n readonly schemaVersion: '0.1'\n readonly runId: string\n readonly graphId: string\n readonly graphDigest: string\n readonly goalId: GoalId\n readonly judgment: JudgmentIdentity\n readonly gmDigest?: string\n readonly passed: boolean | null\n readonly evidence?: JsonValue\n readonly at: string\n}\n\nexport interface GoalRuntimeVerifier {\n readonly mode: 'programmatic' | 'agentic'\n}\n\nexport interface GoalRuntimeError {\n readonly kind: 'acceptance_plan_missing' | 'completion_expression_missing' | 'verification_error' | 'agentic_unavailable'\n readonly stage: 'scheduling' | 'verification' | 'composition'\n readonly message: string\n}\n\nexport type GoalRuntimePhase =\n | 'goal_started'\n | 'dependency_blocked'\n | 'grounding_extracted'\n | 'workspace_allocated'\n | 'verifier_started'\n | 'verifier_passed'\n | 'verifier_failed'\n | 'verifier_inconclusive'\n | 'composite_evaluated'\n | 'result_inherited'\n | 'verifier_released'\n | 'verifier_bind_failed'\n | 'structured_error'\n | 'goal_settled'\n | 'run_warning'\n\nexport interface GoalRuntimeEvent {\n readonly schemaVersion: '0.1'\n readonly runId: string\n readonly goalId: GoalId\n readonly phase: GoalRuntimePhase\n readonly state?: GoalState\n readonly at: string\n readonly reason?: string\n readonly verifier?: GoalRuntimeVerifier\n readonly gmDigest?: string\n readonly attempt?: number\n readonly durationMs?: number\n}\n\nexport type GoalAgentRole = 'orchestrator' | 'verifier' | 'reviewer'\n\nexport interface GoalAgentSessionRef {\n readonly sessionId: string\n readonly parentSessionId?: string\n readonly role: GoalAgentRole\n readonly boundAt: string\n}\n\nexport interface RunInvocationContext {\n readonly callId: string\n readonly agentSessionId?: string\n readonly parentSessionId?: string\n readonly invokedAt: string\n}\n\nexport interface GoalResult {\n readonly state: GoalState\n readonly reason?: string\n readonly verification?: VerificationRecord\n readonly inheritedFrom?: string\n readonly agentSessions?: readonly GoalAgentSessionRef[]\n}\n\nexport type RootTerminalState =\n | 'success'\n | 'partial_success'\n | 'failure'\n | 'infeasible'\n | 'needs_replan'\n | 'cancelled'\n\nexport interface CompiledGraph {\n readonly input: DogGraphInput\n readonly graphDigest: string\n readonly acceptancePlans: Readonly<Record<GoalId, AcceptancePlan>>\n}\n\nexport interface DogRun {\n readonly runId: string\n readonly graphId: string\n readonly graphDigest: string\n /** Calling session's cwd; verifier workspaces are allocated under it. */\n readonly workspaceBaseDir?: string\n readonly state: 'running' | 'completed' | 'cancelled' | 'failed'\n readonly rootState?: RootTerminalState\n readonly invocation?: RunInvocationContext\n readonly runtimeWarning?: string\n readonly gmDigests: Readonly<Record<GoalId, string>>\n readonly goals: Readonly<Record<GoalId, GoalResult>>\n readonly createdAt: string\n readonly updatedAt: string\n}\n\nexport interface GoalRuntimeTrace {\n readonly schemaVersion: '0.1'\n readonly runId: string\n readonly graphId: string\n readonly graphDigest: string\n readonly runState: DogRun['state']\n readonly rootState?: RootTerminalState\n readonly goalId: GoalId\n readonly result: GoalResult\n readonly invocation?: RunInvocationContext\n readonly runtimeWarning?: string\n readonly events: readonly GoalRuntimeEvent[]\n readonly truncated: boolean\n}\n\nexport interface GraphValidationReport {\n readonly valid: boolean\n readonly errors: readonly string[]\n readonly warnings: readonly string[]\n}\n\nexport interface CiGoalReport {\n readonly goalId: GoalId\n readonly state: GoalState\n readonly verifier?: GoalRuntimeVerifier\n readonly evidence?: readonly Record<string, JsonValue>[]\n readonly defect?: string\n readonly settledAt?: string\n}\n\nexport interface CiReport {\n readonly runId: string\n readonly graphId: string\n readonly graphDigest?: string\n readonly rootState: RootTerminalState | 'running' | 'cancelled'\n readonly goals: readonly CiGoalReport[]\n readonly revalidated?: readonly GoalId[]\n readonly inherited?: readonly { goalId: GoalId; fromRunId: string; state: 'inherited' }[]\n readonly warning?: string\n readonly generatedAt: string\n}\n\nexport function isJsonValue(value: unknown): value is JsonValue {\n if (value === null || typeof value === 'string' || typeof value === 'boolean') return true\n if (typeof value === 'number') return Number.isFinite(value)\n if (Array.isArray(value)) return value.every(isJsonValue)\n if (typeof value !== 'object') return false\n return Object.values(value).every(isJsonValue)\n}\n","/** Graph parser, structural validator, and cycle checker for DoG v0.2. */\n\nimport { parseBoolExpr } from './logic.ts'\nimport type {\n ContainsEdge,\n DependencyEdge,\n DogGraphInput,\n GoalId,\n GoalNodeInput,\n GraphLimits,\n} from './model.ts'\nimport { DOG_SCHEMA_VERSION } from './model.ts'\n\nconst ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u\n\n/** Structured validation failure at the model-to-core boundary. */\nexport class DogValidationError extends Error {\n readonly errors: readonly string[]\n\n constructor(errors: readonly string[]) {\n super(`invalid DoG graph: ${errors.join('; ')}`)\n this.name = 'DogValidationError'\n this.errors = errors\n }\n}\n\n/** Parse an untrusted graph value into a normalized, acyclic DoG graph. */\nexport function parseGraph(value: unknown, limits: GraphLimits): DogGraphInput {\n const errors: string[] = []\n const root = asRecord(value, '$', errors)\n if (root === undefined) throw new DogValidationError(errors)\n checkExactKeys(root, ['schemaVersion', 'id', 'root', 'nodes', 'contains', 'dependsOn'], '$', errors)\n if (root.schemaVersion !== DOG_SCHEMA_VERSION) errors.push(`$.schemaVersion: expected ${DOG_SCHEMA_VERSION}`)\n const graphId = parseId(root.id, '$.id', errors)\n const rootId = parseId(root.root, '$.root', errors)\n const nodes = parseNodes(root.nodes, limits, errors)\n const contains = parseContains(root.contains, errors)\n const dependsOn = parseDependencies(root.dependsOn, errors)\n if (graphId === undefined || rootId === undefined || nodes === undefined || contains === undefined || dependsOn === undefined) {\n throw new DogValidationError(errors)\n }\n validateGraphReferences(rootId, nodes, contains, dependsOn, limits, errors)\n validateAcyclic(nodes, contains, dependsOn, errors)\n if (errors.length > 0) throw new DogValidationError(errors)\n return {\n schemaVersion: DOG_SCHEMA_VERSION,\n id: graphId,\n root: rootId,\n nodes,\n contains,\n dependsOn,\n }\n}\n\nfunction parseNodes(\n value: unknown,\n limits: GraphLimits,\n errors: string[],\n): Record<GoalId, GoalNodeInput> | undefined {\n const record = asRecord(value, '$.nodes', errors)\n if (record === undefined) return undefined\n const ids = Object.keys(record)\n if (ids.length === 0) errors.push('$.nodes: must not be empty')\n if (ids.length > limits.maxGraphNodes) errors.push(`$.nodes: exceeds ${limits.maxGraphNodes} nodes`)\n const nodes: Record<string, GoalNodeInput> = {}\n for (const id of ids) {\n if (!ID_PATTERN.test(id)) errors.push(`$.nodes.${id}: invalid goal ID`)\n const node = asRecord(record[id], `$.nodes.${id}`, errors)\n if (node === undefined) continue\n checkExactKeys(node, ['kind', 'title', 'constraint', 'target', 'completion', 'verifier'], `$.nodes.${id}`, errors)\n const kind = parseEnum(node.kind, ['leaf', 'composite'] as const, `$.nodes.${id}.kind`, errors)\n const title = parseNonEmptyString(node.title, `$.nodes.${id}.title`, errors)\n const constraint = parseEnum(node.constraint, ['hard', 'soft'] as const, `$.nodes.${id}.constraint`, errors)\n const target = parseNonEmptyString(node.target, `$.nodes.${id}.target`, errors)\n const verifier = parseVerifier(node.verifier, `$.nodes.${id}.verifier`, errors)\n if (kind === undefined || title === undefined || constraint === undefined || target === undefined) continue\n if (kind === 'leaf' && verifier === undefined) errors.push(`$.nodes.${id}: leaf requires verifier`)\n if (kind === 'composite' && verifier !== undefined) {\n // Optional whole-object assertion: allowed and runs after the subtree settles.\n }\n if (kind === 'composite' && node.completion === undefined) errors.push(`$.nodes.${id}: composite requires completion`)\n if (kind === 'leaf' && node.completion !== undefined) errors.push(`$.nodes.${id}: leaf cannot declare completion`)\n const nodeValue = {\n kind,\n title,\n constraint,\n target,\n ...(verifier === undefined ? {} : { verifier }),\n ...(kind === 'composite' && node.completion !== undefined ? { completion: node.completion } : {}),\n } as unknown as GoalNodeInput\n nodes[id] = nodeValue\n }\n return nodes\n}\n\nfunction parseContains(value: unknown, errors: string[]): ContainsEdge[] | undefined {\n if (!Array.isArray(value)) {\n errors.push('$.contains: must be an array')\n return undefined\n }\n const edges: ContainsEdge[] = []\n for (const [index, candidate] of value.entries()) {\n const path = `$.contains[${index}]`\n const record = asRecord(candidate, path, errors)\n if (record === undefined) continue\n checkExactKeys(record, ['parent', 'child', 'required', 'failure', 'degradeTo'], path, errors)\n const parent = parseId(record.parent, `${path}.parent`, errors)\n const child = parseId(record.child, `${path}.child`, errors)\n const required = parseBoolean(record.required, `${path}.required`, errors)\n const failure = parseEnum(record.failure, ['fatal', 'tolerable', 'degrade'] as const, `${path}.failure`, errors)\n const degradeTo = record.degradeTo === undefined ? undefined : parseId(record.degradeTo, `${path}.degradeTo`, errors)\n if (failure !== 'degrade' && degradeTo !== undefined) errors.push(`${path}.degradeTo: only valid with failure=degrade`)\n if (failure === 'degrade' && degradeTo === undefined) errors.push(`${path}: failure=degrade requires degradeTo`)\n if (parent !== undefined && child !== undefined && required !== undefined && failure !== undefined) {\n edges.push({ parent, child, required, failure, ...(degradeTo === undefined ? {} : { degradeTo }) })\n }\n }\n return edges\n}\n\nfunction parseDependencies(value: unknown, errors: string[]): DependencyEdge[] | undefined {\n if (!Array.isArray(value)) {\n errors.push('$.dependsOn: must be an array')\n return undefined\n }\n const edges: DependencyEdge[] = []\n for (const [index, candidate] of value.entries()) {\n const path = `$.dependsOn[${index}]`\n const record = asRecord(candidate, path, errors)\n if (record === undefined) continue\n checkExactKeys(record, ['source', 'target', 'data'], path, errors)\n const source = parseId(record.source, `${path}.source`, errors)\n const target = parseId(record.target, `${path}.target`, errors)\n const data = parseStringArray(record.data, `${path}.data`, errors)\n if (source !== undefined && target !== undefined) edges.push({ source, target, ...(data === undefined ? {} : { data }) })\n }\n return edges\n}\n\nfunction parseVerifier(value: unknown, path: string, errors: string[]): GoalNodeInput['verifier'] | undefined {\n if (value === undefined) return undefined\n const record = asRecord(value, path, errors)\n if (record === undefined) return undefined\n const mode = parseEnum(record.mode, ['programmatic', 'agentic'] as const, `${path}.mode`, errors)\n if (mode === undefined) return undefined\n if (mode === 'programmatic') {\n checkExactKeys(record, ['mode', 'script'], path, errors)\n const script = parseNonEmptyString(record.script, `${path}.script`, errors)\n return script === undefined ? undefined : { mode: 'programmatic', script }\n }\n checkExactKeys(record, ['mode', 'instruction'], path, errors)\n const instruction = parseNonEmptyString(record.instruction, `${path}.instruction`, errors)\n return instruction === undefined ? undefined : { mode: 'agentic', instruction }\n}\n\nfunction validateGraphReferences(\n root: GoalId,\n nodes: Record<GoalId, GoalNodeInput>,\n contains: readonly ContainsEdge[],\n dependsOn: readonly DependencyEdge[],\n limits: GraphLimits,\n errors: string[],\n): void {\n if (!Object.prototype.hasOwnProperty.call(nodes, root)) errors.push(`$.root: unknown node ${root}`)\n const rootNode = nodes[root]\n if (rootNode !== undefined && rootNode.constraint !== 'hard') errors.push('$.root: root goal must be a hard constraint')\n const children = new Map<string, string[]>()\n const edgeKeys = new Set<string>()\n for (const edge of contains) {\n const key = `${edge.parent}\\u0000${edge.child}`\n if (edgeKeys.has(key)) errors.push(`$.contains: duplicate edge ${edge.parent}->${edge.child}`)\n edgeKeys.add(key)\n if (!Object.prototype.hasOwnProperty.call(nodes, edge.parent)) errors.push(`$.contains: unknown parent ${edge.parent}`)\n if (!Object.prototype.hasOwnProperty.call(nodes, edge.child)) errors.push(`$.contains: unknown child ${edge.child}`)\n const parent = nodes[edge.parent]\n if (parent !== undefined && parent.kind !== 'composite') errors.push(`$.contains: ${edge.parent} is not composite`)\n const siblings = children.get(edge.parent) ?? []\n siblings.push(edge.child)\n children.set(edge.parent, siblings)\n }\n for (const edge of contains) {\n if (edge.degradeTo === edge.child) errors.push(`$.contains: degradeTo cannot equal child ${edge.child}`)\n else if (edge.degradeTo !== undefined && !(children.get(edge.parent) ?? []).includes(edge.degradeTo)) {\n errors.push(`$.contains: degradeTo ${edge.degradeTo} is not a child of ${edge.parent}`)\n }\n }\n const dependencyKeys = new Set<string>()\n for (const edge of dependsOn) {\n const key = `${edge.source}\\u0000${edge.target}`\n if (dependencyKeys.has(key)) errors.push(`$.dependsOn: duplicate edge ${edge.source}->${edge.target}`)\n dependencyKeys.add(key)\n if (edge.source === edge.target) errors.push(`$.dependsOn: self-dependency ${edge.source}`)\n if (!Object.prototype.hasOwnProperty.call(nodes, edge.source)) errors.push(`$.dependsOn: unknown source ${edge.source}`)\n if (!Object.prototype.hasOwnProperty.call(nodes, edge.target)) errors.push(`$.dependsOn: unknown target ${edge.target}`)\n }\n for (const [parent, node] of Object.entries(nodes)) {\n if (node.kind !== 'composite') continue\n const childIds = children.get(parent) ?? []\n if (childIds.length === 0) errors.push(`$.nodes.${parent}: composite requires at least one child`)\n if (node.completion === undefined) {\n errors.push(`$.nodes.${parent}.completion: missing completion expression`)\n continue\n }\n const parsed = parseBoolExpr(node.completion, new Set(childIds), {\n maxNodes: limits.maxExpressionNodes,\n maxDepth: limits.maxExpressionDepth,\n })\n if (parsed.errors.length > 0) errors.push(...parsed.errors.map(error => `$.nodes.${parent}.completion${error.slice(1)}`))\n else if (parsed.expression !== undefined) nodes[parent] = { ...node, completion: parsed.expression }\n }\n const reachable = new Set<string>()\n const queue = [root]\n while (queue.length > 0) {\n const current = queue.shift()\n if (current === undefined || reachable.has(current)) continue\n reachable.add(current)\n for (const child of children.get(current) ?? []) queue.push(child)\n }\n for (const id of Object.keys(nodes)) if (!reachable.has(id)) errors.push(`$.nodes.${id}: unreachable from root through containment`)\n}\n\nfunction validateAcyclic(\n nodes: Record<GoalId, GoalNodeInput>,\n contains: readonly ContainsEdge[],\n dependsOn: readonly DependencyEdge[],\n errors: string[],\n): void {\n const outgoing = new Map<string, string[]>()\n for (const id of Object.keys(nodes)) outgoing.set(id, [])\n for (const edge of contains) outgoing.get(edge.parent)?.push(edge.child)\n for (const edge of dependsOn) outgoing.get(edge.source)?.push(edge.target)\n const visiting = new Set<string>()\n const visited = new Set<string>()\n function visit(id: string, path: string[]): void {\n if (visiting.has(id)) {\n errors.push(`graph contains a cycle: ${[...path, id].join(' -> ')}`)\n return\n }\n if (visited.has(id)) return\n visiting.add(id)\n for (const target of outgoing.get(id) ?? []) visit(target, [...path, id])\n visiting.delete(id)\n visited.add(id)\n }\n for (const id of Object.keys(nodes)) visit(id, [])\n}\n\nfunction asRecord(value: unknown, path: string, errors: string[]): Record<string, unknown> | undefined {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n errors.push(`${path}: must be an object`)\n return undefined\n }\n return value as Record<string, unknown>\n}\n\nfunction checkExactKeys(value: Record<string, unknown>, allowed: readonly string[], path: string, errors: string[]): void {\n const allowedSet = new Set(allowed)\n for (const key of Object.keys(value)) if (!allowedSet.has(key)) errors.push(`${path}: unknown field ${key}`)\n}\n\nfunction parseId(value: unknown, path: string, errors: string[]): string | undefined {\n if (typeof value !== 'string' || !ID_PATTERN.test(value)) {\n errors.push(`${path}: must be an ASCII ID matching ${ID_PATTERN.source}`)\n return undefined\n }\n return value\n}\n\nfunction parseNonEmptyString(value: unknown, path: string, errors: string[]): string | undefined {\n if (typeof value !== 'string' || value.trim().length === 0) {\n errors.push(`${path}: must be a non-empty string`)\n return undefined\n }\n return value\n}\n\nfunction parseBoolean(value: unknown, path: string, errors: string[]): boolean | undefined {\n if (typeof value !== 'boolean') {\n errors.push(`${path}: must be boolean`)\n return undefined\n }\n return value\n}\n\nfunction parseEnum<T extends string>(value: unknown, allowed: readonly T[], path: string, errors: string[]): T | undefined {\n if (typeof value !== 'string' || !allowed.includes(value as T)) {\n errors.push(`${path}: expected one of ${allowed.join(', ')}`)\n return undefined\n }\n return value as T\n}\n\nfunction parseStringArray(value: unknown, path: string, errors: string[]): string[] | undefined {\n if (value === undefined) return undefined\n if (!Array.isArray(value) || value.some(item => typeof item !== 'string')) {\n errors.push(`${path}: must be an array of strings`)\n return undefined\n }\n return [...value]\n}\n","/** Runtime validation for trusted debugger RPC responses. */\n\nimport { parseGraph } from '../graph.ts'\nimport { isJsonValue } from '../model.ts'\nimport type {\n AcceptancePlan,\n DogRun,\n GoalAgentRole,\n GoalAgentSessionRef,\n GoalResult,\n GoalRuntimeEvent,\n GoalRuntimeTrace,\n GoalState,\n JsonValue,\n RootTerminalState,\n RunInvocationContext,\n CapturedInput,\n VerificationRecord,\n} from '../model.ts'\nimport type { DogDebugGraphRevision, DogDebugSnapshot } from '../debug-contract.ts'\n\nconst DIGEST = /^[a-f0-9]{64}$/u\nconst GOAL_STATES = new Set<GoalState>([\n 'pending', 'running', 'success', 'failure', 'blocked', 'needs_human',\n 'cancelled', 'invalidated', 'partial', 'inherited',\n])\nconst ROOT_STATES = new Set<RootTerminalState>([\n 'success', 'partial_success', 'failure', 'infeasible', 'needs_replan', 'cancelled',\n])\nconst GOAL_AGENT_ROLES = new Set<GoalAgentRole>(['orchestrator', 'verifier', 'reviewer'])\nconst RUNTIME_PHASES = new Set<GoalRuntimeEvent['phase']>([\n 'goal_started', 'dependency_blocked', 'grounding_extracted', 'workspace_allocated',\n 'verifier_started', 'verifier_released', 'verifier_passed', 'verifier_failed', 'verifier_inconclusive',\n 'composite_evaluated', 'result_inherited', 'structured_error', 'goal_settled', 'run_warning',\n])\n\n/** Parse JSON from the debugger endpoint before it reaches render code. */\nexport function parseDogDebugSnapshot(value: unknown): DogDebugSnapshot {\n const root = requireRecord(value, '$')\n if (root.schemaVersion !== '0.1') throw new Error('debug snapshot schemaVersion must be 0.1')\n const graphs = requireArray(root.graphs, '$.graphs').map((item, index) => parseRevision(item, `$.graphs[${index}]`))\n return {\n schemaVersion: '0.1',\n generatedAt: requireString(root.generatedAt, '$.generatedAt'),\n graphs,\n }\n}\n\n/** Parse one lazy per-goal runtime trace before it reaches render code. */\nexport function parseGoalRuntimeTrace(value: unknown): GoalRuntimeTrace {\n const root = requireRecord(value, '$')\n if (root.schemaVersion !== '0.1') throw new Error('runtime trace schemaVersion must be 0.1')\n const runId = requireBoundedString(root.runId, '$.runId')\n const graphDigest = requireDigest(root.graphDigest, '$.graphDigest')\n const goalId = requireBoundedString(root.goalId, '$.goalId')\n const runState = parseRunState(root.runState, '$.runState')\n const result = parseGoalResult(root.result, '$.result')\n const rootState = root.rootState === undefined ? undefined : parseRootState(root.rootState, '$.rootState')\n const invocation = root.invocation === undefined ? undefined : parseInvocation(root.invocation, '$.invocation')\n const events = requireArray(root.events, '$.events').map((item, index) => (\n parseRuntimeEvent(item, `$.events[${index}]`, { runId, goalId })\n ))\n if (typeof root.truncated !== 'boolean') throw new Error('$.truncated must be a boolean')\n const runtimeWarning = root.runtimeWarning === undefined\n ? undefined\n : requireBoundedString(root.runtimeWarning, '$.runtimeWarning')\n return {\n schemaVersion: '0.1',\n runId,\n graphId: requireBoundedString(root.graphId, '$.graphId'),\n graphDigest,\n runState,\n ...(rootState === undefined ? {} : { rootState }),\n goalId,\n result,\n ...(invocation === undefined ? {} : { invocation }),\n ...(runtimeWarning === undefined ? {} : { runtimeWarning }),\n events,\n truncated: root.truncated,\n }\n}\n\nfunction parseRuntimeEvent(\n value: unknown,\n path: string,\n expected: { readonly runId: string; readonly goalId: string },\n): GoalRuntimeEvent {\n const root = requireRecord(value, path)\n if (root.schemaVersion !== '0.1') throw new Error(`${path}.schemaVersion must be 0.1`)\n const runId = requireBoundedString(root.runId, `${path}.runId`)\n const goalId = requireBoundedString(root.goalId, `${path}.goalId`)\n if (runId !== expected.runId || goalId !== expected.goalId) {\n throw new Error(`${path} does not belong to the requested goal trace`)\n }\n const phase = requireString(root.phase, `${path}.phase`)\n if (!RUNTIME_PHASES.has(phase as GoalRuntimeEvent['phase'])) throw new Error(`${path}.phase is invalid`)\n const state = root.state === undefined ? undefined : parseGoalState(root.state, `${path}.state`)\n const reason = root.reason === undefined ? undefined : requireBoundedString(root.reason, `${path}.reason`)\n const durationMs = root.durationMs === undefined\n ? undefined\n : requireNonNegativeInteger(root.durationMs, `${path}.durationMs`)\n const attempt = root.attempt === undefined\n ? undefined\n : requireNonNegativeInteger(root.attempt, `${path}.attempt`)\n const gmDigest = root.gmDigest === undefined ? undefined : requireString(root.gmDigest, `${path}.gmDigest`)\n const verifierRecord = root.verifier === undefined ? undefined : requireRecord(root.verifier, `${path}.verifier`)\n const verifier = verifierRecord === undefined ? undefined : {\n mode: requireEnumValue(verifierRecord.mode, ['programmatic', 'agentic'], `${path}.verifier.mode`),\n }\n return {\n schemaVersion: '0.1',\n runId,\n goalId,\n phase: phase as GoalRuntimeEvent['phase'],\n at: requireString(root.at, `${path}.at`),\n ...(state === undefined ? {} : { state }),\n ...(reason === undefined ? {} : { reason }),\n ...(verifier === undefined ? {} : { verifier }),\n ...(gmDigest === undefined ? {} : { gmDigest }),\n ...(attempt === undefined ? {} : { attempt }),\n ...(durationMs === undefined ? {} : { durationMs }),\n }\n}\n\nfunction parseRevision(value: unknown, path: string): DogDebugGraphRevision {\n const root = requireRecord(value, path)\n const graphRecord = requireRecord(root.graph, `${path}.graph`)\n const graphDigest = requireDigest(graphRecord.graphDigest, `${path}.graph.graphDigest`)\n const input = parseGraph(graphRecord.input, {\n maxGraphNodes: 4096,\n maxExpressionNodes: 8192,\n maxExpressionDepth: 256,\n })\n const acceptancePlans = parseAcceptancePlans(graphRecord.acceptancePlans, `${path}.graph.acceptancePlans`)\n const runs = requireArray(root.runs, `${path}.runs`).map((item, index) => {\n const run = parseRun(item, `${path}.runs[${index}]`)\n if (run.graphDigest !== graphDigest) throw new Error(`${path}.runs[${index}]: graph digest mismatch`)\n return run\n })\n if (typeof root.current !== 'boolean') throw new Error(`${path}.current must be a boolean`)\n return {\n graph: { input, graphDigest, acceptancePlans },\n current: root.current,\n runs,\n }\n}\n\nfunction parseAcceptancePlans(value: unknown, path: string): Record<string, AcceptancePlan> {\n const root = requireRecord(value, path)\n const result: Record<string, AcceptancePlan> = {}\n for (const [key, item] of Object.entries(root)) {\n const plan = parseAcceptancePlan(item, `${path}.${key}`)\n if (plan.goalId !== key) throw new Error(`${path}.${key}: goalId mismatch`)\n result[key] = plan\n }\n return result\n}\n\nfunction parseAcceptancePlan(value: unknown, path: string): AcceptancePlan {\n const root = requireRecord(value, path)\n const input = root.input === undefined ? undefined : parseCapturedInput(root.input, `${path}.input`)\n const verifier = parseVerifierShape(root.verifier ?? root.v09Verifier, `${path}.verifier`)\n const judgment = parseJudgment(root.judgment, `${path}.judgment`)\n return {\n goalId: requireString(root.goalId, `${path}.goalId`),\n verifier,\n judgment,\n target: requireString(root.target, `${path}.target`),\n ...(input === undefined ? {} : { input }),\n ...(root.gmDigest === undefined ? {} : { gmDigest: requireString(root.gmDigest, `${path}.gmDigest`) }),\n }\n}\n\nfunction parseVerifierShape(value: unknown, path: string): AcceptancePlan['verifier'] {\n const record = requireRecord(value, path)\n const mode = requireString(record.mode, `${path}.mode`)\n if (mode === 'programmatic') {\n return { mode: 'programmatic', script: requireString(record.script, `${path}.script`) }\n }\n if (mode === 'agentic') {\n return { mode: 'agentic', instruction: requireString(record.instruction, `${path}.instruction`) }\n }\n throw new Error(`${path}.mode is invalid`)\n}\n\nfunction parseJudgment(value: unknown, path: string): AcceptancePlan['judgment'] {\n const record = requireRecord(value, path)\n const mode = requireString(record.mode, `${path}.mode`)\n if (mode === 'programmatic') {\n return { mode: 'programmatic', script: requireString(record.script, `${path}.script`), scriptDigest: requireString(record.scriptDigest, `${path}.scriptDigest`) }\n }\n return { mode: 'agentic', instructionHash: requireString(record.instructionHash, `${path}.instructionHash`) }\n}\n\nfunction parseCapturedInput(value: unknown, path: string): CapturedInput {\n const root = requireRecord(value, path)\n const exists = root.exists\n const byteLength = root.byteLength\n if (typeof exists !== 'boolean') throw new Error(`${path}.exists must be a boolean`)\n if (typeof byteLength !== 'number' || !Number.isSafeInteger(byteLength) || byteLength < 0) {\n throw new Error(`${path}.byteLength must be a non-negative safe integer`)\n }\n return {\n path: requireBoundedString(root.path, `${path}.path`),\n digest: requireString(root.digest, `${path}.digest`),\n exists,\n byteLength,\n sha256: requireString(root.sha256, `${path}.sha256`),\n }\n}\n\nfunction parseRun(value: unknown, path: string): DogRun {\n const root = requireRecord(value, path)\n const state = parseRunState(root.state, `${path}.state`)\n const goalsRecord = requireRecord(root.goals, `${path}.goals`)\n const goals: Record<string, GoalResult> = {}\n for (const [id, result] of Object.entries(goalsRecord)) goals[id] = parseGoalResult(result, `${path}.goals.${id}`)\n const rootState = root.rootState === undefined ? undefined : parseRootState(root.rootState, `${path}.rootState`)\n const invocation = root.invocation === undefined ? undefined : parseInvocation(root.invocation, `${path}.invocation`)\n const runtimeWarning = root.runtimeWarning === undefined\n ? undefined\n : requireBoundedString(root.runtimeWarning, `${path}.runtimeWarning`)\n const gmDigestsRecord = root.gmDigests === undefined ? {} : requireRecord(root.gmDigests, `${path}.gmDigests`)\n const gmDigests: Record<string, string> = {}\n for (const [id, digest] of Object.entries(gmDigestsRecord)) gmDigests[id] = requireString(digest, `${path}.gmDigests.${id}`)\n return {\n runId: requireString(root.runId, `${path}.runId`),\n graphId: requireString(root.graphId, `${path}.graphId`),\n graphDigest: requireDigest(root.graphDigest, `${path}.graphDigest`),\n state,\n ...(rootState === undefined ? {} : { rootState }),\n gmDigests,\n goals,\n ...(invocation === undefined ? {} : { invocation }),\n ...(runtimeWarning === undefined ? {} : { runtimeWarning }),\n createdAt: requireString(root.createdAt, `${path}.createdAt`),\n updatedAt: requireString(root.updatedAt, `${path}.updatedAt`),\n }\n}\n\nfunction parseInvocation(value: unknown, path: string): RunInvocationContext {\n const root = requireRecord(value, path)\n const agentSessionId = root.agentSessionId === undefined\n ? undefined\n : requireBoundedString(root.agentSessionId, `${path}.agentSessionId`)\n const parentSessionId = root.parentSessionId === undefined\n ? undefined\n : requireBoundedString(root.parentSessionId, `${path}.parentSessionId`)\n if (parentSessionId !== undefined && agentSessionId === undefined) {\n throw new Error(`${path}.parentSessionId requires agentSessionId`)\n }\n return {\n callId: requireBoundedString(root.callId, `${path}.callId`),\n ...(agentSessionId === undefined ? {} : { agentSessionId }),\n ...(parentSessionId === undefined ? {} : { parentSessionId }),\n invokedAt: requireString(root.invokedAt, `${path}.invokedAt`),\n }\n}\n\nfunction parseGoalResult(value: unknown, path: string): GoalResult {\n const root = requireRecord(value, path)\n const state = parseGoalState(root.state, `${path}.state`)\n const reason = root.reason === undefined ? undefined : requireString(root.reason, `${path}.reason`)\n const verification = root.verification === undefined\n ? undefined\n : parseVerification(root.verification, `${path}.verification`)\n const agentSessions = root.agentSessions === undefined\n ? undefined\n : requireArray(root.agentSessions, `${path}.agentSessions`).map((agent, index) => (\n parseGoalAgentSession(agent, `${path}.agentSessions[${index}]`)\n ))\n const inheritedFrom = root.inheritedFrom === undefined\n ? undefined\n : requireString(root.inheritedFrom, `${path}.inheritedFrom`)\n return {\n state,\n ...(reason === undefined ? {} : { reason }),\n ...(verification === undefined ? {} : { verification }),\n ...(inheritedFrom === undefined ? {} : { inheritedFrom }),\n ...(agentSessions === undefined ? {} : { agentSessions }),\n }\n}\n\nfunction parseGoalAgentSession(value: unknown, path: string): GoalAgentSessionRef {\n const root = requireRecord(value, path)\n const role = requireBoundedString(root.role, `${path}.role`) as GoalAgentRole\n if (!GOAL_AGENT_ROLES.has(role)) throw new Error(`${path}.role is invalid`)\n const parentSessionId = root.parentSessionId === undefined\n ? undefined\n : requireBoundedString(root.parentSessionId, `${path}.parentSessionId`)\n return {\n sessionId: requireBoundedString(root.sessionId, `${path}.sessionId`),\n ...(parentSessionId === undefined ? {} : { parentSessionId }),\n role,\n boundAt: requireBoundedString(root.boundAt, `${path}.boundAt`),\n }\n}\n\nfunction parseVerification(value: unknown, path: string): VerificationRecord {\n const root = requireRecord(value, path)\n if (root.passed !== null && typeof root.passed !== 'boolean') throw new Error(`${path}.passed must be a boolean or null`)\n return {\n schemaVersion: '0.1' as const,\n goalId: requireString(root.goalId, `${path}.goalId`),\n runId: requireString(root.runId, `${path}.runId`),\n graphId: requireString(root.graphId, `${path}.graphId`),\n graphDigest: requireDigest(root.graphDigest, `${path}.graphDigest`),\n judgment: parseJudgment(root.judgment, `${path}.judgment`),\n ...(root.gmDigest === undefined ? {} : { gmDigest: requireString(root.gmDigest, `${path}.gmDigest`) }),\n passed: root.passed === null ? null : root.passed,\n ...(root.evidence === undefined ? {} : { evidence: requireJson(root.evidence, `${path}.evidence`) }),\n at: requireString(root.at, `${path}.at`),\n }\n}\n\nfunction requireEnumValue(value: unknown, allowed: readonly string[], path: string): 'programmatic' | 'agentic' {\n const candidate = requireString(value, path)\n if (!allowed.includes(candidate)) throw new Error(`${path} is invalid`)\n return candidate as 'programmatic' | 'agentic'\n}\n\nfunction requireJson(value: unknown, path: string): JsonValue {\n if (!isJsonValue(value)) throw new Error(`${path} must be JSON-compatible`)\n return value\n}\n\nfunction parseGoalState(value: unknown, path: string): GoalState {\n if (typeof value !== 'string' || !GOAL_STATES.has(value as GoalState)) throw new Error(`${path} is invalid`)\n return value as GoalState\n}\n\nfunction parseRootState(value: unknown, path: string): RootTerminalState {\n if (typeof value !== 'string' || !ROOT_STATES.has(value as RootTerminalState)) throw new Error(`${path} is invalid`)\n return value as RootTerminalState\n}\n\nfunction parseRunState(value: unknown, path: string): DogRun['state'] {\n if (value !== 'running' && value !== 'completed' && value !== 'cancelled' && value !== 'failed') {\n throw new Error(`${path} is invalid`)\n }\n return value\n}\n\nfunction requireDigest(value: unknown, path: string): string {\n const text = requireString(value, path)\n if (!DIGEST.test(text)) throw new Error(`${path} must be a SHA-256 digest`)\n return text\n}\n\nfunction requireRecord(value: unknown, path: string): Record<string, unknown> {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) throw new Error(`${path} must be an object`)\n return Object.fromEntries(Object.entries(value))\n}\n\nfunction requireArray(value: unknown, path: string): readonly unknown[] {\n if (!Array.isArray(value)) throw new Error(`${path} must be an array`)\n return value\n}\n\nfunction requireString(value: unknown, path: string): string {\n if (typeof value !== 'string') throw new Error(`${path} must be a string`)\n return value\n}\n\nfunction requireBoundedString(value: unknown, path: string): string {\n const text = requireString(value, path)\n if (text.length === 0 || text.length > 512) throw new Error(`${path} must contain 1-512 characters`)\n return text\n}\n\nfunction requireNonNegativeInteger(value: unknown, path: string): number {\n if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {\n throw new Error(`${path} must be a non-negative safe integer`)\n }\n return value\n}\n","import {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type CSSProperties,\n type ReactNode,\n} from 'react'\nimport type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client'\nimport type { DogDebugGraphRevision, DogDebugSnapshot } from '../debug-contract.ts'\nimport type {\n BoolExpr,\n CompiledGraph,\n DogRun,\n GoalAgentSessionRef,\n GoalNodeInput,\n GoalRuntimeEvent,\n GoalRuntimeTrace,\n GoalResult,\n GoalState,\n JsonValue,\n RootTerminalState,\n} from '../model.ts'\nimport {\n agentParentSessionIds,\n goalAgentRefs,\n goalAgentTelemetry,\n settledGoalCount,\n summarizeRunAgents,\n} from './agentTelemetry.ts'\nimport { layoutDag, type PositionedGoal } from './graph-layout.ts'\nimport { parseDogDebugSnapshot, parseGoalRuntimeTrace } from './snapshot.ts'\n\nconst REFRESH_INTERVAL_MS = 3_000\nconst RECENT_DOG_LIMIT = 4\nconst DOG_DOCK_RESERVED_WIDTH = 370\nconst HOST_CENTER_MIN_WIDTH = 640\nconst DOG_DOCK_COLLAPSED_KEY = '@dsh-external/dsh-dog/dock-collapsed'\nconst MIN_ZOOM = 0.6\nconst MAX_ZOOM = 1.2\n\nexport interface DogDebuggerProps {\n readonly initialOpen?: boolean\n readonly hideDock?: boolean\n readonly readSnapshot: (signal: AbortSignal) => Promise<unknown>\n readonly readGoalRuntime: (runId: string, goalId: string, signal: AbortSignal) => Promise<unknown>\n readonly openSession: (sessionId: string, parentSessionId?: string) => Promise<boolean>\n readonly getSessionState: () => SessionListState\n readonly subscribeSessions: (listener: () => void) => () => void\n readonly refreshAgentCatalog: (parentSessionId: string) => Promise<void>\n}\n\nexport function DogDebugger({\n initialOpen = false,\n hideDock = false,\n readSnapshot,\n readGoalRuntime,\n openSession,\n getSessionState,\n subscribeSessions,\n refreshAgentCatalog,\n}: DogDebuggerProps): JSX.Element {\n const [open, setOpen] = useState(initialOpen)\n const [dockCollapsed, setDockCollapsed] = useState(readDogDockCollapsed)\n const [snapshot, setSnapshot] = useState<DogDebugSnapshot>()\n const [selectedDigest, setSelectedDigest] = useState<string>()\n const [selectedRunId, setSelectedRunId] = useState<string>()\n const [selectedNodeId, setSelectedNodeId] = useState<string>()\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string>()\n const [zoom, setZoom] = useState(0.9)\n const inFlight = useRef(false)\n const dialogRef = useRef<HTMLDivElement>(null)\n const overlayRootRef = useRef<HTMLDivElement>(null)\n const sessionState = useSyncExternalStore(subscribeSessions, getSessionState, getSessionState)\n const updateDockCollapsed = useCallback((collapsed: boolean): void => {\n setDockCollapsed(collapsed)\n writeDogDockCollapsed(collapsed)\n }, [])\n\n useEffect(() => {\n if (hideDock) return\n const root = overlayRootRef.current\n const overlayLayer = root?.parentElement?.parentElement\n const details = overlayLayer?.previousElementSibling\n const center = details?.previousElementSibling\n const sidebar = center?.previousElementSibling\n const frame = overlayLayer?.parentElement\n if (!(root instanceof HTMLElement)\n || !(overlayLayer instanceof HTMLElement)\n || !(details instanceof HTMLElement)\n || !(center instanceof HTMLElement)\n || !(sidebar instanceof HTMLElement)\n || !(frame instanceof HTMLElement)) return\n\n const previousMarginRight = center.style.marginRight\n const previousMinWidth = center.style.minWidth\n const update = (): void => {\n const frameWidth = frame.getBoundingClientRect().width\n const sidebarWidth = sidebar.getBoundingClientRect().width\n const detailsWidth = details.getBoundingClientRect().width\n const centerWidth = frameWidth - sidebarWidth - detailsWidth\n const canReserve = !open\n && !dockCollapsed\n && detailsWidth < 1\n && centerWidth - DOG_DOCK_RESERVED_WIDTH >= HOST_CENTER_MIN_WIDTH\n if (canReserve) {\n center.style.marginRight = `${DOG_DOCK_RESERVED_WIDTH}px`\n center.style.minWidth = '0'\n root.dataset.dogDockLayout = 'reserved'\n return\n }\n center.style.marginRight = previousMarginRight\n center.style.minWidth = previousMinWidth\n root.dataset.dogDockLayout = open || detailsWidth >= 1 ? 'hidden' : dockCollapsed ? 'collapsed' : 'floating'\n }\n\n update()\n const observer = new ResizeObserver(update)\n observer.observe(frame)\n observer.observe(sidebar)\n observer.observe(details)\n window.addEventListener('resize', update)\n return () => {\n window.removeEventListener('resize', update)\n observer.disconnect()\n center.style.marginRight = previousMarginRight\n center.style.minWidth = previousMinWidth\n delete root.dataset.dogDockLayout\n }\n }, [dockCollapsed, open, hideDock])\n\n const refresh = useCallback(async (): Promise<void> => {\n if (inFlight.current) return\n inFlight.current = true\n setLoading(true)\n try {\n const next = parseDogDebugSnapshot(await readSnapshot(new AbortController().signal))\n setSnapshot(next)\n setError(undefined)\n await Promise.allSettled(agentParentSessionIds(next).map(refreshAgentCatalog))\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : String(cause))\n } finally {\n inFlight.current = false\n setLoading(false)\n }\n }, [readSnapshot, refreshAgentCatalog])\n\n const openInvokingSession = useCallback(async (sessionId: string, parentSessionId?: string): Promise<boolean> => {\n const opened = await openSession(sessionId, parentSessionId)\n if (opened) setOpen(false)\n return opened\n }, [openSession])\n\n useEffect(() => {\n if (hideDock && !open) return\n void refresh()\n const timer = window.setInterval(() => void refresh(), REFRESH_INTERVAL_MS)\n return () => window.clearInterval(timer)\n }, [refresh, open, hideDock])\n\n useEffect(() => {\n if (!open) return\n const previouslyFocused = document.activeElement\n dialogRef.current?.focus()\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') setOpen(false)\n }\n window.addEventListener('keydown', onKeyDown)\n return () => {\n window.removeEventListener('keydown', onKeyDown)\n if (previouslyFocused instanceof HTMLElement) previouslyFocused.focus()\n }\n }, [open])\n\n const selectedRevision = snapshot?.graphs.find(item => item.graph.graphDigest === selectedDigest)\n ?? snapshot?.graphs[0]\n const selectedRun = selectedRevision?.runs.find(run => run.runId === selectedRunId)\n ?? selectedRevision?.runs[0]\n const effectiveNodeId = selectedNodeId !== undefined && selectedRevision?.graph.input.nodes[selectedNodeId] !== undefined\n ? selectedNodeId\n : selectedRevision?.graph.input.root\n\n const chooseRevision = (revision: DogDebugGraphRevision): void => {\n setSelectedDigest(revision.graph.graphDigest)\n setSelectedRunId(revision.runs[0]?.runId)\n setSelectedNodeId(revision.graph.input.root)\n }\n const enterRevision = (revision: DogDebugGraphRevision): void => {\n chooseRevision(revision)\n setOpen(true)\n }\n\n return (\n <div ref={overlayRootRef} className=\"dog-overlay-root\">\n {open || hideDock ? null : (\n <DogDock\n snapshot={snapshot}\n sessions={sessionState}\n loading={loading}\n error={error}\n onOpenRevision={enterRevision}\n collapsed={dockCollapsed}\n onCollapsedChange={updateDockCollapsed}\n onRefresh={() => void refresh()}\n />\n )}\n {open ? (\n <div className=\"dog-backdrop\">\n <div\n ref={dialogRef}\n className=\"dog-dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"DoG graph\"\n tabIndex={-1}\n >\n <header className=\"dog-header\">\n <div className=\"dog-brand\">\n <span className=\"dog-brand-mark\"><NetworkIcon size={18} /></span>\n <div className=\"dog-brand-copy\">\n <h2 className=\"dog-brand-title\">DoG</h2>\n <p className=\"dog-brand-subtitle\">Goals · Agents · trusted evidence</p>\n </div>\n </div>\n <span className=\"dog-header-divider\" />\n <div className=\"dog-context\">\n <span className=\"dog-context-title\">{selectedRevision?.graph.input.nodes[selectedRevision.graph.input.root]?.title ?? 'No graph selected'}</span>\n {selectedRevision?.current ? <span className=\"dog-revision-chip\">Current revision</span> : null}\n </div>\n <div className=\"dog-header-actions\">\n <span className=\"dog-sync-copy\" title={error}>{error === undefined ? 'Live · 3s' : 'Refresh failed'}</span>\n <IconButton label=\"Refresh DoG data\" busy={loading} onClick={() => void refresh()}><RefreshIcon /></IconButton>\n <IconButton label=\"Close DoG\" busy={false} onClick={() => setOpen(false)}><CloseIcon /></IconButton>\n </div>\n </header>\n {selectedRevision === undefined ? (\n <EmptyWorkspace loading={loading} error={error} />\n ) : (\n <div className={loading ? 'dog-workspace dog-loading' : 'dog-workspace'}>\n <Sidebar\n snapshot={snapshot}\n selectedRevision={selectedRevision}\n selectedRun={selectedRun}\n onSelectRevision={chooseRevision}\n onSelectRun={setSelectedRunId}\n />\n <main className=\"dog-main\">\n <Summary revision={selectedRevision} run={selectedRun} sessions={sessionState} />\n {error === undefined ? null : <div className=\"dog-error-banner\" role=\"status\">Live refresh failed: {error}</div>}\n <section className=\"dog-canvas-shell\" aria-label=\"Goal DAG canvas\">\n <CanvasToolbar zoom={zoom} onZoom={setZoom} />\n <GraphCanvas\n graph={selectedRevision.graph}\n run={selectedRun}\n sessions={sessionState}\n selectedNodeId={effectiveNodeId}\n zoom={zoom}\n onSelectNode={setSelectedNodeId}\n openSession={openInvokingSession}\n />\n </section>\n </main>\n <Inspector\n graph={selectedRevision.graph}\n run={selectedRun}\n nodeId={effectiveNodeId}\n readGoalRuntime={readGoalRuntime}\n openSession={openInvokingSession}\n />\n </div>\n )}\n </div>\n </div>\n ) : null}\n </div>\n )\n}\n\ninterface DogDockProps {\n readonly snapshot: DogDebugSnapshot | undefined\n readonly sessions: SessionListState\n readonly loading: boolean\n readonly error: string | undefined\n readonly onOpenRevision: (revision: DogDebugGraphRevision) => void\n readonly onRefresh: () => void\n readonly collapsed: boolean\n readonly onCollapsedChange: (collapsed: boolean) => void\n}\n\nfunction DogDock({ snapshot, sessions, loading, error, onOpenRevision, onRefresh, collapsed, onCollapsedChange }: DogDockProps): JSX.Element {\n const revisions = snapshot?.graphs.filter(revision => revision.current).slice(0, RECENT_DOG_LIMIT) ?? []\n if (collapsed) {\n return (\n <aside className=\"dog-dock\" data-collapsed=\"true\" aria-label=\"Collapsed DoG panel\">\n <button\n className=\"dog-dock-rail\"\n type=\"button\"\n aria-label=\"Expand DoG panel\"\n title=\"Expand DoG panel\"\n aria-expanded=\"false\"\n onClick={() => onCollapsedChange(false)}\n >\n <span className=\"dog-dock-rail-mark\"><NetworkIcon size={16} /></span>\n <strong>DoG</strong>\n <DockExpandIcon />\n </button>\n </aside>\n )\n }\n return (\n <aside className=\"dog-dock\" data-collapsed=\"false\" aria-label=\"Recent DoG runs\" aria-busy={loading}>\n <div className=\"dog-dock-collapse-slot\">\n <button\n className=\"dog-dock-collapse-handle\"\n type=\"button\"\n aria-label=\"Collapse DoG panel\"\n title=\"Collapse DoG panel\"\n aria-expanded=\"true\"\n onClick={() => onCollapsedChange(true)}\n >\n <DockCollapseIcon />\n </button>\n </div>\n <div className=\"dog-dock-content\">\n <header className=\"dog-dock-header\">\n <span className=\"dog-dock-mark\"><NetworkIcon size={16} /></span>\n <div className=\"dog-dock-heading\">\n <h2>DoG</h2>\n <span>{loading ? 'Syncing…' : error === undefined ? 'Live goals' : 'Refresh failed'}</span>\n </div>\n <IconButton label=\"Refresh recent DoGs\" busy={loading} onClick={onRefresh}><RefreshIcon /></IconButton>\n </header>\n {error === undefined ? null : <div className=\"dog-dock-error\" title={error}>Last sync failed</div>}\n {revisions.length === 0 ? (\n <div className=\"dog-dock-empty\">\n <span className=\"dog-dock-empty-icon\"><NetworkIcon size={19} /></span>\n <strong>{loading ? 'Loading DoGs' : 'No DoG yet'}</strong>\n <span>dog_create adds the first graph.</span>\n </div>\n ) : (\n <ul className=\"dog-dock-list\">\n {revisions.map(revision => {\n const run = latestRun(revision)\n const total = Object.keys(revision.graph.input.nodes).length\n const settled = settledGoalCount(run)\n const agents = summarizeRunAgents(run, sessions)\n const state = run?.rootState ?? run?.state ?? 'pending'\n const progress = total === 0 ? 0 : Math.round((settled / total) * 100)\n const rootTitle = revision.graph.input.nodes[revision.graph.input.root]?.title ?? revision.graph.input.id\n return (\n <li key={revision.graph.graphDigest}>\n <button\n className=\"dog-dock-card\"\n type=\"button\"\n onClick={() => onOpenRevision(revision)}\n aria-label={`Open ${rootTitle}: ${humanizeState(state)}, ${settled} of ${total} goals complete`}\n >\n <span className=\"dog-dock-card-head\">\n <span className=\"dog-dock-title-wrap\">\n <span className=\"dog-dock-title\">{rootTitle}</span>\n <span className=\"dog-dock-id\">{revision.graph.input.id}</span>\n </span>\n <StatusChip state={state} />\n </span>\n <span className=\"dog-dock-progress\" aria-hidden=\"true\">\n <span style={{ width: `${progress}%` }} />\n </span>\n <span className=\"dog-dock-metrics\">\n <span><strong>{settled}/{total}</strong> nodes</span>\n <span><strong>{agents.linked}</strong> agents</span>\n <span><strong>{agents.running}</strong> live</span>\n <span><strong>{formatTokenMetric(agents.tokens, agents.partialTokens)}</strong> tok</span>\n </span>\n </button>\n </li>\n )\n })}\n </ul>\n )}\n <div className=\"dog-dock-footer\">Open a DoG to inspect its graph and Agents</div>\n </div>\n </aside>\n )\n}\n\ninterface SidebarProps {\n readonly snapshot: DogDebugSnapshot | undefined\n readonly selectedRevision: DogDebugGraphRevision\n readonly selectedRun: DogRun | undefined\n readonly onSelectRevision: (revision: DogDebugGraphRevision) => void\n readonly onSelectRun: (runId: string) => void\n}\n\nfunction Sidebar({ snapshot, selectedRevision, selectedRun, onSelectRevision, onSelectRun }: SidebarProps): JSX.Element {\n return (\n <aside className=\"dog-sidebar\" aria-label=\"Graphs and run history\">\n <h3 className=\"dog-section-label\">Graph revisions</h3>\n <ul className=\"dog-graph-list\">\n {snapshot?.graphs.map(revision => {\n const run = latestRun(revision)\n const state = run?.rootState ?? run?.state ?? 'pending'\n return (\n <li key={revision.graph.graphDigest}>\n <button\n className=\"dog-list-button\"\n type=\"button\"\n data-selected={revision.graph.graphDigest === selectedRevision.graph.graphDigest}\n onClick={() => onSelectRevision(revision)}\n >\n <span className=\"dog-list-row\">\n <span className={`dog-state-dot ${stateClass(state)}`} />\n <span className=\"dog-list-title\">{revision.graph.input.id}</span>\n </span>\n <span className=\"dog-list-meta\">\n <span className={revision.current ? 'dog-list-current' : undefined}>{revision.current ? 'current' : 'historical'}</span>\n <span>·</span>\n <span>{Object.keys(revision.graph.input.nodes).length} goals</span>\n <span>·</span>\n <span className=\"dog-mono\">{shortDigest(revision.graph.graphDigest)}</span>\n </span>\n </button>\n </li>\n )\n })}\n </ul>\n <div className=\"dog-sidebar-divider\" />\n <h3 className=\"dog-section-label\">Run history</h3>\n {selectedRevision.runs.length === 0 ? (\n <p className=\"dog-empty-small\">No runs are bound to this immutable revision.</p>\n ) : (\n <ul className=\"dog-run-list\">\n {selectedRevision.runs.map(run => {\n const state = run.rootState ?? run.state\n return (\n <li key={run.runId}>\n <button\n className=\"dog-list-button\"\n type=\"button\"\n data-selected={run.runId === selectedRun?.runId}\n onClick={() => onSelectRun(run.runId)}\n >\n <span className=\"dog-list-row\">\n <span className={`dog-state-dot ${stateClass(state)}`} />\n <span className=\"dog-list-title\">{humanizeState(state)}</span>\n </span>\n <span className=\"dog-list-meta\">\n <span>{formatTime(run.updatedAt)}</span>\n <span>·</span>\n <span className=\"dog-mono\">{shortId(run.runId)}</span>\n </span>\n </button>\n </li>\n )\n })}\n </ul>\n )}\n </aside>\n )\n}\n\nfunction Summary({ revision, run, sessions }: {\n readonly revision: DogDebugGraphRevision\n readonly run: DogRun | undefined\n readonly sessions: SessionListState\n}): JSX.Element {\n const results = Object.values(run?.goals ?? {})\n const attention = results.filter(result => isAttentionGoal(result.state)).length\n const total = Object.keys(revision.graph.input.nodes).length\n const settled = settledGoalCount(run)\n const agents = summarizeRunAgents(run, sessions)\n const state = run?.rootState ?? run?.state ?? 'pending'\n return (\n <section className=\"dog-summary\" aria-label=\"Run summary\">\n <div className={`dog-summary-primary ${stateClass(state)}`}>\n <span className=\"dog-root-orb\"><RootIcon /></span>\n <div className=\"dog-summary-copy\">\n <div className=\"dog-summary-kicker\">Root outcome</div>\n <div className=\"dog-summary-value\">{humanizeState(state)}</div>\n </div>\n </div>\n <Metric label=\"Nodes\" value={`${settled}/${total}`} />\n <Metric label=\"Agent tokens\" value={formatTokenMetric(agents.tokens, agents.partialTokens)} />\n <Metric label=\"Agents\" value={`${agents.linked} · ${agents.running} live`} />\n <Metric label=\"Attention\" value={String(attention)} />\n </section>\n )\n}\n\nfunction Metric({ label, value }: { readonly label: string; readonly value: string }): JSX.Element {\n return <div className=\"dog-metric\"><div className=\"dog-metric-label\">{label}</div><div className=\"dog-metric-value\">{value}</div></div>\n}\n\nfunction CanvasToolbar({ zoom, onZoom }: { readonly zoom: number; readonly onZoom: (value: number) => void }): JSX.Element {\n const adjust = (delta: number): void => onZoom(clampZoom(zoom + delta))\n return (\n <div className=\"dog-canvas-toolbar\">\n <div className=\"dog-legend\" aria-label=\"Edge legend\">\n <span className=\"dog-legend-item\"><span className=\"dog-legend-line\" />Contains</span>\n <span className=\"dog-legend-item\"><span className=\"dog-legend-line\" data-kind=\"depends\" />Depends on</span>\n </div>\n <span className=\"dog-canvas-spacer\" />\n <div className=\"dog-zoom\" aria-label=\"Canvas zoom\">\n <button className=\"dog-zoom-button\" type=\"button\" aria-label=\"Zoom out\" onClick={() => adjust(-0.1)}>−</button>\n <span className=\"dog-zoom-value\">{Math.round(zoom * 100)}%</span>\n <button className=\"dog-zoom-button\" type=\"button\" aria-label=\"Zoom in\" onClick={() => adjust(0.1)}>+</button>\n </div>\n </div>\n )\n}\n\ninterface GraphCanvasProps {\n readonly graph: CompiledGraph\n readonly run: DogRun | undefined\n readonly sessions: SessionListState\n readonly selectedNodeId: string | undefined\n readonly zoom: number\n readonly onSelectNode: (id: string) => void\n readonly openSession: DogDebuggerProps['openSession']\n}\n\nfunction GraphCanvas({ graph, run, sessions, selectedNodeId, zoom, onSelectNode, openSession }: GraphCanvasProps): JSX.Element {\n const layout = useMemo(() => layoutDag(graph.input), [graph])\n const [expandedAgentNodeId, setExpandedAgentNodeId] = useState<string>()\n const scaledWidth = layout.width * zoom\n const scaledHeight = layout.height * zoom\n const stageStyle: CSSProperties = { width: layout.width, height: layout.height, transform: `scale(${zoom})` }\n const wrapStyle: CSSProperties = { width: scaledWidth, height: scaledHeight, minWidth: '100%' }\n\n useEffect(() => setExpandedAgentNodeId(undefined), [graph.graphDigest, run?.runId])\n\n return (\n <div className=\"dog-canvas-scroll\">\n <div className=\"dog-canvas-stage-wrap\" style={wrapStyle}>\n <div className=\"dog-canvas-stage\" style={stageStyle}>\n <svg className=\"dog-edges\" width={layout.width} height={layout.height} aria-hidden=\"true\">\n <defs>\n <marker id=\"dog-dependency-arrow\" markerWidth=\"8\" markerHeight=\"8\" refX=\"7\" refY=\"4\" orient=\"auto\" markerUnits=\"strokeWidth\">\n <path d=\"M 0 0 L 8 4 L 0 8 z\" fill=\"#c07a39\" />\n </marker>\n </defs>\n {layout.edges.map(edge => {\n const connected = selectedNodeId === undefined || edge.source === selectedNodeId || edge.target === selectedNodeId\n return <path\n key={edge.id}\n className=\"dog-edge\"\n data-kind={edge.kind}\n data-muted={!connected}\n data-highlighted={connected && selectedNodeId !== undefined}\n d={edge.path}\n markerEnd={edge.kind === 'dependsOn' ? 'url(#dog-dependency-arrow)' : undefined}\n />\n })}\n </svg>\n {layout.nodes.map(position => {\n const node = graph.input.nodes[position.id]\n if (node === undefined) return null\n const result = run?.goals[position.id] ?? { state: 'pending' as const }\n const agents = goalAgentRefs(run, position.id)\n const expanded = expandedAgentNodeId === position.id\n const style: CSSProperties = {\n left: position.x,\n top: position.y,\n width: position.width,\n height: position.height,\n }\n return (\n <Fragment key={position.id}>\n <button\n className=\"dog-node\"\n type=\"button\"\n style={style}\n data-selected={position.id === selectedNodeId}\n data-root={position.id === graph.input.root}\n data-agents-expanded={expanded || undefined}\n aria-expanded={expanded}\n aria-label={`${node.title}: ${humanizeState(result.state)}. Click to ${expanded ? 'hide' : 'show'} ${agents.length} related Agents.`}\n onClick={() => {\n onSelectNode(position.id)\n setExpandedAgentNodeId(current => current === position.id ? undefined : position.id)\n }}\n >\n <span className=\"dog-node-top\">\n <span className={position.id === graph.input.root ? 'dog-node-kind dog-node-root' : 'dog-node-kind'}>\n {position.id === graph.input.root ? 'Root goal' : `${node.constraint} · ${node.kind}`}\n </span>\n <StatusChip state={result.state} />\n </span>\n <span className=\"dog-node-title\">{node.title}</span>\n <span className=\"dog-node-foot\">\n <span className=\"dog-node-id\">{position.id}</span>\n <span className=\"dog-node-agents\"><AgentIcon />{agents.length}</span>\n </span>\n </button>\n {expanded ? (\n <AgentFlyout\n goalTitle={node.title}\n refs={agents}\n sessions={sessions}\n style={agentFlyoutStyle(position, layout.width, layout.height)}\n onClose={() => setExpandedAgentNodeId(undefined)}\n openSession={openSession}\n />\n ) : null}\n </Fragment>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n\ninterface AgentFlyoutProps {\n readonly goalTitle: string\n readonly refs: readonly GoalAgentSessionRef[]\n readonly sessions: SessionListState\n readonly style: CSSProperties\n readonly onClose: () => void\n readonly openSession: DogDebuggerProps['openSession']\n}\n\nfunction AgentFlyout({ goalTitle, refs, sessions, style, onClose, openSession }: AgentFlyoutProps): JSX.Element {\n const [openingSession, setOpeningSession] = useState<string>()\n const [error, setError] = useState<string>()\n const agents = refs.map(ref => goalAgentTelemetry(ref, sessions))\n const open = async (ref: GoalAgentSessionRef): Promise<void> => {\n setOpeningSession(ref.sessionId)\n setError(undefined)\n try {\n if (!await openSession(ref.sessionId, ref.parentSessionId)) {\n setError('This Agent session is no longer addressable.')\n }\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : String(cause))\n } finally {\n setOpeningSession(undefined)\n }\n }\n return (\n <section className=\"dog-agent-flyout\" style={style} aria-label={`Agents related to ${goalTitle}`}>\n <header className=\"dog-agent-flyout-head\">\n <span><AgentIcon /> Related Agents</span>\n <button type=\"button\" onClick={onClose} aria-label=\"Close related Agents\"><CloseIcon /></button>\n </header>\n {agents.length === 0 ? (\n <div className=\"dog-agent-empty\">No Agent has bound itself to this node.</div>\n ) : (\n <ul className=\"dog-agent-list\">\n {agents.map(agent => {\n const activity = agent.needsInput ? 'Needs input' : agent.running ? 'Running' : agent.available ? 'Finished' : 'Unavailable'\n return (\n <li key={agent.ref.sessionId}>\n <button\n className=\"dog-agent-row\"\n type=\"button\"\n disabled={openingSession !== undefined}\n onClick={() => void open(agent.ref)}\n aria-label={`Open ${agent.label}, ${activity}`}\n >\n <span className={`dog-agent-state ${agent.running ? 'dog-state-running' : agent.available ? 'dog-state-success' : 'dog-state-blocked'}`} />\n <span className=\"dog-agent-copy\">\n <span className=\"dog-agent-name\">{agent.label}</span>\n <span className=\"dog-agent-meta\">{humanizeState(agent.ref.role)} · {activity}</span>\n </span>\n <span className=\"dog-agent-metrics\">\n <span>{agent.tokens === undefined ? '— tok' : `${formatCompactNumber(agent.tokens)} tok`}</span>\n <span>{agent.durationMs === undefined ? '—' : formatAgentDuration(agent.durationMs)}</span>\n </span>\n </button>\n </li>\n )\n })}\n </ul>\n )}\n {error === undefined ? null : <div className=\"dog-agent-error\" role=\"status\">{error}</div>}\n <div className=\"dog-agent-hint\">Click an Agent to open its native DSH conversation.</div>\n </section>\n )\n}\n\nfunction Inspector({ graph, run, nodeId, readGoalRuntime, openSession }: {\n readonly graph: CompiledGraph\n readonly run: DogRun | undefined\n readonly nodeId: string | undefined\n readonly readGoalRuntime: DogDebuggerProps['readGoalRuntime']\n readonly openSession: DogDebuggerProps['openSession']\n}): JSX.Element {\n const node = nodeId === undefined ? undefined : graph.input.nodes[nodeId]\n if (node === undefined || nodeId === undefined) {\n return <aside className=\"dog-inspector\"><p className=\"dog-empty-small\">Select a goal to inspect its contract and evidence.</p></aside>\n }\n const result = run?.goals[nodeId] ?? { state: 'pending' as const }\n const plan = graph.acceptancePlans[nodeId]\n const parents = graph.input.contains.filter(edge => edge.child === nodeId)\n const children = graph.input.contains.filter(edge => edge.parent === nodeId)\n const dependencies = graph.input.dependsOn.filter(edge => edge.source === nodeId || edge.target === nodeId)\n const reason = result.reason ?? (result.verification?.passed === false\n ? 'Trusted verifier returned false for this sandboxed input.'\n : undefined)\n return (\n <aside className=\"dog-inspector\" aria-label=\"Selected goal details\">\n <div className=\"dog-inspector-head\">\n <div className=\"dog-inspector-title-wrap\">\n <div className=\"dog-inspector-eyebrow\">{nodeId === graph.input.root ? 'Root goal' : 'Goal contract'}</div>\n <h3 className=\"dog-inspector-title\">{node.title}</h3>\n </div>\n <StatusChip state={result.state} />\n </div>\n <div className=\"dog-inspector-chips\">\n <span className=\"dog-mini-chip\">{node.constraint}</span>\n <span className=\"dog-mini-chip\">{node.kind}</span>\n <span className=\"dog-mini-chip dog-mono\">{nodeId}</span>\n </div>\n {reason === undefined ? null : (\n <section className={`dog-inspector-section ${stateClass(result.state)}`}>\n <h4 className=\"dog-inspector-section-title\">Why this state</h4>\n <div className=\"dog-reason\">{reason}</div>\n </section>\n )}\n <section className=\"dog-inspector-section\">\n <h4 className=\"dog-inspector-section-title\">Contract</h4>\n <dl className=\"dog-definition\">\n <dt>Constraint</dt><dd>{node.constraint}</dd>\n <dt>Completion</dt><dd className=\"dog-mono\">{node.completion === undefined ? 'atomic verifier' : formatExpression(node.completion)}</dd>\n <dt>Updated</dt><dd>{run === undefined ? 'No run yet' : formatTimestamp(run.updatedAt)}</dd>\n <dt>Graph digest</dt><dd className=\"dog-mono\" title={graph.graphDigest}>{shortDigest(graph.graphDigest)}</dd>\n </dl>\n </section>\n <RuntimeContextPanel\n run={run}\n goalId={nodeId}\n readGoalRuntime={readGoalRuntime}\n openSession={openSession}\n />\n <Evidence node={node} result={result} plan={plan} />\n <section className=\"dog-inspector-section\">\n <h4 className=\"dog-inspector-section-title\">Relations</h4>\n {parents.length + children.length + dependencies.length === 0 ? <p className=\"dog-empty-small\">No graph relations.</p> : (\n <ul className=\"dog-relation-list\">\n {parents.map((edge, index) => <li className=\"dog-relation\" key={`parent:${index}`}><strong>{edge.parent}</strong> contains this goal · {edge.required ? 'required' : 'optional'} · {edge.failure}</li>)}\n {children.map((edge, index) => <li className=\"dog-relation\" key={`child:${index}`}>Contains <strong>{edge.child}</strong> · {edge.required ? 'required' : 'optional'} · {edge.failure}</li>)}\n {dependencies.map((edge, index) => <li className=\"dog-relation\" data-kind=\"dependsOn\" key={`dependency:${index}`}><strong>{edge.source}</strong> depends on <strong>{edge.target}</strong>{edge.data === undefined ? '' : ` · ${edge.data.join(', ')}`}</li>)}\n </ul>\n )}\n </section>\n <section className=\"dog-inspector-section\">\n <details className=\"dog-raw\">\n <summary>Raw goal record</summary>\n <pre>{JSON.stringify({ nodeId, node, result, acceptancePlan: plan }, null, 2)}</pre>\n </details>\n </section>\n </aside>\n )\n}\n\ninterface RuntimeContextPanelProps {\n readonly run: DogRun | undefined\n readonly goalId: string\n readonly readGoalRuntime: DogDebuggerProps['readGoalRuntime']\n readonly openSession: DogDebuggerProps['openSession']\n}\n\nfunction RuntimeContextPanel({ run, goalId, readGoalRuntime, openSession }: RuntimeContextPanelProps): JSX.Element {\n const [trace, setTrace] = useState<GoalRuntimeTrace>()\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string>()\n const [sessionError, setSessionError] = useState<string>()\n const [openingSession, setOpeningSession] = useState(false)\n const runId = run?.runId\n const runState = run?.state\n\n useEffect(() => {\n setTrace(undefined)\n setError(undefined)\n setSessionError(undefined)\n setOpeningSession(false)\n if (runId === undefined || runState === undefined) {\n setLoading(false)\n return\n }\n let disposed = false\n let inFlight = false\n const controller = new AbortController()\n const refresh = async (): Promise<void> => {\n if (inFlight) return\n inFlight = true\n setLoading(true)\n try {\n const next = parseGoalRuntimeTrace(await readGoalRuntime(runId, goalId, controller.signal))\n if (next.runId !== runId || next.goalId !== goalId) throw new Error('runtime trace identity mismatch')\n if (!disposed) {\n setTrace(next)\n setError(undefined)\n }\n } catch (cause) {\n if (!disposed && !controller.signal.aborted) setError(cause instanceof Error ? cause.message : String(cause))\n } finally {\n inFlight = false\n if (!disposed) setLoading(false)\n }\n }\n void refresh()\n const timer = runState === 'running'\n ? window.setInterval(() => void refresh(), 1_500)\n : undefined\n return () => {\n disposed = true\n controller.abort()\n if (timer !== undefined) window.clearInterval(timer)\n }\n }, [goalId, readGoalRuntime, runId, runState])\n\n if (run === undefined) {\n return (\n <section className=\"dog-inspector-section\">\n <h4 className=\"dog-inspector-section-title\">Runtime context</h4>\n <p className=\"dog-empty-small dog-runtime-empty\">Run this graph to capture node activity and failure context.</p>\n </section>\n )\n }\n\n const events = trace?.events ?? []\n const latestEvent = events[events.length - 1]\n const errorEvent = [...events].reverse().find(event => event.phase === 'structured_error')\n const attempts = new Set(events.map(event => event.attempt ?? 1)).size\n const invocation = trace?.invocation\n const goalState = trace?.result.state ?? run.goals[goalId]?.state ?? 'pending'\n const activity = runtimeActivity(goalState, latestEvent, loading)\n const openInvoker = async (): Promise<void> => {\n setSessionError(undefined)\n const sessionId = invocation?.agentSessionId\n const parentSessionId = invocation?.parentSessionId\n if (sessionId === undefined) return\n setOpeningSession(true)\n try {\n if (!await openSession(sessionId, parentSessionId)) {\n setSessionError('The invoking session is no longer available in this client.')\n }\n } catch (cause) {\n setSessionError(cause instanceof Error ? cause.message : String(cause))\n } finally {\n setOpeningSession(false)\n }\n }\n\n return (\n <section className=\"dog-inspector-section\" aria-label=\"Goal runtime context\">\n <div className=\"dog-runtime-heading\">\n <h4 className=\"dog-inspector-section-title\">Runtime context</h4>\n {loading ? <span className=\"dog-runtime-live\"><span className=\"dog-runtime-pulse\" />refreshing</span> : null}\n </div>\n {error === undefined ? null : <div className=\"dog-runtime-warning\">Context unavailable: {error}</div>}\n {trace?.runtimeWarning === undefined ? null : <div className=\"dog-runtime-warning\">{trace.runtimeWarning}</div>}\n <div className={`dog-runtime-card ${stateClass(goalState)}`}>\n <span className=\"dog-runtime-orb\" />\n <div className=\"dog-runtime-card-copy\">\n <div className=\"dog-runtime-activity\">{activity}</div>\n <div className=\"dog-runtime-meta\">\n {events.length === 0 ? 'No events yet' : `${events.length} events · ${attempts} attempt${attempts === 1 ? '' : 's'}`}\n {latestEvent?.durationMs === undefined ? '' : ` · ${formatDuration(latestEvent.durationMs)}`}\n </div>\n </div>\n </div>\n {errorEvent === undefined || errorEvent.reason === undefined ? null : (\n <div className={`dog-runtime-error ${stateClass(errorEvent.state ?? 'needs_human')}`}>\n <strong>Verification error</strong>\n <span>{errorEvent.reason}</span>\n </div>\n )}\n {invocation === undefined ? null : (\n <div className=\"dog-runtime-session\">\n <div className=\"dog-runtime-session-head\">\n <span>Invoking DSH session</span>\n {invocation.agentSessionId === undefined ? null : (\n <button className=\"dog-runtime-session-button\" type=\"button\" disabled={openingSession} onClick={() => void openInvoker()}>{openingSession ? 'Opening…' : 'Open session'}</button>\n )}\n </div>\n <dl className=\"dog-definition\">\n <dt>Session</dt><dd className=\"dog-mono\">{invocation.agentSessionId === undefined ? 'headless / unavailable' : shortId(invocation.agentSessionId)}</dd>\n {invocation.parentSessionId === undefined ? null : <><dt>Parent</dt><dd className=\"dog-mono\">{shortId(invocation.parentSessionId)}</dd></>}\n <dt>Tool call</dt><dd className=\"dog-mono\" title={invocation.callId}>{shortId(invocation.callId)}</dd>\n <dt>Invoked</dt><dd>{formatTimestamp(invocation.invokedAt)}</dd>\n </dl>\n {sessionError === undefined ? null : <div className=\"dog-runtime-session-error\">{sessionError}</div>}\n </div>\n )}\n {events.length === 0 ? (\n <p className=\"dog-empty-small dog-runtime-empty\">\n {loading ? 'Loading node activity…' : 'No runtime events were recorded for this node.'}\n </p>\n ) : (\n <ol className=\"dog-runtime-timeline\" aria-label=\"Runtime event timeline\">\n {events.map((event, index) => (\n <li className={`dog-runtime-event ${stateClass(event.state ?? 'running')}`} key={index}>\n <span className=\"dog-runtime-marker\" />\n <div className=\"dog-runtime-event-copy\">\n <div className=\"dog-runtime-event-head\">\n <strong>{runtimeEventLabel(event.phase)}</strong>\n <time dateTime={event.at}>{formatTime(event.at)}</time>\n </div>\n {event.attempt === undefined ? null : <div className=\"dog-runtime-event-meta\">Attempt {event.attempt}</div>}\n {runtimeEventDetail(event) === undefined ? null : <div className=\"dog-runtime-event-detail\">{runtimeEventDetail(event)}</div>}\n </div>\n </li>\n ))}\n </ol>\n )}\n {trace?.truncated === true ? <div className=\"dog-runtime-warning\">Showing the latest 64 events for this goal.</div> : null}\n {trace === undefined ? null : (\n <details className=\"dog-raw dog-runtime-raw\">\n <summary>Raw runtime trace</summary>\n <pre>{JSON.stringify(trace, null, 2)}</pre>\n </details>\n )}\n </section>\n )\n}\n\nfunction runtimeActivity(state: GoalState, event: GoalRuntimeEvent | undefined, loading: boolean): string {\n if (event === undefined) return loading ? 'Loading runtime context' : state === 'pending' ? 'Waiting for scheduler' : humanizeState(state)\n if (event.phase === 'verifier_started' && event.verifier !== undefined) return `Running ${event.verifier.mode} kernel`\n if (event.phase === 'dependency_blocked') return 'Blocked by an upstream dependency'\n if (event.phase === 'structured_error') return 'Execution needs human review'\n if (event.phase === 'goal_settled') return `Settled as ${humanizeState(event.state ?? state)}`\n return runtimeEventLabel(event.phase)\n}\n\nfunction runtimeEventLabel(phase: GoalRuntimeEvent['phase']): string {\n switch (phase) {\n case 'goal_started': return 'Goal started'\n case 'dependency_blocked': return 'Dependency blocked'\n case 'grounding_extracted': return 'Grounding material extracted'\n case 'workspace_allocated': return 'Isolated workspace allocated'\n case 'verifier_started': return 'Verifier started'\n case 'verifier_passed': return 'Verifier passed'\n case 'verifier_failed': return 'Verifier failed'\n case 'verifier_inconclusive': return 'Verifier inconclusive'\n case 'composite_evaluated': return 'Completion rule evaluated'\n case 'result_inherited': return 'Verification reused: material unchanged'\n case 'verifier_released': return 'Verifier worker released'\n case 'verifier_bind_failed': return 'Verifier worker binding failed'\n case 'structured_error': return 'Runtime error'\n case 'goal_settled': return 'Goal settled'\n case 'run_warning': return 'Run warning'\n }\n}\n\nfunction runtimeEventDetail(event: GoalRuntimeEvent): string | undefined {\n if (event.reason !== undefined) return event.reason\n if (event.verifier !== undefined) return `${event.verifier.mode} kernel`\n return undefined\n}\n\nfunction formatDuration(value: number): string {\n return value < 1_000 ? `${value} ms` : `${(value / 1_000).toFixed(value < 10_000 ? 1 : 0)} s`\n}\n\nfunction Evidence({ node, result, plan }: { readonly node: GoalNodeInput; readonly result: GoalResult; readonly plan: CompiledGraph['acceptancePlans'][string] | undefined }): JSX.Element | null {\n if (node.kind !== 'leaf') return null\n return (\n <section className=\"dog-inspector-section\">\n <h4 className=\"dog-inspector-section-title\">Trusted evidence</h4>\n {plan === undefined ? <div className=\"dog-reason dog-state-needs_human\">No compiled acceptance plan is available.</div> : (\n <div className=\"dog-evidence\">\n <div className=\"dog-evidence-head\">\n <span className=\"dog-evidence-name\">{plan.verifier.mode === 'programmatic' ? `script:${plan.verifier.script}` : 'agentic'}</span>\n {result.verification === undefined ? <span className=\"dog-mini-chip\">not run</span> : <StatusChip state={result.verification.passed ? 'success' : 'failure'} />}\n </div>\n <div className=\"dog-evidence-body\">\n <dl className=\"dog-definition\">\n <dt>Sandbox file</dt><dd className=\"dog-mono\">{(typeof plan.input?.path === 'string' && plan.input.path.length > 0) ? plan.input.path : '(run workspace)'}</dd>\n <dt>Digest</dt><dd className=\"dog-mono\" title={plan.input?.digest}>{plan.input === undefined ? '—' : shortId(plan.input.digest)}</dd>\n <dt>Bytes</dt><dd>{plan.input === undefined ? '—' : plan.input.byteLength.toLocaleString()}</dd>\n <dt>Target</dt><dd className=\"dog-mono\">{plan.target}</dd>\n </dl>\n {result.verification === undefined ? null : (\n <div className=\"dog-inspector-section\">\n <h5 className=\"dog-inspector-section-title\">Evidence</h5>\n <div className=\"dog-observation\">\n {Object.entries(result.verification.evidence as unknown as Record<string, JsonValue> ?? {}).map(([key, value]) => (\n <div className=\"dog-observation-row\" key={key}>\n <span className=\"dog-observation-key\">{key}</span>\n <span className=\"dog-observation-value\">{formatJson(value)}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n </section>\n )\n}\n\nfunction EmptyWorkspace({ loading, error }: { readonly loading: boolean; readonly error: string | undefined }): JSX.Element {\n return (\n <div className=\"dog-workspace\">\n <div className=\"dog-empty\">\n <div className=\"dog-empty-card\">\n <div className=\"dog-empty-icon\">{loading ? <RefreshIcon /> : <NetworkIcon size={22} />}</div>\n <h3 className=\"dog-empty-title\">{loading ? 'Loading DoG revisions…' : error === undefined ? 'No persisted graphs yet' : 'Debugger data unavailable'}</h3>\n <p className=\"dog-empty-copy\">{error ?? 'Create a graph with dog_create, then run it. The immutable revision and verifier evidence will appear here automatically.'}</p>\n </div>\n </div>\n </div>\n )\n}\n\nfunction StatusChip({ state }: { readonly state: GoalState | RootTerminalState | DogRun['state'] }): JSX.Element {\n const title = state === 'inherited'\n ? 'Reused the prior run verification record: same material digest (GM) and same verifier contract. Not re-run.'\n : undefined\n return <span className={`dog-status-chip ${stateClass(state)}`} title={title}>{humanizeState(state)}</span>\n}\n\nfunction IconButton({ label, busy, onClick, children }: { readonly label: string; readonly busy: boolean; readonly onClick: () => void; readonly children: ReactNode }): JSX.Element {\n return <button className=\"dog-icon-button\" type=\"button\" aria-label={label} title={label} aria-busy={busy} onClick={onClick}>{children}</button>\n}\n\nfunction readDogDockCollapsed(): boolean {\n try {\n if (typeof window === 'undefined') return true\n const stored = window.localStorage.getItem(DOG_DOCK_COLLAPSED_KEY)\n return stored === null ? true : stored === 'true'\n } catch {\n return true\n }\n}\n\nfunction writeDogDockCollapsed(collapsed: boolean): void {\n try {\n window.localStorage.setItem(DOG_DOCK_COLLAPSED_KEY, String(collapsed))\n } catch {\n // Storage can be unavailable in restricted browser contexts; in-memory state still works.\n }\n}\n\nfunction latestRun(revision: DogDebugGraphRevision): DogRun | undefined {\n return revision.runs[0]\n}\n\nfunction isAttentionGoal(state: GoalState): boolean {\n return state === 'failure' || state === 'needs_human' || state === 'blocked' || state === 'partial'\n}\n\n\nfunction stateClass(state: string): string {\n return `dog-state-${state}`\n}\n\nfunction humanizeState(state: string): string {\n return state.replaceAll('_', ' ').replace(/\\b\\w/gu, letter => letter.toUpperCase())\n}\n\nfunction formatExpression(expression: BoolExpr): string {\n switch (expression.op) {\n case 'ref': return expression.id\n case 'not': return `NOT(${formatExpression(expression.item)})`\n case 'all': return `ALL(${expression.items.map(formatExpression).join(', ')})`\n case 'any': return `ANY(${expression.items.map(formatExpression).join(', ')})`\n case 'atLeast': return `AT_LEAST ${expression.count}(${expression.items.map(formatExpression).join(', ')})`\n }\n}\n\nfunction formatJson(value: JsonValue): string {\n return typeof value === 'string' ? value : JSON.stringify(value)\n}\n\nfunction formatTime(value: string): string {\n const date = new Date(value)\n if (Number.isNaN(date.getTime())) return value\n return new Intl.DateTimeFormat(undefined, { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric' }).format(date)\n}\n\nfunction formatTimestamp(value: string): string {\n const date = new Date(value)\n if (Number.isNaN(date.getTime())) return value\n return new Intl.DateTimeFormat(undefined, { dateStyle: 'medium', timeStyle: 'short' }).format(date)\n}\n\nfunction shortDigest(value: string): string {\n return `${value.slice(0, 8)}…${value.slice(-5)}`\n}\n\nfunction shortId(value: string): string {\n return value.length <= 17 ? value : `${value.slice(0, 9)}…${value.slice(-6)}`\n}\n\nfunction formatCompactNumber(value: number): string {\n return new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1 }).format(value)\n}\n\nfunction formatTokenMetric(tokens: number | undefined, partial: boolean): string {\n if (tokens === undefined) return '—'\n const formatted = formatCompactNumber(tokens)\n return partial ? `≥${formatted}` : formatted\n}\n\nfunction formatAgentDuration(value: number): string {\n if (value < 60_000) return `${Math.max(1, Math.round(value / 1_000))}s`\n if (value < 3_600_000) return `${Math.round(value / 60_000)}m`\n return `${(value / 3_600_000).toFixed(value < 36_000_000 ? 1 : 0)}h`\n}\n\nfunction agentFlyoutStyle(position: PositionedGoal, canvasWidth: number, canvasHeight: number): CSSProperties {\n const width = 228\n const gap = 10\n const right = position.x + position.width + gap\n const left = right + width <= canvasWidth ? right : Math.max(gap, position.x - width - gap)\n const maxHeight = Math.max(150, canvasHeight - gap * 2)\n const top = Math.min(Math.max(gap, position.y - 4), Math.max(gap, canvasHeight - Math.min(250, maxHeight) - gap))\n return { left, top, width, maxHeight }\n}\n\nfunction clampZoom(value: number): number {\n return Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, Math.round(value * 10) / 10))\n}\n\n\nfunction NetworkIcon({ size = 16 }: { readonly size?: number }): JSX.Element {\n return <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"5\" r=\"2.5\" fill=\"currentColor\" /><circle cx=\"5\" cy=\"18\" r=\"2.5\" fill=\"currentColor\" /><circle cx=\"19\" cy=\"18\" r=\"2.5\" fill=\"currentColor\" /><path d=\"M10.6 7.1 6.4 15.6M13.4 7.1l4.2 8.5M7.5 18h9\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" /></svg>\n}\nfunction AgentIcon(): JSX.Element {\n return <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"8\" r=\"3.2\" stroke=\"currentColor\" strokeWidth=\"1.7\" /><path d=\"M5.5 19c.5-3.4 2.7-5.3 6.5-5.3s6 1.9 6.5 5.3\" stroke=\"currentColor\" strokeWidth=\"1.7\" strokeLinecap=\"round\" /><path d=\"M18.3 7.2h2.2M19.4 6.1v2.2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></svg>\n}\nfunction RefreshIcon(): JSX.Element {\n return <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M19 8a8 8 0 1 0 1 7M19 4v4h-4\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n}\nfunction CloseIcon(): JSX.Element {\n return <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"m6 6 12 12M18 6 6 18\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" /></svg>\n}\nfunction DockCollapseIcon(): JSX.Element {\n return <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"m14.5 6-6 6 6 6\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n}\nfunction DockExpandIcon(): JSX.Element {\n return <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"m9.5 6 6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n}\nfunction RootIcon(): JSX.Element {\n return <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M12 3 4.5 7.2v9.6L12 21l7.5-4.2V7.2L12 3Z\" stroke=\"currentColor\" strokeWidth=\"1.7\" /><circle cx=\"12\" cy=\"12\" r=\"2.3\" fill=\"currentColor\" /></svg>\n}\n","import type { SessionId } from '@deepseek-ai/dsh-session'\n/** Reliable navigation from persisted DoG invocation metadata into the canonical DSH session stage. */\n\nimport type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client'\n\nconst DEFAULT_SELECTION_TIMEOUT_MS = 2_000\n\ntype SessionNavigator = Pick<\n ISessions,\n 'list' | 'open' | 'openSubagent' | 'subagentAddress' | 'refreshSubagents'\n>\n\n/**\n * Select a persisted invocation session and confirm that DSH actually staged it.\n * Returns false only when neither the ordinary session list nor a refreshed\n * direct-parent catalog can address the target.\n */\nexport async function openInvocationSession(\n sessions: SessionNavigator,\n rawSessionId: string,\n rawParentSessionId?: string,\n timeoutMs = DEFAULT_SELECTION_TIMEOUT_MS,\n): Promise<boolean> {\n const sessionId = rawSessionId as SessionId\n if (sessions.list.getSnapshot().current === sessionId) return true\n\n if (sessions.list.getSnapshot().ids.includes(sessionId)) {\n await selectAndConfirm(sessions, sessionId, () => sessions.open(sessionId), timeoutMs)\n return true\n }\n\n let address = sessions.subagentAddress(sessionId)\n if (address === undefined && rawParentSessionId !== undefined) {\n await sessions.refreshSubagents(rawParentSessionId as SessionId)\n address = sessions.subagentAddress(sessionId)\n }\n if (address === undefined) return false\n\n await selectAndConfirm(sessions, sessionId, () => sessions.openSubagent(address), timeoutMs)\n return true\n}\n\nasync function selectAndConfirm(\n sessions: SessionNavigator,\n sessionId: SessionId,\n select: () => void,\n timeoutMs: number,\n): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n let settled = false\n let unsubscribe = (): void => undefined\n const finish = (error?: Error): void => {\n if (settled) return\n settled = true\n clearTimeout(timer)\n unsubscribe()\n if (error === undefined) resolve()\n else reject(error)\n }\n const confirm = (): void => {\n if (sessions.list.getSnapshot().current === sessionId) finish()\n }\n const timer = setTimeout(() => {\n finish(new Error(`DSH did not select session ${sessionId} within ${timeoutMs} ms`))\n }, timeoutMs)\n unsubscribe = sessions.list.subscribe(confirm)\n try {\n select()\n confirm()\n } catch (cause) {\n finish(cause instanceof Error ? cause : new Error(String(cause)))\n }\n })\n}\n","/** Scoped styles for the frame overlay; installed and removed with the client plugin fiber. */\n\nexport const DOG_DEBUG_STYLE_ID = '@dsh-external/dsh-dog/debugger'\n\nexport const DOG_DEBUG_CSS = String.raw`\n.dog-overlay-root,\n.dog-overlay-root * { box-sizing: border-box; }\n.dog-overlay-root { pointer-events: none; font-family: inherit; }\n.dog-dock {\n pointer-events: auto; position: fixed; top: 14px; right: 16px; bottom: 14px; z-index: 380;\n width: min(354px, calc(100vw - 24px)); display: flex; flex-direction: column;\n color: var(--dsw-alias-label-primary); background: color-mix(in srgb, var(--dsw-alias-bg-base) 92%, #7065e9 8%);\n border: 1px solid color-mix(in srgb, #7165e9 35%, var(--dsw-alias-border-l1)); border-radius: 16px;\n box-shadow: 0 16px 48px rgba(12, 16, 29, .22); backdrop-filter: blur(18px) saturate(1.08); overflow: hidden;\n}\n.dog-overlay-root[data-dog-dock-layout=hidden] .dog-dock { display: none; }\n.dog-overlay-root[data-dog-dock-layout=floating] .dog-dock { top: 70px; bottom: auto; max-height: min(346px, calc(100dvh - 84px)); }\n.dog-overlay-root[data-dog-dock-layout=collapsed] .dog-dock { top: 50%; right: 10px; bottom: auto; width: 46px; max-height: none; transform: translateY(-50%); border-radius: 14px; }\n.dog-dock-rail { width: 100%; min-height: 112px; border: 0; padding: 9px 4px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px; color: var(--dsw-alias-label-secondary); background: transparent; cursor: pointer; font: inherit; }\n.dog-dock-rail:hover { color: var(--dsw-alias-label-primary); background: color-mix(in srgb, #7165e9 9%, transparent); }\n.dog-dock-rail-mark { width: 28px; height: 28px; border-radius: 9px; display: grid; place-items: center; color: #fff; background: linear-gradient(145deg, #8174ff, #4b41ba); box-shadow: 0 5px 13px rgba(92, 78, 203, .22); }\n.dog-dock-rail strong { font-size: 10px; line-height: 14px; letter-spacing: .035em; }\n.dog-dock[data-collapsed=false] { display: grid; grid-template-columns: 32px minmax(0, 1fr); }\n.dog-dock-collapse-slot { min-height: 0; display: flex; align-items: center; justify-content: center; border-right: 1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 72%, transparent); background: color-mix(in srgb, #7165e9 4%, transparent); }\n.dog-dock-collapse-handle { width: 24px; height: 64px; border: 1px solid color-mix(in srgb, #7165e9 28%, var(--dsw-alias-border-l2)); border-radius: 8px; display: grid; place-items: center; color: var(--dsw-alias-label-secondary); background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 92%, #7165e9 8%); cursor: pointer; }\n.dog-dock-collapse-handle:hover { color: var(--dsw-alias-label-primary); border-color: color-mix(in srgb, #7165e9 48%, var(--dsw-alias-border-l2)); background: color-mix(in srgb, #7165e9 13%, var(--dsw-alias-bg-base)); }\n.dog-dock-content { min-width: 0; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }\n.dog-dock-header { min-height: 50px; padding: 7px 8px 7px 10px; display: flex; align-items: center; gap: 9px; border-bottom: 1px solid var(--dsw-alias-border-l2); }\n.dog-dock-mark { width: 30px; height: 30px; flex: none; border-radius: 10px; display: grid; place-items: center; color: #fff; background: linear-gradient(145deg, #8174ff, #4b41ba); box-shadow: 0 6px 16px rgba(92, 78, 203, .23); }\n.dog-dock-heading { min-width: 0; flex: 1; display: flex; flex-direction: column; }\n.dog-dock-heading h2 { margin: 0; font-size: 12px; line-height: 17px; font-weight: 680; letter-spacing: -.01em; }\n.dog-dock-heading span { color: var(--dsw-alias-label-tertiary); font-size: 9.5px; line-height: 14px; }\n.dog-dock-error { padding: 4px 10px; color: #c94a45; background: color-mix(in srgb, #d5534d 7%, transparent); font-size: 8.5px; line-height: 12px; }\n.dog-dock-list { min-height: 0; flex: 1; margin: 0; padding: 7px; list-style: none; display: flex; flex-direction: column; gap: 5px; overflow: auto; }\n.dog-dock-list li { min-width: 0; }\n.dog-dock-card { width: 100%; min-width: 0; border: 1px solid var(--dsw-alias-border-l2); border-radius: 11px; padding: 8px 9px; display: block; color: inherit; background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 92%, #7165e9 3%); cursor: pointer; text-align: left; font: inherit; transition: border-color 120ms ease, background 120ms ease, transform 120ms ease; }\n.dog-dock-card:hover { transform: translateY(-1px); border-color: color-mix(in srgb, #7165e9 42%, var(--dsw-alias-border-l2)); background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 88%, #7165e9 7%); }\n.dog-dock-card:has(.dog-state-failure), .dog-dock-card:has(.dog-state-needs_replan), .dog-dock-card:has(.dog-state-needs_human) { border-color: color-mix(in srgb, #d18135 34%, var(--dsw-alias-border-l2)); }\n.dog-dock-card-head { min-width: 0; display: flex; align-items: flex-start; gap: 7px; }\n.dog-dock-title-wrap { min-width: 0; flex: 1; display: flex; flex-direction: column; }\n.dog-dock-title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 11px; line-height: 16px; font-weight: 630; }\n.dog-dock-id { margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--dsw-alias-label-tertiary); font: 8px/12px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-dock-progress { height: 3px; margin-top: 7px; display: block; border-radius: 999px; background: color-mix(in srgb, var(--dsw-alias-label-tertiary) 16%, transparent); overflow: hidden; }\n.dog-dock-progress > span { display: block; height: 100%; border-radius: inherit; background: #7165e9; transition: width 180ms ease; }\n.dog-dock-metrics { min-width: 0; margin-top: 5px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; color: var(--dsw-alias-label-tertiary); font-size: 8px; line-height: 12px; }\n.dog-dock-metrics > span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.dog-dock-metrics strong { color: var(--dsw-alias-label-secondary); font-weight: 650; }\n.dog-dock-empty { padding: 17px 14px; display: flex; flex-direction: column; align-items: center; gap: 3px; color: var(--dsw-alias-label-tertiary); text-align: center; font-size: 9px; line-height: 14px; }\n.dog-dock-empty strong { margin-top: 3px; color: var(--dsw-alias-label-secondary); font-size: 10px; }\n.dog-dock-empty-icon { width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; color: #7165e9; background: color-mix(in srgb, #7165e9 11%, transparent); }\n.dog-dock-footer { padding: 6px 10px 7px; border-top: 1px solid var(--dsw-alias-border-l2); color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font-size: 8.5px; line-height: 12px; text-align: center; }\n.dog-dock-card:focus-visible, .dog-dock-rail:focus-visible, .dog-dock-collapse-handle:focus-visible, .dog-icon-button:focus-visible, .dog-list-button:focus-visible, .dog-node:focus-visible, .dog-agent-row:focus-visible,\n.dog-segment-button:focus-visible, .dog-zoom-button:focus-visible, .dog-runtime-session-button:focus-visible { outline: 2px solid #776cf1; outline-offset: 2px; }\n.dog-backdrop { pointer-events: auto; position: fixed; inset: 0; z-index: 400; display: block; background: var(--dsw-alias-bg-base); animation: dog-fade-in 120ms ease-out; }\n.dog-dialog {\n width: 100vw; height: 100dvh; min-height: 0; display: grid; grid-template-rows: 68px minmax(0, 1fr);\n color: var(--dsw-alias-label-primary); background: var(--dsw-alias-bg-base); overflow: hidden; animation: dog-dialog-in 160ms cubic-bezier(.2,.8,.2,1);\n}\n.dog-header { min-width: 0; padding: 0 18px 0 20px; display: flex; align-items: center; gap: 14px; border-bottom: 1px solid var(--dsw-alias-border-l2); background: color-mix(in srgb, var(--dsw-alias-bg-base) 94%, #7065e9 6%); }\n.dog-brand { min-width: 0; display: flex; align-items: center; gap: 11px; }\n.dog-brand-mark { width: 34px; height: 34px; border-radius: 11px; display: grid; place-items: center; color: #fff; background: linear-gradient(145deg, #8174ff, #4b41ba); box-shadow: 0 7px 18px rgba(92, 78, 203, .24); }\n.dog-brand-copy { min-width: 0; }\n.dog-brand-title { margin: 0; font-size: 15px; line-height: 21px; font-weight: 680; letter-spacing: -.01em; }\n.dog-brand-subtitle { margin: 1px 0 0; color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 16px; }\n.dog-header-divider { width: 1px; height: 28px; margin: 0 2px; background: var(--dsw-alias-border-l2); }\n.dog-context { min-width: 0; display: flex; flex: 1; align-items: center; gap: 9px; }\n.dog-context-title { min-width: 0; max-width: 420px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 13px; font-weight: 560; }\n.dog-revision-chip, .dog-status-chip, .dog-mini-chip { border-radius: 999px; white-space: nowrap; display: inline-flex; align-items: center; gap: 5px; }\n.dog-revision-chip { height: 24px; padding: 0 8px; color: #655acb; background: color-mix(in srgb, #7165e9 13%, transparent); font-size: 10px; font-weight: 650; letter-spacing: .045em; text-transform: uppercase; }\n.dog-header-actions { flex: none; display: flex; align-items: center; gap: 7px; }\n.dog-sync-copy { margin-right: 3px; color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font-size: 10px; white-space: nowrap; }\n.dog-icon-button, .dog-zoom-button { border: 0; color: var(--dsw-alias-label-secondary); background: transparent; cursor: pointer; font: inherit; display: inline-grid; place-items: center; }\n.dog-icon-button { width: 34px; height: 34px; border-radius: 10px; }\n.dog-icon-button:hover, .dog-zoom-button:hover { color: var(--dsw-alias-label-primary); background: var(--dsw-alias-interactive-bg-hover); }\n.dog-icon-button[aria-busy=true] svg { animation: dog-spin .8s linear infinite; }\n.dog-workspace { position: relative; min-width: 0; min-height: 0; display: grid; grid-template-columns: 246px minmax(0, 1fr) 324px; }\n.dog-sidebar, .dog-inspector { min-width: 0; min-height: 0; background: color-mix(in srgb, var(--dsw-specific-sidebar-fill, var(--dsw-alias-bg-base)) 82%, var(--dsw-alias-bg-base) 18%); overflow: auto; }\n.dog-sidebar { border-right: 1px solid var(--dsw-alias-border-l2); padding: 17px 12px 18px; }\n.dog-inspector { border-left: 1px solid var(--dsw-alias-border-l2); padding: 18px 16px 28px; }\n.dog-section-label { margin: 0 7px 9px; color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font-size: 10px; line-height: 16px; font-weight: 700; letter-spacing: .095em; text-transform: uppercase; }\n.dog-graph-list, .dog-run-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }\n.dog-sidebar-divider { height: 1px; margin: 17px 7px; background: var(--dsw-alias-border-l2); }\n.dog-list-button { width: 100%; border: 1px solid transparent; border-radius: 11px; padding: 9px 9px 8px; color: inherit; background: transparent; cursor: pointer; text-align: left; font: inherit; transition: background 120ms ease, border-color 120ms ease; }\n.dog-list-button:hover { background: var(--dsw-alias-interactive-bg-hover); }\n.dog-list-button[data-selected=true] { border-color: color-mix(in srgb, #7165e9 30%, var(--dsw-alias-border-l2)); background: color-mix(in srgb, #7165e9 10%, var(--dsw-alias-bg-base)); }\n.dog-list-row { min-width: 0; display: flex; align-items: center; gap: 8px; }\n.dog-list-title { min-width: 0; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 12px; line-height: 18px; font-weight: 590; }\n.dog-list-meta { min-width: 0; margin-top: 4px; padding-left: 16px; display: flex; align-items: center; gap: 6px; overflow: hidden; white-space: nowrap; color: var(--dsw-alias-label-tertiary); font-size: 10px; line-height: 15px; }\n.dog-list-meta > :last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.dog-list-current { color: #6e63dd; font-weight: 650; }\n.dog-state-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; background: #8a929c; box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 12%, transparent); }\n.dog-empty-small { margin: 0 7px; color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 18px; }\n.dog-main { min-width: 0; min-height: 0; display: grid; grid-template-rows: auto minmax(0, 1fr); background: var(--dsw-alias-bg-base); }\n.dog-summary { min-width: 0; padding: 14px 18px 13px; display: grid; grid-template-columns: minmax(190px, 1fr) repeat(4, minmax(82px, 116px)); gap: 10px; border-bottom: 1px solid var(--dsw-alias-border-l2); }\n.dog-summary-primary, .dog-metric { min-width: 0; min-height: 55px; border: 1px solid var(--dsw-alias-border-l2); border-radius: 12px; background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 88%, #7065e9 3%); }\n.dog-summary-primary { padding: 9px 11px; display: flex; align-items: center; gap: 11px; }\n.dog-root-orb { width: 34px; height: 34px; flex: none; border-radius: 50%; display: grid; place-items: center; color: white; }\n.dog-summary-copy { min-width: 0; }\n.dog-summary-kicker, .dog-metric-label { color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 14px; font-weight: 680; letter-spacing: .08em; text-transform: uppercase; }\n.dog-summary-value { margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 12px; line-height: 18px; font-weight: 610; }\n.dog-metric { padding: 8px 10px; }\n.dog-metric-value { margin-top: 1px; font-size: 17px; line-height: 23px; font-weight: 680; letter-spacing: -.025em; }\n.dog-canvas-shell { min-width: 0; min-height: 0; display: grid; grid-template-rows: 40px minmax(0, 1fr); }\n.dog-canvas-toolbar { padding: 0 15px 0 18px; display: flex; align-items: center; gap: 14px; border-bottom: 1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 70%, transparent); }\n.dog-legend { display: flex; align-items: center; gap: 12px; color: var(--dsw-alias-label-tertiary); font-size: 10px; }\n.dog-legend-item { display: inline-flex; align-items: center; gap: 5px; }\n.dog-legend-line { width: 21px; height: 0; border-top: 1.5px solid #857ce2; }\n.dog-legend-line[data-kind=depends] { border-top-style: dashed; border-color: #c07a39; }\n.dog-canvas-spacer { flex: 1; }\n.dog-zoom { height: 28px; padding: 0 3px; border: 1px solid var(--dsw-alias-border-l2); border-radius: 9px; display: flex; align-items: center; }\n.dog-zoom-button { width: 24px; height: 22px; border-radius: 6px; font-size: 15px; }\n.dog-zoom-value { width: 39px; text-align: center; color: var(--dsw-alias-label-tertiary); font-size: 10px; }\n.dog-canvas-scroll { min-width: 0; min-height: 0; position: relative; overflow: auto; background-color: color-mix(in srgb, var(--dsw-alias-bg-base) 96%, #7065e9 4%); background-image: radial-gradient(color-mix(in srgb, var(--dsw-alias-label-tertiary) 20%, transparent) .7px, transparent .7px); background-size: 20px 20px; }\n.dog-canvas-stage-wrap { position: relative; margin: 0 auto; }\n.dog-canvas-stage { position: absolute; top: 0; left: 0; transform-origin: top left; }\n.dog-edges { position: absolute; inset: 0; overflow: visible; pointer-events: none; }\n.dog-edge { fill: none; stroke-width: 1.5; }\n.dog-edge[data-kind=contains] { stroke: #857ce2; }\n.dog-edge[data-kind=dependsOn] { stroke: #c07a39; stroke-width: 1.35; stroke-dasharray: 6 5; }\n.dog-edge[data-muted=true] { opacity: .22; }\n.dog-edge[data-highlighted=true] { stroke-width: 2.4; filter: drop-shadow(0 0 3px color-mix(in srgb, currentColor 45%, transparent)); }\n.dog-node { position: absolute; border: 1px solid var(--dsw-alias-border-l2); border-radius: 14px; padding: 10px 11px 9px; display: flex; flex-direction: column; color: var(--dsw-alias-label-primary); background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 94%, #7165e9 2%); box-shadow: 0 4px 14px rgba(14, 18, 29, .05); cursor: pointer; text-align: left; font: inherit; transition: border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease; }\n.dog-node:hover { transform: translateY(-2px); border-color: color-mix(in srgb, #7165e9 45%, var(--dsw-alias-border-l2)); box-shadow: 0 8px 22px rgba(28, 31, 52, .11); }\n.dog-node[data-selected=true] { border-color: #7165e9; box-shadow: 0 0 0 3px color-mix(in srgb, #7165e9 14%, transparent), 0 9px 24px rgba(28,31,52,.12); }\n.dog-node[data-root=true] { background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 88%, #7165e9 8%); }\n.dog-node-top { display: flex; align-items: center; gap: 7px; }\n.dog-node-kind { flex: 1; color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 13px; font-weight: 700; letter-spacing: .085em; text-transform: uppercase; }\n.dog-node-root { color: #6c61d6; }\n.dog-node-title { margin-top: 8px; min-height: 34px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; font-size: 12px; line-height: 17px; font-weight: 620; }\n.dog-node-foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 7px; }\n.dog-node-id { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font: 9px/13px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-status-chip { height: 19px; padding: 0 6px; color: var(--dog-state-color); background: color-mix(in srgb, var(--dog-state-color) 13%, transparent); font-size: 9px; line-height: 14px; font-weight: 700; letter-spacing: .035em; text-transform: uppercase; }\n.dog-status-chip:before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: var(--dog-state-color); }\n.dog-node[data-agents-expanded=true] { border-color: color-mix(in srgb, #7165e9 62%, var(--dsw-alias-border-l2)); }\n.dog-node-agents { flex: none; display: inline-flex; align-items: center; gap: 3px; color: #6b60d4; font-size: 9px; line-height: 13px; font-weight: 650; }\n.dog-agent-flyout { position: absolute; z-index: 8; min-height: 116px; display: flex; flex-direction: column; color: var(--dsw-alias-label-primary); background: color-mix(in srgb, var(--dsw-alias-bg-base) 96%, #7165e9 4%); border: 1px solid color-mix(in srgb, #7165e9 35%, var(--dsw-alias-border-l2)); border-radius: 13px; box-shadow: 0 14px 34px rgba(12, 16, 29, .22); overflow: hidden; }\n.dog-agent-flyout-head { min-height: 35px; padding: 6px 7px 6px 9px; display: flex; align-items: center; gap: 6px; border-bottom: 1px solid var(--dsw-alias-border-l2); }\n.dog-agent-flyout-head > span { min-width: 0; flex: 1; display: inline-flex; align-items: center; gap: 5px; font-size: 9.5px; line-height: 14px; font-weight: 680; }\n.dog-agent-flyout-head button { width: 25px; height: 25px; border: 0; border-radius: 7px; display: grid; place-items: center; color: var(--dsw-alias-label-tertiary); background: transparent; cursor: pointer; }\n.dog-agent-flyout-head button:hover { color: var(--dsw-alias-label-primary); background: var(--dsw-alias-interactive-bg-hover); }\n.dog-agent-list { min-height: 0; margin: 0; padding: 5px; list-style: none; overflow: auto; }\n.dog-agent-list li + li { margin-top: 3px; }\n.dog-agent-row { width: 100%; min-width: 0; border: 0; border-radius: 8px; padding: 7px 6px; display: grid; grid-template-columns: 8px minmax(0, 1fr) auto; align-items: center; gap: 7px; color: inherit; background: transparent; cursor: pointer; text-align: left; font: inherit; }\n.dog-agent-row:hover { background: var(--dsw-alias-interactive-bg-hover); }\n.dog-agent-row:disabled { cursor: wait; opacity: .66; }\n.dog-agent-state { width: 7px; height: 7px; border-radius: 50%; background: var(--dog-state-color); box-shadow: 0 0 0 3px color-mix(in srgb, var(--dog-state-color) 12%, transparent); }\n.dog-agent-copy, .dog-agent-metrics { min-width: 0; display: flex; flex-direction: column; }\n.dog-agent-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 9.5px; line-height: 14px; font-weight: 630; }\n.dog-agent-meta { color: var(--dsw-alias-label-tertiary); font-size: 8px; line-height: 12px; }\n.dog-agent-metrics { align-items: flex-end; color: var(--dsw-alias-label-tertiary); font: 8px/12px ui-monospace, SFMono-Regular, Menlo, monospace; white-space: nowrap; }\n.dog-agent-empty { margin: auto 0; padding: 13px 10px; color: var(--dsw-alias-label-tertiary); text-align: center; font-size: 9px; line-height: 14px; }\n.dog-agent-hint { padding: 5px 8px 6px; border-top: 1px solid var(--dsw-alias-border-l2); color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); text-align: center; font-size: 7.5px; line-height: 11px; }\n.dog-agent-error { padding: 5px 8px; color: #c94a45; background: color-mix(in srgb, #d5534d 7%, transparent); font-size: 8px; line-height: 12px; overflow-wrap: anywhere; }\n.dog-inspector-head { display: flex; align-items: flex-start; gap: 10px; }\n.dog-inspector-title-wrap { min-width: 0; flex: 1; }\n.dog-inspector-eyebrow { color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 14px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }\n.dog-inspector-title { margin: 3px 0 0; overflow-wrap: anywhere; font-size: 15px; line-height: 21px; font-weight: 660; }\n.dog-inspector-chips { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 6px; }\n.dog-mini-chip { height: 21px; padding: 0 7px; color: var(--dsw-alias-label-secondary); background: var(--dsw-alias-interactive-bg-hover); font-size: 9px; font-weight: 650; text-transform: uppercase; letter-spacing: .045em; }\n.dog-inspector-section { margin-top: 18px; }\n.dog-inspector-section-title { margin: 0 0 8px; color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 14px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }\n.dog-reason { border: 1px solid color-mix(in srgb, var(--dog-state-color) 33%, var(--dsw-alias-border-l2)); border-radius: 10px; padding: 9px 10px; color: var(--dsw-alias-label-secondary); background: color-mix(in srgb, var(--dog-state-color) 7%, transparent); font-size: 11px; line-height: 17px; overflow-wrap: anywhere; }\n.dog-definition { margin: 0; display: grid; grid-template-columns: minmax(82px, .7fr) minmax(0, 1.3fr); gap: 7px 9px; font-size: 10px; line-height: 16px; }\n.dog-definition dt { color: var(--dsw-alias-label-tertiary); }\n.dog-definition dd { min-width: 0; margin: 0; color: var(--dsw-alias-label-secondary); overflow-wrap: anywhere; }\n.dog-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 9.5px; }\n.dog-evidence { border: 1px solid var(--dsw-alias-border-l2); border-radius: 11px; overflow: hidden; }\n.dog-evidence-head { min-height: 35px; padding: 7px 9px; display: flex; align-items: center; gap: 8px; background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 90%, #7165e9 4%); border-bottom: 1px solid var(--dsw-alias-border-l2); }\n.dog-evidence-name { min-width: 0; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font: 10px/16px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-evidence-body { padding: 8px 9px 9px; }\n.dog-observation { margin: 0; display: grid; gap: 5px; }\n.dog-observation-row { display: grid; grid-template-columns: minmax(76px, .75fr) minmax(0, 1.25fr); gap: 8px; font-size: 10px; line-height: 15px; }\n.dog-observation-key { color: var(--dsw-alias-label-tertiary); overflow-wrap: anywhere; }\n.dog-observation-value { color: var(--dsw-alias-label-secondary); overflow-wrap: anywhere; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-relation-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; }\n.dog-relation { border-left: 2px solid #857ce2; padding-left: 8px; color: var(--dsw-alias-label-secondary); font-size: 10px; line-height: 15px; }\n.dog-relation[data-kind=dependsOn] { border-color: #c07a39; }\n.dog-relation strong { color: var(--dsw-alias-label-primary); font-weight: 600; }\n.dog-raw { border: 1px solid var(--dsw-alias-border-l2); border-radius: 10px; overflow: hidden; }\n.dog-raw summary { padding: 7px 9px; color: var(--dsw-alias-label-secondary); cursor: pointer; font-size: 10px; }\n.dog-raw pre { max-height: 240px; margin: 0; padding: 9px; border-top: 1px solid var(--dsw-alias-border-l2); color: var(--dsw-alias-label-tertiary); background: color-mix(in srgb, var(--dsw-alias-bg-base) 94%, #000 6%); white-space: pre-wrap; overflow: auto; font: 9px/15px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-runtime-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }\n.dog-runtime-heading .dog-inspector-section-title { margin-bottom: 8px; }\n.dog-runtime-live { display: inline-flex; align-items: center; gap: 5px; color: #3c7fe1; font-size: 9px; font-weight: 650; letter-spacing: .04em; text-transform: uppercase; }\n.dog-runtime-pulse { width: 6px; height: 6px; border-radius: 50%; background: #3c7fe1; box-shadow: 0 0 0 0 rgba(60,127,225,.35); animation: dog-runtime-pulse 1.5s ease-out infinite; }\n.dog-runtime-card { min-width: 0; border: 1px solid color-mix(in srgb, var(--dog-state-color) 25%, var(--dsw-alias-border-l2)); border-radius: 11px; padding: 9px 10px; display: flex; align-items: center; gap: 9px; background: color-mix(in srgb, var(--dog-state-color) 6%, var(--dsw-alias-bg-base)); }\n.dog-runtime-orb { width: 10px; height: 10px; flex: none; border-radius: 50%; background: var(--dog-state-color); box-shadow: 0 0 0 4px color-mix(in srgb, var(--dog-state-color) 13%, transparent); }\n.dog-runtime-card-copy { min-width: 0; }\n.dog-runtime-activity { color: var(--dsw-alias-label-primary); overflow-wrap: anywhere; font-size: 11px; line-height: 16px; font-weight: 620; }\n.dog-runtime-meta { margin-top: 2px; color: var(--dsw-alias-label-tertiary); font-size: 9px; line-height: 14px; }\n.dog-runtime-warning { margin-top: 7px; border: 1px solid color-mix(in srgb, #d18135 28%, var(--dsw-alias-border-l2)); border-radius: 9px; padding: 7px 8px; color: #b66d28; background: color-mix(in srgb, #d18135 7%, transparent); overflow-wrap: anywhere; font-size: 9.5px; line-height: 15px; }\n.dog-runtime-error { margin-top: 8px; border-left: 3px solid var(--dog-state-color); border-radius: 8px; padding: 8px 9px; display: flex; flex-direction: column; gap: 3px; color: var(--dsw-alias-label-secondary); background: color-mix(in srgb, var(--dog-state-color) 8%, transparent); font-size: 9.5px; line-height: 15px; overflow-wrap: anywhere; }\n.dog-runtime-error strong { color: var(--dog-state-color); font-size: 9px; letter-spacing: .035em; text-transform: uppercase; }\n.dog-runtime-session { margin-top: 8px; border: 1px solid var(--dsw-alias-border-l2); border-radius: 10px; padding: 8px 9px; background: color-mix(in srgb, var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-base)) 92%, #7165e9 3%); }\n.dog-runtime-session-head { margin-bottom: 7px; display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--dsw-alias-label-secondary); font-size: 10px; font-weight: 620; }\n.dog-runtime-session-button { flex: none; border: 1px solid color-mix(in srgb, #7165e9 32%, var(--dsw-alias-border-l2)); border-radius: 7px; padding: 4px 7px; color: #655acb; background: color-mix(in srgb, #7165e9 8%, var(--dsw-alias-bg-base)); cursor: pointer; font: 600 9px/13px inherit; }\n.dog-runtime-session-button:hover { background: color-mix(in srgb, #7165e9 15%, var(--dsw-alias-bg-base)); }\n.dog-runtime-session-button:disabled { cursor: wait; opacity: .62; }\n.dog-runtime-session-error { margin-top: 7px; color: #c94a45; font-size: 9px; line-height: 14px; overflow-wrap: anywhere; }\n.dog-runtime-empty { margin: 8px 0 0; }\n.dog-runtime-timeline { margin: 10px 0 0; padding: 0; list-style: none; }\n.dog-runtime-event { --dog-runtime-line: color-mix(in srgb, var(--dog-state-color) 32%, var(--dsw-alias-border-l2)); position: relative; min-width: 0; padding: 0 0 12px 19px; }\n.dog-runtime-event:not(:last-child):before { content: ''; position: absolute; left: 4px; top: 10px; bottom: 0; width: 1px; background: var(--dog-runtime-line); }\n.dog-runtime-marker { position: absolute; left: 0; top: 4px; width: 9px; height: 9px; border: 2px solid var(--dsw-alias-bg-base); border-radius: 50%; background: var(--dog-state-color); box-shadow: 0 0 0 1px var(--dog-runtime-line); }\n.dog-runtime-event-copy { min-width: 0; }\n.dog-runtime-event-head { min-width: 0; display: flex; align-items: baseline; justify-content: space-between; gap: 7px; color: var(--dsw-alias-label-secondary); font-size: 9.5px; line-height: 14px; }\n.dog-runtime-event-head strong { min-width: 0; overflow-wrap: anywhere; font-weight: 620; }\n.dog-runtime-event-head time { flex: none; color: var(--dsw-alias-label-tertiary); font-size: 8.5px; }\n.dog-runtime-event-meta { margin-top: 1px; color: var(--dsw-alias-label-caption, var(--dsw-alias-label-tertiary)); font: 8px/12px ui-monospace, SFMono-Regular, Menlo, monospace; }\n.dog-runtime-event-detail { margin-top: 3px; color: var(--dsw-alias-label-tertiary); overflow-wrap: anywhere; font-size: 9px; line-height: 14px; }\n.dog-runtime-raw { margin-top: 4px; }\n.dog-empty { grid-column: 1 / -1; min-height: 320px; display: grid; place-items: center; padding: 40px; text-align: center; }\n.dog-empty-card { max-width: 380px; }\n.dog-empty-icon { width: 48px; height: 48px; margin: 0 auto 13px; border-radius: 16px; display: grid; place-items: center; color: #7165e9; background: color-mix(in srgb, #7165e9 12%, transparent); }\n.dog-empty-title { margin: 0; font-size: 15px; line-height: 22px; font-weight: 650; }\n.dog-empty-copy { margin: 6px 0 0; color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 18px; }\n.dog-error-banner { margin: 12px 18px 0; border: 1px solid color-mix(in srgb, #d5534d 35%, var(--dsw-alias-border-l2)); border-radius: 10px; padding: 8px 10px; color: #c94a45; background: color-mix(in srgb, #d5534d 8%, transparent); font-size: 11px; line-height: 17px; }\n.dog-loading { opacity: .65; }\n.dog-state-success { --dog-state-color: #1c9a69; }\n.dog-state-failure { --dog-state-color: #d5534d; }\n.dog-state-needs_human { --dog-state-color: #d18135; }\n.dog-state-partial { --dog-state-color: #b88a22; }\n.dog-state-blocked, .dog-state-cancelled, .dog-state-invalidated { --dog-state-color: #828b97; }\n.dog-state-running { --dog-state-color: #3c7fe1; }\n.dog-state-pending, .dog-state-created { --dog-state-color: #8c859f; }\n.dog-state-partial_success { --dog-state-color: #b88a22; }\n.dog-state-infeasible, .dog-state-needs_replan { --dog-state-color: #d18135; }\n.dog-root-orb { background: var(--dog-state-color); box-shadow: 0 7px 18px color-mix(in srgb, var(--dog-state-color) 26%, transparent); }\n@keyframes dog-fade-in { from { opacity: 0; } }\n@keyframes dog-dialog-in { from { opacity: 0; transform: translateY(8px) scale(.992); } }\n@keyframes dog-runtime-pulse { 70%, 100% { box-shadow: 0 0 0 6px rgba(60,127,225,0); } }\n@keyframes dog-spin { to { transform: rotate(360deg); } }\n@media (max-width: 1180px) {\n .dog-workspace { grid-template-columns: 220px minmax(0, 1fr) 292px; }\n .dog-summary { grid-template-columns: minmax(170px, 1fr) repeat(4, minmax(76px, 92px)); gap: 7px; }\n}\n@media (min-width: 981px) and (max-width: 1080px) {\n .dog-workspace { grid-template-columns: 190px minmax(0, 1fr) 270px; }\n .dog-summary { grid-template-columns: minmax(160px, 1fr) repeat(3, minmax(72px, 84px)); }\n .dog-metric:last-child { display: none; }\n}\n@media (max-width: 980px) {\n .dog-dialog { width: 100%; height: 100dvh; min-height: 0; }\n .dog-workspace { grid-template-columns: 210px minmax(0, 1fr); }\n .dog-inspector { position: absolute; z-index: 3; top: 0; right: 0; bottom: 0; width: min(330px, 84%); box-shadow: -16px 0 36px rgba(7, 10, 18, .16); }\n .dog-summary { grid-template-columns: minmax(170px, 1fr) repeat(3, minmax(72px, 88px)); }\n .dog-metric:last-child { display: none; }\n}\n@media (max-width: 720px) {\n .dog-overlay-root[data-dog-dock-layout=floating] .dog-dock { top: 64px; right: 8px; bottom: auto; width: calc(100vw - 16px); max-height: min(286px, calc(100dvh - 72px)); }\n .dog-workspace { grid-template-columns: 1fr; }\n .dog-sidebar { display: none; }\n .dog-header-divider, .dog-brand-subtitle, .dog-sync-copy { display: none; }\n .dog-summary { grid-template-columns: minmax(145px, 1fr) repeat(2, minmax(66px, 76px)); padding-inline: 10px; }\n .dog-metric:nth-of-type(n+4) { display: none; }\n}\n@media (prefers-reduced-motion: reduce) {\n .dog-launcher, .dog-node, .dog-backdrop, .dog-dialog, .dog-runtime-pulse { animation: none; transition: none; }\n}\n`\n","import type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client'\n\ninterface Source<T> {\n getSnapshot(): T\n subscribe(listener: () => void): () => void\n}\n\ninterface SessionStatus {\n readonly pendingInteraction?: unknown\n}\n\n/** DSH 0.2 folds pending interactions into the unified session status source. */\nexport function debuggerSessionState(\n sessions: Source<SessionListState>,\n uiSession: {\n sessionStatus?: Source<ReadonlyMap<string, SessionStatus>>\n pendingInteractions?: Source<ReadonlyMap<string, unknown>>\n },\n) {\n const status = uiSession.sessionStatus\n const source = status ?? uiSession.pendingInteractions\n if (!source || typeof source.getSnapshot !== 'function' || typeof source.subscribe !== 'function') {\n throw new Error('DSH session UI exposes neither sessionStatus nor pendingInteractions')\n }\n let lastSessions: SessionListState | undefined\n let lastStatus: unknown\n let combined: SessionListState & { pendingInteractions: ReadonlyMap<string, unknown> }\n return {\n getSnapshot() {\n const next = sessions.getSnapshot()\n const pending = source.getSnapshot()\n if (next !== lastSessions || pending !== lastStatus) {\n lastSessions = next\n lastStatus = pending\n const interactions = status\n ? new Map([...status.getSnapshot()].flatMap(([id, value]) =>\n value.pendingInteraction === undefined ? [] : [[id, value.pendingInteraction] as const]))\n : pending\n combined = { ...next, pendingInteractions: interactions }\n }\n return combined\n },\n subscribe(listener: () => void) {\n const stopSessions = sessions.subscribe(listener)\n try {\n const stopStatus = source.subscribe(listener)\n return () => { stopStatus(); stopSessions() }\n } catch (error) {\n stopSessions()\n throw error\n }\n },\n }\n}\n","import { useEffect, useState } from 'react'\n/** Browser half: a frame overlay that visualizes persisted DoG revisions and runs. */\n\nimport type { ConnectionHandle } from '@deepseek-ai/dsh-client-connection/client'\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-ui-session/client'\nimport type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client'\nimport type { SessionId } from '@deepseek-ai/dsh-session'\nimport type {} from '@deepseek-ai/dsh-client-ui-renderer/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-layout/client'\nimport {\n DOG_DEBUG_RPC_CHANNEL,\n DOG_DEBUG_SNAPSHOT_ENDPOINT,\n DOG_RUNTIME_TRACE_ENDPOINT,\n} from '../debug-contract.ts'\nimport { DogDebugger } from './DogDebugger.tsx'\nimport { openInvocationSession } from './sessionNavigation.ts'\nimport { DOG_DEBUG_CSS, DOG_DEBUG_STYLE_ID } from './styles.ts'\nimport { debuggerSessionState } from './sessionState.ts'\n\n/** The overlay uses the shared trusted RPC transport and canonical session navigator. */\nexport const inject = ['slots', 'sessions', 'connection', 'uiSession']\n\n/** Register the debugger beside other frame-wide overlays without replacing shipped UI. */\nexport function apply(ctx: ClientContext): void {\n try {\n ctx.effect(() => install(ctx), 'openwrite-dog: client activation')\n } catch (error) {\n console.error('[OpenWrite/DoG] Debugger disabled: client activation failed', error)\n }\n}\n\nfunction* install(ctx: ClientContext): Generator<() => void> {\n const connection = ctx.get('connection') as unknown as ConnectionHandle\n const sessions = ctx.get('sessions') as unknown as ISessions\n const call = async (endpoint: string, payload: unknown, signal?: AbortSignal): Promise<unknown> => {\n const result = await connection.rpc.call(DOG_DEBUG_RPC_CHANNEL, endpoint, payload, signal)\n if (!result.ok) throw new Error(result.error.message)\n return result.value\n }\n const openSession = (sessionId: string, parentSessionId?: string): Promise<boolean> =>\n openInvocationSession(sessions, sessionId, parentSessionId)\n const state = debuggerSessionState(sessions.list, ctx.uiSession)\n state.getSnapshot()\n const DogDebuggerHost = (): JSX.Element | null => {\n const [request, setRequest] = useState(0)\n useEffect(() => {\n const show = () => setRequest(value => value + 1)\n window.addEventListener('openwrite:dog-open', show)\n return () => window.removeEventListener('openwrite:dog-open', show)\n }, [])\n return request === 0 ? null : <DogDebugger key={request} initialOpen hideDock\n readSnapshot={signal => call(DOG_DEBUG_SNAPSHOT_ENDPOINT, {}, signal)}\n readGoalRuntime={(runId, goalId, signal) => call(DOG_RUNTIME_TRACE_ENDPOINT, { runId, goalId }, signal)}\n openSession={openSession}\n getSessionState={state.getSnapshot}\n subscribeSessions={state.subscribe}\n refreshAgentCatalog={parentSessionId => sessions.refreshSubagents(parentSessionId as SessionId)}\n />\n }\n yield ctx.effect(installStyles, 'dog-debugger: styles')\n yield ctx.slots.inject('shell.overlay', () => {\n try {\n return ctx.slots.register({\n name: 'shell.overlay',\n id: 'openwrite.dog-debugger',\n order: 80,\n }, DogDebuggerHost)\n } catch (error) {\n console.error('[OpenWrite/DoG] Debugger disabled: overlay registration failed', error)\n return () => {}\n }\n })\n}\n\nfunction installStyles(): () => void {\n const existing = document.querySelector<HTMLStyleElement>(`style[data-plugin-css=\"${DOG_DEBUG_STYLE_ID}\"]`)\n if (existing !== null) return () => undefined\n const style = document.createElement('style')\n style.dataset.plugin = '@dsh-external/dsh-dog'\n style.dataset.pluginCss = DOG_DEBUG_STYLE_ID\n style.textContent = DOG_DEBUG_CSS\n document.head.appendChild(style)\n return () => style.remove()\n}\n"],"mappings":"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"}