@tangle-network/agent-runtime 2.0.2 → 2.2.1

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 (60) hide show
  1. package/dist/{activation-BuK2H7qx.d.ts → activation-BRASQAee.d.ts} +2 -2
  2. package/dist/{activation-ZQWz04u8.js → activation-D7-ZwyKD.js} +2 -2
  3. package/dist/{activation-ZQWz04u8.js.map → activation-D7-ZwyKD.js.map} +1 -1
  4. package/dist/agent.d.ts +1 -1
  5. package/dist/agent.js +3 -3
  6. package/dist/{coordination-manager-BZLp9qpE.js → coordination-manager-DbNKO53e.js} +12 -8
  7. package/dist/coordination-manager-DbNKO53e.js.map +1 -0
  8. package/dist/{delegate-C-MUU6ML.js → delegate-CBFbETCq.js} +2 -2
  9. package/dist/{delegate-C-MUU6ML.js.map → delegate-CBFbETCq.js.map} +1 -1
  10. package/dist/durable.d.ts +12 -1
  11. package/dist/durable.js +34 -6
  12. package/dist/durable.js.map +1 -1
  13. package/dist/{graph-CM-6CV_K.js → graph-D05w51EQ.js} +5 -5
  14. package/dist/{graph-CM-6CV_K.js.map → graph-D05w51EQ.js.map} +1 -1
  15. package/dist/{improve-BuZ-I8DP.js → improve-Byp45uiM.js} +5 -5
  16. package/dist/{improve-BuZ-I8DP.js.map → improve-Byp45uiM.js.map} +1 -1
  17. package/dist/index.d.ts +3 -3
  18. package/dist/index.js +8 -8
  19. package/dist/intelligence.d.ts +2 -2
  20. package/dist/intelligence.js +3 -3
  21. package/dist/{journal-store-BpCOCDoO.js → journal-store-E6TojmWB.js} +58 -6
  22. package/dist/{journal-store-BpCOCDoO.js.map → journal-store-E6TojmWB.js.map} +1 -1
  23. package/dist/kernel.d.ts +1 -1
  24. package/dist/kernel.js +10 -10
  25. package/dist/{loop-runner-BpLTU_J4.d.ts → loop-runner-Bjy-ALf4.d.ts} +2 -2
  26. package/dist/{loop-runner-BWD6v1rd.js → loop-runner-DBH2LY57.js} +2 -2
  27. package/dist/{loop-runner-BWD6v1rd.js.map → loop-runner-DBH2LY57.js.map} +1 -1
  28. package/dist/loop-runner-bin.d.ts +1 -1
  29. package/dist/loop-runner-bin.js +1 -1
  30. package/dist/mcp/bin.js +3 -3
  31. package/dist/mcp/index.d.ts +1 -1
  32. package/dist/mcp/index.js +4 -4
  33. package/dist/profiles.d.ts +1 -1
  34. package/dist/{provision-supervisor-BWEeWag1.js → provision-supervisor-Bvqnu3xm.js} +4 -4
  35. package/dist/{provision-supervisor-BWEeWag1.js.map → provision-supervisor-Bvqnu3xm.js.map} +1 -1
  36. package/dist/{runtime-Cnr3213E.js → runtime-DlmYZZpp.js} +10 -10
  37. package/dist/{runtime-Cnr3213E.js.map → runtime-DlmYZZpp.js.map} +1 -1
  38. package/dist/{search-executor-__X1VKnU.js → search-executor-DWFivIJq.js} +3 -3
  39. package/dist/{search-executor-__X1VKnU.js.map → search-executor-DWFivIJq.js.map} +1 -1
  40. package/dist/{server-CntFSTpW.js → server-DKYzcVEO.js} +3 -3
  41. package/dist/{server-CntFSTpW.js.map → server-DKYzcVEO.js.map} +1 -1
  42. package/dist/{structural-rollout-s8W19Mws.js → structural-rollout-ChERY66G.js} +3 -3
  43. package/dist/{structural-rollout-s8W19Mws.js.map → structural-rollout-ChERY66G.js.map} +1 -1
  44. package/dist/{supervise-Cl0F57m9.js → supervise-DQkPeVi6.js} +17 -11
  45. package/dist/{supervise-Cl0F57m9.js.map → supervise-DQkPeVi6.js.map} +1 -1
  46. package/dist/{supervision-discovery-C3t0Xw-T.js → supervision-discovery-P89Ej0yJ.js} +2 -2
  47. package/dist/{supervision-discovery-C3t0Xw-T.js.map → supervision-discovery-P89Ej0yJ.js.map} +1 -1
  48. package/dist/{supervisor-L7u3pQ1j.js → supervisor-DorLcfvJ.js} +4 -3
  49. package/dist/{supervisor-L7u3pQ1j.js.map → supervisor-DorLcfvJ.js.map} +1 -1
  50. package/dist/testing.d.ts +1 -1
  51. package/dist/testing.js +11 -11
  52. package/dist/{top-web-BXICdHgc.js → top-web-CWcNwaRb.js} +30 -10
  53. package/dist/top-web-CWcNwaRb.js.map +1 -0
  54. package/dist/tui/bin.js +1 -1
  55. package/dist/tui/index.d.ts +1 -1
  56. package/dist/tui/index.js +2 -2
  57. package/dist/{types-BfnQq-_k.d.ts → types-C2fJMeEi.d.ts} +3 -1
  58. package/package.json +2 -2
  59. package/dist/coordination-manager-BZLp9qpE.js.map +0 -1
  60. package/dist/top-web-BXICdHgc.js.map +0 -1
package/dist/testing.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Bv as DecideGate, By as McpToolDescriptor, Ch as ToolLoopCallContext, Ct as SuperviseProfileEntry, Dh as ToolLoopMessageRecord, Eh as ToolLoopCompactionOptions, Ip as PriorCoordination, Jv as ChildQuestionInbox, M as Budget, Nd as superviseWithTestBrain, Np as CoordinationDeliveryEvidence, Nv as CoordinationEvent, Oh as ToolLoopToolCall, Om as Inbox, Qf as ManagerWakePolicy, Rd as SuperviseTestOptions, Rf as supervisorAgentWithTestBrain, Sp as SupervisorFinalizer, Uy as BusRecord, Wv as RouteFlow, Yg as DeliverableSpec, Yv as EscalateQuestion, Zi as ResultBlobStore, _t as PeerAuditAccess, _y as MapOnSettleRoute, ap as StopRule, bt as SpawnPreflightContext, fd as runGraphWithTestBrain, ft as CoordinationTools, gt as MakeWorkerAgent, ht as GraphSubtasks, ld as RunGraphTestOptions, mt as GraphSubtaskPreparation, qf as SupervisorAgentTestDeps, rb as AnalyzeOnSettleRoute, sy as AuthorizeDownMessage, tb as AnalystRegistry, tm as SpawnResourceReader, ua as Agent, up as RunCancelRequest, uy as ContinuityMode, wh as ToolLoopChat, xt as SpawnRefusal, yh as RouterResponseReceipt, yt as SpawnPreflight, zv as WorkerWatchOptions, zx as HarnessTranscriptCapture } from "./types-BfnQq-_k.js";
1
+ import { Bv as DecideGate, By as McpToolDescriptor, Ch as ToolLoopCallContext, Ct as SuperviseProfileEntry, Dh as ToolLoopMessageRecord, Eh as ToolLoopCompactionOptions, Ip as PriorCoordination, Jv as ChildQuestionInbox, M as Budget, Nd as superviseWithTestBrain, Np as CoordinationDeliveryEvidence, Nv as CoordinationEvent, Oh as ToolLoopToolCall, Om as Inbox, Qf as ManagerWakePolicy, Rd as SuperviseTestOptions, Rf as supervisorAgentWithTestBrain, Sp as SupervisorFinalizer, Uy as BusRecord, Wv as RouteFlow, Yg as DeliverableSpec, Yv as EscalateQuestion, Zi as ResultBlobStore, _t as PeerAuditAccess, _y as MapOnSettleRoute, ap as StopRule, bt as SpawnPreflightContext, fd as runGraphWithTestBrain, ft as CoordinationTools, gt as MakeWorkerAgent, ht as GraphSubtasks, ld as RunGraphTestOptions, mt as GraphSubtaskPreparation, qf as SupervisorAgentTestDeps, rb as AnalyzeOnSettleRoute, sy as AuthorizeDownMessage, tb as AnalystRegistry, tm as SpawnResourceReader, ua as Agent, up as RunCancelRequest, uy as ContinuityMode, wh as ToolLoopChat, xt as SpawnRefusal, yh as RouterResponseReceipt, yt as SpawnPreflight, zv as WorkerWatchOptions, zx as HarnessTranscriptCapture } from "./types-C2fJMeEi.js";
2
2
  import { AgentImprovementProposal, AgentProfile, AgentProfileImprovementMeasuredComparison, SandboxSizePreset } from "@tangle-network/agent-interface";
3
3
  /** What the brain returned for one turn, as the recorder keeps it. */
4
4
  interface RouterTranscriptReply {
package/dist/testing.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { P as canonicalCandidateDigest$1, R as immutableCandidateValue } from "./sandbox-profile-compat-DRiz9kME.js";
2
- import { c as verifyAgentImprovementProposal } from "./activation-ZQWz04u8.js";
2
+ import { c as verifyAgentImprovementProposal } from "./activation-D7-ZwyKD.js";
3
3
  import { a as applyExactAgentProfileDiff, v as parseExactAgentProfile } from "./profile-Dir2A1_2.js";
4
- import { _ as driverAgent, f as supervisorAgentWithTestBrain, r as superviseWithTestBrain } from "./supervise-Cl0F57m9.js";
5
- import { r as runGraphWithTestBrain } from "./graph-CM-6CV_K.js";
4
+ import { f as supervisorAgentWithTestBrain, r as superviseWithTestBrain, v as driverAgent } from "./supervise-DQkPeVi6.js";
5
+ import { r as runGraphWithTestBrain } from "./graph-D05w51EQ.js";
6
6
  import { SANDBOX_SIZE_PRESET_NAMES, canonicalAgentProfileDigest } from "@tangle-network/agent-interface";
7
7
  // src/testing/fixtures/agent-improvement-proposal.json
8
8
  var agent_improvement_proposal_default = {
9
9
  changedSurfaces: ["prompt"],
10
- digest: "sha256:2e985c60103fe7ba0b55624510ee62172979b1d510a37d0f913502b894b0dd49",
10
+ digest: "sha256:408c49f126071b3f9b919c729f1431ac5dc204fb9503707c3e5a7b4126f62125",
11
11
  evaluation: {
12
12
  "decision": {
13
13
  "contributingChecks": [
@@ -4578,7 +4578,7 @@ var agent_improvement_proposal_default = {
4578
4578
  ],
4579
4579
  "metadata": {
4580
4580
  "fixture": "agent-improvement-proposal",
4581
- "runtimeVersion": "2.0.2"
4581
+ "runtimeVersion": "2.2.1"
4582
4582
  },
4583
4583
  "objectives": [
4584
4584
  {
@@ -4689,8 +4689,8 @@ var agent_improvement_proposal_default = {
4689
4689
  "baselineContentHash": "sha256:5c21ee53e513fc604cb09754e21c392b24a424da0ef37dbf8f1ee4a8a0b08f09",
4690
4690
  "candidateContentHash": "sha256:60fcbb1c728194bd51d7d19cb732d1c3f1881dce7e0a6266b41c8b98cfd65693",
4691
4691
  "kind": "agent-eval-loop",
4692
- "recordDigest": "sha256:2c99aa7615d6c712354d10e10256c5eb6f8af2f9770cabe0d7a6bfe1fcc6f080",
4693
- "runId": "agent-runtime-2.0.2-proposal-fixture",
4692
+ "recordDigest": "sha256:745be592c94931da0db38c6c6d7ba677d93c65d0bb6eb83e5cd2ad5a4572c718",
4693
+ "runId": "agent-runtime-2.2.1-proposal-fixture",
4694
4694
  "schema": "agent-candidate-experiment"
4695
4695
  }
4696
4696
  },
@@ -4713,12 +4713,12 @@ var agent_improvement_proposal_default = {
4713
4713
  }],
4714
4714
  kind: "agent-improvement-proposal",
4715
4715
  proposedAt: "2026-07-10T01:00:00.000Z",
4716
- runId: "agent-runtime-2.0.2-proposal-fixture"
4716
+ runId: "agent-runtime-2.2.1-proposal-fixture"
4717
4717
  };
4718
4718
  // src/testing/fixtures/agent-profile-improvement-proposal.json
4719
4719
  var agent_profile_improvement_proposal_default = {
4720
4720
  changedSurfaces: ["prompt", "skills"],
4721
- digest: "sha256:89bc931cbcd9aed18b68e78057e26da7b47eae73eef38463f8b142ece9aebb18",
4721
+ digest: "sha256:f9847822d6546b7dd4868a2b148b19b5ddc12cc37314a18c515e01bdff98fbe4",
4722
4722
  evaluation: {
4723
4723
  "decision": {
4724
4724
  "contributingChecks": [
@@ -6352,7 +6352,7 @@ var agent_profile_improvement_proposal_default = {
6352
6352
  ],
6353
6353
  "metadata": {
6354
6354
  "fixture": "agent-profile-improvement-proposal",
6355
- "runtimeVersion": "2.0.2"
6355
+ "runtimeVersion": "2.2.1"
6356
6356
  },
6357
6357
  "objectives": [
6358
6358
  {
@@ -6463,7 +6463,7 @@ var agent_profile_improvement_proposal_default = {
6463
6463
  "baselineContentHash": "sha256:21c495a37c418c10bde64fbaa188beddeed31f1f051ea60a6a6582a9ee0db704",
6464
6464
  "candidateContentHash": "sha256:103f77bc8481601eef1ad5fe6ba84a40dffabc3a44f421f8c8559121edab84e9",
6465
6465
  "kind": "agent-eval-loop",
6466
- "recordDigest": "sha256:6be971fdf6c7fb68cacf48686a80b5bd9d9d196098c7d0f1828e68734d2d7aa6",
6466
+ "recordDigest": "sha256:92f3560351722d6995a79e16131b3fe5ed26722b1f9440b8f52b7bf133c0a433",
6467
6467
  "runId": "profile-improvement-1",
6468
6468
  "schema": "agent-profile-improvement-experiment"
6469
6469
  }
@@ -1,7 +1,7 @@
1
- import { i as FileResultBlobStore, r as spawnJournalRecordEvents, t as FileSpawnJournal, u as FileObserverJournal } from "./journal-store-BpCOCDoO.js";
1
+ import { i as FileResultBlobStore, r as spawnJournalRecordEvents, t as FileSpawnJournal, u as FileObserverJournal } from "./journal-store-E6TojmWB.js";
2
2
  import { o as readCommittedJsonLines, r as parseCommittedJsonLines } from "./jsonl-file-BBP9Dz9w.js";
3
3
  import { _ as safeWorkerFile, b as supervisorWorkersDir, f as legacySupervisorRunsRoot, y as supervisorRunsRoot } from "./run-cancellation-Cpm-BIUu.js";
4
- import { n as projectPursuit, t as discoverDurableSupervisionRun } from "./supervision-discovery-C3t0Xw-T.js";
4
+ import { n as projectPursuit, t as discoverDurableSupervisionRun } from "./supervision-discovery-P89Ej0yJ.js";
5
5
  import { createRequire } from "node:module";
6
6
  import { createHash } from "node:crypto";
7
7
  import { closeSync, existsSync, openSync, readFileSync, readSync, readdirSync, statSync, watch } from "node:fs";
@@ -36,6 +36,16 @@ async function transcriptHistory(worker, runDir, node) {
36
36
  source: "Runtime recorded capture"
37
37
  }
38
38
  });
39
+ const result = runDir && node?.outRef && worker.endedAt ? await new FileResultBlobStore(join(runDir, "blobs")).get(node.outRef) : void 0;
40
+ if (result !== void 0) native.push({
41
+ at: worker.endedAt,
42
+ event: {
43
+ kind: "notice",
44
+ provenance: "recorded-result",
45
+ source: `result ${node.outRef}; Runtime FileResultBlobStore`,
46
+ text: typeof result === "string" ? result : JSON.stringify(result, null, 2)
47
+ }
48
+ });
39
49
  return [...rows, ...native];
40
50
  }
41
51
  const lines = [];
@@ -837,8 +847,8 @@ async function serveTopWeb(options) {
837
847
  if (client.writableLength > 1048576) return client.destroy();
838
848
  client.write(`id: ${frame.sequence}\nevent: snapshot\ndata: ${JSON.stringify(frame)}\n\n`);
839
849
  };
840
- const refresh = async () => {
841
- if (reading || closed) return;
850
+ let inFlight = Promise.resolve();
851
+ const read = async () => {
842
852
  reading = true;
843
853
  dirty = false;
844
854
  try {
@@ -873,6 +883,11 @@ async function serveTopWeb(options) {
873
883
  if (dirty && !closed) schedule();
874
884
  }
875
885
  };
886
+ const refresh = () => {
887
+ if (reading || closed) return inFlight;
888
+ inFlight = read();
889
+ return inFlight;
890
+ };
876
891
  const schedule = () => {
877
892
  dirty = true;
878
893
  if (!scheduled && !closed) scheduled = setTimeout(() => {
@@ -929,6 +944,9 @@ async function serveTopWeb(options) {
929
944
  } else if (/^\/api\/top\/agents\/\d+\/[^/]+\/[^/]+\/stream$/.test(path)) {
930
945
  const [, , , , rootIndex, runId, workerId] = path.split("/").map(decodeURIComponent);
931
946
  const root = roots[Number(rootIndex)];
947
+ const own = root && existsSync(resolve(root, runId, "observer.jsonl")) ? resolve(root, runId) : void 0;
948
+ const runDir = own ?? root;
949
+ const pursuit = own ? (await loadTopSnapshot(root, { runDir: own })).pursuit : root ? snapshots.get(root)?.pursuit : void 0;
932
950
  const worker = () => {
933
951
  const run = root ? snapshots.get(root)?.supervisors.find((run) => run.id === runId) : void 0;
934
952
  const node = run?.workers.find((node) => node.id === workerId);
@@ -936,7 +954,7 @@ async function serveTopWeb(options) {
936
954
  return {
937
955
  id: run.id,
938
956
  label: "root",
939
- ...root && existsSync(resolve(root, "root-stream.jsonl")) ? { eventFile: resolve(root, "root-stream.jsonl") } : {},
957
+ ...runDir && existsSync(resolve(runDir, "root-stream.jsonl")) ? { eventFile: resolve(runDir, "root-stream.jsonl") } : {},
940
958
  status: run.status === "cancelled" ? "cancelled" : run.status === "done" ? "done" : run.status === "down" ? "down" : "running",
941
959
  startedAt: run.startedAt,
942
960
  endedAt: run.completedAt,
@@ -956,7 +974,7 @@ async function serveTopWeb(options) {
956
974
  response.writeHead(404).end();
957
975
  return;
958
976
  }
959
- let history = await transcriptHistory(worker(), root, snapshots.get(root)?.pursuit?.nodes.find((node) => node.runId === runId && node.id === workerId));
977
+ let history = await transcriptHistory(worker(), runDir, pursuit?.nodes.find((node) => node.runId === runId && node.id === workerId));
960
978
  response.writeHead(200, {
961
979
  "Content-Type": "text/event-stream",
962
980
  "X-Accel-Buffering": "no"
@@ -1039,12 +1057,14 @@ async function serveTopWeb(options) {
1039
1057
  });
1040
1058
  let closing;
1041
1059
  const close = () => closing ??= (async () => {
1042
- closed = true;
1043
- if (scheduled) clearTimeout(scheduled);
1044
1060
  clearInterval(reconcile);
1045
1061
  clearInterval(heartbeat);
1046
1062
  for (const watcher of watchers) watcher.close();
1047
- for (const client of clients) client.end();
1063
+ await inFlight.catch(() => void 0);
1064
+ await refresh().catch(() => void 0);
1065
+ closed = true;
1066
+ if (scheduled) clearTimeout(scheduled);
1067
+ for (const client of clients) client.end("event: end\ndata: {}\n\n");
1048
1068
  transcripts.clear();
1049
1069
  server.closeAllConnections();
1050
1070
  await new Promise((done, reject) => server.close((error) => error && (!("code" in error) || error.code !== "ERR_SERVER_NOT_RUNNING") ? reject(error) : done()));
@@ -1118,4 +1138,4 @@ async function loadRunsRoot(root) {
1118
1138
  }
1119
1139
  export { numberValue as a, totalSpend as c, loadTopSnapshot as i, serveTopWeb as n, parseSpend as o, aggregateSnapshot as r, parseTime as s, runTopWeb as t };
1120
1140
 
1121
- //# sourceMappingURL=top-web-BXICdHgc.js.map
1141
+ //# sourceMappingURL=top-web-CWcNwaRb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top-web-CWcNwaRb.js","names":[],"sources":["../src/tui/top-transcript.ts","../src/tui/workflow-journal.ts","../src/tui/top-snapshot.ts","../src/tui/top-web.ts"],"sourcesContent":["import { closeSync, openSync, readSync, statSync } from 'node:fs'\nimport { join } from 'node:path'\nimport { readCommittedJsonLines } from '../durable/jsonl-file'\nimport type { PursuitNodeProjection } from '../durable/observer-projection'\nimport { FileResultBlobStore } from '../durable/spawn-journal/result-blob-store'\nimport type { WorkerView } from './top-snapshot'\n\n/** Read selected history on demand, leaving the live topology snapshot bounded and fast. */\nexport async function transcriptHistory(\n worker: WorkerView,\n runDir?: string,\n node?: PursuitNodeProjection,\n) {\n const rows: ReturnType<typeof transcriptRows> = []\n const identity = node?.identity as { taskDigest?: unknown; profileDigest?: unknown } | undefined\n if (runDir && typeof identity?.taskDigest === 'string' && worker.startedAt) {\n const task = await new FileResultBlobStore(join(runDir, 'blobs')).get(identity.taskDigest)\n if (task !== undefined)\n rows.unshift({\n at: worker.startedAt,\n event: {\n kind: 'notice',\n provenance: 'delegated-input',\n source: `parent ${node?.parentId ?? 'run caller'}; task ${identity.taskDigest}${typeof identity.profileDigest === 'string' ? `; profile ${identity.profileDigest}` : ''}; Runtime FileResultBlobStore`,\n text: typeof task === 'string' ? task : JSON.stringify(task, null, 2),\n },\n })\n }\n if (!worker.eventFile) {\n const native = transcriptRows(worker)\n if (!native.length && worker.startedAt)\n rows.push({\n at: worker.startedAt,\n event: {\n kind: 'notice',\n provenance: 'capture-unavailable',\n text: 'Native conversation was not captured for this agent.',\n source: 'Runtime recorded capture',\n },\n })\n // Without its conversation, the agent's settled result is still what it delivered.\n const result =\n runDir && node?.outRef && worker.endedAt\n ? await new FileResultBlobStore(join(runDir, 'blobs')).get(node.outRef)\n : undefined\n if (result !== undefined)\n native.push({\n at: worker.endedAt!,\n event: {\n kind: 'notice',\n provenance: 'recorded-result',\n source: `result ${node!.outRef}; Runtime FileResultBlobStore`,\n text: typeof result === 'string' ? result : JSON.stringify(result, null, 2),\n },\n })\n return [...rows, ...native]\n }\n const lines: string[] = []\n for await (const row of readCommittedJsonLines<unknown>(worker.eventFile)) {\n lines.push(JSON.stringify(row))\n if (lines.length > 200) lines.shift()\n }\n return [...rows, ...transcriptRows({ ...worker, liveTail: lines })]\n}\n\n/** Present the recorded tail through sandbox-ui's existing agent-stream contract. */\nexport function transcriptRows(worker: WorkerView) {\n const rows: {\n at: string\n event: {\n kind: string\n text?: string\n provenance?: string\n source?: string\n toolCallId?: string\n toolName?: string\n args?: unknown\n result?: unknown\n }\n }[] = []\n for (const line of worker.liveTail) {\n let value: Record<string, unknown>\n try {\n value = JSON.parse(line) as Record<string, unknown>\n } catch {\n continue\n }\n const at =\n typeof value.timestamp === 'string'\n ? value.timestamp\n : typeof value.at === 'string'\n ? value.at\n : undefined\n if (!at || !Number.isFinite(Date.parse(at))) continue\n const event = value.event as\n | {\n kind?: string\n text?: string\n toolName?: string\n toolCallId?: string\n args?: unknown\n result?: unknown\n }\n | undefined\n if (event?.kind) {\n const kind =\n (\n {\n text_delta: 'text',\n reasoning_delta: 'reasoning',\n tool_call: 'tool-call',\n tool_result: 'tool-result',\n } as Record<string, string>\n )[event.kind] ?? event.kind\n rows.push({ at, event: { ...event, kind } })\n continue\n }\n const message = value.message as\n | { role?: string; content?: string | Record<string, unknown>[] }\n | undefined\n if (!message) continue\n const parts =\n typeof message.content === 'string'\n ? [{ type: 'text', text: message.content }]\n : (message.content ?? [])\n for (const part of parts) {\n if (part.type === 'text' && typeof part.text === 'string')\n rows.push({\n at,\n event: { kind: message.role === 'user' ? 'user' : 'text', text: part.text },\n })\n else if (part.type === 'thinking' && typeof part.thinking === 'string')\n rows.push({ at, event: { kind: 'reasoning', text: part.thinking } })\n else if (part.type === 'tool_use')\n rows.push({\n at,\n event: {\n kind: 'tool-call',\n toolCallId: String(part.id),\n toolName: String(part.name),\n args: part.input,\n },\n })\n else if (part.type === 'tool_result')\n rows.push({\n at,\n event: {\n kind: 'tool-result',\n toolCallId: String(part.tool_use_id),\n result: part.content,\n },\n })\n }\n }\n return rows\n}\n\n/** The bounded native/normalized tail shared by snapshot adapters and selected streams. */\nexport function readTranscriptTail(file: string) {\n const fd = openSync(file, 'r')\n try {\n const size = statSync(file).size\n const buffer = Buffer.alloc(Math.min(size, 65_536))\n readSync(fd, buffer, 0, buffer.length, Math.max(0, size - buffer.length))\n const lines = buffer.toString().split('\\n')\n lines.pop() // An uncommitted final row is not an event.\n if (size > buffer.length) lines.shift()\n return lines.filter(Boolean).slice(-200)\n } finally {\n closeSync(fd)\n }\n}\n\nexport function transcriptTail(worker: WorkerView) {\n return transcriptRows(\n worker.eventFile ? { ...worker, liveTail: readTranscriptTail(worker.eventFile) } : worker,\n )\n}\n","import { closeSync, openSync, readSync, statSync } from 'node:fs'\nimport { basename, join } from 'node:path'\nimport { parseCommittedJsonLines } from '../durable/jsonl-file'\nimport type { TopJournalEvent } from './top-snapshot'\nimport { readTranscriptTail } from './top-transcript'\n\n/** Native workflows have no Runtime accounting. Translate recorded lifecycle only. */\nexport function workflowJournal(runDir: string, text: string) {\n const rows = parseCommittedJsonLines<Record<string, unknown>>(text, 'journal.jsonl')\n const events: TopJournalEvent[] = []\n const tails = new Map<string, { file: string; lines: string[] }>()\n let first: string | undefined\n let last: string | undefined\n for (const row of rows) {\n if (typeof row.agentId !== 'string' || !/^[\\w-]+$/.test(row.agentId)) continue\n const id = row.agentId\n if (row.type === 'started') {\n const file = join(runDir, `agent-${id}.jsonl`)\n let start: string | undefined\n let end: string | undefined\n try {\n const fd = openSync(file, 'r')\n try {\n const size = statSync(file).size\n const prefix = Buffer.alloc(Math.min(size, 16_384))\n readSync(fd, prefix, 0, prefix.length, 0)\n start = /\"timestamp\":\"([^\"]+)\"/.exec(prefix.toString())?.[1]\n const lines = readTranscriptTail(file).slice(-8)\n const times = [...lines.join('\\n').matchAll(/\"timestamp\":\"([^\"]+)\"/g)]\n end = times.at(-1)?.[1]\n tails.set(id, { file, lines })\n } finally {\n closeSync(fd)\n }\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error\n }\n if (start && (!first || start < first)) first = start\n if (end && (!last || end > last)) last = end\n events.push({\n kind: 'spawned',\n id,\n label: typeof row.label === 'string' ? row.label : id,\n runtime: 'claude-code',\n ...(start ? { at: start } : {}),\n })\n events.push({ kind: 'metered', id, spend: { usdKnown: false, tokensKnown: false } })\n } else if (row.type === 'result' || row.type === 'error' || row.type === 'cancelled') {\n const line = tails.get(id)?.lines.at(-1)\n const at = line ? /\"timestamp\":\"([^\"]+)\"/.exec(line)?.[1] : undefined\n events.push(\n row.type === 'cancelled'\n ? { kind: 'cancelled', id, ...(at ? { at } : {}) }\n : {\n kind: 'settled',\n id,\n status: row.type === 'error' ? 'down' : 'done',\n ...(at ? { at } : {}),\n spent: { usdKnown: false, tokensKnown: false },\n },\n )\n }\n }\n return { id: basename(runDir), events, tails, first, last }\n}\n","/**\n * Read-only operator snapshots over the writer-owned supervisor layout and explicit durable runs.\n * Workspace reads preserve legacy files; durable reads use discovery, journals and the canonical\n * pursuit projection for model identity, failure and accounting evidence. Run totals count once.\n * ANSI presentation lives in `./top-frame`.\n *\n * @experimental\n */\n\nimport { existsSync, readdirSync, readFileSync, statSync } from 'node:fs'\nimport { basename, join, resolve } from 'node:path'\nimport { FileObserverJournal } from '../durable/observer-journal'\nimport {\n type PursuitProjection,\n type PursuitRunProjection,\n projectPursuit,\n} from '../durable/observer-projection'\nimport { FileSpawnJournal } from '../durable/spawn-journal/journal-store'\nimport { spawnJournalRecordEvents } from '../durable/spawn-journal/record-events'\nimport { discoverDurableSupervisionRun } from '../durable/supervision-discovery'\nimport {\n legacySupervisorRunsRoot,\n safeWorkerFile,\n supervisorRunsRoot,\n supervisorWorkersDir,\n} from '../runtime/supervise/run-layout'\nimport type { Budget, Spend, SpendChannel } from '../runtime/supervise/types'\nimport { workflowJournal } from './workflow-journal'\n\nexport interface TopSnapshot {\n readonly root: string\n readonly generatedAt: number\n readonly supervisors: SupervisorView[]\n /** Canonical facts, including unknown accounting and requested/observed identities. */\n readonly pursuit?: PursuitProjection\n /** `partial` when at least one discovered source could not be read completely. */\n readonly completeness: TopSnapshotCompleteness\n /** One bounded entry per skipped or partially read source; empty when complete. */\n readonly diagnostics: ReadonlyArray<TopSnapshotDiagnostic>\n /** Run directories found under the runs roots, readable or not. */\n readonly discovered: number\n /** Run directories projected into a valid supervisor view. */\n readonly loaded: number\n}\n\nexport type TopSnapshotCompleteness = 'complete' | 'partial'\n\nexport type TopSnapshotDiagnosticSource =\n | 'observer-journal'\n | 'supervisor-state'\n | 'journal'\n | 'progress'\n | 'worker-tail'\n\nexport type TopSnapshotDiagnosticReason =\n | 'unreadable'\n | 'partial-json'\n | 'invalid-state'\n | 'missing'\n\n/**\n * One skipped or partially read snapshot source. `path` is relative to the run directory and\n * never carries file contents, so a diagnostic is safe to show or log without leaking run data.\n */\nexport interface TopSnapshotDiagnostic extends SourceDiagnostic {\n readonly runId?: string\n}\n\ninterface SupervisorBase {\n readonly id: string\n readonly status: string\n readonly task: string\n readonly workspaceDir: string\n readonly budget: number\n readonly budgetKnown?: boolean\n readonly verifyCmd?: string\n readonly workerModel?: string\n readonly driverModel?: string\n readonly verdict?: string\n readonly progress?: string\n readonly startedAt?: string\n readonly completedAt?: string\n readonly maxSandboxes?: number\n readonly maxLifetimeSeconds?: number\n readonly idleTimeoutSeconds?: number\n readonly maxUsd?: number\n readonly maxDepth?: number\n}\n\nexport interface SupervisorView extends SupervisorBase {\n readonly stateDir: string\n readonly resultSpentUsd?: number\n readonly resultSpentTokens?: number\n readonly workers: WorkerView[]\n readonly progressTail: string[]\n readonly journalTail: TopJournalEvent[]\n readonly driverSpend: SpendStats\n readonly totals: SupervisorTotals\n}\n\nexport interface WorkerView {\n readonly id: string\n readonly label: string\n readonly eventFile?: string\n readonly parent?: string\n readonly runtime?: string\n readonly status: 'running' | 'done' | 'down' | 'cancelled'\n readonly verdict?: string\n readonly infra?: boolean\n readonly startedAt?: string\n readonly endedAt?: string\n readonly latencyMs: number\n readonly budget?: BudgetStats\n readonly spend: SpendStats\n readonly metered: SpendStats\n readonly liveTail: string[]\n readonly outRef?: string\n readonly reason?: string\n}\n\nexport interface SupervisorTotals\n extends Pick<SpendStats, 'tokensInput' | 'tokensOutput' | 'usd' | 'usdKnown' | 'tokensKnown'> {\n readonly workers: number\n readonly running: number\n readonly done: number\n readonly down: number\n readonly cancelled: number\n readonly inFlight: number\n readonly settled: number\n readonly tokensTotal: number\n readonly latencyMs: number\n readonly workerLatency: Distribution\n}\n\nexport interface Distribution {\n readonly n: number\n readonly min: number\n readonly median: number\n readonly p90: number\n readonly max: number\n}\n\nexport type BudgetStats = Partial<Pick<Budget, 'maxIterations' | 'maxTokens' | 'maxUsd'>>\n\nexport interface SpendStats\n extends Readonly<Pick<Spend, 'iterations' | 'usd' | 'ms' | 'usdKnown' | 'tokensKnown'>> {\n readonly tokensInput: number\n readonly tokensOutput: number\n}\n\nexport type TopJournalEvent = {\n readonly id: string\n readonly seq?: number\n readonly at?: string\n} & (\n | {\n readonly kind: 'spawned'\n readonly parent?: string\n readonly label?: string\n readonly budget?: unknown\n readonly runtime?: string\n }\n | {\n readonly kind: 'settled'\n readonly status?: string\n readonly outRef?: string\n readonly verdict?: unknown\n readonly spent?: unknown\n readonly infra?: boolean\n }\n | {\n readonly kind: 'cancelled'\n readonly spent?: unknown\n readonly reason?: string\n }\n | {\n readonly kind: 'metered'\n readonly spend?: unknown\n readonly accountingOnly?: boolean\n }\n | {\n readonly kind: 'progress'\n readonly spend?: unknown\n }\n)\n\ninterface SupervisorState extends SupervisorBase {\n readonly result?: {\n readonly spentUsd?: number\n readonly spentTokens?: number\n }\n}\n\ntype MutableWorker = {\n -readonly [Key in keyof Omit<WorkerView, 'latencyMs'>]: WorkerView[Key]\n}\n\ninterface WorkerEventTail {\n readonly file: string\n readonly lines: string[]\n}\n\n/** A diagnostic before its run id is attached; `loadTopSnapshot` adds `runId`. */\ninterface SourceDiagnostic {\n readonly source: TopSnapshotDiagnosticSource\n readonly path: string\n readonly reason: TopSnapshotDiagnosticReason\n}\n\n/**\n * What one snapshot source read produced: the value it could recover, and the bounded diagnostics\n * the read raised. Every reader returns this one shape, so the loader folds them identically.\n */\ninterface SourceRead<T> {\n readonly value: T\n readonly diagnostics: readonly SourceDiagnostic[]\n}\n\nconst emptySpend: SpendStats = { iterations: 0, tokensInput: 0, tokensOutput: 0, usd: 0, ms: 0 }\n\n/**\n * Read every supervisor run under one workspace into a single point-in-time snapshot.\n *\n * Pure with respect to the process: it only reads, and it never throws for a writer mid-append.\n * An unreadable or half-written source is still skipped — an operator view must survive a live\n * writer — but every skip is reported as one bounded `TopSnapshotDiagnostic`, so a client can\n * tell a removed run from a partial read. `now` is injectable so elapsed time is deterministic\n * under test.\n */\nexport function loadTopSnapshot(rootDir: string, now?: number): TopSnapshot\nexport function loadTopSnapshot(\n rootDir: string,\n options: { runDir: string; now?: number; format?: 'workflow' | 'journal' },\n): Promise<TopSnapshot>\nexport function loadTopSnapshot(\n rootDir: string,\n input: number | { runDir: string; now?: number; format?: 'workflow' | 'journal' } = Date.now(),\n): TopSnapshot | Promise<TopSnapshot> {\n if (typeof input !== 'number' && input.format === 'journal')\n return loadJournalTopSnapshot(rootDir, input.runDir, input.now ?? Date.now())\n if (typeof input !== 'number' && input.format === 'workflow') {\n const root = resolve(rootDir),\n dir = resolve(input.runDir),\n now = input.now ?? Date.now()\n const read = readSourceFile(join(dir, 'journal.jsonl'), 'journal', 'journal.jsonl')\n if (read.value === undefined)\n return Promise.resolve(\n topSnapshot(\n root,\n now,\n [],\n read.diagnostics.length\n ? [...read.diagnostics]\n : [{ source: 'journal', path: 'journal.jsonl', reason: 'missing' }],\n ),\n )\n try {\n const journal = workflowJournal(dir, read.value)\n const supervisor = buildSupervisorView(\n {\n id: journal.id,\n task: journal.id,\n status: 'unobserved',\n workspaceDir: root,\n budget: 0,\n budgetKnown: false,\n ...(journal.first ? { startedAt: journal.first } : {}),\n },\n dir,\n journal.events,\n [],\n now,\n journal.tails,\n )\n return Promise.resolve(\n topSnapshot(root, now, [\n {\n ...supervisor,\n driverSpend: { ...supervisor.driverSpend, usdKnown: false, tokensKnown: false },\n totals: { ...supervisor.totals, usdKnown: false, tokensKnown: false },\n },\n ]),\n )\n } catch {\n return Promise.resolve(\n topSnapshot(\n root,\n now,\n [],\n [{ source: 'journal', path: 'journal.jsonl', reason: 'invalid-state' }],\n ),\n )\n }\n }\n if (typeof input !== 'number')\n return loadDurableTopSnapshot(rootDir, input.runDir, input.now ?? Date.now())\n const now = input\n const root = resolve(rootDir)\n const supervisors: SupervisorView[] = []\n const diagnostics: TopSnapshotDiagnostic[] = []\n let discovered = 0\n const report = (runId: string, sources: readonly SourceDiagnostic[]): void => {\n for (const source of sources) diagnostics.push({ ...source, runId })\n }\n // `.loops` is the pre-rename state dir; runs already on disk there stay visible.\n for (const runsRoot of [supervisorRunsRoot(root), legacySupervisorRunsRoot(root)]) {\n if (!existsSync(runsRoot)) continue\n for (const entry of readdirSync(runsRoot)) {\n const dir = join(runsRoot, entry)\n if (!isDirectory(dir)) continue\n discovered += 1\n const state = readSupervisorState(dir)\n report(entry, state.diagnostics)\n if (!state.value) continue\n const journal = readJournal(dir)\n const progress = readSourceFile(join(dir, 'progress.ndjson'), 'progress', 'progress.ndjson')\n const workerEvents = readWorkerEventTails(supervisorWorkersDir(dir), 8)\n report(entry, [...journal.diagnostics, ...progress.diagnostics, ...workerEvents.diagnostics])\n supervisors.push(\n buildSupervisorView(\n state.value,\n dir,\n journal.value,\n tailLines(progress.value, 8),\n now,\n workerEvents.value,\n ),\n )\n }\n }\n supervisors.sort((a, b) => String(b.startedAt ?? '').localeCompare(String(a.startedAt ?? '')))\n return topSnapshot(root, now, supervisors, diagnostics, discovered)\n}\n\nfunction topSnapshot(\n root: string,\n now: number,\n supervisors: SupervisorView[],\n diagnostics: TopSnapshotDiagnostic[] = [],\n discovered = 1,\n pursuit?: PursuitProjection,\n): TopSnapshot {\n return {\n root,\n generatedAt: now,\n supervisors,\n completeness: diagnostics.length ? 'partial' : 'complete',\n diagnostics,\n discovered,\n loaded: supervisors.length,\n ...(pursuit ? { pursuit } : {}),\n }\n}\n\nasync function loadDurableTopSnapshot(\n rootDir: string,\n runDir: string,\n now: number,\n): Promise<TopSnapshot> {\n const root = resolve(rootDir)\n let pursuit: PursuitProjection | undefined\n let source: TopSnapshotDiagnosticSource = 'observer-journal'\n let path = 'observer.jsonl'\n try {\n if (typeof runDir !== 'string' || !runDir.trim())\n throw new TypeError('runDir must be non-empty')\n const journal = await FileObserverJournal.open(join(resolve(runDir), path))\n if (!journal) return topSnapshot(root, now, [], [{ source, path, reason: 'missing' }])\n pursuit = projectPursuit(await journal.read())\n source = 'journal'\n path = '.'\n const discovery = await discoverDurableSupervisionRun(runDir)\n // An actual run id stays the row identity; the canonical projection retains every attempt.\n const latest = new Map(pursuit.runs.map((run) => [run.runId, run]))\n path = 'spawn-journal.jsonl'\n const spawnJournal = new FileSpawnJournal(discovery.spawnJournalPath)\n // A child's metered turns journal under `<root>/<child>`; the spawn tree already shows them.\n const rows = [...latest.values()].filter(\n (run) => !discovery.roots.some((id) => run.runId.startsWith(`${id}/`)),\n )\n const supervisors = await Promise.all(\n rows.map(async (run) => {\n // SupervisorOpts.runId is the journal root key; require its recorded discovery binding.\n const binding = discovery.roots.find((id) => id === run.runId)\n // A retained run journals admissions only and writes no spawn journal to bind.\n if (!binding && existsSync(discovery.spawnJournalPath))\n throw new Error('observer run has no discovered spawn root')\n const events = binding ? ((await spawnJournal.loadTree(binding)) ?? []) : []\n const rootSpawn = events.find((event) => event.kind === 'spawned' && event.id === binding)\n const budget = rootSpawn?.kind === 'spawned' ? rootSpawn.budget?.maxTokens : undefined\n // supervise() records no agent.run for its root; the spawn journal's settlement is the end.\n const terminal = events\n .filter((e) => e.id === binding && (e.kind === 'settled' || e.kind === 'cancelled'))\n .at(-1)\n const settledAt =\n run.settledAt === undefined ? terminal?.at : new Date(run.settledAt).toISOString()\n return buildSupervisorView(\n {\n id: run.runId,\n status:\n run.status !== 'running' || terminal === undefined\n ? run.status\n : terminal.kind === 'settled'\n ? terminal.status\n : 'cancelled',\n task: run.runId,\n workspaceDir: root,\n budget: budget ?? 0,\n budgetKnown: budget !== undefined,\n startedAt: new Date(run.firstObservedAt).toISOString(),\n ...(settledAt === undefined ? {} : { completedAt: settledAt }),\n },\n discovery.runDir,\n events.filter(isSpawnEvent),\n run.error ? [run.error] : [],\n now,\n undefined,\n run,\n )\n }),\n )\n return topSnapshot(root, now, supervisors, [], 1, pursuit)\n } catch (error) {\n const reason =\n isRecord(error) && typeof error.code === 'string' ? 'unreadable' : 'invalid-state'\n return topSnapshot(root, now, [], [{ source, path, reason }], 1, pursuit)\n }\n}\n\n/** Old Discovery and factory roots may predate observer.jsonl; absence never establishes known totals. */\nasync function loadJournalTopSnapshot(\n rootDir: string,\n runDir: string,\n now: number,\n): Promise<TopSnapshot> {\n const root = resolve(rootDir),\n dir = resolve(runDir)\n try {\n const discovery = await discoverDurableSupervisionRun(dir)\n const journal = new FileSpawnJournal(discovery.spawnJournalPath)\n const supervisors = await Promise.all(\n discovery.roots.map(async (id, i) => {\n const events = (await journal.loadTree(id)) ?? []\n const terminal = events\n .filter(\n (event) => event.id === id && (event.kind === 'settled' || event.kind === 'cancelled'),\n )\n .at(-1)\n const first = events.find((event) => event.kind === 'spawned' && event.id === id)\n const budget = first?.kind === 'spawned' ? first.budget?.maxTokens : undefined\n const tails = readWorkerEventTails(supervisorWorkersDir(dir), 8)\n const view = buildSupervisorView(\n {\n id,\n task: id,\n workspaceDir: root,\n status:\n terminal?.kind === 'settled'\n ? terminal.status\n : terminal?.kind === 'cancelled'\n ? 'cancelled'\n : 'running',\n budget: budget ?? 0,\n budgetKnown: budget !== undefined,\n ...(discovery.rootsBegunAt[i] ? { startedAt: discovery.rootsBegunAt[i]! } : {}),\n ...(terminal?.at ? { completedAt: terminal.at } : {}),\n },\n dir,\n events.filter(isSpawnEvent),\n [],\n now,\n tails.value,\n )\n return { ...view, totals: { ...view.totals, usdKnown: false, tokensKnown: false } }\n }),\n )\n return topSnapshot(\n root,\n now,\n supervisors,\n [{ source: 'observer-journal', path: 'observer.jsonl', reason: 'missing' }],\n discovery.roots.length,\n )\n } catch {\n return topSnapshot(\n root,\n now,\n [],\n [{ source: 'journal', path: 'spawn-journal.jsonl', reason: 'invalid-state' }],\n )\n }\n}\n\nfunction observerSpend(spend: Spend | undefined, gaps: readonly SpendChannel[] = []): SpendStats {\n const parsed = parseSpend(spend)\n return {\n ...parsed,\n usdKnown: spend !== undefined && parsed.usdKnown !== false && !gaps.includes('usd'),\n tokensKnown: spend !== undefined && parsed.tokensKnown !== false && !gaps.includes('tokens'),\n }\n}\n\n/**\n * The journal file a run dir actually carries. `createFileRunContext` — this repo's own durable\n * writer — names it `spawn-journal.jsonl`; `journal.jsonl` is the retired bare-event file older\n * runs left behind. First existing name wins; a reader that knew only the retired name would show\n * zero workers for every current run.\n */\nconst journalFileNames = ['spawn-journal.jsonl', 'journal.jsonl'] as const\n\nfunction readJournal(eventDir: string): SourceRead<TopJournalEvent[]> {\n const path = journalFileNames.find((candidate) => existsSync(join(eventDir, candidate)))\n if (!path) return { value: [], diagnostics: [] }\n const read = readSourceFile(join(eventDir, path), 'journal', path)\n if (read.value === undefined) return { value: [], diagnostics: read.diagnostics }\n const out: TopJournalEvent[] = []\n let partial = false\n for (const line of read.value.split('\\n')) {\n const trimmed = line.trim()\n if (!trimmed) continue\n try {\n const parsed = JSON.parse(trimmed) as Record<string, unknown>\n const events =\n parsed.kind === 'event' || parsed.kind === 'events'\n ? spawnJournalRecordEvents(parsed)\n : [parsed]\n for (const event of events) if (isSpawnEvent(event)) out.push(event)\n } catch {\n // A corrupt line is expected while the writer is mid-append; keep the lines that parsed.\n partial = true\n }\n }\n return {\n value: out,\n diagnostics: partial ? [{ source: 'journal', path, reason: 'partial-json' }] : [],\n }\n}\n\nfunction buildSupervisorView(\n state: SupervisorState,\n stateDir: string,\n events: readonly TopJournalEvent[],\n progressTail: readonly string[],\n now: number,\n workerEventTails = new Map<string, WorkerEventTail>(),\n accounting?: PursuitRunProjection,\n): SupervisorView {\n const workers = new Map<string, MutableWorker>()\n let driverSpend = emptySpend\n // State and journal have different producers and root ids. Exclude both, or the journal's\n // root becomes a phantom running worker that captures steer and cancel operations.\n const journalRootId = events.find(\n (event) => event.kind === 'spawned' && !event.parent && event.label === 'root',\n )?.id\n const isRoot = (id: string): boolean => id === state.id || id === journalRootId\n\n for (const event of events) {\n if (isRoot(event.id) || (event.kind === 'spawned' && !event.parent && event.label === 'root')) {\n if (event.kind === 'metered' && event.accountingOnly !== true) {\n driverSpend = addSpend(driverSpend, parseSpend(event.spend))\n }\n continue\n }\n const worker = ensureWorker(workers, event.id)\n if (event.kind === 'spawned') {\n worker.label = event.label ?? worker.label\n if (event.parent) worker.parent = event.parent\n if (event.runtime) worker.runtime = event.runtime\n worker.status = 'running'\n if (event.at) worker.startedAt = event.at\n const budget = parseBudget(event.budget)\n if (budget) worker.budget = budget\n } else if (event.kind === 'settled' || event.kind === 'cancelled') {\n if (event.at) worker.endedAt = event.at\n if (event.kind === 'settled') {\n worker.status = event.status === 'down' ? 'down' : 'done'\n if (event.outRef) worker.outRef = event.outRef\n if (event.infra !== undefined) worker.infra = event.infra\n const verdict = describeVerdict(event.verdict)\n if (verdict) worker.verdict = verdict\n } else {\n worker.status = 'cancelled'\n if (event.reason) worker.reason = event.reason\n }\n if (event.kind === 'settled' || event.spent !== undefined) {\n worker.spend = addSpend(worker.spend, parseSpend(event.spent))\n // Live progress is cumulative; terminal spend replaces it rather than counting it twice.\n worker.metered = emptySpend\n }\n } else if (event.kind === 'progress') {\n worker.metered = parseSpend(event.spend)\n } else if (event.accountingOnly !== true) {\n worker.metered = addSpend(worker.metered, parseSpend(event.spend))\n }\n }\n\n if (accounting) {\n driverSpend = observerSpend(accounting.totals.exclusiveByNode[accounting.runId])\n for (const worker of workers.values()) {\n worker.spend = observerSpend(\n accounting.totals.exclusiveByNode[worker.id],\n accounting.spendGaps?.find((gap) => gap.id === worker.id)?.channels,\n )\n worker.metered = emptySpend\n }\n }\n const workerViews = [...workers.values()]\n .map((worker) => {\n // Tails are keyed by file stem, which the writer put through `safeWorkerFile`; a label\n // carrying characters that stem strips would otherwise never find its own events.\n const tail =\n workerEventTails.get(worker.label) ??\n workerEventTails.get(safeWorkerFile(worker.label)) ??\n workerEventTails.get(safeWorkerFile(worker.id)) ??\n workerEventTails.get(worker.id)\n worker.liveTail = tail?.lines ?? []\n if (tail?.file) worker.eventFile = tail.file\n return finalizeWorker(worker, now)\n })\n .sort((a, b) => compareWorker(a, b))\n\n const totals = supervisorTotals(state, workerViews, driverSpend, now)\n if (accounting) {\n const spend = observerSpend(\n accounting.totals.inclusive,\n accounting.spendGaps?.flatMap((gap) => gap.channels),\n )\n Object.assign(totals, spend, { tokensTotal: spend.tokensInput + spend.tokensOutput })\n }\n return {\n id: state.id,\n stateDir,\n status: state.status,\n task: state.task,\n workspaceDir: state.workspaceDir,\n budget: state.budget,\n ...(state.budgetKnown === undefined ? {} : { budgetKnown: state.budgetKnown }),\n ...selectFields(\n state,\n [\n 'verifyCmd',\n 'workerModel',\n 'driverModel',\n 'verdict',\n 'progress',\n 'startedAt',\n 'completedAt',\n ],\n Boolean,\n ),\n ...selectFields(\n state,\n ['maxSandboxes', 'maxLifetimeSeconds', 'idleTimeoutSeconds', 'maxUsd', 'maxDepth'],\n (value) => value !== undefined,\n ),\n ...(state.result?.spentUsd !== undefined ? { resultSpentUsd: state.result.spentUsd } : {}),\n ...(state.result?.spentTokens !== undefined\n ? { resultSpentTokens: state.result.spentTokens }\n : {}),\n workers: workerViews,\n progressTail: [...progressTail],\n journalTail: events.slice(-12),\n driverSpend,\n totals,\n }\n}\n\nfunction selectFields<T, K extends keyof T>(\n value: T,\n keys: readonly K[],\n include: (value: T[K]) => boolean,\n): Partial<Pick<T, K>> {\n const selected: Partial<Pick<T, K>> = {}\n for (const key of keys) if (include(value[key])) selected[key] = value[key]\n return selected\n}\n\nfunction ensureWorker(workers: Map<string, MutableWorker>, id: string): MutableWorker {\n const existing = workers.get(id)\n if (existing) return existing\n const created: MutableWorker = {\n id,\n label: id,\n status: 'running',\n spend: emptySpend,\n metered: emptySpend,\n liveTail: [],\n }\n workers.set(id, created)\n return created\n}\n\nfunction finalizeWorker(worker: MutableWorker, now: number): WorkerView {\n const startMs = parseTime(worker.startedAt)\n const endMs = parseTime(worker.endedAt) ?? (worker.status === 'running' ? now : startMs)\n const latencyMs = startMs !== undefined && endMs !== undefined ? Math.max(0, endMs - startMs) : 0\n return { ...worker, latencyMs }\n}\n\nfunction supervisorTotals(\n state: SupervisorState,\n workers: readonly WorkerView[],\n driverSpend: SpendStats,\n now: number,\n): SupervisorTotals {\n const spend = workers.map(totalSpend).reduce(addSpend, driverSpend)\n const counts = { running: 0, done: 0, down: 0, cancelled: 0 }\n for (const worker of workers) counts[worker.status] += 1\n const started = parseTime(state.startedAt)\n const completed = parseTime(state.completedAt)\n const latencyMs = started !== undefined ? Math.max(0, (completed ?? now) - started) : 0\n const latencies = workers.map((worker) => worker.latencyMs).filter((ms) => ms > 0)\n return {\n workers: workers.length,\n ...counts,\n ...(spend.usdKnown === false ? { usdKnown: false } : {}),\n ...(spend.tokensKnown === false ? { tokensKnown: false } : {}),\n inFlight: counts.running,\n settled: workers.length - counts.running,\n tokensInput: spend.tokensInput,\n tokensOutput: spend.tokensOutput,\n tokensTotal: spend.tokensInput + spend.tokensOutput,\n usd: spend.usd > 0 ? spend.usd : (state.result?.spentUsd ?? 0),\n latencyMs,\n workerLatency: distribution(latencies),\n }\n}\n\nexport function aggregateSnapshot(snapshot: TopSnapshot) {\n const complete = snapshot.completeness === 'complete'\n return {\n usdKnown: complete && snapshot.supervisors.every((row) => row.totals.usdKnown !== false),\n tokensKnown: complete && snapshot.supervisors.every((row) => row.totals.tokensKnown !== false),\n supervisors: snapshot.supervisors.length,\n workers: sum(snapshot.supervisors.map((supervisor) => supervisor.totals.workers)),\n running: sum(snapshot.supervisors.map((supervisor) => supervisor.totals.running)),\n done: sum(snapshot.supervisors.map((supervisor) => supervisor.totals.done)),\n down: sum(snapshot.supervisors.map((supervisor) => supervisor.totals.down)),\n usd: sum(snapshot.supervisors.map((supervisor) => supervisor.totals.usd)),\n tokensInput: sum(snapshot.supervisors.map((supervisor) => supervisor.totals.tokensInput)),\n tokensOutput: sum(snapshot.supervisors.map((supervisor) => supervisor.totals.tokensOutput)),\n }\n}\n\nfunction compareWorker(a: WorkerView, b: WorkerView): number {\n const aStart = parseTime(a.startedAt) ?? 0\n const bStart = parseTime(b.startedAt) ?? 0\n if (a.status === 'running' && b.status !== 'running') return -1\n if (b.status === 'running' && a.status !== 'running') return 1\n return aStart - bStart || a.label.localeCompare(b.label)\n}\n\nexport function totalSpend(worker: WorkerView): SpendStats {\n return addSpend(worker.spend, worker.metered)\n}\n\nfunction addSpend(a: SpendStats, b: SpendStats): SpendStats {\n return {\n iterations: a.iterations + b.iterations,\n tokensInput: a.tokensInput + b.tokensInput,\n tokensOutput: a.tokensOutput + b.tokensOutput,\n usd: a.usd + b.usd,\n ms: a.ms + b.ms,\n ...(a.usdKnown === false || b.usdKnown === false ? { usdKnown: false } : {}),\n ...(a.tokensKnown === false || b.tokensKnown === false ? { tokensKnown: false } : {}),\n }\n}\n\nexport function parseSpend(value: unknown): SpendStats {\n if (!isRecord(value)) return emptySpend\n const tokens = isRecord(value.tokens) ? value.tokens : {}\n return {\n ...(value.usdKnown === false ? { usdKnown: false } : {}),\n ...(value.tokensKnown === false || tokens.tokensKnown === false ? { tokensKnown: false } : {}),\n iterations: numberValue(value.iterations),\n tokensInput: numberValue(tokens.input),\n tokensOutput: numberValue(tokens.output),\n usd: numberValue(value.usd),\n ms: numberValue(value.ms),\n }\n}\n\nfunction parseBudget(value: unknown): BudgetStats | undefined {\n if (!isRecord(value)) return undefined\n const budget: BudgetStats = {\n ...(typeof value.maxIterations === 'number' ? { maxIterations: value.maxIterations } : {}),\n ...(typeof value.maxTokens === 'number' ? { maxTokens: value.maxTokens } : {}),\n ...(typeof value.maxUsd === 'number' ? { maxUsd: value.maxUsd } : {}),\n }\n return Object.keys(budget).length ? budget : undefined\n}\n\nfunction describeVerdict(value: unknown): string | undefined {\n if (!isRecord(value)) return undefined\n if (typeof value.valid === 'boolean') return value.valid ? 'valid' : 'invalid'\n if (typeof value.score === 'number') return `score ${value.score.toFixed(2)}`\n return undefined\n}\n\nfunction distribution(values: readonly number[]): Distribution {\n const sorted = [...values].sort((a, b) => a - b)\n return {\n n: sorted.length,\n min: sorted[0] ?? 0,\n median: percentile(sorted, 0.5),\n p90: percentile(sorted, 0.9),\n max: sorted[sorted.length - 1] ?? 0,\n }\n}\n\nfunction percentile(sorted: readonly number[], p: number): number {\n if (sorted.length === 0) return 0\n const idx = Math.min(sorted.length - 1, Math.max(0, Math.ceil(sorted.length * p) - 1))\n return sorted[idx] ?? 0\n}\n\n/**\n * Read one source file under a run directory. An absent file is not a defect on its own — the\n * writer may not have reached it yet — so it reads as `undefined` with no diagnostic; only a\n * failed read raises one. `path` stays run-relative and never carries file contents.\n */\nfunction readSourceFile(\n file: string,\n source: TopSnapshotDiagnosticSource,\n path: string,\n): SourceRead<string | undefined> {\n if (!existsSync(file)) return { value: undefined, diagnostics: [] }\n try {\n return { value: readFileSync(file, 'utf8'), diagnostics: [] }\n } catch {\n return { value: undefined, diagnostics: [{ source, path, reason: 'unreadable' }] }\n }\n}\n\nfunction tailLines(raw: string | undefined, maxLines: number): string[] {\n if (raw === undefined) return []\n return raw.trim().split('\\n').filter(Boolean).slice(-maxLines)\n}\n\nfunction readWorkerEventTails(\n dir: string,\n maxLines: number,\n): SourceRead<Map<string, WorkerEventTail>> {\n const out = new Map<string, WorkerEventTail>()\n if (!existsSync(dir)) return { value: out, diagnostics: [] }\n const workersDir = basename(dir)\n let entries: string[]\n try {\n entries = readdirSync(dir)\n } catch {\n return {\n value: out,\n diagnostics: [{ source: 'worker-tail', path: workersDir, reason: 'unreadable' }],\n }\n }\n const diagnostics: SourceDiagnostic[] = []\n for (const entry of entries) {\n // `<label>.inbox.ndjson` is the down-leg steer queue, not this worker's control-event log.\n if (!entry.endsWith('.ndjson') || entry.endsWith('.inbox.ndjson')) continue\n const file = join(dir, entry)\n const read = readSourceFile(file, 'worker-tail', join(workersDir, entry))\n diagnostics.push(...read.diagnostics)\n const lines = tailLines(read.value, maxLines)\n out.set(entry.slice(0, -'.ndjson'.length), { file, lines })\n }\n return { value: out, diagnostics }\n}\n\nfunction readSupervisorState(dir: string): SourceRead<SupervisorState | undefined> {\n const path = 'state.json'\n const read = readSourceFile(join(dir, path), 'supervisor-state', path)\n if (read.diagnostics.length > 0) return { value: undefined, diagnostics: read.diagnostics }\n const failed = (reason: TopSnapshotDiagnosticReason): SourceRead<undefined> => ({\n value: undefined,\n diagnostics: [{ source: 'supervisor-state', path, reason }],\n })\n if (read.value === undefined) return failed('missing')\n try {\n const parsed: unknown = JSON.parse(read.value)\n return isSupervisorState(parsed) ? { value: parsed, diagnostics: [] } : failed('invalid-state')\n } catch {\n return failed('partial-json')\n }\n}\n\nfunction isSupervisorState(value: unknown): value is SupervisorState {\n return (\n isRecord(value) &&\n Object.entries({\n id: 'string',\n status: 'string',\n task: 'string',\n workspaceDir: 'string',\n budget: 'number',\n }).every(([key, type]) => typeof value[key] === type)\n )\n}\n\nfunction isSpawnEvent<T>(value: T): value is T & TopJournalEvent {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.kind === 'string' &&\n ['spawned', 'settled', 'cancelled', 'metered', 'progress'].includes(value.kind)\n )\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction isDirectory(path: string): boolean {\n try {\n return statSync(path).isDirectory()\n } catch {\n return false\n }\n}\n\nexport function numberValue(value: unknown): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : 0\n}\n\nexport function parseTime(value: string | undefined): number | undefined {\n if (!value) return undefined\n const parsed = Date.parse(value)\n return Number.isFinite(parsed) ? parsed : undefined\n}\n\nfunction sum(values: readonly number[]): number {\n return values.reduce((total, value) => total + value, 0)\n}\n","import { createHash } from 'node:crypto'\nimport { existsSync, type FSWatcher, readdirSync, watch } from 'node:fs'\nimport { readFile, realpath, stat } from 'node:fs/promises'\nimport { createServer, type ServerResponse } from 'node:http'\nimport { createRequire } from 'node:module'\nimport { dirname, extname, resolve, sep } from 'node:path'\nimport { loadTopSnapshot, type TopSnapshot, type WorkerView } from './top-snapshot'\nimport { transcriptHistory, type transcriptRows, transcriptTail } from './top-transcript'\n\n/** A reconnect always receives current truth; deltas replace changed roots atomically. */\nexport interface TopSnapshotFrame {\n readonly sequence: number\n readonly observedAt: number\n readonly reset: boolean\n readonly snapshots: readonly TopSnapshot[]\n}\n\nexport interface TopWebOptions {\n readonly roots: readonly string[]\n /** Defaults to the installed agent-record browser asset export. */\n readonly assets?: string\n readonly host?: string\n readonly port?: number\n}\n\n/** Read-only web transport over the same snapshots as the terminal. No execution or writes. */\nexport async function serveTopWeb(options: TopWebOptions) {\n if (!options.roots.length) throw new Error('At least one --root is required')\n const roots = [...new Set(await Promise.all(options.roots.map((root) => realpath(root))))]\n const assets = await realpath(\n options.assets ??\n dirname(\n createRequire(import.meta.url).resolve('@drewstone/agent-record/workspace-viewer.js'),\n ),\n )\n for (const file of ['workspace-viewer.js', 'styles.css']) await stat(resolve(assets, file))\n const host = options.host ?? '127.0.0.1'\n const clients = new Set<ServerResponse>()\n const transcripts = new Set<() => void>()\n const snapshots = new Map<string, TopSnapshot>()\n const digests = new Map<string, string>()\n const watchers: FSWatcher[] = []\n let sequence = 0\n let reading = false\n let dirty = true\n let closed = false\n let scheduled: NodeJS.Timeout | undefined\n const send = (client: ServerResponse, frame: TopSnapshotFrame) => {\n if (client.writableLength > 1024 * 1024) return client.destroy()\n client.write(`id: ${frame.sequence}\\nevent: snapshot\\ndata: ${JSON.stringify(frame)}\\n\\n`)\n }\n let inFlight: Promise<void> = Promise.resolve()\n const read = async () => {\n reading = true\n dirty = false\n try {\n const changed: TopSnapshot[] = []\n for (const root of roots) {\n const snapshot = existsSync(resolve(root, 'observer.jsonl'))\n ? await loadTopSnapshot(root, { runDir: root })\n : existsSync(resolve(root, 'spawn-journal.jsonl'))\n ? await loadTopSnapshot(root, { runDir: root, format: 'journal' })\n : existsSync(resolve(root, 'journal.jsonl'))\n ? await loadTopSnapshot(root, { runDir: root, format: 'workflow' })\n : await loadRunsRoot(root)\n const digest = createHash('sha256')\n .update(\n JSON.stringify(snapshot, (key, value) =>\n key === 'generatedAt' || key === 'latencyMs' ? undefined : value,\n ),\n )\n .digest('hex')\n snapshots.set(root, snapshot)\n if (digests.get(root) !== digest) {\n changed.push(snapshot)\n digests.set(root, digest)\n }\n }\n if (changed.length) {\n const frame = {\n sequence: ++sequence,\n observedAt: Date.now(),\n reset: false,\n snapshots: changed,\n }\n for (const client of clients) send(client, frame)\n }\n for (const update of transcripts) update()\n } finally {\n reading = false\n if (dirty && !closed) schedule()\n }\n }\n const refresh = (): Promise<void> => {\n if (reading || closed) return inFlight\n inFlight = read()\n return inFlight\n }\n const schedule = () => {\n dirty = true\n if (!scheduled && !closed)\n scheduled = setTimeout(() => {\n scheduled = undefined\n void refresh().catch((error: unknown) => {\n for (const client of clients)\n client.write(\n `event: unavailable\\ndata: ${JSON.stringify({ message: String(error) })}\\n\\n`,\n )\n })\n }, 16)\n }\n await refresh()\n for (const root of roots) watchers.push(watch(root, { recursive: true }, schedule))\n // Watch notifications may be coalesced or lost; the same loader reconciles them without a second model.\n const reconcile = setInterval(schedule, 500)\n const heartbeat = setInterval(() => {\n for (const client of clients) client.write(': alive\\n\\n')\n }, 15_000)\n const server = createServer((request, response) => {\n void (async () => {\n const base = `http://${request.headers.host}`\n const incomingHost = new URL(base).hostname.replace(/^\\[|\\]$/g, '')\n if (\n !request.headers.host ||\n ![host, '127.0.0.1', 'localhost', '::1'].includes(incomingHost) ||\n (request.headers.origin && request.headers.origin !== base)\n ) {\n response.writeHead(403).end()\n return\n }\n if (request.method !== 'GET' && request.method !== 'HEAD') {\n response.writeHead(405, { Allow: 'GET, HEAD' }).end()\n return\n }\n const path = new URL(request.url ?? '/', base).pathname\n response.setHeader('Cache-Control', 'no-store')\n response.setHeader('X-Content-Type-Options', 'nosniff')\n if (path === '/api/top/events') {\n if (request.method === 'HEAD') {\n response.writeHead(200, { 'Content-Type': 'text/event-stream' }).end()\n return\n }\n response.writeHead(200, { 'Content-Type': 'text/event-stream', 'X-Accel-Buffering': 'no' })\n response.flushHeaders()\n clients.add(response)\n send(response, {\n sequence,\n observedAt: Date.now(),\n reset: true,\n snapshots: [...snapshots.values()],\n })\n response.on('close', () => clients.delete(response))\n } else if (/^\\/api\\/top\\/agents\\/\\d+\\/[^/]+\\/[^/]+\\/stream$/.test(path)) {\n const [, , , , rootIndex, runId, workerId] = path.split('/').map(decodeURIComponent)\n const root = roots[Number(rootIndex)]\n // A runs root keeps each run's journals, blobs and root stream in `<root>/<runId>`.\n const own =\n root && existsSync(resolve(root, runId!, 'observer.jsonl'))\n ? resolve(root, runId!)\n : undefined\n const runDir = own ?? root\n const pursuit = own\n ? (await loadTopSnapshot(root!, { runDir: own })).pursuit\n : root\n ? snapshots.get(root)?.pursuit\n : undefined\n const worker = (): WorkerView | undefined => {\n const run = root\n ? snapshots.get(root)?.supervisors.find((run) => run.id === runId)\n : undefined\n const node = run?.workers.find((node) => node.id === workerId)\n if (node || !run || run.id !== workerId) return node\n return {\n id: run.id,\n label: 'root',\n ...(runDir && existsSync(resolve(runDir, 'root-stream.jsonl'))\n ? { eventFile: resolve(runDir, 'root-stream.jsonl') }\n : {}),\n status:\n run.status === 'cancelled'\n ? 'cancelled'\n : run.status === 'done'\n ? 'done'\n : run.status === 'down'\n ? 'down'\n : 'running',\n startedAt: run.startedAt,\n endedAt: run.completedAt,\n latencyMs: run.totals.latencyMs,\n spend: run.driverSpend,\n metered: { iterations: 0, tokensInput: 0, tokensOutput: 0, usd: 0, ms: 0 },\n liveTail: run.progressTail,\n }\n }\n if (!worker()) {\n response.writeHead(404).end()\n return\n }\n let history: ReturnType<typeof transcriptRows> | undefined = await transcriptHistory(\n worker()!,\n runDir,\n pursuit?.nodes.find((node) => node.runId === runId && node.id === workerId),\n )\n response.writeHead(200, { 'Content-Type': 'text/event-stream', 'X-Accel-Buffering': 'no' })\n response.flushHeaders()\n if (request.method === 'HEAD') {\n response.end()\n return\n }\n const generation = Date.now()\n response.write(`event: reset\\ndata: ${JSON.stringify({ generation })}\\n\\n`)\n const seen = new Set<string>()\n let lastSeq = 0\n const update = () => {\n const node = worker()\n if (!node || response.writableLength > 1024 * 1024) {\n response.destroy()\n return\n }\n const events = (history ?? transcriptTail(node)).flatMap((row) => {\n const key = createHash('sha256').update(JSON.stringify(row)).digest('hex')\n if (seen.has(key)) return []\n seen.add(key)\n if (seen.size > 2000) seen.delete(seen.values().next().value!)\n return [{ ...row, seq: ++lastSeq }]\n })\n history = undefined\n const alive = node.status === 'running'\n response.write(\n `event: rows\\ndata: ${JSON.stringify({ generation, events, lastSeq, alive, window: 'recorded-tail' })}\\n\\n`,\n )\n if (!alive) {\n response.write('event: end\\ndata: {}\\n\\n')\n response.end()\n }\n }\n transcripts.add(update)\n response.on('close', () => transcripts.delete(update))\n update()\n } else if (path === '/api/top') {\n response.writeHead(200, { 'Content-Type': 'application/json' })\n response.end(\n JSON.stringify({\n sequence,\n observedAt: Date.now(),\n reset: true,\n snapshots: [...snapshots.values()],\n }),\n )\n } else if (path === '/') {\n response.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' })\n response.end(\n '<!doctype html><html><head><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Live agents</title><link rel=\"stylesheet\" href=\"/assets/styles.css\"></head><body><div id=\"agent-workspace\" data-mode=\"live\" data-api=\"/api/top\" data-theme=\"dark\"></div><script type=\"module\" src=\"/assets/workspace-viewer.js\"></script></body></html>',\n )\n } else if (path.startsWith('/assets/')) {\n const file = await realpath(resolve(assets, decodeURIComponent(path.slice(8))))\n if (!file.startsWith(assets + sep)) {\n response.writeHead(403).end()\n return\n }\n const kind = { '.js': 'text/javascript', '.css': 'text/css', '.woff2': 'font/woff2' }[\n extname(file)\n ]\n if (!kind) {\n response.writeHead(404).end()\n return\n }\n response.writeHead(200, { 'Content-Type': kind })\n response.end(request.method === 'HEAD' ? undefined : await readFile(file))\n } else response.writeHead(404).end()\n })().catch((error: unknown) => {\n if (!response.headersSent) response.writeHead(500, { 'Content-Type': 'application/json' })\n response.end(JSON.stringify({ error: String(error) }))\n })\n })\n let closing: Promise<void> | undefined\n const close = () =>\n (closing ??= (async () => {\n clearInterval(reconcile)\n clearInterval(heartbeat)\n for (const watcher of watchers) watcher.close()\n // A caller closes right after its run settles: let a read in flight finish, then read once\n // more, so a terminal record appended just before close reaches connected clients.\n await inFlight.catch(() => undefined)\n await refresh().catch(() => undefined)\n closed = true\n if (scheduled) clearTimeout(scheduled)\n // The run is over for this viewer: say so, so a client stops instead of reconnecting.\n for (const client of clients) client.end('event: end\\ndata: {}\\n\\n')\n transcripts.clear()\n server.closeAllConnections()\n await new Promise<void>((done, reject) =>\n server.close((error) =>\n error && (!('code' in error) || error.code !== 'ERR_SERVER_NOT_RUNNING')\n ? reject(error)\n : done(),\n ),\n )\n })())\n try {\n await new Promise<void>((done, reject) => {\n server.once('error', reject)\n server.listen(options.port ?? 0, host, done)\n })\n } catch (error) {\n await close()\n throw error\n }\n const address = server.address()\n if (!address || typeof address === 'string') throw new Error('Web server has no TCP address')\n return { url: `http://${host.includes(':') ? `[${host}]` : host}:${address.port}/`, close }\n}\n\n/** CLI options stay on agent-runtime-top; the renderer is supplied by its installed owner. */\nexport async function runTopWeb(argv: readonly string[]) {\n const values = (flag: string) =>\n argv.flatMap((arg, i) => (arg === flag ? [argv[i + 1] ?? ''] : []))\n const roots = values('--root')\n const port = Number(values('--port')[0] ?? 0)\n if (!Number.isInteger(port) || port < 0 || port > 65535) throw new Error('Invalid --port')\n const web = await serveTopWeb({\n roots: roots.length ? roots : [process.cwd()],\n ...(values('--assets')[0] ? { assets: values('--assets')[0] } : {}),\n port,\n ...(values('--host')[0] ? { host: values('--host')[0] } : {}),\n })\n process.stdout.write(`${JSON.stringify({ event: 'ready', url: web.url, pid: process.pid })}\\n`)\n const stop = () => {\n void web.close().catch((error: unknown) => {\n process.stderr.write(`${String(error)}\\n`)\n process.exitCode = 1\n })\n }\n process.once('SIGINT', stop)\n process.once('SIGTERM', stop)\n return web\n}\n\n/** A journal root holds one `<runId>/observer.jsonl` per retained run beside any workspace runs. */\nasync function loadRunsRoot(root: string): Promise<TopSnapshot> {\n const workspace = loadTopSnapshot(root)\n // A supervised run writes its spawn journal at begin and its observer journal after the first\n // turn; either one makes the run a card, so it appears as soon as supervision starts.\n const has = (runId: string, file: string) => existsSync(resolve(root, runId, file))\n const runIds = readdirSync(root, { withFileTypes: true })\n .filter(\n (entry) =>\n entry.isDirectory() &&\n (has(entry.name, 'observer.jsonl') || has(entry.name, 'spawn-journal.jsonl')),\n )\n .map((entry) => entry.name)\n if (!runIds.length) return workspace\n const runs = await Promise.all(\n runIds.map((runId) =>\n loadTopSnapshot(root, {\n runDir: resolve(root, runId),\n ...(has(runId, 'observer.jsonl') ? {} : { format: 'journal' as const }),\n }),\n ),\n )\n const diagnostics = [\n ...workspace.diagnostics,\n ...runs.flatMap((run, i) => run.diagnostics.map((d) => ({ ...d, runId: runIds[i] }))),\n ]\n const supervisors = [...workspace.supervisors, ...runs.flatMap((run) => run.supervisors)]\n return {\n ...workspace,\n supervisors,\n diagnostics,\n completeness: diagnostics.length ? 'partial' : 'complete',\n discovered: workspace.discovered + runIds.length,\n loaded: supervisors.length,\n }\n}\n"],"mappings":"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"}
package/dist/tui/bin.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { l as cancelWorker, n as cancelRun, w as writeWorkerSteer, y as supervisorRunsRoot } from "../run-cancellation-Cpm-BIUu.js";
3
- import { a as numberValue, c as totalSpend, i as loadTopSnapshot, o as parseSpend, r as aggregateSnapshot, s as parseTime, t as runTopWeb } from "../top-web-BXICdHgc.js";
3
+ import { a as numberValue, c as totalSpend, i as loadTopSnapshot, o as parseSpend, r as aggregateSnapshot, s as parseTime, t as runTopWeb } from "../top-web-CWcNwaRb.js";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { resolve } from "node:path";
6
6
  import { hostname, userInfo } from "node:os";
@@ -1,4 +1,4 @@
1
- import { Hr as provisionSupervisor, L as Spend, M as Budget, Wu as PursuitProjection } from "../types-BfnQq-_k.js";
1
+ import { Hr as provisionSupervisor, L as Spend, M as Budget, Wu as PursuitProjection } from "../types-C2fJMeEi.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-BWEeWag1.js";
2
- import { i as loadTopSnapshot, n as serveTopWeb } from "../top-web-BXICdHgc.js";
1
+ import { t as provisionSupervisor } from "../provision-supervisor-Bvqnu3xm.js";
2
+ import { i as loadTopSnapshot, n as serveTopWeb } from "../top-web-CWcNwaRb.js";
3
3
  export { loadTopSnapshot, provisionSupervisor, serveTopWeb };
@@ -19077,6 +19077,8 @@ declare const runtimeFailureCauseSchema: z.ZodReadonly<z.ZodObject<{
19077
19077
  }>;
19078
19078
  cause: z.ZodString;
19079
19079
  providerCode: z.ZodOptional<z.ZodString>;
19080
+ providerStatus: z.ZodOptional<z.ZodNumber>;
19081
+ retryAfterMs: z.ZodOptional<z.ZodNumber>;
19080
19082
  remediation: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
19081
19083
  cause: z.ZodEnum<{
19082
19084
  api_key_selected: "api_key_selected";
@@ -19636,4 +19638,4 @@ interface KnowledgeReadinessDecision {
19636
19638
  nonBlockingGapIds: string[];
19637
19639
  }
19638
19640
  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 };
19639
- //# sourceMappingURL=types-BfnQq-_k.d.ts.map
19641
+ //# sourceMappingURL=types-C2fJMeEi.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-runtime",
3
- "version": "2.0.2",
3
+ "version": "2.2.1",
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": {
@@ -124,7 +124,7 @@
124
124
  "@tangle-network/agent-provider-daytona": "0.6.1",
125
125
  "@tangle-network/agent-provider-e2b": "0.6.1",
126
126
  "@tangle-network/agent-provider-tangle": "4.5.1",
127
- "@tangle-network/sandbox": "1.0.33",
127
+ "@tangle-network/sandbox": "1.0.40",
128
128
  "@types/node": "26.6.5",
129
129
  "@types/tar-stream": "3.1.5",
130
130
  "miniflare": "4.20260730.0",