@tangle-network/agent-runtime 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/{activation-BRASQAee.d.ts → activation-BpkpEn0T.d.ts} +2 -2
  2. package/dist/{activation-D7-ZwyKD.js → activation-D9KoX_R4.js} +2 -2
  3. package/dist/{activation-D7-ZwyKD.js.map → activation-D9KoX_R4.js.map} +1 -1
  4. package/dist/agent.d.ts +1 -1
  5. package/dist/agent.js +3 -3
  6. package/dist/{coordination-manager-DbNKO53e.js → coordination-manager-CqZGCqjV.js} +4 -4
  7. package/dist/{coordination-manager-DbNKO53e.js.map → coordination-manager-CqZGCqjV.js.map} +1 -1
  8. package/dist/{delegate-CBFbETCq.js → delegate-B5XFrkTg.js} +2 -2
  9. package/dist/{delegate-CBFbETCq.js.map → delegate-B5XFrkTg.js.map} +1 -1
  10. package/dist/durable.d.ts +1 -1
  11. package/dist/durable.js +6 -6
  12. package/dist/{graph-D05w51EQ.js → graph-Ds6VUJzW.js} +5 -5
  13. package/dist/{graph-D05w51EQ.js.map → graph-Ds6VUJzW.js.map} +1 -1
  14. package/dist/{improve-Byp45uiM.js → improve-DbfENElN.js} +5 -5
  15. package/dist/{improve-Byp45uiM.js.map → improve-DbfENElN.js.map} +1 -1
  16. package/dist/index.d.ts +3 -3
  17. package/dist/index.js +8 -8
  18. package/dist/intelligence.d.ts +2 -2
  19. package/dist/intelligence.js +3 -3
  20. package/dist/kernel.d.ts +1 -1
  21. package/dist/kernel.js +11 -11
  22. package/dist/{loop-runner-DBH2LY57.js → loop-runner-CL_5TsT8.js} +2 -2
  23. package/dist/{loop-runner-DBH2LY57.js.map → loop-runner-CL_5TsT8.js.map} +1 -1
  24. package/dist/{loop-runner-Bjy-ALf4.d.ts → loop-runner-DjYZrgqT.d.ts} +2 -2
  25. package/dist/loop-runner-bin.d.ts +1 -1
  26. package/dist/loop-runner-bin.js +1 -1
  27. package/dist/mcp/bin.js +3 -3
  28. package/dist/mcp/index.d.ts +1 -1
  29. package/dist/mcp/index.js +4 -4
  30. package/dist/profiles.d.ts +1 -1
  31. package/dist/{provision-supervisor-Bvqnu3xm.js → provision-supervisor-Cmej51pt.js} +4 -5
  32. package/dist/{provision-supervisor-Bvqnu3xm.js.map → provision-supervisor-Cmej51pt.js.map} +1 -1
  33. package/dist/{journal-store-E6TojmWB.js → root-stream-To4qAc0e.js} +710 -8
  34. package/dist/root-stream-To4qAc0e.js.map +1 -0
  35. package/dist/run-cancellation-BhP0Nw6G.js +229 -0
  36. package/dist/run-cancellation-BhP0Nw6G.js.map +1 -0
  37. package/dist/{runtime-DlmYZZpp.js → runtime-Dm8QlK_z.js} +11 -11
  38. package/dist/{runtime-DlmYZZpp.js.map → runtime-Dm8QlK_z.js.map} +1 -1
  39. package/dist/{search-executor-DWFivIJq.js → search-executor-CN2Axxt9.js} +3 -3
  40. package/dist/{search-executor-DWFivIJq.js.map → search-executor-CN2Axxt9.js.map} +1 -1
  41. package/dist/{server-DKYzcVEO.js → server-DlKT7AgQ.js} +3 -3
  42. package/dist/{server-DKYzcVEO.js.map → server-DlKT7AgQ.js.map} +1 -1
  43. package/dist/{structural-rollout-ChERY66G.js → structural-rollout-BPz5dLDB.js} +3 -3
  44. package/dist/{structural-rollout-ChERY66G.js.map → structural-rollout-BPz5dLDB.js.map} +1 -1
  45. package/dist/{supervise-DQkPeVi6.js → supervise-BtjM7_0G.js} +7 -185
  46. package/dist/supervise-BtjM7_0G.js.map +1 -0
  47. package/dist/{supervision-discovery-P89Ej0yJ.js → supervision-discovery-CVpmTroK.js} +2 -2
  48. package/dist/{supervision-discovery-P89Ej0yJ.js.map → supervision-discovery-CVpmTroK.js.map} +1 -1
  49. package/dist/{supervisor-DorLcfvJ.js → supervisor-BsW69Ccw.js} +123 -28
  50. package/dist/supervisor-BsW69Ccw.js.map +1 -0
  51. package/dist/testing.d.ts +1 -1
  52. package/dist/testing.js +11 -11
  53. package/dist/{top-web-CWcNwaRb.js → top-web-Bjb_UlNI.js} +7 -4
  54. package/dist/top-web-Bjb_UlNI.js.map +1 -0
  55. package/dist/tui/bin.js +3 -2
  56. package/dist/tui/bin.js.map +1 -1
  57. package/dist/tui/index.d.ts +1 -1
  58. package/dist/tui/index.js +2 -2
  59. package/dist/{types-C2fJMeEi.d.ts → types-BDmLQLNj.d.ts} +5 -4
  60. package/package.json +1 -1
  61. package/dist/journal-store-E6TojmWB.js.map +0 -1
  62. package/dist/run-cancellation-Cpm-BIUu.js +0 -743
  63. package/dist/run-cancellation-Cpm-BIUu.js.map +0 -1
  64. package/dist/supervise-DQkPeVi6.js.map +0 -1
  65. package/dist/supervisor-DorLcfvJ.js.map +0 -1
  66. package/dist/top-web-CWcNwaRb.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","names":[],"sources":["../../src/tui/top-frame.ts","../../src/tui/top-app.ts","../../src/tui/bin.ts"],"sourcesContent":["import { supervisorRunsRoot } from '../runtime/supervise/run-layout'\nimport {\n aggregateSnapshot,\n numberValue,\n parseSpend,\n parseTime,\n type SpendStats,\n type SupervisorView,\n type TopSnapshot,\n totalSpend,\n type WorkerView,\n} from './top-snapshot'\n\ninterface RenderOptions {\n readonly width?: number\n readonly height?: number\n readonly color?: boolean\n readonly selectedSupervisorId?: string\n readonly selectedWorkerId?: string\n readonly focus?: 'supervisors' | 'workers'\n readonly mode?: 'overview' | 'detail' | 'log'\n readonly notice?: string\n readonly steerInput?: {\n readonly active: boolean\n readonly value: string\n readonly workerLabel?: string\n }\n}\n\nexport interface RenderTarget {\n readonly row: number\n readonly kind: 'supervisor' | 'worker'\n readonly id: string\n readonly supervisorId?: string\n}\n\ninterface RenderedTopFrame {\n readonly frame: string\n readonly targets: RenderTarget[]\n}\n// Width accounting depends on stripping SGR sequences, which begin with a literal ESC. Matching\n// the control character is the point of an ANSI-aware renderer, not an accident.\n// biome-ignore lint/suspicious/noControlCharactersInRegex: SGR sequences begin with ESC\nconst ansiPattern = /\\x1b\\[[0-9;?]*[ -/]*[@-~]/g\n\nconst colors = {\n reset: '\\x1b[0m',\n dim: '\\x1b[2m',\n bold: '\\x1b[1m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n white: '\\x1b[37m',\n inverse: '\\x1b[7m',\n}\n\n/** Render one snapshot to an ANSI frame. Use this when nothing needs to be clickable. */\nexport function renderTopFrame(snapshot: TopSnapshot, options: RenderOptions = {}): string {\n return renderTopFrameWithLayout(snapshot, options).frame\n}\n\n/**\n * Render one snapshot, returning the frame together with the row→entity map a mouse click resolves\n * against. The layout is the only thing that knows which row is which run or worker, so emitting it\n * alongside the text is what keeps click handling out of the renderer.\n */\nexport function renderTopFrameWithLayout(\n snapshot: TopSnapshot,\n options: RenderOptions = {},\n): RenderedTopFrame {\n const width = Math.max(88, options.width ?? 128)\n const height = Math.max(24, options.height ?? 42)\n const color = options.color ?? false\n const focus = options.focus ?? 'supervisors'\n const mode = options.mode ?? 'overview'\n const selectedSupervisor = selectEntity(snapshot.supervisors, options.selectedSupervisorId)\n const selectedWorker = selectedSupervisor\n ? selectEntity(selectedSupervisor.workers, options.selectedWorkerId)\n : undefined\n const targets: RenderTarget[] = []\n const lines: string[] = []\n\n const push = (line = '', target?: Omit<RenderTarget, 'row'>) => {\n if (lines.length >= height) return\n if (target) targets.push({ row: lines.length, ...target })\n lines.push(fitAnsi(line, width))\n }\n\n const aggregate = aggregateSnapshot(snapshot)\n push(\n `${paint('SUPERVISOR TOP', 'bold', color)} ${paint(snapshot.root, 'dim', color)} ` +\n `runs ${aggregate.supervisors} workers ${aggregate.workers} live ${aggregate.running} ` +\n `done ${aggregate.done} down ${aggregate.down} ` +\n `${formatMoney(aggregate.usd, aggregate.usdKnown)} tok ${formatTokens(aggregate.tokensInput, aggregate.tokensKnown)}/${formatTokens(aggregate.tokensOutput, aggregate.tokensKnown)}`,\n )\n push(\n `${paint('keys', 'dim', color)} up/down select left/right run tab focus enter detail o overview l log s steer c cancel mouse q quit`,\n )\n if (options.notice) push(paint(options.notice, 'yellow', color))\n if (snapshot.completeness === 'partial')\n push(\n paint(\n `partial snapshot: ${snapshot.diagnostics.length} source${\n snapshot.diagnostics.length === 1 ? '' : 's'\n } skipped or truncated; runs loaded ${snapshot.loaded}/${snapshot.discovered}`,\n 'yellow',\n color,\n ),\n )\n if (options.steerInput?.active) push(renderSteerInput(options.steerInput, width, color))\n push(rule(width, color))\n\n if (snapshot.supervisors.length === 0) {\n if (snapshot.discovered > 0) {\n push(paint('NO READABLE SUPERVISORS', 'yellow', color))\n push(\n `${snapshot.discovered} run director${snapshot.discovered === 1 ? 'y' : 'ies'} found under ${supervisorRunsRoot(snapshot.root)}, none readable`,\n )\n } else {\n push(paint('NO SUPERVISORS', 'yellow', color))\n push(`No run state under ${supervisorRunsRoot(snapshot.root)}`)\n }\n push(\n `A run appears here once its driver writes state.json; re-point with: agent-runtime-top <root>`,\n )\n return { frame: `${lines.join('\\n')}\\n`, targets }\n }\n\n push(sectionTitle('SUPERVISORS', focus === 'supervisors', color))\n push(\n ` id status workers spend tok in/out latency task`,\n )\n for (const supervisor of snapshot.supervisors.slice(0, 9)) {\n const selected = supervisor.id === selectedSupervisor?.id\n const status = statusText(supervisor.status, color)\n const pointer = selected ? paint('>', 'cyan', color) : ' '\n const rowFocus = selected && focus === 'supervisors' ? 'inverse' : undefined\n const workerSummary = `${supervisor.totals.running}/${supervisor.totals.workers} live`\n const task = compact(supervisor.task, 34)\n const line =\n `${pointer} ${pad(supervisor.id, 21)} ${pad(status, 12)} ${pad(workerSummary, 13)} ` +\n `${pad(formatMoney(supervisor.totals.usd, supervisor.totals.usdKnown), 12)} ` +\n `${pad(`${formatTokens(supervisor.totals.tokensInput, supervisor.totals.tokensKnown)}/${formatTokens(supervisor.totals.tokensOutput, supervisor.totals.tokensKnown)}`, 16)} ` +\n `${pad(formatDuration(supervisor.totals.latencyMs), 12)} ${task}`\n push(rowFocus ? paint(line, rowFocus, color) : line, { kind: 'supervisor', id: supervisor.id })\n }\n\n if (!selectedSupervisor) return { frame: `${lines.join('\\n')}\\n`, targets }\n\n push()\n push(sectionTitle(`WORKERS ${selectedSupervisor.id}`, focus === 'workers', color))\n push(\n ` id state runtime latency cost tok in/out score detail`,\n )\n for (const worker of selectedSupervisor.workers.slice(0, 12)) {\n const selected = worker.id === selectedWorker?.id\n const pointer = selected ? paint('>', 'cyan', color) : ' '\n const rowFocus = selected && focus === 'workers' ? 'inverse' : undefined\n const score = worker.verdict ?? (worker.status === 'done' ? 'done' : worker.status)\n const detail = worker.reason ?? worker.outRef ?? worker.parent ?? ''\n const spend = totalSpend(worker)\n const line =\n `${pointer} ${pad(worker.label, 12)} ${pad(statusText(worker.status, color), 12)} ` +\n `${pad(worker.runtime ?? '-', 10)} ${pad(formatDuration(worker.latencyMs), 12)} ` +\n `${pad(formatMoney(spend.usd, spend.usdKnown), 11)} ` +\n `${pad(`${formatTokens(spend.tokensInput, spend.tokensKnown)}/${formatTokens(spend.tokensOutput, spend.tokensKnown)}`, 16)} ` +\n `${pad(compact(score, 9), 10)} ${compact(detail, 30)}`\n push(rowFocus ? paint(line, rowFocus, color) : line, {\n kind: 'worker',\n id: worker.id,\n supervisorId: selectedSupervisor.id,\n })\n }\n if (selectedSupervisor.workers.length === 0) push(' no workers spawned yet')\n\n push()\n push(sectionTitle('OBSERVABILITY', false, color))\n for (const line of renderStatusBars(selectedSupervisor, width, color)) push(line)\n push()\n for (const line of renderSpendBars(selectedSupervisor, width, color, 'usd')) push(line)\n push()\n for (const line of renderSpendBars(selectedSupervisor, width, color, 'tokens')) push(line)\n push()\n for (const line of renderLatencyHistogram(selectedSupervisor, width, color)) push(line)\n\n push()\n if (mode === 'log') {\n push(sectionTitle('JOURNAL TAIL', false, color))\n for (const line of renderJournalTail(selectedSupervisor, width, color)) push(line)\n } else {\n push(sectionTitle(mode === 'detail' ? 'DETAIL' : 'RUN SUMMARY', false, color))\n for (const line of renderDetail(selectedSupervisor, selectedWorker, mode, width, color))\n push(line)\n }\n\n return { frame: `${lines.join('\\n')}\\n`, targets }\n}\n\nfunction renderStatusBars(supervisor: SupervisorView, width: number, color: boolean): string[] {\n const total = Math.max(1, supervisor.totals.workers)\n const barWidth = Math.max(12, Math.min(28, width - 58))\n return [\n `status ` +\n `${pad('running', 9)} ${bar(supervisor.totals.running, total, barWidth, '#', color, 'yellow')} ${supervisor.totals.running}` +\n ` ${pad('done', 5)} ${bar(supervisor.totals.done, total, barWidth, '#', color, 'green')} ${supervisor.totals.done}` +\n ` ${pad('down', 5)} ${bar(supervisor.totals.down, total, barWidth, '#', color, 'red')} ${supervisor.totals.down}`,\n ]\n}\n\nfunction renderSpendBars(\n supervisor: SupervisorView,\n width: number,\n color: boolean,\n channel: 'usd' | 'tokens',\n): string[] {\n const dollars = channel === 'usd'\n const amount = (spend: SpendStats) =>\n dollars ? spend.usd : spend.tokensInput + spend.tokensOutput\n const label = (spend: SpendStats) =>\n dollars\n ? formatMoney(spend.usd, spend.usdKnown)\n : `${formatTokens(spend.tokensInput, spend.tokensKnown)}/${formatTokens(spend.tokensOutput, spend.tokensKnown)}`\n const rows = supervisor.workers\n .map((worker) => ({ worker, spend: totalSpend(worker) }))\n .sort((a, b) => amount(b.spend) - amount(a.spend))\n .slice(0, 6)\n const max = Math.max(\n dollars ? 0.000001 : 1,\n ...rows.map((row) => amount(row.spend)),\n amount(supervisor.driverSpend),\n )\n const total = dollars\n ? formatMoney(supervisor.totals.usd, supervisor.totals.usdKnown)\n : `in ${formatTokens(supervisor.totals.tokensInput, supervisor.totals.tokensKnown)} / out ${formatTokens(supervisor.totals.tokensOutput, supervisor.totals.tokensKnown)}`\n const out = [\n `${dollars ? 'cost ' : 'tokens'} total ${total} driver ${label(supervisor.driverSpend)}`,\n ]\n const barWidth = Math.max(18, Math.min(46, width - (dollars ? 38 : 44)))\n for (const { worker, spend } of rows) {\n const visual = dollars\n ? bar(spend.usd, max, barWidth, '$', color, 'magenta')\n : stackedTokenBar(spend.tokensInput, spend.tokensOutput, max, barWidth, color)\n out.push(` ${pad(worker.label, 12)} ${visual} ${label(spend)}`)\n }\n if (rows.length === 0) out.push(` no worker ${dollars ? 'cost' : 'tokens'} yet`)\n return out\n}\n\nfunction renderLatencyHistogram(\n supervisor: SupervisorView,\n width: number,\n color: boolean,\n): string[] {\n const values = supervisor.workers.map((worker) => worker.latencyMs).filter((value) => value > 0)\n const summary = supervisor.totals.workerLatency\n const out = [\n `latency n=${summary.n} min ${formatDuration(summary.min)} p50 ${formatDuration(summary.median)} ` +\n `p90 ${formatDuration(summary.p90)} max ${formatDuration(summary.max)}`,\n ]\n if (values.length === 0) {\n out.push(' no latency samples yet')\n return out\n }\n const bins = histogram(values, 6)\n const maxCount = Math.max(1, ...bins.map((bin) => bin.count))\n const barWidth = Math.max(18, Math.min(48, width - 34))\n for (const bin of bins) {\n out.push(\n ` ${pad(`${formatDuration(bin.min)}-${formatDuration(bin.max)}`, 15)} ` +\n `${bar(bin.count, maxCount, barWidth, '#', color, 'blue')} ${bin.count}`,\n )\n }\n return out\n}\n\nfunction renderDetail(\n supervisor: SupervisorView,\n worker: WorkerView | undefined,\n mode: 'overview' | 'detail' | 'log',\n width: number,\n color: boolean,\n): string[] {\n if (mode === 'detail' && worker) {\n const spend = totalSpend(worker)\n return [\n `worker ${paint(worker.label, 'bold', color)} (${worker.id}) ${statusText(worker.status, color)} latency ${formatDuration(worker.latencyMs)}`,\n `tokens in/out ${formatTokens(spend.tokensInput, spend.tokensKnown)}/${formatTokens(spend.tokensOutput, spend.tokensKnown)} cost ${formatMoney(spend.usd, spend.usdKnown)} iterations ${spend.iterations}`,\n `parent ${worker.parent ?? '-'} runtime ${worker.runtime ?? '-'} out ${worker.outRef ?? '-'}${worker.infra ? ' infra' : ''}`,\n `events ${compact(worker.eventFile ?? '-', width - 8)}`,\n ...(worker.reason ? [`reason ${compact(worker.reason, width - 7)}`] : []),\n ...renderWorkerTail(worker, width, color),\n ]\n }\n\n const caps = [\n supervisor.maxSandboxes !== undefined ? `boxes ${supervisor.maxSandboxes}` : undefined,\n supervisor.maxUsd !== undefined ? `max ${formatMoney(supervisor.maxUsd)}` : undefined,\n supervisor.maxDepth !== undefined ? `depth ${supervisor.maxDepth}` : undefined,\n supervisor.maxLifetimeSeconds !== undefined\n ? `ttl ${supervisor.maxLifetimeSeconds}s`\n : undefined,\n ].filter((value): value is string => value !== undefined)\n return [\n `task ${compact(supervisor.task, width - 7)}`,\n `workspace ${compact(supervisor.workspaceDir, width - 12)}`,\n `verify ${compact(supervisor.verifyCmd ?? '-', width - 9)}`,\n `models worker ${supervisor.workerModel ?? '-'} / driver ${supervisor.driverModel ?? '-'} caps ${caps.join(' | ') || '-'}`,\n `progress ${compact(supervisor.progress ?? supervisor.verdict ?? supervisor.status, width - 10)}`,\n ]\n}\n\nfunction renderJournalTail(supervisor: SupervisorView, width: number, color: boolean): string[] {\n if (supervisor.journalTail.length === 0) return [' no journal events yet']\n return supervisor.journalTail.map((event) => {\n const at = event.at ? formatClock(event.at) : '--:--:--'\n if (event.kind === 'spawned')\n return ` ${at} ${paint('spawn', 'yellow', color)} ${pad(event.label ?? event.id, 16)} ${event.id}`\n if (event.kind !== 'cancelled') {\n const spend = parseSpend(event.kind === 'settled' ? event.spent : event.spend)\n const status =\n event.kind === 'settled'\n ? statusText(event.status ?? 'settled', color)\n : event.kind === 'metered'\n ? `${paint('meter', 'cyan', color)} `\n : `${paint('live', 'blue', color)} `\n return ` ${at} ${status} ${pad(event.id, 18)} ${formatMoney(spend.usd, spend.usdKnown)} ${formatTokens(spend.tokensInput, spend.tokensKnown)}/${formatTokens(spend.tokensOutput, spend.tokensKnown)}`\n }\n return ` ${at} ${paint('cancel', 'red', color)} ${pad(event.id, 18)} ${compact(event.reason ?? '', width - 32)}`\n })\n}\n\nfunction renderWorkerTail(worker: WorkerView, width: number, color: boolean): string[] {\n if (worker.liveTail.length === 0) return ['live events: none recorded yet']\n return [\n 'live events:',\n ...worker.liveTail\n .slice(-5)\n .map((line) => ` ${paint(compact(formatWorkerEvent(line), width - 2), 'dim', color)}`),\n ]\n}\n\nfunction renderSteerInput(\n input: NonNullable<RenderOptions['steerInput']>,\n width: number,\n color: boolean,\n): string {\n const target = input.workerLabel ?? '-'\n const value = compact(input.value, Math.max(10, width - target.length - 14))\n return `${paint('steer', 'cyan', color)} ${target} > ${value}${paint('_', 'inverse', color)}`\n}\n\nfunction formatWorkerEvent(line: string): string {\n try {\n const parsed = JSON.parse(line) as Record<string, unknown>\n const at = typeof parsed.at === 'string' ? formatClock(parsed.at) : '--:--:--'\n const kind = typeof parsed.kind === 'string' ? parsed.kind : 'event'\n if (kind === 'progress')\n return `${at} progress iter ${numberValue(parsed.iteration)} ${String(parsed.phase ?? '')}`\n if (kind === 'message') {\n const state = parsed.queued === true ? 'queued' : 'sent'\n const source =\n typeof parsed.source === 'string' && parsed.source.length > 0 ? `${parsed.source} ` : ''\n const message =\n typeof parsed.message === 'string' && parsed.message.length > 0 ? ` ${parsed.message}` : ''\n return `${at} ${source}steer ${state} delivered=${String(parsed.delivered)}${message}`\n }\n if (kind === 'verify') {\n return `${at} verify passed=${String(parsed.passed)} exit=${String(parsed.exitCode ?? '-')}${evidenceSnippet(parsed.outputTail, 160)}`\n }\n if (kind === 'finished') {\n const branch = typeof parsed.branch === 'string' ? ` branch=${parsed.branch}` : ''\n const files = typeof parsed.filesChanged === 'number' ? ` files=${parsed.filesChanged}` : ''\n const tests =\n typeof parsed.testPassed === 'boolean' ? ` tests=${String(parsed.testPassed)}` : ''\n return `${at} finished passed=${String(parsed.passed)} patchBytes=${numberValue(parsed.patchBytes)}${files}${tests}${branch}${evidenceSnippet(parsed.evidence, 220)}`\n }\n if (kind === 'error') return `${at} error ${String(parsed.error ?? '')}`\n return `${at} ${kind}`\n } catch {\n return line\n }\n}\n\n/** One-line the settle evidence / verify tail a worker event carries so the\n * failure is legible in the tail view (the full block stays in the ndjson). */\nfunction evidenceSnippet(value: unknown, max: number): string {\n if (typeof value !== 'string') return ''\n const oneLine = value.replace(/\\s+/g, ' ').trim()\n return oneLine ? ` :: ${compact(oneLine, max)}` : ''\n}\n\nfunction histogram(\n values: readonly number[],\n count: number,\n): Array<{ min: number; max: number; count: number }> {\n const min = Math.min(...values)\n const max = Math.max(...values)\n if (min === max) return [{ min, max, count: values.length }]\n const step = (max - min) / count\n return Array.from({ length: count }, (_, index) => {\n const low = min + step * index\n const high = index === count - 1 ? max : min + step * (index + 1)\n const binCount = values.filter(\n (value) => value >= low && (index === count - 1 ? value <= high : value < high),\n ).length\n return { min: low, max: high, count: binCount }\n }).filter((bin) => bin.count > 0)\n}\n\nfunction bar(\n value: number,\n max: number,\n width: number,\n ch: string,\n color: boolean,\n colorName: keyof typeof colors,\n): string {\n const filled = Math.max(0, Math.min(width, Math.round((value / Math.max(max, 0.000001)) * width)))\n const text = ch.repeat(filled).padEnd(width, '.')\n return paint(text, colorName, color)\n}\n\nfunction stackedTokenBar(\n input: number,\n output: number,\n max: number,\n width: number,\n color: boolean,\n): string {\n const inputWidth = Math.round((input / Math.max(max, 1)) * width)\n const outputWidth = Math.round((output / Math.max(max, 1)) * width)\n const clippedInput = Math.min(width, inputWidth)\n const clippedOutput = Math.min(width - clippedInput, outputWidth)\n const rest = Math.max(0, width - clippedInput - clippedOutput)\n return `${paint('#'.repeat(clippedInput), 'cyan', color)}${paint('+'.repeat(clippedOutput), 'green', color)}${'.'.repeat(rest)}`\n}\n\nfunction sectionTitle(title: string, focused: boolean, color: boolean): string {\n const text = focused ? `[${title}]` : title\n return paint(text, focused ? 'cyan' : 'bold', color)\n}\n\nfunction statusText(status: string, color: boolean): string {\n if (['completed', 'done', 'delivered', 'valid'].includes(status))\n return paint(status.toUpperCase(), 'green', color)\n if (['failed', 'down', 'cancelled', 'invalid', 'error'].includes(status))\n return paint(status.toUpperCase(), 'red', color)\n if (['running', 'spawned', 'settled'].includes(status))\n return paint(status.toUpperCase(), 'yellow', color)\n return paint(status.toUpperCase(), 'white', color)\n}\n\nfunction selectEntity<T extends { readonly id: string }>(\n entities: readonly T[],\n requested: string | undefined,\n): T | undefined {\n return (requested ? entities.find((entity) => entity.id === requested) : undefined) ?? entities[0]\n}\n\nfunction formatClock(value: string): string {\n const parsed = parseTime(value)\n if (parsed === undefined) return '--:--:--'\n return new Date(parsed).toISOString().slice(11, 19)\n}\n\nfunction formatMoney(value: number, known = true): string {\n if (!known) return value === 0 ? 'unknown' : `≥${formatMoney(value)} + unknown`\n if (value === 0) return '$0'\n if (Math.abs(value) < 0.01) return `$${value.toFixed(4)}`\n return `$${value.toFixed(2)}`\n}\n\nfunction formatTokens(value: number, known = true): string {\n if (!known) return value === 0 ? '?' : `≥${formatTokens(value)}?`\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}m`\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}k`\n return `${Math.round(value)}`\n}\n\nfunction formatDuration(ms: number): string {\n if (!Number.isFinite(ms) || ms <= 0) return '0s'\n if (ms < 1000) return `${Math.round(ms)}ms`\n const seconds = ms / 1000\n if (seconds < 60) return `${seconds.toFixed(seconds < 10 ? 1 : 0)}s`\n const minutes = seconds / 60\n if (minutes < 60) return `${minutes.toFixed(minutes < 10 ? 1 : 0)}m`\n return `${(minutes / 60).toFixed(1)}h`\n}\n\nfunction compact(value: string, width: number): string {\n if (width <= 1) return ''\n if (value.length <= width) return value\n return `${value.slice(0, width - 1)}~`\n}\n\nfunction pad(value: string, width: number): string {\n const visible = visibleLength(value)\n if (visible >= width) return fitAnsi(value, width)\n return `${value}${' '.repeat(width - visible)}`\n}\n\nfunction rule(width: number, color: boolean): string {\n return paint('-'.repeat(width), 'dim', color)\n}\n\nfunction paint(\n value: string,\n colorName: keyof typeof colors | undefined,\n enabled: boolean,\n): string {\n if (!enabled || !colorName) return value\n return `${colors[colorName]}${value}${colors.reset}`\n}\n\nfunction visibleLength(value: string): number {\n return stripAnsi(value).length\n}\n\nfunction stripAnsi(value: string): string {\n return value.replace(ansiPattern, '')\n}\n\nfunction fitAnsi(value: string, width: number): string {\n if (visibleLength(value) <= width) return value\n let out = ''\n let visible = 0\n let cursor = 0\n // An escape sequence must be copied whole and counted as zero visible columns; truncating\n // inside one would emit a half-sequence the terminal interprets against the next line.\n for (const match of value.matchAll(ansiPattern)) {\n const text = value.slice(cursor, match.index)\n const remaining = width - 1 - visible\n out += text.slice(0, remaining)\n visible += Math.min(text.length, remaining)\n if (text.length > remaining) break\n out += match[0]\n cursor = match.index + match[0].length\n }\n if (visible < width - 1) out += value.slice(cursor, cursor + width - 1 - visible)\n out += '~'\n if (out.includes('\\x1b[') && !out.endsWith(colors.reset)) out += colors.reset\n return out\n}\n","/**\n * The interactive side of the supervisor-run TUI: a keypress/mouse loop over the frames\n * `./top-frame` renders, plus the operator controls that write back to the run — steer a live\n * worker, cancel one worker, and request cancellation of a whole run.\n *\n * The controls go through the owned run layout: steers via `writeWorkerSteer` (the durable inbox\n * append) and worker cancellation via `cancelWorker` (the acknowledged operation the runtime's\n * turn loop applies). Run-level cancellation targets the ROOT, which has no acknowledged runtime\n * path yet for a non-retained tree — it stays a `cancel.request.json` write inside the run\n * directory for a host process to honor. Nothing here joins a path from the workspace root.\n *\n * Extracted from the `loops` repo (`src/top.ts`). The module-level singletons are the origin's\n * shape and are kept: this drives one terminal, and `runTopApp` is its one entry point.\n *\n * @experimental\n */\n\nimport { randomUUID } from 'node:crypto'\nimport { hostname, userInfo } from 'node:os'\nimport { resolve } from 'node:path'\nimport { emitKeypressEvents } from 'node:readline'\nimport { cancelRun } from '../runtime/supervise/run-cancellation'\nimport { cancelWorker, writeWorkerSteer } from '../runtime/supervise/run-layout'\nimport { type RenderTarget, renderTopFrameWithLayout } from './top-frame'\nimport { loadTopSnapshot, type TopSnapshot } from './top-snapshot'\n\ninterface UiState {\n root: string\n color: boolean\n focus: 'supervisors' | 'workers'\n mode: 'overview' | 'detail' | 'log'\n selectedSupervisorId: string | undefined\n selectedWorkerId: string | undefined\n notice: string | undefined\n steerInput: {\n active: boolean\n value: string\n }\n}\n\n/** @experimental How the app was invoked. Defaults read `process.argv` / `process.cwd()`. */\ninterface TopAppOptions {\n readonly argv?: readonly string[]\n readonly cwd?: string\n}\n\nlet state: UiState = initialState([], process.cwd())\nlet snapshot: TopSnapshot = {\n root: state.root,\n generatedAt: 0,\n supervisors: [],\n completeness: 'complete',\n diagnostics: [],\n discovered: 0,\n loaded: 0,\n}\nlet targets: RenderTarget[] = []\nlet timer: NodeJS.Timeout | undefined\n\n/**\n * Render exactly one frame and return it. This is the non-interactive path — `--once`, a pipe, a\n * test — so it never touches raw mode, the alternate screen, or `process.exit`.\n */\nfunction renderTopOnce(options: TopAppOptions = {}): string {\n const args = [...(options.argv ?? process.argv.slice(2))]\n state = initialState(args, options.cwd ?? process.cwd())\n snapshot = loadTopSnapshot(state.root)\n clampSelection()\n return renderTopFrameWithLayout(snapshot, {\n color: state.color,\n width: process.stdout.columns ?? 128,\n focus: state.focus,\n mode: state.mode,\n ...(state.selectedSupervisorId ? { selectedSupervisorId: state.selectedSupervisorId } : {}),\n ...(state.selectedWorkerId ? { selectedWorkerId: state.selectedWorkerId } : {}),\n steerInput: renderSteerInputState(),\n }).frame\n}\n\n/**\n * Run the TUI. With a TTY on both ends and no `--once` this takes over the terminal until `q`;\n * otherwise it writes a single frame to stdout and returns.\n */\nexport function runTopApp(options: TopAppOptions = {}): void {\n const args = [...(options.argv ?? process.argv.slice(2))]\n if (!process.stdout.isTTY || !process.stdin.isTTY || args.includes('--once')) {\n process.stdout.write(renderTopOnce(options))\n return\n }\n state = initialState(args, options.cwd ?? process.cwd())\n snapshot = loadTopSnapshot(state.root)\n start()\n}\n\nfunction initialState(args: readonly string[], cwd: string): UiState {\n const rootArg = args.find((arg) => !arg.startsWith('-'))\n return {\n root: resolve(rootArg ?? cwd),\n color: Boolean(process.stdout.isTTY) && !args.includes('--no-color'),\n focus: args.includes('--detail') ? 'workers' : 'supervisors',\n mode: args.includes('--log') ? 'log' : args.includes('--detail') ? 'detail' : 'overview',\n selectedSupervisorId: undefined,\n selectedWorkerId: undefined,\n notice: undefined,\n steerInput: { active: false, value: '' },\n }\n}\n\nfunction start(): void {\n process.stdout.write('\\x1b[?1049h\\x1b[?25l\\x1b[?1000h\\x1b[?1006h')\n emitKeypressEvents(process.stdin)\n process.stdin.setRawMode(true)\n process.stdin.resume()\n process.stdin.on('keypress', onKey)\n process.stdin.on('data', onData)\n process.on('SIGINT', stop)\n draw()\n timer = setInterval(draw, 1000)\n}\n\nfunction stop(): void {\n if (timer) clearInterval(timer)\n process.stdin.setRawMode(false)\n process.stdout.write('\\x1b[?1000l\\x1b[?1006l\\x1b[?25h\\x1b[?1049l')\n process.exit(0)\n}\n\nfunction draw(): void {\n snapshot = loadTopSnapshot(state.root)\n clampSelection()\n const rendered = renderTopFrameWithLayout(snapshot, {\n width: process.stdout.columns ?? 128,\n height: process.stdout.rows ?? 42,\n color: state.color,\n focus: state.focus,\n mode: state.mode,\n ...(state.notice ? { notice: state.notice } : {}),\n ...(state.selectedSupervisorId ? { selectedSupervisorId: state.selectedSupervisorId } : {}),\n ...(state.selectedWorkerId ? { selectedWorkerId: state.selectedWorkerId } : {}),\n steerInput: renderSteerInputState(),\n })\n targets = rendered.targets\n process.stdout.write(`\\x1b[2J\\x1b[H${rendered.frame}`)\n}\n\nfunction onKey(str: string, key: { name?: string; ctrl?: boolean }): void {\n state.notice = undefined\n if (key.ctrl && key.name === 'c') stop()\n if (state.steerInput.active) {\n handleSteerInput(str, key)\n draw()\n return\n }\n if (key.name === 'q' || key.name === 'escape') stop()\n if (key.name === 'tab') {\n state.focus = state.focus === 'supervisors' ? 'workers' : 'supervisors'\n } else if (key.name === 'up') {\n moveSelection(-1)\n } else if (key.name === 'down') {\n moveSelection(1)\n } else if (key.name === 'left') {\n moveSupervisor(-1)\n } else if (key.name === 'right') {\n moveSupervisor(1)\n } else if (key.name === 'return') {\n state.mode = 'detail'\n state.focus = 'workers'\n } else if (key.name === 'o') {\n state.mode = 'overview'\n } else if (key.name === 'l') {\n state.mode = 'log'\n } else if (key.name === 's') {\n startSteerInput()\n } else if (key.name === 'c') {\n requestCancel()\n }\n draw()\n}\n\nfunction handleSteerInput(str: string, key: { name?: string; ctrl?: boolean }): void {\n if (key.name === 'escape') {\n state.steerInput = { active: false, value: '' }\n return\n }\n if (key.name === 'return') {\n submitSteerInput()\n return\n }\n if (key.name === 'backspace') {\n state.steerInput.value = state.steerInput.value.slice(0, -1)\n return\n }\n if (key.ctrl && key.name === 'u') {\n state.steerInput.value = ''\n return\n }\n if (\n key.ctrl ||\n key.name === 'tab' ||\n key.name === 'up' ||\n key.name === 'down' ||\n key.name === 'left' ||\n key.name === 'right'\n ) {\n return\n }\n if (!str || str === '\\r' || str === '\\n') return\n if ([...str].every((char) => char >= ' ' && char !== '\\x7f')) state.steerInput.value += str\n}\n\nfunction onData(data: Buffer): void {\n const click = parseMouse(data.toString('utf8'))\n if (!click) return\n const target = targets.find((candidate) => candidate.row === click.row)\n if (!target) return\n state.notice = undefined\n if (target.kind === 'supervisor') {\n state.focus = 'supervisors'\n state.selectedSupervisorId = target.id\n state.selectedWorkerId = undefined\n } else {\n state.focus = 'workers'\n state.mode = 'detail'\n state.selectedSupervisorId = target.supervisorId\n state.selectedWorkerId = target.id\n }\n draw()\n}\n\nfunction startSteerInput(): void {\n state.mode = 'detail'\n state.focus = 'workers'\n if (!selectedSupervisor()) {\n state.notice = 'no supervisor selected'\n return\n }\n if (!selectedWorker()) {\n state.notice = 'no worker selected'\n return\n }\n state.steerInput = { active: true, value: '' }\n}\n\nfunction submitSteerInput(): void {\n const supervisor = selectedSupervisor()\n const worker = selectedWorker()\n const message = state.steerInput.value\n state.steerInput = { active: false, value: '' }\n if (!supervisor) {\n state.notice = 'no supervisor selected'\n return\n }\n if (!worker) {\n state.notice = 'no worker selected'\n return\n }\n try {\n // The exact worker id routes this operation to the one manager that owns the child.\n const written = writeWorkerSteer(state.root, supervisor.id, worker.id, {\n operationId: randomUUID(),\n message,\n source: 'agent-runtime-top',\n })\n state.notice = `steer queued for ${supervisor.id}/${worker.label} (op ${written.request.operationId})`\n } catch (err) {\n state.notice = `steer failed: ${err instanceof Error ? err.message : String(err)}`\n }\n}\n\nfunction parseMouse(raw: string): { col: number; row: number } | undefined {\n // ESC is the literal first byte of an SGR mouse report; matching the control character IS the\n // parse, so the control-character rule does not apply to a terminal escape decoder.\n // biome-ignore lint/suspicious/noControlCharactersInRegex: SGR mouse reports begin with ESC\n const match = /\\x1b\\[<(\\d+);(\\d+);(\\d+)([mM])/.exec(raw)\n if (match?.[4] !== 'M') return undefined\n const col = Number(match[2])\n const row = Number(match[3])\n if (!Number.isFinite(col) || !Number.isFinite(row)) return undefined\n return { col: col - 1, row: row - 1 }\n}\n\nfunction moveSelection(delta: number): void {\n if (state.focus === 'supervisors') {\n moveSupervisor(delta)\n return\n }\n const supervisor = selectedSupervisor()\n if (!supervisor || supervisor.workers.length === 0) return\n const current = Math.max(\n 0,\n supervisor.workers.findIndex((worker) => worker.id === state.selectedWorkerId),\n )\n const next = wrap(current + delta, supervisor.workers.length)\n const worker = supervisor.workers[next]\n if (worker) state.selectedWorkerId = worker.id\n}\n\nfunction moveSupervisor(delta: number): void {\n if (snapshot.supervisors.length === 0) return\n const current = Math.max(\n 0,\n snapshot.supervisors.findIndex((supervisor) => supervisor.id === state.selectedSupervisorId),\n )\n const next = wrap(current + delta, snapshot.supervisors.length)\n const supervisor = snapshot.supervisors[next]\n if (!supervisor) return\n state.selectedSupervisorId = supervisor.id\n state.selectedWorkerId = supervisor.workers[0]?.id\n}\n\nfunction clampSelection(): void {\n if (snapshot.supervisors.length === 0) {\n state.selectedSupervisorId = undefined\n state.selectedWorkerId = undefined\n return\n }\n const supervisor = selectedSupervisor() ?? snapshot.supervisors[0]\n if (!supervisor) return\n state.selectedSupervisorId = supervisor.id\n const worker =\n supervisor.workers.find((candidate) => candidate.id === state.selectedWorkerId) ??\n supervisor.workers[0]\n state.selectedWorkerId = worker?.id\n}\n\nfunction selectedSupervisor(): TopSnapshot['supervisors'][number] | undefined {\n return snapshot.supervisors.find((supervisor) => supervisor.id === state.selectedSupervisorId)\n}\n\nfunction selectedWorker(): TopSnapshot['supervisors'][number]['workers'][number] | undefined {\n const supervisor = selectedSupervisor()\n return supervisor?.workers.find((worker) => worker.id === state.selectedWorkerId)\n}\n\nfunction renderSteerInputState(): { active: boolean; value: string; workerLabel?: string } {\n const worker = selectedWorker()\n return {\n active: state.steerInput.active,\n value: state.steerInput.value,\n ...(worker?.label ? { workerLabel: worker.label } : {}),\n }\n}\n\nfunction requestCancel(): void {\n const supervisor = selectedSupervisor()\n if (!supervisor) {\n state.notice = 'no supervisor selected'\n return\n }\n if (supervisor.status !== 'running') {\n state.notice = `${supervisor.id} is ${supervisor.status}; no cancel request written`\n return\n }\n // Worker focus cancels ONE worker through the acknowledged runtime path: the request lands in\n // the run layout's cancellation inbox, the run's own turn loop applies the abort to exactly\n // that worker's subtree, and the acknowledgement records what it proved.\n const worker = state.focus === 'workers' ? selectedWorker() : undefined\n if (worker) {\n if (worker.status !== 'running') {\n state.notice = `${worker.label} is ${worker.status}; nothing to cancel`\n return\n }\n // The request names the exact node id, so it routes to the manager that owns the worker at\n // ANY depth — the owning manager's turn loop applies the abort to exactly that subtree.\n try {\n const record = cancelWorker(supervisor.stateDir, worker.id, randomUUID(), {\n reason: 'operator requested cancel from TUI',\n source: 'agent-runtime-top',\n })\n state.notice =\n record.effect === 'unknown'\n ? `cancel queued for ${supervisor.id}/${worker.label} (op ${record.operationId}); awaiting runtime acknowledgement`\n : `cancel ${record.effect} for ${supervisor.id}/${worker.label} (op ${record.operationId})`\n } catch (err) {\n state.notice = `cancel request failed: ${err instanceof Error ? err.message : String(err)}`\n }\n return\n }\n // Supervisor focus cancels the WHOLE run through the same acknowledged contract: the request\n // lands in the run layout, the run's root manager aborts the whole tree through the one cascade\n // controller it already has, and `supervise()` records the terminal effect.\n try {\n const record = cancelRun(supervisor.stateDir, randomUUID(), {\n reason: 'operator requested cancel from TUI',\n source: 'agent-runtime-top',\n operator: `${userInfo().username}@${hostname()}`,\n })\n state.notice =\n record.effect === 'unknown'\n ? `run cancel queued for ${supervisor.id} (op ${record.operationId}); awaiting runtime acknowledgement`\n : `run cancel ${record.effect} for ${supervisor.id} (op ${record.operationId})`\n } catch (err) {\n state.notice = `cancel request failed: ${err instanceof Error ? err.message : String(err)}`\n }\n}\n\nfunction wrap(value: number, size: number): number {\n return ((value % size) + size) % size\n}\n","#!/usr/bin/env node\n\n/**\n * `agent-runtime-top` — watch the supervisor runs of one workspace.\n *\n * agent-runtime-top [root] [--once] [--no-color] [--detail] [--log]\n *\n * `root` is the workspace whose `.agent/supervisor/` runs are shown; it defaults to the current\n * directory. With a TTY on both ends the view refreshes every second and takes the keys it prints\n * in its header; otherwise (a pipe, `--once`) it writes one frame and exits.\n *\n * @experimental\n */\n\nimport { runTopApp } from './top-app'\nimport { runTopWeb } from './top-web'\n\nif (process.argv.includes('--web')) await runTopWeb(process.argv.slice(2))\nelse runTopApp()\n"],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","names":[],"sources":["../../src/tui/top-frame.ts","../../src/tui/top-app.ts","../../src/tui/bin.ts"],"sourcesContent":["import { supervisorRunsRoot } from '../runtime/supervise/run-layout'\nimport {\n aggregateSnapshot,\n numberValue,\n parseSpend,\n parseTime,\n type SpendStats,\n type SupervisorView,\n type TopSnapshot,\n totalSpend,\n type WorkerView,\n} from './top-snapshot'\n\ninterface RenderOptions {\n readonly width?: number\n readonly height?: number\n readonly color?: boolean\n readonly selectedSupervisorId?: string\n readonly selectedWorkerId?: string\n readonly focus?: 'supervisors' | 'workers'\n readonly mode?: 'overview' | 'detail' | 'log'\n readonly notice?: string\n readonly steerInput?: {\n readonly active: boolean\n readonly value: string\n readonly workerLabel?: string\n }\n}\n\nexport interface RenderTarget {\n readonly row: number\n readonly kind: 'supervisor' | 'worker'\n readonly id: string\n readonly supervisorId?: string\n}\n\ninterface RenderedTopFrame {\n readonly frame: string\n readonly targets: RenderTarget[]\n}\n// Width accounting depends on stripping SGR sequences, which begin with a literal ESC. Matching\n// the control character is the point of an ANSI-aware renderer, not an accident.\n// biome-ignore lint/suspicious/noControlCharactersInRegex: SGR sequences begin with ESC\nconst ansiPattern = /\\x1b\\[[0-9;?]*[ -/]*[@-~]/g\n\nconst colors = {\n reset: '\\x1b[0m',\n dim: '\\x1b[2m',\n bold: '\\x1b[1m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n white: '\\x1b[37m',\n inverse: '\\x1b[7m',\n}\n\n/** Render one snapshot to an ANSI frame. Use this when nothing needs to be clickable. */\nexport function renderTopFrame(snapshot: TopSnapshot, options: RenderOptions = {}): string {\n return renderTopFrameWithLayout(snapshot, options).frame\n}\n\n/**\n * Render one snapshot, returning the frame together with the row→entity map a mouse click resolves\n * against. The layout is the only thing that knows which row is which run or worker, so emitting it\n * alongside the text is what keeps click handling out of the renderer.\n */\nexport function renderTopFrameWithLayout(\n snapshot: TopSnapshot,\n options: RenderOptions = {},\n): RenderedTopFrame {\n const width = Math.max(88, options.width ?? 128)\n const height = Math.max(24, options.height ?? 42)\n const color = options.color ?? false\n const focus = options.focus ?? 'supervisors'\n const mode = options.mode ?? 'overview'\n const selectedSupervisor = selectEntity(snapshot.supervisors, options.selectedSupervisorId)\n const selectedWorker = selectedSupervisor\n ? selectEntity(selectedSupervisor.workers, options.selectedWorkerId)\n : undefined\n const targets: RenderTarget[] = []\n const lines: string[] = []\n\n const push = (line = '', target?: Omit<RenderTarget, 'row'>) => {\n if (lines.length >= height) return\n if (target) targets.push({ row: lines.length, ...target })\n lines.push(fitAnsi(line, width))\n }\n\n const aggregate = aggregateSnapshot(snapshot)\n push(\n `${paint('SUPERVISOR TOP', 'bold', color)} ${paint(snapshot.root, 'dim', color)} ` +\n `runs ${aggregate.supervisors} workers ${aggregate.workers} live ${aggregate.running} ` +\n `done ${aggregate.done} down ${aggregate.down} ` +\n `${formatMoney(aggregate.usd, aggregate.usdKnown)} tok ${formatTokens(aggregate.tokensInput, aggregate.tokensKnown)}/${formatTokens(aggregate.tokensOutput, aggregate.tokensKnown)}`,\n )\n push(\n `${paint('keys', 'dim', color)} up/down select left/right run tab focus enter detail o overview l log s steer c cancel mouse q quit`,\n )\n if (options.notice) push(paint(options.notice, 'yellow', color))\n if (snapshot.completeness === 'partial')\n push(\n paint(\n `partial snapshot: ${snapshot.diagnostics.length} source${\n snapshot.diagnostics.length === 1 ? '' : 's'\n } skipped or truncated; runs loaded ${snapshot.loaded}/${snapshot.discovered}`,\n 'yellow',\n color,\n ),\n )\n if (options.steerInput?.active) push(renderSteerInput(options.steerInput, width, color))\n push(rule(width, color))\n\n if (snapshot.supervisors.length === 0) {\n if (snapshot.discovered > 0) {\n push(paint('NO READABLE SUPERVISORS', 'yellow', color))\n push(\n `${snapshot.discovered} run director${snapshot.discovered === 1 ? 'y' : 'ies'} found under ${supervisorRunsRoot(snapshot.root)}, none readable`,\n )\n } else {\n push(paint('NO SUPERVISORS', 'yellow', color))\n push(`No run state under ${supervisorRunsRoot(snapshot.root)}`)\n }\n push(\n `A run appears here once its driver writes state.json; re-point with: agent-runtime-top <root>`,\n )\n return { frame: `${lines.join('\\n')}\\n`, targets }\n }\n\n push(sectionTitle('SUPERVISORS', focus === 'supervisors', color))\n push(\n ` id status workers spend tok in/out latency task`,\n )\n for (const supervisor of snapshot.supervisors.slice(0, 9)) {\n const selected = supervisor.id === selectedSupervisor?.id\n const status = statusText(supervisor.status, color)\n const pointer = selected ? paint('>', 'cyan', color) : ' '\n const rowFocus = selected && focus === 'supervisors' ? 'inverse' : undefined\n const workerSummary = `${supervisor.totals.running}/${supervisor.totals.workers} live`\n const task = compact(supervisor.task, 34)\n const line =\n `${pointer} ${pad(supervisor.id, 21)} ${pad(status, 12)} ${pad(workerSummary, 13)} ` +\n `${pad(formatMoney(supervisor.totals.usd, supervisor.totals.usdKnown), 12)} ` +\n `${pad(`${formatTokens(supervisor.totals.tokensInput, supervisor.totals.tokensKnown)}/${formatTokens(supervisor.totals.tokensOutput, supervisor.totals.tokensKnown)}`, 16)} ` +\n `${pad(formatDuration(supervisor.totals.latencyMs), 12)} ${task}`\n push(rowFocus ? paint(line, rowFocus, color) : line, { kind: 'supervisor', id: supervisor.id })\n }\n\n if (!selectedSupervisor) return { frame: `${lines.join('\\n')}\\n`, targets }\n\n push()\n push(sectionTitle(`WORKERS ${selectedSupervisor.id}`, focus === 'workers', color))\n push(\n ` id state runtime latency cost tok in/out score detail`,\n )\n for (const worker of selectedSupervisor.workers.slice(0, 12)) {\n const selected = worker.id === selectedWorker?.id\n const pointer = selected ? paint('>', 'cyan', color) : ' '\n const rowFocus = selected && focus === 'workers' ? 'inverse' : undefined\n const score = worker.verdict ?? (worker.status === 'done' ? 'done' : worker.status)\n const detail = worker.reason ?? worker.outRef ?? worker.parent ?? ''\n const spend = totalSpend(worker)\n const line =\n `${pointer} ${pad(worker.label, 12)} ${pad(statusText(worker.status, color), 12)} ` +\n `${pad(worker.runtime ?? '-', 10)} ${pad(formatDuration(worker.latencyMs), 12)} ` +\n `${pad(formatMoney(spend.usd, spend.usdKnown), 11)} ` +\n `${pad(`${formatTokens(spend.tokensInput, spend.tokensKnown)}/${formatTokens(spend.tokensOutput, spend.tokensKnown)}`, 16)} ` +\n `${pad(compact(score, 9), 10)} ${compact(detail, 30)}`\n push(rowFocus ? paint(line, rowFocus, color) : line, {\n kind: 'worker',\n id: worker.id,\n supervisorId: selectedSupervisor.id,\n })\n }\n if (selectedSupervisor.workers.length === 0) push(' no workers spawned yet')\n\n push()\n push(sectionTitle('OBSERVABILITY', false, color))\n for (const line of renderStatusBars(selectedSupervisor, width, color)) push(line)\n push()\n for (const line of renderSpendBars(selectedSupervisor, width, color, 'usd')) push(line)\n push()\n for (const line of renderSpendBars(selectedSupervisor, width, color, 'tokens')) push(line)\n push()\n for (const line of renderLatencyHistogram(selectedSupervisor, width, color)) push(line)\n\n push()\n if (mode === 'log') {\n push(sectionTitle('JOURNAL TAIL', false, color))\n for (const line of renderJournalTail(selectedSupervisor, width, color)) push(line)\n } else {\n push(sectionTitle(mode === 'detail' ? 'DETAIL' : 'RUN SUMMARY', false, color))\n for (const line of renderDetail(selectedSupervisor, selectedWorker, mode, width, color))\n push(line)\n }\n\n return { frame: `${lines.join('\\n')}\\n`, targets }\n}\n\nfunction renderStatusBars(supervisor: SupervisorView, width: number, color: boolean): string[] {\n const total = Math.max(1, supervisor.totals.workers)\n const barWidth = Math.max(12, Math.min(28, width - 58))\n return [\n `status ` +\n `${pad('running', 9)} ${bar(supervisor.totals.running, total, barWidth, '#', color, 'yellow')} ${supervisor.totals.running}` +\n ` ${pad('done', 5)} ${bar(supervisor.totals.done, total, barWidth, '#', color, 'green')} ${supervisor.totals.done}` +\n ` ${pad('down', 5)} ${bar(supervisor.totals.down, total, barWidth, '#', color, 'red')} ${supervisor.totals.down}`,\n ]\n}\n\nfunction renderSpendBars(\n supervisor: SupervisorView,\n width: number,\n color: boolean,\n channel: 'usd' | 'tokens',\n): string[] {\n const dollars = channel === 'usd'\n const amount = (spend: SpendStats) =>\n dollars ? spend.usd : spend.tokensInput + spend.tokensOutput\n const label = (spend: SpendStats) =>\n dollars\n ? formatMoney(spend.usd, spend.usdKnown)\n : `${formatTokens(spend.tokensInput, spend.tokensKnown)}/${formatTokens(spend.tokensOutput, spend.tokensKnown)}`\n const rows = supervisor.workers\n .map((worker) => ({ worker, spend: totalSpend(worker) }))\n .sort((a, b) => amount(b.spend) - amount(a.spend))\n .slice(0, 6)\n const max = Math.max(\n dollars ? 0.000001 : 1,\n ...rows.map((row) => amount(row.spend)),\n amount(supervisor.driverSpend),\n )\n const total = dollars\n ? formatMoney(supervisor.totals.usd, supervisor.totals.usdKnown)\n : `in ${formatTokens(supervisor.totals.tokensInput, supervisor.totals.tokensKnown)} / out ${formatTokens(supervisor.totals.tokensOutput, supervisor.totals.tokensKnown)}`\n const out = [\n `${dollars ? 'cost ' : 'tokens'} total ${total} driver ${label(supervisor.driverSpend)}`,\n ]\n const barWidth = Math.max(18, Math.min(46, width - (dollars ? 38 : 44)))\n for (const { worker, spend } of rows) {\n const visual = dollars\n ? bar(spend.usd, max, barWidth, '$', color, 'magenta')\n : stackedTokenBar(spend.tokensInput, spend.tokensOutput, max, barWidth, color)\n out.push(` ${pad(worker.label, 12)} ${visual} ${label(spend)}`)\n }\n if (rows.length === 0) out.push(` no worker ${dollars ? 'cost' : 'tokens'} yet`)\n return out\n}\n\nfunction renderLatencyHistogram(\n supervisor: SupervisorView,\n width: number,\n color: boolean,\n): string[] {\n const values = supervisor.workers.map((worker) => worker.latencyMs).filter((value) => value > 0)\n const summary = supervisor.totals.workerLatency\n const out = [\n `latency n=${summary.n} min ${formatDuration(summary.min)} p50 ${formatDuration(summary.median)} ` +\n `p90 ${formatDuration(summary.p90)} max ${formatDuration(summary.max)}`,\n ]\n if (values.length === 0) {\n out.push(' no latency samples yet')\n return out\n }\n const bins = histogram(values, 6)\n const maxCount = Math.max(1, ...bins.map((bin) => bin.count))\n const barWidth = Math.max(18, Math.min(48, width - 34))\n for (const bin of bins) {\n out.push(\n ` ${pad(`${formatDuration(bin.min)}-${formatDuration(bin.max)}`, 15)} ` +\n `${bar(bin.count, maxCount, barWidth, '#', color, 'blue')} ${bin.count}`,\n )\n }\n return out\n}\n\nfunction renderDetail(\n supervisor: SupervisorView,\n worker: WorkerView | undefined,\n mode: 'overview' | 'detail' | 'log',\n width: number,\n color: boolean,\n): string[] {\n if (mode === 'detail' && worker) {\n const spend = totalSpend(worker)\n return [\n `worker ${paint(worker.label, 'bold', color)} (${worker.id}) ${statusText(worker.status, color)} latency ${formatDuration(worker.latencyMs)}`,\n `tokens in/out ${formatTokens(spend.tokensInput, spend.tokensKnown)}/${formatTokens(spend.tokensOutput, spend.tokensKnown)} cost ${formatMoney(spend.usd, spend.usdKnown)} iterations ${spend.iterations}`,\n `parent ${worker.parent ?? '-'} runtime ${worker.runtime ?? '-'} out ${worker.outRef ?? '-'}${worker.infra ? ' infra' : ''}`,\n `events ${compact(worker.eventFile ?? '-', width - 8)}`,\n ...(worker.reason ? [`reason ${compact(worker.reason, width - 7)}`] : []),\n ...renderWorkerTail(worker, width, color),\n ]\n }\n\n const caps = [\n supervisor.maxSandboxes !== undefined ? `boxes ${supervisor.maxSandboxes}` : undefined,\n supervisor.maxUsd !== undefined ? `max ${formatMoney(supervisor.maxUsd)}` : undefined,\n supervisor.maxDepth !== undefined ? `depth ${supervisor.maxDepth}` : undefined,\n supervisor.maxLifetimeSeconds !== undefined\n ? `ttl ${supervisor.maxLifetimeSeconds}s`\n : undefined,\n ].filter((value): value is string => value !== undefined)\n return [\n `task ${compact(supervisor.task, width - 7)}`,\n `workspace ${compact(supervisor.workspaceDir, width - 12)}`,\n `verify ${compact(supervisor.verifyCmd ?? '-', width - 9)}`,\n `models worker ${supervisor.workerModel ?? '-'} / driver ${supervisor.driverModel ?? '-'} caps ${caps.join(' | ') || '-'}`,\n `progress ${compact(supervisor.progress ?? supervisor.verdict ?? supervisor.status, width - 10)}`,\n ]\n}\n\nfunction renderJournalTail(supervisor: SupervisorView, width: number, color: boolean): string[] {\n if (supervisor.journalTail.length === 0) return [' no journal events yet']\n return supervisor.journalTail.map((event) => {\n const at = event.at ? formatClock(event.at) : '--:--:--'\n if (event.kind === 'spawned')\n return ` ${at} ${paint('spawn', 'yellow', color)} ${pad(event.label ?? event.id, 16)} ${event.id}`\n if (event.kind !== 'cancelled') {\n const spend = parseSpend(event.kind === 'settled' ? event.spent : event.spend)\n const status =\n event.kind === 'settled'\n ? statusText(event.status ?? 'settled', color)\n : event.kind === 'metered'\n ? `${paint('meter', 'cyan', color)} `\n : `${paint('live', 'blue', color)} `\n return ` ${at} ${status} ${pad(event.id, 18)} ${formatMoney(spend.usd, spend.usdKnown)} ${formatTokens(spend.tokensInput, spend.tokensKnown)}/${formatTokens(spend.tokensOutput, spend.tokensKnown)}`\n }\n return ` ${at} ${paint('cancel', 'red', color)} ${pad(event.id, 18)} ${compact(event.reason ?? '', width - 32)}`\n })\n}\n\nfunction renderWorkerTail(worker: WorkerView, width: number, color: boolean): string[] {\n if (worker.liveTail.length === 0) return ['live events: none recorded yet']\n return [\n 'live events:',\n ...worker.liveTail\n .slice(-5)\n .map((line) => ` ${paint(compact(formatWorkerEvent(line), width - 2), 'dim', color)}`),\n ]\n}\n\nfunction renderSteerInput(\n input: NonNullable<RenderOptions['steerInput']>,\n width: number,\n color: boolean,\n): string {\n const target = input.workerLabel ?? '-'\n const value = compact(input.value, Math.max(10, width - target.length - 14))\n return `${paint('steer', 'cyan', color)} ${target} > ${value}${paint('_', 'inverse', color)}`\n}\n\nfunction formatWorkerEvent(line: string): string {\n try {\n const parsed = JSON.parse(line) as Record<string, unknown>\n const at = typeof parsed.at === 'string' ? formatClock(parsed.at) : '--:--:--'\n const kind = typeof parsed.kind === 'string' ? parsed.kind : 'event'\n if (kind === 'progress')\n return `${at} progress iter ${numberValue(parsed.iteration)} ${String(parsed.phase ?? '')}`\n if (kind === 'message') {\n const state = parsed.queued === true ? 'queued' : 'sent'\n const source =\n typeof parsed.source === 'string' && parsed.source.length > 0 ? `${parsed.source} ` : ''\n const message =\n typeof parsed.message === 'string' && parsed.message.length > 0 ? ` ${parsed.message}` : ''\n return `${at} ${source}steer ${state} delivered=${String(parsed.delivered)}${message}`\n }\n if (kind === 'verify') {\n return `${at} verify passed=${String(parsed.passed)} exit=${String(parsed.exitCode ?? '-')}${evidenceSnippet(parsed.outputTail, 160)}`\n }\n if (kind === 'finished') {\n const branch = typeof parsed.branch === 'string' ? ` branch=${parsed.branch}` : ''\n const files = typeof parsed.filesChanged === 'number' ? ` files=${parsed.filesChanged}` : ''\n const tests =\n typeof parsed.testPassed === 'boolean' ? ` tests=${String(parsed.testPassed)}` : ''\n return `${at} finished passed=${String(parsed.passed)} patchBytes=${numberValue(parsed.patchBytes)}${files}${tests}${branch}${evidenceSnippet(parsed.evidence, 220)}`\n }\n if (kind === 'error') return `${at} error ${String(parsed.error ?? '')}`\n return `${at} ${kind}`\n } catch {\n return line\n }\n}\n\n/** One-line the settle evidence / verify tail a worker event carries so the\n * failure is legible in the tail view (the full block stays in the ndjson). */\nfunction evidenceSnippet(value: unknown, max: number): string {\n if (typeof value !== 'string') return ''\n const oneLine = value.replace(/\\s+/g, ' ').trim()\n return oneLine ? ` :: ${compact(oneLine, max)}` : ''\n}\n\nfunction histogram(\n values: readonly number[],\n count: number,\n): Array<{ min: number; max: number; count: number }> {\n const min = Math.min(...values)\n const max = Math.max(...values)\n if (min === max) return [{ min, max, count: values.length }]\n const step = (max - min) / count\n return Array.from({ length: count }, (_, index) => {\n const low = min + step * index\n const high = index === count - 1 ? max : min + step * (index + 1)\n const binCount = values.filter(\n (value) => value >= low && (index === count - 1 ? value <= high : value < high),\n ).length\n return { min: low, max: high, count: binCount }\n }).filter((bin) => bin.count > 0)\n}\n\nfunction bar(\n value: number,\n max: number,\n width: number,\n ch: string,\n color: boolean,\n colorName: keyof typeof colors,\n): string {\n const filled = Math.max(0, Math.min(width, Math.round((value / Math.max(max, 0.000001)) * width)))\n const text = ch.repeat(filled).padEnd(width, '.')\n return paint(text, colorName, color)\n}\n\nfunction stackedTokenBar(\n input: number,\n output: number,\n max: number,\n width: number,\n color: boolean,\n): string {\n const inputWidth = Math.round((input / Math.max(max, 1)) * width)\n const outputWidth = Math.round((output / Math.max(max, 1)) * width)\n const clippedInput = Math.min(width, inputWidth)\n const clippedOutput = Math.min(width - clippedInput, outputWidth)\n const rest = Math.max(0, width - clippedInput - clippedOutput)\n return `${paint('#'.repeat(clippedInput), 'cyan', color)}${paint('+'.repeat(clippedOutput), 'green', color)}${'.'.repeat(rest)}`\n}\n\nfunction sectionTitle(title: string, focused: boolean, color: boolean): string {\n const text = focused ? `[${title}]` : title\n return paint(text, focused ? 'cyan' : 'bold', color)\n}\n\nfunction statusText(status: string, color: boolean): string {\n if (['completed', 'done', 'delivered', 'valid'].includes(status))\n return paint(status.toUpperCase(), 'green', color)\n if (['failed', 'down', 'cancelled', 'invalid', 'error'].includes(status))\n return paint(status.toUpperCase(), 'red', color)\n if (['running', 'spawned', 'settled'].includes(status))\n return paint(status.toUpperCase(), 'yellow', color)\n return paint(status.toUpperCase(), 'white', color)\n}\n\nfunction selectEntity<T extends { readonly id: string }>(\n entities: readonly T[],\n requested: string | undefined,\n): T | undefined {\n return (requested ? entities.find((entity) => entity.id === requested) : undefined) ?? entities[0]\n}\n\nfunction formatClock(value: string): string {\n const parsed = parseTime(value)\n if (parsed === undefined) return '--:--:--'\n return new Date(parsed).toISOString().slice(11, 19)\n}\n\nfunction formatMoney(value: number, known = true): string {\n if (!known) return value === 0 ? 'unknown' : `≥${formatMoney(value)} + unknown`\n if (value === 0) return '$0'\n if (Math.abs(value) < 0.01) return `$${value.toFixed(4)}`\n return `$${value.toFixed(2)}`\n}\n\nfunction formatTokens(value: number, known = true): string {\n if (!known) return value === 0 ? '?' : `≥${formatTokens(value)}?`\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}m`\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}k`\n return `${Math.round(value)}`\n}\n\nfunction formatDuration(ms: number): string {\n if (!Number.isFinite(ms) || ms <= 0) return '0s'\n if (ms < 1000) return `${Math.round(ms)}ms`\n const seconds = ms / 1000\n if (seconds < 60) return `${seconds.toFixed(seconds < 10 ? 1 : 0)}s`\n const minutes = seconds / 60\n if (minutes < 60) return `${minutes.toFixed(minutes < 10 ? 1 : 0)}m`\n return `${(minutes / 60).toFixed(1)}h`\n}\n\nfunction compact(value: string, width: number): string {\n if (width <= 1) return ''\n if (value.length <= width) return value\n return `${value.slice(0, width - 1)}~`\n}\n\nfunction pad(value: string, width: number): string {\n const visible = visibleLength(value)\n if (visible >= width) return fitAnsi(value, width)\n return `${value}${' '.repeat(width - visible)}`\n}\n\nfunction rule(width: number, color: boolean): string {\n return paint('-'.repeat(width), 'dim', color)\n}\n\nfunction paint(\n value: string,\n colorName: keyof typeof colors | undefined,\n enabled: boolean,\n): string {\n if (!enabled || !colorName) return value\n return `${colors[colorName]}${value}${colors.reset}`\n}\n\nfunction visibleLength(value: string): number {\n return stripAnsi(value).length\n}\n\nfunction stripAnsi(value: string): string {\n return value.replace(ansiPattern, '')\n}\n\nfunction fitAnsi(value: string, width: number): string {\n if (visibleLength(value) <= width) return value\n let out = ''\n let visible = 0\n let cursor = 0\n // An escape sequence must be copied whole and counted as zero visible columns; truncating\n // inside one would emit a half-sequence the terminal interprets against the next line.\n for (const match of value.matchAll(ansiPattern)) {\n const text = value.slice(cursor, match.index)\n const remaining = width - 1 - visible\n out += text.slice(0, remaining)\n visible += Math.min(text.length, remaining)\n if (text.length > remaining) break\n out += match[0]\n cursor = match.index + match[0].length\n }\n if (visible < width - 1) out += value.slice(cursor, cursor + width - 1 - visible)\n out += '~'\n if (out.includes('\\x1b[') && !out.endsWith(colors.reset)) out += colors.reset\n return out\n}\n","/**\n * The interactive side of the supervisor-run TUI: a keypress/mouse loop over the frames\n * `./top-frame` renders, plus the operator controls that write back to the run — steer a live\n * worker, cancel one worker, and request cancellation of a whole run.\n *\n * The controls go through the owned run layout: steers via `writeWorkerSteer` (the durable inbox\n * append) and worker cancellation via `cancelWorker` (the acknowledged operation the runtime's\n * turn loop applies). Run-level cancellation targets the ROOT, which has no acknowledged runtime\n * path yet for a non-retained tree — it stays a `cancel.request.json` write inside the run\n * directory for a host process to honor. Nothing here joins a path from the workspace root.\n *\n * Extracted from the `loops` repo (`src/top.ts`). The module-level singletons are the origin's\n * shape and are kept: this drives one terminal, and `runTopApp` is its one entry point.\n *\n * @experimental\n */\n\nimport { randomUUID } from 'node:crypto'\nimport { hostname, userInfo } from 'node:os'\nimport { resolve } from 'node:path'\nimport { emitKeypressEvents } from 'node:readline'\nimport { cancelRun } from '../runtime/supervise/run-cancellation'\nimport { cancelWorker, writeWorkerSteer } from '../runtime/supervise/run-layout'\nimport { type RenderTarget, renderTopFrameWithLayout } from './top-frame'\nimport { loadTopSnapshot, type TopSnapshot } from './top-snapshot'\n\ninterface UiState {\n root: string\n color: boolean\n focus: 'supervisors' | 'workers'\n mode: 'overview' | 'detail' | 'log'\n selectedSupervisorId: string | undefined\n selectedWorkerId: string | undefined\n notice: string | undefined\n steerInput: {\n active: boolean\n value: string\n }\n}\n\n/** @experimental How the app was invoked. Defaults read `process.argv` / `process.cwd()`. */\ninterface TopAppOptions {\n readonly argv?: readonly string[]\n readonly cwd?: string\n}\n\nlet state: UiState = initialState([], process.cwd())\nlet snapshot: TopSnapshot = {\n root: state.root,\n generatedAt: 0,\n supervisors: [],\n completeness: 'complete',\n diagnostics: [],\n discovered: 0,\n loaded: 0,\n}\nlet targets: RenderTarget[] = []\nlet timer: NodeJS.Timeout | undefined\n\n/**\n * Render exactly one frame and return it. This is the non-interactive path — `--once`, a pipe, a\n * test — so it never touches raw mode, the alternate screen, or `process.exit`.\n */\nfunction renderTopOnce(options: TopAppOptions = {}): string {\n const args = [...(options.argv ?? process.argv.slice(2))]\n state = initialState(args, options.cwd ?? process.cwd())\n snapshot = loadTopSnapshot(state.root)\n clampSelection()\n return renderTopFrameWithLayout(snapshot, {\n color: state.color,\n width: process.stdout.columns ?? 128,\n focus: state.focus,\n mode: state.mode,\n ...(state.selectedSupervisorId ? { selectedSupervisorId: state.selectedSupervisorId } : {}),\n ...(state.selectedWorkerId ? { selectedWorkerId: state.selectedWorkerId } : {}),\n steerInput: renderSteerInputState(),\n }).frame\n}\n\n/**\n * Run the TUI. With a TTY on both ends and no `--once` this takes over the terminal until `q`;\n * otherwise it writes a single frame to stdout and returns.\n */\nexport function runTopApp(options: TopAppOptions = {}): void {\n const args = [...(options.argv ?? process.argv.slice(2))]\n if (!process.stdout.isTTY || !process.stdin.isTTY || args.includes('--once')) {\n process.stdout.write(renderTopOnce(options))\n return\n }\n state = initialState(args, options.cwd ?? process.cwd())\n snapshot = loadTopSnapshot(state.root)\n start()\n}\n\nfunction initialState(args: readonly string[], cwd: string): UiState {\n const rootArg = args.find((arg) => !arg.startsWith('-'))\n return {\n root: resolve(rootArg ?? cwd),\n color: Boolean(process.stdout.isTTY) && !args.includes('--no-color'),\n focus: args.includes('--detail') ? 'workers' : 'supervisors',\n mode: args.includes('--log') ? 'log' : args.includes('--detail') ? 'detail' : 'overview',\n selectedSupervisorId: undefined,\n selectedWorkerId: undefined,\n notice: undefined,\n steerInput: { active: false, value: '' },\n }\n}\n\nfunction start(): void {\n process.stdout.write('\\x1b[?1049h\\x1b[?25l\\x1b[?1000h\\x1b[?1006h')\n emitKeypressEvents(process.stdin)\n process.stdin.setRawMode(true)\n process.stdin.resume()\n process.stdin.on('keypress', onKey)\n process.stdin.on('data', onData)\n process.on('SIGINT', stop)\n draw()\n timer = setInterval(draw, 1000)\n}\n\nfunction stop(): void {\n if (timer) clearInterval(timer)\n process.stdin.setRawMode(false)\n process.stdout.write('\\x1b[?1000l\\x1b[?1006l\\x1b[?25h\\x1b[?1049l')\n process.exit(0)\n}\n\nfunction draw(): void {\n snapshot = loadTopSnapshot(state.root)\n clampSelection()\n const rendered = renderTopFrameWithLayout(snapshot, {\n width: process.stdout.columns ?? 128,\n height: process.stdout.rows ?? 42,\n color: state.color,\n focus: state.focus,\n mode: state.mode,\n ...(state.notice ? { notice: state.notice } : {}),\n ...(state.selectedSupervisorId ? { selectedSupervisorId: state.selectedSupervisorId } : {}),\n ...(state.selectedWorkerId ? { selectedWorkerId: state.selectedWorkerId } : {}),\n steerInput: renderSteerInputState(),\n })\n targets = rendered.targets\n process.stdout.write(`\\x1b[2J\\x1b[H${rendered.frame}`)\n}\n\nfunction onKey(str: string, key: { name?: string; ctrl?: boolean }): void {\n state.notice = undefined\n if (key.ctrl && key.name === 'c') stop()\n if (state.steerInput.active) {\n handleSteerInput(str, key)\n draw()\n return\n }\n if (key.name === 'q' || key.name === 'escape') stop()\n if (key.name === 'tab') {\n state.focus = state.focus === 'supervisors' ? 'workers' : 'supervisors'\n } else if (key.name === 'up') {\n moveSelection(-1)\n } else if (key.name === 'down') {\n moveSelection(1)\n } else if (key.name === 'left') {\n moveSupervisor(-1)\n } else if (key.name === 'right') {\n moveSupervisor(1)\n } else if (key.name === 'return') {\n state.mode = 'detail'\n state.focus = 'workers'\n } else if (key.name === 'o') {\n state.mode = 'overview'\n } else if (key.name === 'l') {\n state.mode = 'log'\n } else if (key.name === 's') {\n startSteerInput()\n } else if (key.name === 'c') {\n requestCancel()\n }\n draw()\n}\n\nfunction handleSteerInput(str: string, key: { name?: string; ctrl?: boolean }): void {\n if (key.name === 'escape') {\n state.steerInput = { active: false, value: '' }\n return\n }\n if (key.name === 'return') {\n submitSteerInput()\n return\n }\n if (key.name === 'backspace') {\n state.steerInput.value = state.steerInput.value.slice(0, -1)\n return\n }\n if (key.ctrl && key.name === 'u') {\n state.steerInput.value = ''\n return\n }\n if (\n key.ctrl ||\n key.name === 'tab' ||\n key.name === 'up' ||\n key.name === 'down' ||\n key.name === 'left' ||\n key.name === 'right'\n ) {\n return\n }\n if (!str || str === '\\r' || str === '\\n') return\n if ([...str].every((char) => char >= ' ' && char !== '\\x7f')) state.steerInput.value += str\n}\n\nfunction onData(data: Buffer): void {\n const click = parseMouse(data.toString('utf8'))\n if (!click) return\n const target = targets.find((candidate) => candidate.row === click.row)\n if (!target) return\n state.notice = undefined\n if (target.kind === 'supervisor') {\n state.focus = 'supervisors'\n state.selectedSupervisorId = target.id\n state.selectedWorkerId = undefined\n } else {\n state.focus = 'workers'\n state.mode = 'detail'\n state.selectedSupervisorId = target.supervisorId\n state.selectedWorkerId = target.id\n }\n draw()\n}\n\nfunction startSteerInput(): void {\n state.mode = 'detail'\n state.focus = 'workers'\n if (!selectedSupervisor()) {\n state.notice = 'no supervisor selected'\n return\n }\n if (!selectedWorker()) {\n state.notice = 'no worker selected'\n return\n }\n state.steerInput = { active: true, value: '' }\n}\n\nfunction submitSteerInput(): void {\n const supervisor = selectedSupervisor()\n const worker = selectedWorker()\n const message = state.steerInput.value\n state.steerInput = { active: false, value: '' }\n if (!supervisor) {\n state.notice = 'no supervisor selected'\n return\n }\n if (!worker) {\n state.notice = 'no worker selected'\n return\n }\n try {\n // The exact worker id routes this operation to the one manager that owns the child.\n const written = writeWorkerSteer(state.root, supervisor.id, worker.id, {\n operationId: randomUUID(),\n message,\n source: 'agent-runtime-top',\n })\n state.notice = `steer queued for ${supervisor.id}/${worker.label} (op ${written.request.operationId})`\n } catch (err) {\n state.notice = `steer failed: ${err instanceof Error ? err.message : String(err)}`\n }\n}\n\nfunction parseMouse(raw: string): { col: number; row: number } | undefined {\n // ESC is the literal first byte of an SGR mouse report; matching the control character IS the\n // parse, so the control-character rule does not apply to a terminal escape decoder.\n // biome-ignore lint/suspicious/noControlCharactersInRegex: SGR mouse reports begin with ESC\n const match = /\\x1b\\[<(\\d+);(\\d+);(\\d+)([mM])/.exec(raw)\n if (match?.[4] !== 'M') return undefined\n const col = Number(match[2])\n const row = Number(match[3])\n if (!Number.isFinite(col) || !Number.isFinite(row)) return undefined\n return { col: col - 1, row: row - 1 }\n}\n\nfunction moveSelection(delta: number): void {\n if (state.focus === 'supervisors') {\n moveSupervisor(delta)\n return\n }\n const supervisor = selectedSupervisor()\n if (!supervisor || supervisor.workers.length === 0) return\n const current = Math.max(\n 0,\n supervisor.workers.findIndex((worker) => worker.id === state.selectedWorkerId),\n )\n const next = wrap(current + delta, supervisor.workers.length)\n const worker = supervisor.workers[next]\n if (worker) state.selectedWorkerId = worker.id\n}\n\nfunction moveSupervisor(delta: number): void {\n if (snapshot.supervisors.length === 0) return\n const current = Math.max(\n 0,\n snapshot.supervisors.findIndex((supervisor) => supervisor.id === state.selectedSupervisorId),\n )\n const next = wrap(current + delta, snapshot.supervisors.length)\n const supervisor = snapshot.supervisors[next]\n if (!supervisor) return\n state.selectedSupervisorId = supervisor.id\n state.selectedWorkerId = supervisor.workers[0]?.id\n}\n\nfunction clampSelection(): void {\n if (snapshot.supervisors.length === 0) {\n state.selectedSupervisorId = undefined\n state.selectedWorkerId = undefined\n return\n }\n const supervisor = selectedSupervisor() ?? snapshot.supervisors[0]\n if (!supervisor) return\n state.selectedSupervisorId = supervisor.id\n const worker =\n supervisor.workers.find((candidate) => candidate.id === state.selectedWorkerId) ??\n supervisor.workers[0]\n state.selectedWorkerId = worker?.id\n}\n\nfunction selectedSupervisor(): TopSnapshot['supervisors'][number] | undefined {\n return snapshot.supervisors.find((supervisor) => supervisor.id === state.selectedSupervisorId)\n}\n\nfunction selectedWorker(): TopSnapshot['supervisors'][number]['workers'][number] | undefined {\n const supervisor = selectedSupervisor()\n return supervisor?.workers.find((worker) => worker.id === state.selectedWorkerId)\n}\n\nfunction renderSteerInputState(): { active: boolean; value: string; workerLabel?: string } {\n const worker = selectedWorker()\n return {\n active: state.steerInput.active,\n value: state.steerInput.value,\n ...(worker?.label ? { workerLabel: worker.label } : {}),\n }\n}\n\nfunction requestCancel(): void {\n const supervisor = selectedSupervisor()\n if (!supervisor) {\n state.notice = 'no supervisor selected'\n return\n }\n if (supervisor.status !== 'running') {\n state.notice = `${supervisor.id} is ${supervisor.status}; no cancel request written`\n return\n }\n // Worker focus cancels ONE worker through the acknowledged runtime path: the request lands in\n // the run layout's cancellation inbox, the run's own turn loop applies the abort to exactly\n // that worker's subtree, and the acknowledgement records what it proved.\n const worker = state.focus === 'workers' ? selectedWorker() : undefined\n if (worker) {\n if (worker.status !== 'running') {\n state.notice = `${worker.label} is ${worker.status}; nothing to cancel`\n return\n }\n // The request names the exact node id, so it routes to the manager that owns the worker at\n // ANY depth — the owning manager's turn loop applies the abort to exactly that subtree.\n try {\n const record = cancelWorker(supervisor.stateDir, worker.id, randomUUID(), {\n reason: 'operator requested cancel from TUI',\n source: 'agent-runtime-top',\n })\n state.notice =\n record.effect === 'unknown'\n ? `cancel queued for ${supervisor.id}/${worker.label} (op ${record.operationId}); awaiting runtime acknowledgement`\n : `cancel ${record.effect} for ${supervisor.id}/${worker.label} (op ${record.operationId})`\n } catch (err) {\n state.notice = `cancel request failed: ${err instanceof Error ? err.message : String(err)}`\n }\n return\n }\n // Supervisor focus cancels the WHOLE run through the same acknowledged contract: the request\n // lands in the run layout, the run's root manager aborts the whole tree through the one cascade\n // controller it already has, and `supervise()` records the terminal effect.\n try {\n const record = cancelRun(supervisor.stateDir, randomUUID(), {\n reason: 'operator requested cancel from TUI',\n source: 'agent-runtime-top',\n operator: `${userInfo().username}@${hostname()}`,\n })\n state.notice =\n record.effect === 'unknown'\n ? `run cancel queued for ${supervisor.id} (op ${record.operationId}); awaiting runtime acknowledgement`\n : `run cancel ${record.effect} for ${supervisor.id} (op ${record.operationId})`\n } catch (err) {\n state.notice = `cancel request failed: ${err instanceof Error ? err.message : String(err)}`\n }\n}\n\nfunction wrap(value: number, size: number): number {\n return ((value % size) + size) % size\n}\n","#!/usr/bin/env node\n\n/**\n * `agent-runtime-top` — watch the supervisor runs of one workspace.\n *\n * agent-runtime-top [root] [--once] [--no-color] [--detail] [--log]\n *\n * `root` is the workspace whose `.agent/supervisor/` runs are shown; it defaults to the current\n * directory. With a TTY on both ends the view refreshes every second and takes the keys it prints\n * in its header; otherwise (a pipe, `--once`) it writes one frame and exits.\n *\n * @experimental\n */\n\nimport { runTopApp } from './top-app'\nimport { runTopWeb } from './top-web'\n\nif (process.argv.includes('--web')) await runTopWeb(process.argv.slice(2))\nelse runTopApp()\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Hr as provisionSupervisor, L as Spend, M as Budget, Wu as PursuitProjection } from "../types-C2fJMeEi.js";
1
+ import { Hr as provisionSupervisor, L as Spend, M as Budget, Wu as PursuitProjection } from "../types-BDmLQLNj.js";
2
2
  interface TopSnapshot {
3
3
  readonly root: string;
4
4
  readonly generatedAt: number;
package/dist/tui/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { t as provisionSupervisor } from "../provision-supervisor-Bvqnu3xm.js";
2
- import { i as loadTopSnapshot, n as serveTopWeb } from "../top-web-CWcNwaRb.js";
1
+ import { t as provisionSupervisor } from "../provision-supervisor-Cmej51pt.js";
2
+ import { i as loadTopSnapshot, n as serveTopWeb } from "../top-web-Bjb_UlNI.js";
3
3
  export { loadTopSnapshot, provisionSupervisor, serveTopWeb };
@@ -8818,7 +8818,7 @@ type RootStreamRecord = {
8818
8818
  * died mid-turn — gets on its failure record, and it equals what `close()` returned for a run
8819
8819
  * that did.
8820
8820
  */
8821
- declare function readRootStreamReceipt(runDir: string): Promise<RootStreamReceipt | undefined>;
8821
+ declare function readRootStreamReceipt(runDir: string, file?: string): Promise<RootStreamReceipt | undefined>;
8822
8822
  /** Every committed line of the root stream, in order, or `undefined` when there is no file. A
8823
8823
  * torn final line from a process that died mid-write is not a record and is left out. */
8824
8824
  declare function readRootStream(runDir: string): Promise<RootStreamRecord[] | undefined>;
@@ -14849,8 +14849,9 @@ interface SupervisorOpts {
14849
14849
  readonly backend: string;
14850
14850
  readonly reason: 'no-env-channel' | 'no-worker-process' | 'caller-omitted';
14851
14851
  };
14852
- /** Durable supervisor-run directory that receives exact worker interactive bindings.
14853
- * `supervise({ runDir })` wires this automatically. Direct kernel callers omit it. */
14852
+ /** Durable supervisor-run directory that receives exact worker interactive bindings and each
14853
+ * worker's redacted progress stream (`streams/<node>.jsonl`, the `root-stream.jsonl` record
14854
+ * shape). `supervise({ runDir })` wires this automatically. Direct kernel callers omit it. */
14854
14855
  readonly interactiveBindingDir?: string;
14855
14856
  }
14856
14857
  /** Live root handle — a chat/pi-viz client uses it to inspect and control one root run. */
@@ -19638,4 +19639,4 @@ interface KnowledgeReadinessDecision {
19638
19639
  nonBlockingGapIds: string[];
19639
19640
  }
19640
19641
  export { NoWinnerError as $, NativeContextContinuationInput as $S, WaterfallCollector as $_, filterAuthoredAsserts as $a, NodeExecutionIdentity as $b, defaultAnalystInstruction as $c, SeatSelectionInput as $d, SupervisorProfile as $f, verdictFromJudgeScore as $g, DelegationRunContext as $h, SpawnJournal as $i, LeaderboardFlagSpec as $l, BridgeHarnessStore as $m, validateStoredGraph as $n, profileChatClient as $o, SpawnResourceBytes as $p, InteractiveWorkerOptions as $r, inlineSandboxClient as $s, createVerifierEnvironment as $t, observerRecordDigest as $u, QuestionEscalationRecord as $v, resolveHarnessTranscriptCapture as $x, AnalystKind as $y, TraceRootArtifact as A, LoopTeardownFailedPayload as AS, GroupOf as A_, ProfileRichnessThresholds as Aa, InMemorySpawnJournal as Ab, AuthoredStrategy as Ac, RUN_FORK_CORRELATION_KEYS as Ad, ReservationStage as Af, ResearchOutput as Ag, FeedbackStore as Ah, lookupGraph as Ai, Widen as Al, InboxMessage as Am, settledWorkerOut as An, openSandboxRun as Ao, serveCoordinationMcp as Ap, RemoteSupervisorCancelResult as Ar, createMcpEnvironment as As, AgentEnvironmentStatus as At, SuperviseGraphPursuitOptions as Au, WorktreeProfileMaterializationReceipt as Av, readWorkerProgress as Ax, PeerMailbox as Ay, Handle as B, SelectionReceipt as BS, pairwiseSignificance as B_, CheckSource as Ba, ValidationError as Bb, sampleThenRefine as Bc, createWorkerSlots as Bd, CoordinationVerbs as Bf, DelegationPersistenceError as Bg, FleetHandle as Bh, RollingDispatchOptions as Bi, PersonaContext as Bl, ROUTER_CLIENT_HEADER as Bm, WorkspaceRun as Bn, PrivateCasNamespaceObject as Bo, ContinuationPanel as Bp, ProvisionedSupervisor as Br, runBenchmark as Bs, CreateAgentEnvironmentInput$1 as Bt, PursuitNodePlatform as Bu, DecideGate as Bv, HarnessTranscriptEvidence as Bx, McpToolDescriptor as By, RuntimeFailureCause as C, StartRetainedRunOptions as CC, LoopIterationStartedPayload as CS, CodeModeToolContext as C_, ChatTransportTool as Ca, SpawnForestNode as Cb, SurfaceScore as Cc, dumbContinuationFailPrompt as Cd, BudgetPoolRestore as Cf, UiAuditorDelegationOutput as Cg, ToolLoopCallContext as Ch, graphCorpusSummary as Ci, ScopeWidenGate as Cl, SandboxSteeringOptions as Cm, readWorkerInteractiveBinding as Cn, Deliverable as Co, bestDelivered as Cp, readWorkerSteerRequests as Cr, assertTraceDerivedFindings as Cs, SuperviseProfileEntry as Ct, PursuitVersionChain as Cu, createRuntimeEventCollector as Cv, ActivityNote as Cx, PeerMailEnvelope as Cy, RetainedPendingCause as D, LoopResult as DS, createCodeModeTools as D_, createChatSessionStore as Da, replaySpawnTree as Db, runAgentic as Dc, naiveContinuationPrompt as Dd, ReservationHolder as Df, UiLens as Dg, ToolLoopMessageRecord as Dh, graphRunsFor as Di, TrajectoryReportOptions as Dl, AuthorityInboxMessage as Dm, WorkerEvidenceInput as Dn, SandboxRun as Do, CoordinationPublicAddress as Dp, workerInboxFileFromEventDir as Dr, observationFromRegistry as Ds, AgentEnvironmentEvent$1 as Dt, VersionJudge as Du, WorktreeCheckRunner as Dv, TeamProgress as Dx, PeerMailReadout as Dy, EvidencePendingEvent as E, LoopPlanPayload as ES, RunCodeModeOptions as E_, chatWorkerSeam as Ea, FileResultBlobStore as Eb, refine as Ec, kernelPromptRegistry as Ed, ReservationFloor as Ef, UiFindingSeverity as Eg, ToolLoopCompactionOptions as Eh, graphRegistry as Ei, TrajectoryReport as El, createSteerableSandboxSession as Em, VERIFY_TAIL_CHARS as En, OpenSandboxRunPromptOptions as Eo, CoordinationMcpHandle as Ep, supervisorRunsRoot as Er, registryScopeAnalyst as Es, AgentEnvironmentCapabilities$1 as Et, SettledPursuitVersion as Eu, InPlaceHarnessResult as Ev, ScopeProgressInput as Ex, PeerMailOutcome as Ey, ResourceLimit as F, MountManifestEntry as FS, PairwiseOptions as F_, supervisorInstructions as Fa, AgentEvalErrorCode as Fb, StrategyResult as Fc, AuthorizedSpawn as Fd, readRootStream as Ff, TraceContext as Fg, DetachedSessionDelegateOptions as Fh, taskShapeDigest as Fi, DefinePersona as Fl, SharedBoxPlacement as Fm, withUntrackedArtifacts as Fn, acquireSandbox as Fo, FileCoordinationLog as Fp, RemoteWorkerEvents as Fr, BenchmarkReport as Fs, AgentSessionStatus$1 as Ft, supervisePursuit as Fu, LeadMessage as Fv, RetainedInteractiveRunHandle as Fx, peerMailTools as Fy, Settled as G, RuntimeRunHandle as GS, AnytimeReport as G_, StructuralRolloutPolicy as Ga, SpawnModelSubstitution as Gb, HarvestFailure as Gc, isPreSpawnExecutorFailure as Gd, ResolveSupervisorTools as Gf, CoderTask as Gg, DetachedTurn as Gh, DesignerToolsEnv as Gi, ShapeContext as Gl, createAgentEnvironmentProviderRegistry as Gm, TrajectoryAnalysis as Gn, startRetainedRunInEnvironment as Go, PanelFinding as Gp, bestProfileFor as Gr, SuperviseOptionsForDispatch as Gs, PlacementInfo as Gt, PursuitRunProjection as Gu, RouteGate as Gv, captureHarnessTranscript as Gx, EventBus as Gy, NodeSnapshot as H, Validator as HS, renderLeaderboardMarkdown as H_, RepairStop as Ha, ExecutorContext as Hb, strategyAuthorSystemPrompt as Hc, WorkerSpawnRetryAttempt as Hd, DriveHarnessOwnerContext as Hf, FileDelegationStore as Hg, SiblingSandboxExecutorOptions as Hh, queueOf as Hi, RunPersonified as Hl, sharedWorkerClientName as Hm, jjWorkspace as Hn, reconnectRetainedRun as Ho, ContinuationPanelResult as Hp, provisionSupervisor as Hr, LoopDispatchOptions as Hs, ExecRequest as Ht, PursuitNodeTiming as Hu, GateRequest as Hv, HarnessTranscriptUnavailable as Hx, BusEvent as Hy, ResourceSpend as I, MountRecorder as IS, PairwiseVerdict as I_, CheckExecChannel as Ia, BackendTransportError as Ib, adaptiveRefine as Ic, AuthorizedSpawnContext as Id, readRootStreamReceipt as If, createPropagatingTraceEmitter as Ig, DetachedWinnerSelection as Ih, GraphTriggerBinding as Ii, DefinePersonaInput as Il, SharedBoxPlacementOptions as Im, GitWorkspaceOptions as In, S3PrivateCasStore as Io, PriorCoordination as Ip, connectRemoteSupervisor as Ir, BenchmarkStrategySummary as Is, AgentTurnResult$2 as It, RunReopen as Iu, ManagerReentryState as Iv, RetainedInteractiveStartMaterial as Ix, peerMailVerbNames as Iy, SpawnRejection as J, RuntimeRunRow as JS, anytimeReport as J_, canDisplace as Ja, ExecutorExecutionBinding as Jb, Observation as Jc, withWorkerSpawnRetry as Jd, SupervisorNodeContext as Jf, CompletionCheckContext as Jg, DelegationArgs as Jh, DelegateOptions as Ji, providerAsSandboxClient as Jl, ProviderLeafOut as Jm, parseWorkerToolTraceArtifact as Jn, reconnectRetainedInteractiveRun as Jo, DriverContractState as Jp, profileRegistry as Jr, superviseDispatch as Js, SandboxInstance$1 as Jt, projectPursuit as Ju, ChildQuestionInbox as Jv, HarnessTranscriptMetadata as Jx, WatchTraceOptions as Jy, SpawnOpts as K, RuntimeRunOptions as KS, AnytimeStrategySummary as K_, StructuralRolloutResult as Ka, AgentExecutionRef as Kb, HarvestReport as Kc, resolveWorkerSpawnRetry as Kd, SupervisorAgentDeps as Kf, CheckUnavailableError as Kg, RunDetachedTurnOptions as Kh, GraphDesignerExtraTools as Ki, ShapeRegistry as Kl, resolveAgentEnvironmentProvider as Km, analyzeTrace as Kn, ClaimRetainedInteractiveControlOptions as Ko, VerdictSummary as Kp, loadProfile as Kr, loopCampaignDispatch as Ks, ResourceRequest as Kt, PursuitRunTotals as Ku, RouteMatch as Kv, harnessTranscriptArtifact as Kx, PublishOptions as Ky, Spend as L, OutputAdapter as LS, ProfileKeyOf as L_, CheckOutcome as La, ConfigError as Lb, assertStrategyContract as Lc, SuperviseOptions as Ld, supervisorAgent as Lf, readTraceContextFromEnv as Lg, UiAuditorDelegate as Lh, DispatchReport as Li, LoopShape as Ll, SharedBoxStats as Lm, Shell as Ln, S3PrivateCasStoreOptions as Lo, CheckRead as Lp, connectRemoteSupervisorControl as Lr, BenchmarkTaskRow as Ls, AnalystFinding$1 as Lt, PursuitObserverDelivery as Lu, ManagerWake as Lv, StartRetainedInteractiveRunOptions as Lx, JsonRpcMessage as Ly, Budget as M, LoopTraceEmitter as MS, Leaderboard as M_, assessAuthoredProfile as Ma, Redactor as Mb, Strategy as Mc, superviseFleetCapabilities as Md, ReserveOptions as Mf, ResearchTask as Mg, CoderReview as Mh, recordGraphRun as Mi, WidenLineage as Ml, DEFAULT_SHARED_BOX_RESOURCES as Mm, CopyOptions as Mn, SandboxLineageHandle as Mo, CoordinationRejectReason as Mp, RemoteSupervisorReader as Mr, BenchmarkCell as Ms, AgentProfile$2 as Mt, SupervisePursuitOptions as Mu, AwaitWakeInput as Mv, RecoverRetainedInteractiveRunOptions as Mx, claimsAuthority as My, BudgetOverspend as N, LoopTraceEvent as NS, LeaderboardOptions as N_, defaultProfileRichnessThresholds as Na, defaultRedactor as Nb, StrategyArtifacts as Nc, superviseWithTestBrain as Nd, createBudgetPool as Nf, ResearcherProfileOptions as Ng, CoderReviewer as Nh, recordStoredGraphRun as Ni, WidenSpec as Nl, DEFAULT_SHARED_BOX_WORKERS as Nm, UntrackedCopyStats as Nn, createSandboxLineage as No, CoordinationDeliveryEvidence as Np, RemoteSupervisorSteerResult as Nr, BenchmarkConfig as Ns, AgentSession as Nt, SupervisedPursuitResult as Nu, CoordinationEvent as Nv, RetainedInteractiveAdmissionHook as Nx, createPeerMailbox as Ny, TRACE_ROOT_SCHEMA as O, LoopSandboxPlacement as OS, runCodeMode as O_, AuthoredProfile as Oa, FileSpawnJournal as Ob, sample as Oc, promptHandle as Od, ReservationRejection as Of, KnowledgeItem as Og, ToolLoopToolCall as Oh, listGraphRuns as Oi, Verify as Ol, Inbox as Om, closingWorkerNote as On, SandboxRunAbortError as Oo, CoordinationReadAccess as Op, writeWorkerSteer as Or, McpEndpoint as Os, AgentEnvironmentProvider$1 as Ot, VersionVerdict as Ou, WorktreeCommandResult as Ov, WorkerProgress as Ox, PeerMailRefusal as Oy, BudgetViolation as P, LoopWinner as PS, LeaderboardRow as P_, profileRichnessFinding as Pa, AgentEvalError$1 as Pb, StrategyCtx as Pc, workerFromBackend as Pd, RootStreamRecord as Pf, researcherProfile as Pg, DelegateRunCtx as Ph, storedGraphDigests as Pi, WinnerStrategy as Pl, SharedBoxCloseReceipt as Pm, copyUntrackedIntoClone as Pn, AcquireOptions as Po, CoordinationLog as Pp, RemoteSupervisorTree as Pr, BenchmarkLift as Ps, AgentSessionRef as Pt, superviseGraphPursuit as Pu, EventAcknowledgement as Pv, RetainedInteractiveEnvironmentInput as Px, isPeerMailEnvelope as Py, FleetYield as Q, NativeContextContinuationHandle as QS, renderAnytimeTable as Q_, defaultStructuralRolloutPolicy as Qa, MaterializedModelIdentity as Qb, ObserveOptions as Qc, SeatSelection as Qd, ManagerWakePolicy as Qf, mapExecutorResult as Qg, DelegationResumeTick as Qh, SpawnEvent as Qi, LeaderboardBenchmarkAdapter as Ql, ProviderPlacement as Qm, ValidateStoredGraphOptions as Qn, resolveSandboxClient as Qo, ResolvedSpawnResourcePath as Qp, InteractiveWorkerKeyInput as Qr, defaultSelectWinner as Qs, VerifierEnvironmentOptions as Qt, ObserverRecordKind as Qu, QuestionEscalationOutcome as Qv, RetainedHarnessTranscriptDescriptor as Qx, AnalystFindingEvent as Qy, SpendChannel as R, RunProvenance as RS, ScoreOf as R_, CheckRunContext as Ra, JudgeError as Rb, authorStrategy as Rc, SuperviseTestOptions as Rd, supervisorAgentWithTestBrain as Rf, DelegationTraceSpan as Rg, detachedSessionDelegate as Rh, DispatchStopReason as Ri, Outcome as Rl, SharedWorkerIdentity as Rm, Workspace as Rn, createS3PrivateCasStore as Ro, ContinuationAppend as Rp, ProvisionSupervisorConnection as Rr, Environment as Rs, CheckpointRef as Rt, PursuitCostProvenance as Ru, ToolOutcomeEvent as Rv, HarnessTranscriptArtifact as Rx, JsonRpcResponse as Ry, RuntimeStreamEvent as S, StartRetainedRunInEnvironmentOptions as SC, LoopIterationEndedPayload as SS, CodeModeTool as S_, ChatTransportExecutorOptions as Sa, SpawnForestMissingTree as Sb, StrategyShotResult as Sc, delegatesWorkerBriefPrompt as Sd, BudgetPool as Sf, UiAuditLensFilter as Sg, ToolSpec as Sh, digestOfGraph as Si, ScopeAnalyzeInput as Sl, DEFAULT_SANDBOX_STEERING_MAX_TURNS as Sm, attachWorker as Sn, strategyTournament as So, SupervisorFinalizer as Sp, readWorkerSteerAcknowledgement as Sr, RegistryAnalyzeProjection as Ss, SpawnRefusalCause as St, NextPursuitVersionInput as Su, SanitizedKnowledgeRequirement as Sv, ActivityLog as Sx, PEER_MAIL_WIRE_KEY as Sy, RuntimeFailureOwner as T, LoopPlanDescription as TS, CodeModeToolset as T_, chatTransportExecutor as Ta, loadSpawnForest as Tb, depthStrategy as Tc, formatPromptHandle as Td, LeakedReservation as Tf, UiFindingScreenshot as Tg, ToolLoopCompaction as Th, graphFromStored as Ti, TrajectoryNode as Tl, SteerableSandboxSession as Tm, NOTE_MAX_CHARS as Tn, OpenSandboxRunOptions as To, CoordinationControlAccess as Tp, supervisorRunDir as Tr, createScopeAnalyst as Ts, AgentEnvironment$1 as Tt, PursuitVersions as Tu, sanitizeKnowledgeReadinessReport as Tv, ExecutorProgress as Tx, PeerMailLimits as Ty, NodeStatus as U, RuntimeRunCompleteInput as US, renderLeaderboardSvg as U_, StructuralRolloutConfig as Ua, ExecutorFactory as Ub, HarvestCorpusOptions as Uc, WorkerSpawnRetryHooks as Ud, ObserveSupervisorNodeEvent as Uf, FileDelegationStoreOptions as Ug, createFleetWorkspaceExecutor as Uh, rollingDispatch as Ui, RunPersonifiedOptions as Ul, AgentEnvironmentProviderRef as Um, localShell as Un, recoverRetainedRun as Uo, ContinuationPolicy as Up, ProfileRegistryDir as Ur, LoopOptionsForDispatch as Us, ExecResult as Ut, PursuitNodeUsage as Uu, JsonScalar as Uv, HarnessTranscriptUnavailableReason as Ux, BusRecord as Uy, NodeId as V, ValidationCtx as VS, renderLeaderboardHtml as V_, CheckSourceCtx as Va, AgentSpec as Vb, strategyAuthorContract as Vc, ResolvedWorkerSpawnRetry as Vd, DriveHarness as Vf, DelegationStore as Vg, FleetWorkspaceExecutorOptions as Vh, freeSlots as Vi, PersonaExecutors as Vl, sharedBoxRefusal as Vm, gitWorkspace as Vn, PrivateCasNamespaceRetirement as Vo, ContinuationPanelInput as Vp, SupervisorCleanupReceipt as Vr, LoopCampaignDispatchOptions as Vs, CreateSandboxOptions$1 as Vt, PursuitNodeProjection as Vu, GateDecision as Vv, HarnessTranscriptFile as Vx, McpTransport as Vy, RetainedExecutionState as W, RuntimeRunCost as WS, renderPairwiseMarkdown as W_, StructuralRolloutMessage as Wa, ExecutorRegistry as Wb, HarvestError as Wc, WorkerSpawnRetryPolicy as Wd, ResolveDriveHarness as Wf, CoderOutput as Wg, createSiblingSandboxExecutor as Wh, DesignerRunGraphEnv as Wi, ShapeBudget as Wl, AgentEnvironmentProviderRegistry as Wm, runInWorkspace as Wn, startRetainedRun as Wo, ContinuationProfile as Wp, ProfileRunRecord as Wr, SuperviseDispatchOptions as Ws, ForkRequest as Wt, PursuitProjection as Wu, RouteFlow as Wv, ReadableEnvironment as Wx, BusStats as Wy, SubtreeSummary as X, startRuntimeRun as XS, bestSoFar as X_, composeCheckSources as Xa, ExecutorNodeContext as Xb, ObservationError as Xc, SuperviseRegistryTable as Xd, SupervisorToolDescriptor as Xf, ExecutorResultMapping as Xg, DelegationResumeContext as Xh, delegate as Xi, LeaderboardBenchScore as Xl, providerAsExecutor as Xm, createSupervisor as Xn, startRetainedInteractiveRun as Xo, DriverRetryPolicy as Xp, recordProfileRun as Xr, TERMINAL_DECISIONS as Xs, computeFindingId$1 as Xt, ObserverJournal as Xu, Question as Xv, HarnessTranscriptReadOptions as Xx, watchTrace as Xy, SubtreeResult as Y, RuntimeRunStatus as YS, areaUnderCurve as Y_, compareCheckOutcomes as Ya, ExecutorMaterialization as Yb, ObservationAnalysis as Yc, SuperviseRegistry as Yd, SupervisorNodeContextSeed as Yf, DeliverableSpec as Yg, DelegationRecord as Yh, defaultDelegateBudget as Yi, DefinedLeaderboard as Yl, ProviderPromptOptions as Ym, DEFAULT_MAX_DEPTH as Yn, recoverRetainedInteractiveRun as Yo, DriverReentry as Yp, profileRunsForName as Yr, LocalSandboxClientOptions as Ys, WorkspaceRequest as Yt, FileObserverJournal as Yu, EscalateQuestion as Yv, HarnessTranscriptReadLimits as Yx, defaultToolDetectors as Yy, TreeView as Z, NativeContextContinuationExecution as ZS, plateauLength as Z_, defaultExtractCandidate as Za, MaterializedExecutionIdentity as Zb, ObserveInput as Zc, SeatSegment as Zd, SupervisorToolInvocationContext as Zf, gateOnDeliverable as Zg, DelegationResumeDriver as Zh, ResultBlobStore as Zi, LeaderboardBenchTask as Zl, UnavailablePausePolicy as Zm, createRootHandle as Zn, ResolveSandboxClientOptions as Zo, ResolveSpawnResourcePathsResult as Zp, InteractiveWorkerEnvironment as Zr, TerminalDecision as Zs, makeFinding$1 as Zt, ObserverRecord as Zu, QuestionDecision as Zv, RetainedHarnessTranscriptCapture as Zx, AnalystAssignmentRecord as Zy, RunAgentTaskOptions as _, RetainedRunIntentAdmission as _C, ExecCtx as _S, harnessUsageIsEmpty as __, WorkerEventCursor as _a, SqlAdapter as _b, AgenticTool as _c, PromptHandle as _d, ParkedRun as _f, DelegationStatus as _g, extractLlmCallEvent as _h, GraphRunQuery as _i, PanelSpec as _l, CliWorktreeSeam as _m, WorktreePatchArtifact as _n, StrategyEvolutionConfig as _o, UNPROVEN_CONTINUITY as _p, WorkerSteerRequest as _r, pipeline as _s, PeerAuditAccess as _t, IsolatedCheckOptions as _u, RuntimeStreamEventCollector as _v, WorkerTraceUnavailableReason as _x, MapOnSettleRoute as _y, AgentKnowledgeProvider as a, RetainedInteractiveEnvironmentAdmission as aC, ProviderWorkspaceCaptureReceipt as aS, deterministicCompletion as a_, RootSegmentEntry as aa, AuthoredAnalystLimits as ab, LocalMcpMaterialization as ac, GraphNode as ad, RunContext as af, DelegateCodeConfig as ag, mcpSecretEnvMetadataKey as ah, ObservedSessionFacts as ai, CorpusFilter as al, McpServerOptions as am, SurfaceReader as an, structuralRollout as ao, StopRule as ap, SearchSpec as ar, createPrivateCasArtifactPort as as, DriverAttemptRecord as at, defineLeaderboard as au, SandboxEvidenceContext as av, ExecutorAccounting as ax, QuestionUrgency as ay, RuntimeSession as b, RetainedRunStartMaterial as bC, LoopEndedPayload as bS, decodeHarnessUsage as b_, ChatCompletionsTransport as ba, SpawnForestEvent as bb, RunAgenticOptions as bc, analyzesFindingsReportPrompt as bd, RunParkingRecord as bf, FeedbackRefersTo as bg, RouterTransportConfig as bh, StoredGraph as bi, RenderCorpusToInstructionsOptions as bl, RouterToolsSeam as bm, WorkerInteractiveBinding as bn, TournamentRow as bo, FinalizeContext as bp, legacySupervisorRunDir as br, widen as bs, SpawnPreflightContext as bt, JudgedPursuitVersion as bu, RuntimeTelemetryOptions as bv, TraceSource as bx, AUTHORITY_MARKERS as by, AgentTaskContext as c, RetainedRunAdmission as cC, ProviderWorkspaceRetentionContext as cS, CodexForkBoundary as c_, Supervisor as ca, LocalHarnessResult as cb, McpSpawnFault as cc, RunGraphOptions as cd, createInMemoryRunContext as cf, DelegateUiAuditArgs as cg, secretEnvOfMcpServer as ch, graphRouteWhenSchema as ci, EqualKOnCostOptions as cl, DelegateHandlerOptions as cm, fsSurfaceReader as cn, AgentTurnInput$1 as co, noProgressFor as cp, assertSearchSpec as cr, definePersona as cs, DriverFailureClass as ct, DeclaredCheckStateCapture as cu, OtelAttribute as cv, ExecutorResult as cx, AuthorizedDownMessage as cy, AgentTaskStatus as d, RetainedRunCancellation as dC, ExecutorToolCall as dS, CodexRolloutStoreReader as d_, ReenteredWorkers as da, LOCAL_HARNESSES as db, connectStdioMcp as dc, runGraph as dd, SupervisorSpanOptions as df, DelegationError as dg, SandboxToolPartState as dh, LoadGraphFileOptions as di, FanoutSynthesis as dl, createExecutorRegistry as dm, analystsFromRegistry as dn, StreamAgentTurnOptions as do, RunCancellation as dp, searchSpecDigest as dr, InMemoryCorpus as ds, CoordinationStats as dt, declaredCheckDeliverable as du, OtelExporter as dv, HeldForContinuation as dx, DownMessageAuthorizationInput as dy, ReconnectRetainedRunOptions as eC, retainHarnessTranscript as eS, CompletionAnalyst as e_, TraceRootReceipt as ea, AnalystLensOutput as eb, InProcessOnPrompt as ec, AgentGraph as ed, SeatStage as ef, DelegationTaskQueue as eg, BridgeModelCredential as eh, InteractiveWorkerResult as ei, observe as el, SpawnResourceRead as em, BoxSurfaceReaderOptions as en, modelAuthoredChecks as eo, AllWorkersStalledOptions as ep, FencedSqlRunContext as er, profileOptimizerModelCall as es, ProviderModelAttemptEvidence as et, LeaderboardIterationInfo as eu, WaterfallReport as ev, ProfileMaterializationReceipt as ex, QuestionEscalationTarget as ey, BackendErrorDetail as f, RetainedRunDispatchedAdmission as fC, TokenUsageProvenance as fS, CodexRolloutStoreRef as f_, ResumedKeyState as fa, LocalHarness as fb, materializeLocalMcp as fc, runGraphWithTestBrain as fd, SupervisorSpanOutcome as ff, DelegationFeedbackSnapshot as fg, createSandboxToolPartState as fh, LoadedGraphFile as fi, FanoutWinnerSelector as fl, ExecutorConfig as fm, failuresAnalyst as fn, collectAgentTurn as fo, cancelRun as fp, settledToIteration as fr, renderCorpusToInstructions as fs, CoordinationTools as ft, declaredCheckDigest as fu, OtelSpan as fv, HeldRelease as fx, DownMessageDeliveryAttempt as fy, OpenAIChatToolChoice as g, RetainedRunHandle as gC, Driver as gS, createCodexRolloutStoreReader as g_, WidenGate as ga, openSqlRunStore as gb, AgenticTask as gc, GraphRouteError as gd, DeadlineCheckIn as gf, DelegationResultPayload as gg, SandboxUsageLedger as gh, GraphRegistryDir as gi, PanelJudge as gl, CliWorktreeBridgeSeam as gm, WorktreeCliExecutorOptions as gn, EvolutionStrategy as go, ReentryTaskInput as gp, WorkerSteerAcknowledgement as gr, panel as gs, MakeWorkerAgent as gt, IsolatedCheckBoxEvidence as gu, RuntimeEventCollector as gv, WorkerTraceEvidence as gx, MapItemFailurePolicy as gy, OpenAIChatTool as h, RetainedRunEventOptions as hC, DefaultVerdict$2 as hS, addHarnessUsage as h_, UnconfirmedTeardown as ha, SqlRunOwnershipError as hb, AgenticSurface as hc, defaultEdgeTraversalCap as hd, WorkerTraceResolver as hf, DelegationProgress as hg, SandboxServedBackend as hh, GraphCorpusSummary as hi, Panel as hl, CliSeam as hm, worktreeFanout as hn, EvolutionReport as ho, ReentryContinuity as hp, WorkerCancellation as hr, loopUntil as hs, GraphSubtasks as ht, IsolatedCheckBox as hu, loopEventToOtelSpan as hv, WorkerInteractiveUnavailableReason as hx, WorkerResumeContext as hy, AgentExecutionBackend as i, RetainedInteractiveAdmission as iC, ProviderWorkspaceCaptureProvenance as iS, completionAuthorizes as i_, RootSegment as ia, AuthoredAnalystDefinition as ib, HttpMcpServerSpec as ic, GraphEdgeCapError as id, InMemoryRunContextOptions as if, DelegateCodeArgs as ig, envKeyProvider as ih, GraphSessionObservationOptions as ii, Corpus as il, McpServer as im, SurfaceReadOutcome as in, selectBestIndex as io, StopDecision as ip, SEARCH_SPEC_CORRELATION_KEY as ir, PrivateCasOptions as is, SupervisedResult as it, LeaderboardSpec as iu, runAgentRounds as iv, Executor as ix, QuestionRecord as iy, TraceSummary as j, LoopTokenUsage as jS, Interval as j_, asAuthoredProfile as ja, contentAddress as jb, ShotSpec as jc, supervise as jd, ReservationTicket as jf, ResearchSource as jg, CoderDelegate as jh, pickBestGraph as ji, WidenDecision as jl, PeerInboxMessage as jm, spendFromUsageEvents as jn, SandboxLineage as jo, CoordinationHttpAudit as jp, RemoteSupervisorControl as jr, sanitizeMcpToolSchema as js, AgentEnvironmentSummary as jt, SupervisePursuitError as ju, GitRunner as jv, ReconnectRetainedInteractiveRunOptions as jx, PeerMailboxOptions as jy, TRACE_SUMMARY_SCHEMA as k, LoopStartedPayload as kS, AxisScoresOf as k_, ProfileRichness as ka, InMemoryResultBlobStore as kb, AuthorStrategyOptions as kc, PursuitFork as kd, ReservationShortfall as kf, KnowledgeUpdate as kg, FeedbackEvent as kh, loadGraph as ki, VerifySpec as kl, InboxLease as km, composeWorkerEvidence as kn, TurnResult as ko, CoordinationTransportOptions as kp, RemoteSupervisorAgent as kr, McpEnvironmentOptions as ks, AgentEnvironmentQuery as kt, assertPursuitVersions as ku, WorktreeHarnessResult as kv, createActivityLog as kx, PeerMailSendInput as ky, AgentTaskRunResult as l, RetainedRunAdmissionHook as lC, ProviderWorkspaceRetentionPort as lS, CodexRolloutIdentity as l_, SupervisorOpts as la, RunLocalHarnessOptions as lb, StdioMcpConnection as lc, RunGraphTestOptions as ld, withRunContext as lf, DelegateUiAuditConfig as lg, SandboxLeafOut as lh, GraphFileResolutionError as li, EqualKVerdict as ll, DelegateResult as lm, harvestSurfaceDiffs as ln, AgentTurnUsage as lo, plateau as lp, compileSearchSpec as lr, runPersonified as ls, DriverRepromptRefusal as lt, assertDeclaredCheck as lu, OtelExportConfig as lv, ExecutorTeardownWarning as lx, ContinuationInstruction as ly, OpenAIChatResponseFormat as m, RetainedRunEnvironmentAdmission as mC, AgentRunSpec as mS, CodexStoreDelta as m_, Scope as ma, CodexExecutionPolicy as mb, AgenticRunResult as mc, GraphFromStoredOptions as md, createSupervisorSpanRecorder as mf, DelegationHistoryEntry as mg, mapSandboxToolEvent as mh, GraphCorpusGroup as mi, LoopUntilState as ml, CliInPlaceSeam as mm, WorktreeFanoutOptions as mn, EvolutionAuthor as mo, readRunCancellation as mp, ScopeArgs as mr, flatWidenGate as ms, GraphSubtaskPreparation as mt, readDeclaredCheck as mu, createOtelExporter as mv, WorkerInteractiveSession as mx, DownMessageEvent as my, AgentBackendContext as n, RecoverRetainedRunOptions as nC, ProviderNativeCapturePhase as nS, CompletionPolicy as n_, RecursiveReservationPolicy as na, AnalystRunContext as nb, InProcessSandboxClientOptions as nc, EdgeTraversal as nd, subscriptionUsageLimitSignal as nf, SubmitInput as ng, KeyProvider as nh, InPlaceCliExecutorOptions as ni, AssertTraceDerivedFindings as nl, environmentReader as nm, SurfaceDiff as nn, resolveEntrySymbol as no, PlateauOptions as np, createFencedSqlRunContext as nr, PrivateCasDurableStore as ns, RootProviderModelEvidence as nt, LeaderboardScenario as nu, createWaterfallCollector as nv, UnknownMaterializationReason as nx, QuestionOption as ny, AgentRuntimeEvent as o, RetainedInteractiveIntentAdmission as oC, ProviderWorkspaceCaptureResult as oS, sentinelCompletion as o_, RootSignal as oa, DefinedAnalystRecord as ob, MaterializeLocalMcpOptions as oc, GraphResult as od, RunContextLease as of, DelegateResearchArgs as og, resolveMcpServerLaunch as oh, graphFromSessionFacts as oi, CorpusRecord as ol, createMcpServer as om, WatchedSurface as on, visibleCheckScore as oo, allWorkersStalled as op, SearchSpecInputs as or, equalKOnCost as os, DriverAttemptStop as ot, DeclaredCheck as ou, SandboxEvidenceReceipt as ov, ExecutorCancellation as ox, questionEscalationTargets as oy, KnowledgeReadinessDecision as p, RetainedRunEffect as pC, UsageEvent as pS, CodexRolloutTurn as p_, ResumedWork as pa, CodexTokenUsage as pb, AgenticOptions as pc, GraphCommandCheck as pd, SupervisorSpanRecorder as pf, DelegationHistoryArgs as pg, mapSandboxEvent as ph, loadGraphFile as pi, LoopUntilSpec as pl, createExecutor as pm, AuthoredHarness as pn, streamAgentTurn as po, readRunCancelRequest as pp, createScope as pr, fanout as ps, CoordinationToolsOptions as pt, declaredCheckJudge as pu, buildLoopOtelSpans as pv, Runtime as px, DownMessageDeliveryOutcome as py, SpawnPrior as q, RuntimeRunPersistenceAdapter as qS, AnytimeTaskCurve as q_, VisibleCheck as qa, ExecutionBindingReceipt as qb, harvestCorpus as qc, retryPreSpawnRefusals as qd, SupervisorAgentTestDeps as qf, CheckVerdict as qg, runDetachedTurn as qh, graphDesignerExtraTools as qi, ProviderAsSandboxClientOptions as ql, ProviderExecutorOptions as qm, WorkerToolTraceArtifact as qn, claimRetainedInteractiveControl as qo, admitContinuationPolicy as qp, pickBestProfile as qr, loopDispatch as qs, SandboxEvent$1 as qt, PursuitStatus as qu, RouteWhen as qv, persistHarnessTranscript as qx, createEventBus as qy, AgentBackendInput as r, RecoverRetainedRunResult as rC, ProviderWorkspaceAttemptProvenance as rS, CompletionVerdict as r_, RootHandle as ra, AnalyzeOnSettleRoute as rb, inProcessSandboxClient as rc, GraphEdge as rd, InMemoryRunContext as rf, SubmitOutput as rg, ResolvedMcpServerLaunch as rh, createInPlaceCliExecutor as ri, CombinatorShape as rl, resolveSpawnResourcePaths as rm, SurfaceReadBox as rn, sandboxCheckRunner as ro, ProgressView as rp, CompiledSearchSpec as rr, PrivateCasOffloadReport as rs, RootStreamReceipt as rt, LeaderboardScore as ru, RunAgentRoundsOptions as rv, EnvironmentTeardownReceipt as rx, QuestionPolicy as ry, AgentRuntimeEventSink as s, RetainedInteractiveStartedAdmission as sC, ProviderWorkspaceEntryMetadata as sS, stopSentinel as s_, SteerableRootHandle as sa, CodexExecutionEvidence as sb, McpListedTool as sc, GraphTopology as sd, createFileRunContext as sf, DelegateResearchConfig as sg, resolveSecretEnv as sh, graphFileSchema as si, EqualKArm as sl, DelegateError as sm, boxSurfaceReader as sn, AgentTurnBackend as so, anyOf as sp, SearchSpecOwnedOption as sr, trajectoryReport as ss, DriverContinuationRecord as st, DeclaredCheckPlacement as su, SandboxEvidenceRetentionPort as sv, ExecutorCancellationRequest as sx, AuthorizeDownMessage as sy, AgentAdapter as t, RecoverRetainedRunIntentOptions as tC, ProviderCheckpointCaptureContext as tS, CompletionEvidence as t_, WorkspaceCheckpointMarker as ta, AnalystRegistry$1 as tb, InProcessPromptCtx as tc, EdgeDeliveryOutcome as td, SelectSeat as tf, DelegationTaskQueueOptions as tg, BridgeSeam as th, workerFromInteractiveProvider as ti, renderReport as tl, SpawnResourceReader as tm, HarvestSurfaceDiffsOptions as tn, officialChecksFromMeta as to, NoProgressForOptions as tp, SqlRunContextOptions as tr, PrivateCasArtifactPort as ts, ProviderModelExecutionEvidence as tt, LeaderboardRunContext as tu, WaterfallSpan as tv, RootMaterialization as tx, QuestionLevel as ty, AgentTaskSpec as u, RetainedRunCancelOptions as uC, ExecutorProgressEvent as uS, CodexRolloutSession as u_, Agent as ua, runLocalHarness as ub, StdioMcpServerSpec as uc, TraversalContinuity as ud, SupervisorSpanAttributes as uf, DelegateUiAuditRoute as ug, SandboxOutputMarker as uh, GraphFileSeat as ui, FanoutOptions as ul, createDelegateHandler as um, AnalystAuthoring as un, CollectedAgentTurn as uo, RunCancelRequest as up, searchPresets as ur, FileCorpus as us, BlockedToolReport as ut, checkProgramDigest as uu, OtelExportStats as uv, HeldEnvironment as ux, ContinuityMode as uy, RunAgentTaskStreamOptions as v, RetainedRunReplayPoint as vC, Iteration as vS, readCodexRolloutSession as v_, WorkerEventEntry as va, materializeTreeView as vb, ArtifactHandle as vc, PromptRegistry as vd, RunParkedError as vf, DelegationStatusResult as vg, sumSandboxUsage as vh, GraphRunRecord as vi, PanelVerdict as vl, ProviderSeam as vm, createWorktreeCliExecutor as vn, StrategyTournament as vo, composeReentryTask as vp, WriteWorkerSteerOptions as vr, selectValidWinner as vs, SettledWorker as vt, IsolatedCheckResult as vu, RuntimeStreamEventSink as vv, SessionMessageLike as vx, MapSpawnMarker as vy, RuntimeFailureCode as w, LoopLineageOptions as wS, CodeModeToolsOptions as w_, ChatWorkerSeamOptions as wa, SpawnForestTree as wb, breadthStrategy as wc, dumbContinuationPassPrompt as wd, BudgetReadout as wf, UiFinding as wg, ToolLoopChat as wh, graphDigest as wi, SteerContext as wl, SteerableSandboxArgs as wm, EVIDENCE_MAX_CHARS as wn, OpenSandboxRunBeforeStartContext as wo, CoordinationAuthentication as wp, safeWorkerFile as wr, buildSteerContext as ws, WorkerSpawnContext as wt, PursuitVersionStop as wu, createRuntimeStreamEventCollector as wv, DEFAULT_STALL_AFTER_MS as wx, PeerMailEvent as wy, RuntimeSessionStore as x, RetainedRunTurnInput as xC, LoopIterationDispatchPayload as xS, CodeModeStore as x_, ChatSessionStore as xa, SpawnForestInDoubtNode as xb, StrategyMessage as xc, createPromptRegistry as xd, readRunParking as xf, ResearchOutputShape as xg, RouterRouting as xh, StoredGraphInput as xi, ScopeAnalyst as xl, SandboxSeam as xm, WorkerInteractiveProviderSource as xn, runStrategyEvolution as xo, FinalizerSettled as xp, readWorkerCancellation as xr, CreateScopeAnalystOptions as xs, SpawnRefusal as xt, NextPursuitVersion as xu, SanitizedKnowledgeReadinessReport as xv, createPushTraceSource as xx, DEFAULT_PEER_MAIL_LIMITS as xy, RuntimeCanonicalStreamEvent as y, RetainedRunSnapshot as yC, LoopDecisionPayload as yS, HarnessUsage as y_, WorkerEventPage as ya, SpawnForest as yb, CorpusReadbackOptions as yc, RegisteredPrompt as yd, RunParkingPolicy as yf, FeedbackRating as yg, RouterResponseReceipt as yh, GraphSelection as yi, PipelineStage as yl, RouterSeam as ym, AttachWorkerOptions as yn, TournamentCell as yo, DeliveredOutput as yp, cancelWorker as yr, verify as ys, SpawnPreflight as yt, runIsolatedCheck as yu, RuntimeStreamEventSummary as yv, ToolStepInput as yx, MapTraversalEvent as yy, SpendGap as z, SandboxClient as zS, leaderboard as z_, CheckRunner as za, NotFoundError as zb, defineStrategy as zc, WorkerSlots as zd, CoordinationToolFace as zf, composeLoopTraceEmitters as zg, DelegationExecutor as zh, DispatchUnit as zi, Persona as zl, sharedBoxPlacement as zm, WorkspaceCommit as zn, PrivateCasNamespaceInventory as zo, ContinuationEntry as zp, ProvisionSupervisorRequest as zr, printBenchmarkReport as zs, CheckpointRequest as zt, PursuitNodeCost as zu, WorkerWatchOptions as zv, HarnessTranscriptCapture as zx, McpToolAnnotations as zy };
19641
- //# sourceMappingURL=types-C2fJMeEi.d.ts.map
19642
+ //# sourceMappingURL=types-BDmLQLNj.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-runtime",
3
- "version": "2.2.1",
3
+ "version": "2.3.0",
4
4
  "description": "Shared task-lifecycle skeleton for agents: a recursive loop kernel for chat turns, one-shot tasks, and multi-attempt loops, with trace capture and eval-gated self-improvement. Domain behavior lives in adapters; scoring and ship-gates in @tangle-network/agent-eval.",
5
5
  "homepage": "https://github.com/tangle-network/agent-runtime#readme",
6
6
  "repository": {