@tangle-network/agent-runtime 0.344.0 → 0.349.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/{activation-C5rFWXGj.js → activation-tNGW73Y9.js} +4 -4
  2. package/dist/{activation-C5rFWXGj.js.map → activation-tNGW73Y9.js.map} +1 -1
  3. package/dist/{activation-CGtGr0qu.d.ts → activation-wBipBkCf.d.ts} +2 -2
  4. package/dist/agent.d.ts +1 -1
  5. package/dist/agent.js +3 -3
  6. package/dist/{bundle-DKQtOO9d.js → bundle-1xaJEgjq.js} +2 -2
  7. package/dist/{bundle-DKQtOO9d.js.map → bundle-1xaJEgjq.js.map} +1 -1
  8. package/dist/candidate-execution/index.js +4 -4
  9. package/dist/{coordination-manager-T98ZbsEt.js → coordination-manager-B2Z_MmL9.js} +22 -19
  10. package/dist/coordination-manager-B2Z_MmL9.js.map +1 -0
  11. package/dist/{delegate-CjdtLf1v.js → delegate-Dr-63jFl.js} +2 -2
  12. package/dist/{delegate-CjdtLf1v.js.map → delegate-Dr-63jFl.js.map} +1 -1
  13. package/dist/durable.d.ts +7 -2
  14. package/dist/durable.js +129 -117
  15. package/dist/durable.js.map +1 -1
  16. package/dist/{graph-kgzTaNMA.js → graph-DPejYB3C.js} +6 -5
  17. package/dist/graph-DPejYB3C.js.map +1 -0
  18. package/dist/{improve-DevAd83a.js → improve-DwSahPi1.js} +7 -7
  19. package/dist/{improve-DevAd83a.js.map → improve-DwSahPi1.js.map} +1 -1
  20. package/dist/index.d.ts +3 -3
  21. package/dist/index.js +9 -9
  22. package/dist/intelligence.d.ts +2 -2
  23. package/dist/intelligence.js +6 -6
  24. package/dist/kernel.d.ts +2 -2
  25. package/dist/kernel.js +11 -11
  26. package/dist/{loop-runner-DsVqEv8O.d.ts → loop-runner-C6pGq-2l.d.ts} +2 -2
  27. package/dist/{loop-runner-BM509Zmp.js → loop-runner-CP6MfO1b.js} +2 -2
  28. package/dist/{loop-runner-BM509Zmp.js.map → loop-runner-CP6MfO1b.js.map} +1 -1
  29. package/dist/loop-runner-bin.d.ts +1 -1
  30. package/dist/loop-runner-bin.js +1 -1
  31. package/dist/mcp/bin.js +3 -3
  32. package/dist/mcp/index.d.ts +1 -1
  33. package/dist/mcp/index.js +6 -6
  34. package/dist/mcp/index.js.map +1 -1
  35. package/dist/model-policy-CyCUwHed.js.map +1 -1
  36. package/dist/{prepare-TEEHSJwq.js → prepare-B9wWffjO.js} +3 -3
  37. package/dist/{prepare-TEEHSJwq.js.map → prepare-B9wWffjO.js.map} +1 -1
  38. package/dist/{profile-6OLpbjvV.js → profile-JLJd2wFG.js} +2 -2
  39. package/dist/{profile-6OLpbjvV.js.map → profile-JLJd2wFG.js.map} +1 -1
  40. package/dist/profiles.d.ts +1 -1
  41. package/dist/{provision-supervisor-CysVhSqV.js → provision-supervisor-C4v2vqDo.js} +6 -6
  42. package/dist/{provision-supervisor-CysVhSqV.js.map → provision-supervisor-C4v2vqDo.js.map} +1 -1
  43. package/dist/{durable-file-DLcrzrjL.js → record-events-D93DkpAx.js} +100 -3
  44. package/dist/record-events-D93DkpAx.js.map +1 -0
  45. package/dist/{run-cancellation-CEDiqfhC.js → run-cancellation-CzFhQGMa.js} +11 -9
  46. package/dist/run-cancellation-CzFhQGMa.js.map +1 -0
  47. package/dist/{runtime-B_93oWEv.js → runtime-CsvGCQpl.js} +448 -55
  48. package/dist/runtime-CsvGCQpl.js.map +1 -0
  49. package/dist/{sandbox-profile-compat-_fEtHPCj.js → sandbox-profile-compat-DtuJWFrM.js} +2 -2
  50. package/dist/sandbox-profile-compat-DtuJWFrM.js.map +1 -0
  51. package/dist/{search-executor-t05_9Wwk.js → search-executor-CCb82Umc.js} +5 -5
  52. package/dist/search-executor-CCb82Umc.js.map +1 -0
  53. package/dist/{server-DjrVWzH2.js → server-CKPwZU-I.js} +4 -4
  54. package/dist/{server-DjrVWzH2.js.map → server-CKPwZU-I.js.map} +1 -1
  55. package/dist/{structural-rollout-CpJknIaL.js → structural-rollout-DylC_fwU.js} +3 -3
  56. package/dist/{structural-rollout-CpJknIaL.js.map → structural-rollout-DylC_fwU.js.map} +1 -1
  57. package/dist/{supervise-BuVVC7Bl.js → supervise-BGfm2GlY.js} +293 -87
  58. package/dist/supervise-BGfm2GlY.js.map +1 -0
  59. package/dist/{supervisor-D3M9ab1v.js → supervisor-wS9Ehz_x.js} +454 -187
  60. package/dist/supervisor-wS9Ehz_x.js.map +1 -0
  61. package/dist/testing.d.ts +2 -2
  62. package/dist/testing.js +13 -13
  63. package/dist/{top-snapshot-BGYI6G6K.js → top-snapshot-CflmaDgk.js} +6 -4
  64. package/dist/top-snapshot-CflmaDgk.js.map +1 -0
  65. package/dist/tui/bin.js +2 -2
  66. package/dist/tui/index.d.ts +1 -1
  67. package/dist/tui/index.js +2 -2
  68. package/dist/{types-DztCeYd6.d.ts → types-C8BGOCBn.d.ts} +286 -34
  69. package/package.json +11 -11
  70. package/skills/agent-graphs/SKILL.md +40 -2
  71. package/skills/graph-designer/SKILL.md +6 -0
  72. package/skills/profile-authoring/SKILL.md +1 -1
  73. package/dist/coordination-manager-T98ZbsEt.js.map +0 -1
  74. package/dist/durable-file-DLcrzrjL.js.map +0 -1
  75. package/dist/graph-kgzTaNMA.js.map +0 -1
  76. package/dist/run-cancellation-CEDiqfhC.js.map +0 -1
  77. package/dist/runtime-B_93oWEv.js.map +0 -1
  78. package/dist/sandbox-profile-compat-_fEtHPCj.js.map +0 -1
  79. package/dist/search-executor-t05_9Wwk.js.map +0 -1
  80. package/dist/supervise-BuVVC7Bl.js.map +0 -1
  81. package/dist/supervisor-D3M9ab1v.js.map +0 -1
  82. package/dist/top-snapshot-BGYI6G6K.js.map +0 -1
package/dist/testing.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $f as CoordinationDeliveryEvidence, Bu as runGraphWithTestBrain, Ct as SuperviseProfileEntry, Ef as StopRule, Jm as ToolLoopToolCall, Jp as Inbox, Km as ToolLoopCompactionOptions, Lu as RunGraphTestOptions, M as Budget, Oi as ResultBlobStore, Ov as AuthorizeDownMessage, Rv as MapOnSettleRoute, Sy as AnalystRegistry, Uf as SupervisorFinalizer, Um as ToolLoopCallContext, Vi as Agent, Wm as ToolLoopChat, _t as PeerAuditAccess, ad as superviseWithTestBrain, af as supervisorAgentWithTestBrain, bt as SpawnPreflightContext, dv as RouteFlow, ev as CoordinationEvent, ft as CoordinationTools, gt as MakeWorkerAgent, gv as EscalateQuestion, ht as GraphSubtasks, hv as ChildQuestionInbox, jf as RunCancelRequest, jv as ContinuityMode, mf as SupervisorAgentTestDeps, mg as DeliverableSpec, mt as GraphSubtaskPreparation, np as PriorCoordination, ov as WorkerWatchOptions, ox as HarnessTranscriptCapture, qm as ToolLoopMessageRecord, sv as DecideGate, sy as McpToolDescriptor, ud as SuperviseTestOptions, uy as BusRecord, wy as AnalyzeOnSettleRoute, xp as SpawnResourceReader, xt as SpawnRefusal, yf as ManagerWakePolicy, yt as SpawnPreflight, zm as RouterResponseReceipt } from "./types-DztCeYd6.js";
1
+ import { Af as SupervisorAgentTestDeps, Ag as DeliverableSpec, By as AnalyzeOnSettleRoute, Ct as SuperviseProfileEntry, Cv as DecideGate, Cy as McpToolDescriptor, Dv as RouteFlow, Ey as BusRecord, Ff as ManagerWakePolicy, Hf as StopRule, Ii as ResultBlobStore, Ju as RunGraphTestOptions, Lp as SpawnResourceReader, M as Budget, Mv as EscalateQuestion, Ry as AnalystRegistry, Sv as WorkerWatchOptions, Sx as HarnessTranscriptCapture, Wv as AuthorizeDownMessage, Yi as Agent, Zu as runGraphWithTestBrain, _t as PeerAuditAccess, ah as ToolLoopCallContext, ap as SupervisorFinalizer, bt as SpawnPreflightContext, ch as ToolLoopCompactionOptions, ey as MapOnSettleRoute, ft as CoordinationTools, gd as superviseWithTestBrain, gt as MakeWorkerAgent, gv as CoordinationEvent, hp as CoordinationDeliveryEvidence, ht as GraphSubtasks, jv as ChildQuestionInbox, lh as ToolLoopMessageRecord, mt as GraphSubtaskPreparation, oh as ToolLoopChat, qf as RunCancelRequest, qv as ContinuityMode, th as RouterResponseReceipt, uh as ToolLoopToolCall, um as Inbox, vp as PriorCoordination, xd as SuperviseTestOptions, xf as supervisorAgentWithTestBrain, xt as SpawnRefusal, yt as SpawnPreflight } from "./types-C8BGOCBn.js";
2
2
  import { AgentImprovementProposal, AgentProfile, AgentProfileImprovementMeasuredComparison, SandboxSizePreset } from "@tangle-network/agent-interface";
3
3
  //#region src/runtime/supervise/router-transcript.d.ts
4
4
  /** What the brain returned for one turn, as the recorder keeps it. */
@@ -122,7 +122,7 @@ interface DriverAgentOptions {
122
122
  * into it), an absolute deadline, the driver's own stop, and abort, all checked before each
123
123
  * turn. Without a deadline, a manager stops once it has overdrawn its pool by the pool's size
124
124
  * again, and a brain that reports no usage keeps a 16-turn bound unless a dollar cap applies. A manager awaits one settlement per turn, so the old default of 16 ended any manager
125
- * with more than about 14 workers and tore its unfinished workers down: measured 2026-09-25 on
125
+ * with more than about 14 workers and tore its unfinished workers down: on
126
126
  * a 1 + 20 + 400 tree, 124 of 420 agents settled `down` at 16 and none at 0. */
127
127
  readonly maxTurns?: number;
128
128
  /** Injected clock for the in-loop absolute-deadline guard — keeps the deadline check
package/dist/testing.js CHANGED
@@ -1,13 +1,13 @@
1
- import { P as canonicalCandidateDigest$1, R as immutableCandidateValue } from "./sandbox-profile-compat-_fEtHPCj.js";
2
- import { c as verifyAgentImprovementProposal } from "./activation-C5rFWXGj.js";
3
- import { a as applyExactAgentProfileDiff, v as parseExactAgentProfile } from "./profile-6OLpbjvV.js";
4
- import { T as supervisorAgentWithTestBrain, k as driverAgent, r as superviseWithTestBrain } from "./supervise-BuVVC7Bl.js";
5
- import { r as runGraphWithTestBrain } from "./graph-kgzTaNMA.js";
1
+ import { P as canonicalCandidateDigest$1, R as immutableCandidateValue } from "./sandbox-profile-compat-DtuJWFrM.js";
2
+ import { c as verifyAgentImprovementProposal } from "./activation-tNGW73Y9.js";
3
+ import { a as applyExactAgentProfileDiff, v as parseExactAgentProfile } from "./profile-JLJd2wFG.js";
4
+ import { D as supervisorAgentWithTestBrain, j as driverAgent, r as superviseWithTestBrain } from "./supervise-BGfm2GlY.js";
5
+ import { r as runGraphWithTestBrain } from "./graph-DPejYB3C.js";
6
6
  import { SANDBOX_SIZE_PRESET_NAMES, canonicalAgentProfileDigest } from "@tangle-network/agent-interface";
7
7
  //#region src/testing/fixtures/agent-improvement-proposal.json
8
8
  var agent_improvement_proposal_default = {
9
9
  changedSurfaces: ["prompt"],
10
- digest: "sha256:727d9eb1f5d6716571fe7f8d67df25f43b81b0ad14205fbb9a64215b8b8170c2",
10
+ digest: "sha256:7d583d2e3e93ab1a86dc609241c43622db2207340ffae8b94ab124ab27899a5e",
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": "0.344.0"
4581
+ "runtimeVersion": "0.349.0"
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:9ae2f6d5757c31423933c2fb9552d1bd123964f8e6725250f00bb6c3688e35cb",
4693
- "runId": "agent-runtime-0.344.0-proposal-fixture",
4692
+ "recordDigest": "sha256:cb15408c5888b4d7fc8dd73bcdb7d2842722a18898bc365ca8fbd347c768b111",
4693
+ "runId": "agent-runtime-0.349.0-proposal-fixture",
4694
4694
  "schema": "agent-candidate-experiment"
4695
4695
  }
4696
4696
  },
@@ -4713,13 +4713,13 @@ 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-0.344.0-proposal-fixture"
4716
+ runId: "agent-runtime-0.349.0-proposal-fixture"
4717
4717
  };
4718
4718
  //#endregion
4719
4719
  //#region src/testing/fixtures/agent-profile-improvement-proposal.json
4720
4720
  var agent_profile_improvement_proposal_default = {
4721
4721
  changedSurfaces: ["prompt", "skills"],
4722
- digest: "sha256:07c63b55b0d9b81210391a147be0802463e02c2c6108e0b9d90386fcf5752613",
4722
+ digest: "sha256:2aee9fb5c49178040548fb2800507df45250d9e68ca4f5b18108cafc71e32504",
4723
4723
  evaluation: {
4724
4724
  "decision": {
4725
4725
  "contributingChecks": [
@@ -6353,7 +6353,7 @@ var agent_profile_improvement_proposal_default = {
6353
6353
  ],
6354
6354
  "metadata": {
6355
6355
  "fixture": "agent-profile-improvement-proposal",
6356
- "runtimeVersion": "0.344.0"
6356
+ "runtimeVersion": "0.349.0"
6357
6357
  },
6358
6358
  "objectives": [
6359
6359
  {
@@ -6464,7 +6464,7 @@ var agent_profile_improvement_proposal_default = {
6464
6464
  "baselineContentHash": "sha256:21c495a37c418c10bde64fbaa188beddeed31f1f051ea60a6a6582a9ee0db704",
6465
6465
  "candidateContentHash": "sha256:103f77bc8481601eef1ad5fe6ba84a40dffabc3a44f421f8c8559121edab84e9",
6466
6466
  "kind": "agent-eval-loop",
6467
- "recordDigest": "sha256:806220de3f4f3c1d9fd94d69504991b6d4fe098fa2f0c371e613fd532d62e3d6",
6467
+ "recordDigest": "sha256:dc774cad3d73631e8b6b585a03663b954ec7ffb8829721596b36093ba0ecf405",
6468
6468
  "runId": "profile-improvement-1",
6469
6469
  "schema": "agent-profile-improvement-experiment"
6470
6470
  }
@@ -1,4 +1,5 @@
1
- import { _ as safeWorkerFile, b as supervisorWorkersDir, f as legacySupervisorRunsRoot, y as supervisorRunsRoot } from "./run-cancellation-CEDiqfhC.js";
1
+ import { t as spawnJournalRecordEvents } from "./record-events-D93DkpAx.js";
2
+ import { _ as safeWorkerFile, b as supervisorWorkersDir, f as legacySupervisorRunsRoot, y as supervisorRunsRoot } from "./run-cancellation-CzFhQGMa.js";
2
3
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
3
4
  import { basename, join, resolve } from "node:path";
4
5
  //#region src/tui/top-snapshot.ts
@@ -103,8 +104,8 @@ function readJournal(eventDir) {
103
104
  if (!trimmed) continue;
104
105
  try {
105
106
  const parsed = JSON.parse(trimmed);
106
- const event = parsed.event ?? parsed;
107
- if (isSpawnEvent(event)) out.push(event);
107
+ const events = parsed.kind === "event" || parsed.kind === "events" ? spawnJournalRecordEvents(parsed) : [parsed];
108
+ for (const event of events) if (isSpawnEvent(event)) out.push(event);
108
109
  } catch {
109
110
  partial = true;
110
111
  }
@@ -473,6 +474,7 @@ function isSupervisorState(value) {
473
474
  return value !== void 0 && typeof value.id === "string" && typeof value.status === "string" && typeof value.task === "string" && typeof value.workspaceDir === "string" && typeof value.budget === "number";
474
475
  }
475
476
  function isSpawnEvent(value) {
477
+ if (!isRecord(value)) return false;
476
478
  return value.kind === "spawned" && typeof value.id === "string" || value.kind === "settled" && typeof value.id === "string" || value.kind === "cancelled" && typeof value.id === "string" || value.kind === "metered" && typeof value.id === "string" || value.kind === "progress" && typeof value.id === "string";
477
479
  }
478
480
  function isRecord(value) {
@@ -499,4 +501,4 @@ function sum(values) {
499
501
  //#endregion
500
502
  export { parseTime as a, parseSpend as i, loadTopSnapshot as n, totalSpend as o, numberValue as r, aggregateSnapshot as t };
501
503
 
502
- //# sourceMappingURL=top-snapshot-BGYI6G6K.js.map
504
+ //# sourceMappingURL=top-snapshot-CflmaDgk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top-snapshot-CflmaDgk.js","names":[],"sources":["../src/tui/top-snapshot.ts"],"sourcesContent":["/**\n * The snapshot reader for the supervisor-run TUI: turn the on-disk run layout into a `TopSnapshot`.\n * ANSI frame presentation lives in `./top-frame`; this module owns reading and projection.\n *\n * This module never derives a run path itself. Every directory and per-worker file it reads comes\n * from `../runtime/supervise/run-layout` — the same module the writers use — so the reader cannot\n * drift from the layout the way an independently-versioned copy of the contract would.\n *\n * Extracted from the `loops` repo (`src/top-model.ts`), which held a hand-joined copy of the\n * layout. Rendering is deliberately unchanged: raw ANSI, zero dependencies.\n *\n * This is the OPERATOR view: what is on disk right now, for a human watching a workspace. It\n * carries no model-call identity, so its per-supervisor totals cannot be joined with root stream\n * events without double counting. A client that needs one execution's totals reads\n * `projectPursuit` from `../durable` instead.\n *\n * @experimental\n */\n\nimport { existsSync, readdirSync, readFileSync, statSync } from 'node:fs'\nimport { basename, join, resolve } from 'node:path'\nimport { spawnJournalRecordEvents } from '../durable/spawn-journal/record-events'\nimport {\n legacySupervisorRunsRoot,\n safeWorkerFile,\n supervisorRunsRoot,\n supervisorWorkersDir,\n} from '../runtime/supervise/run-layout'\n\nexport interface TopSnapshot {\n readonly root: string\n readonly generatedAt: number\n readonly supervisors: SupervisorView[]\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 whose state.json parsed into a valid supervisor view. */\n readonly loaded: number\n}\n\nexport type TopSnapshotCompleteness = 'complete' | 'partial'\n\nexport type TopSnapshotDiagnosticSource =\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 {\n readonly source: TopSnapshotDiagnosticSource\n readonly runId?: string\n readonly path: string\n readonly reason: TopSnapshotDiagnosticReason\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 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 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 tokensInput: number\n readonly tokensOutput: number\n readonly tokensTotal: number\n readonly usd: 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 interface BudgetStats {\n readonly maxIterations?: number\n readonly maxTokens?: number\n readonly maxUsd?: number\n}\n\nexport interface SpendStats {\n readonly iterations: number\n readonly tokensInput: number\n readonly tokensOutput: number\n readonly usd: number\n readonly ms: number\n}\n\nexport type TopJournalEvent =\n | {\n readonly kind: 'spawned'\n readonly id: string\n readonly parent?: string\n readonly label?: string\n readonly budget?: unknown\n readonly runtime?: string\n readonly seq?: number\n readonly at?: string\n }\n | {\n readonly kind: 'settled'\n readonly id: string\n readonly status?: string\n readonly outRef?: string\n readonly verdict?: unknown\n readonly spent?: unknown\n readonly infra?: boolean\n readonly seq?: number\n readonly at?: string\n }\n | {\n readonly kind: 'cancelled'\n readonly spent?: unknown\n readonly id: string\n readonly reason?: string\n readonly seq?: number\n readonly at?: string\n }\n | {\n readonly kind: 'metered'\n readonly id: string\n readonly spend?: unknown\n readonly accountingOnly?: boolean\n readonly seq?: number\n readonly at?: string\n }\n | {\n readonly kind: 'progress'\n readonly id: string\n readonly spend?: unknown\n readonly seq?: number\n readonly at?: string\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 = Date.now()): TopSnapshot {\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 = readProgressTail(dir, 8)\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 progress.value,\n now,\n workerEvents.value,\n ),\n )\n }\n }\n supervisors.sort((a, b) => String(b.startedAt ?? '').localeCompare(String(a.startedAt ?? '')))\n return {\n root,\n generatedAt: now,\n supervisors,\n completeness: diagnostics.length === 0 ? 'complete' : 'partial',\n diagnostics,\n discovered,\n loaded: supervisors.length,\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): SupervisorView {\n const workers = new Map<string, MutableWorker>()\n let driverSpend = emptySpend\n // `state.json` and the spawn journal are written by DIFFERENT producers, and their ids need not\n // agree: the journal's root is the runtime's `runId`, which defaults to a literal unrelated to\n // the supervisor id the state file records. Recover the journal's own root from its parentless\n // root spawn, and treat EITHER id as the root everywhere. Checking only `state.id` — which the\n // metered/settled/cancelled branches used to do — manufactures a phantom worker named after the\n // runId that never settles, sorts first as RUNNING, and silently captures every steer and cancel.\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 (event.kind === 'spawned') {\n if (isRoot(event.id) || (!event.parent && event.label === 'root')) continue\n const worker = ensureWorker(workers, event.id, event.label ?? event.id)\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 continue\n }\n\n if (event.kind === 'settled') {\n if (isRoot(event.id)) continue\n const worker = ensureWorker(workers, event.id, event.id)\n worker.status = event.status === 'down' ? 'down' : 'done'\n if (event.at) worker.endedAt = event.at\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 worker.spend = addSpend(worker.spend, parseSpend(event.spent))\n // Live progress is cumulative observation. The terminal spend replaces it, so do not add\n // the two channels or a worker's final cost would be counted twice.\n worker.metered = emptySpend\n continue\n }\n\n if (event.kind === 'cancelled') {\n if (isRoot(event.id)) continue\n const worker = ensureWorker(workers, event.id, event.id)\n worker.status = 'cancelled'\n if (event.at) worker.endedAt = event.at\n if (event.reason) worker.reason = event.reason\n if (event.spent !== undefined) {\n worker.spend = addSpend(worker.spend, parseSpend(event.spent))\n worker.metered = emptySpend\n }\n continue\n }\n\n if (event.kind === 'metered') {\n const spend = parseSpend(event.spend)\n if (isRoot(event.id)) {\n if (event.accountingOnly !== true) driverSpend = addSpend(driverSpend, spend)\n } else {\n const worker = ensureWorker(workers, event.id, event.id)\n if (event.accountingOnly !== true) worker.metered = addSpend(worker.metered, spend)\n }\n continue\n }\n\n if (event.kind === 'progress') {\n if (isRoot(event.id)) continue\n const worker = ensureWorker(workers, event.id, event.id)\n worker.metered = parseSpend(event.spend)\n }\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 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.verifyCmd ? { verifyCmd: state.verifyCmd } : {}),\n ...(state.workerModel ? { workerModel: state.workerModel } : {}),\n ...(state.driverModel ? { driverModel: state.driverModel } : {}),\n ...(state.verdict ? { verdict: state.verdict } : {}),\n ...(state.progress ? { progress: state.progress } : {}),\n ...(state.startedAt ? { startedAt: state.startedAt } : {}),\n ...(state.completedAt ? { completedAt: state.completedAt } : {}),\n ...(state.maxSandboxes !== undefined ? { maxSandboxes: state.maxSandboxes } : {}),\n ...(state.maxLifetimeSeconds !== undefined\n ? { maxLifetimeSeconds: state.maxLifetimeSeconds }\n : {}),\n ...(state.idleTimeoutSeconds !== undefined\n ? { idleTimeoutSeconds: state.idleTimeoutSeconds }\n : {}),\n ...(state.maxUsd !== undefined ? { maxUsd: state.maxUsd } : {}),\n ...(state.maxDepth !== undefined ? { maxDepth: state.maxDepth } : {}),\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 ensureWorker(\n workers: Map<string, MutableWorker>,\n id: string,\n label: string,\n): MutableWorker {\n const existing = workers.get(id)\n if (existing) return existing\n const created: MutableWorker = {\n id,\n label,\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 {\n id: worker.id,\n label: worker.label,\n ...(worker.eventFile ? { eventFile: worker.eventFile } : {}),\n ...(worker.parent ? { parent: worker.parent } : {}),\n ...(worker.runtime ? { runtime: worker.runtime } : {}),\n status: worker.status,\n ...(worker.verdict ? { verdict: worker.verdict } : {}),\n ...(worker.infra !== undefined ? { infra: worker.infra } : {}),\n ...(worker.startedAt ? { startedAt: worker.startedAt } : {}),\n ...(worker.endedAt ? { endedAt: worker.endedAt } : {}),\n latencyMs,\n ...(worker.budget ? { budget: worker.budget } : {}),\n spend: worker.spend,\n metered: worker.metered,\n liveTail: worker.liveTail,\n ...(worker.outRef ? { outRef: worker.outRef } : {}),\n ...(worker.reason ? { reason: worker.reason } : {}),\n }\n}\n\nfunction supervisorTotals(\n state: SupervisorState,\n workers: readonly WorkerView[],\n driverSpend: SpendStats,\n now: number,\n): SupervisorTotals {\n const workerSpends = workers.map(totalSpend)\n const tokenInput = sum(workerSpends.map((spend) => spend.tokensInput)) + driverSpend.tokensInput\n const tokenOutput =\n sum(workerSpends.map((spend) => spend.tokensOutput)) + driverSpend.tokensOutput\n const computedUsd = sum(workerSpends.map((spend) => spend.usd)) + driverSpend.usd\n const usd = computedUsd > 0 ? computedUsd : (state.result?.spentUsd ?? 0)\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 running: workers.filter((worker) => worker.status === 'running').length,\n done: workers.filter((worker) => worker.status === 'done').length,\n down: workers.filter((worker) => worker.status === 'down').length,\n cancelled: workers.filter((worker) => worker.status === 'cancelled').length,\n inFlight: workers.filter((worker) => worker.status === 'running').length,\n settled: workers.filter((worker) => worker.status !== 'running').length,\n tokensInput: tokenInput,\n tokensOutput: tokenOutput,\n tokensTotal: tokenInput + tokenOutput,\n usd,\n latencyMs,\n workerLatency: distribution(latencies),\n }\n}\n\nexport function aggregateSnapshot(snapshot: TopSnapshot): {\n supervisors: number\n workers: number\n running: number\n done: number\n down: number\n usd: number\n tokensInput: number\n tokensOutput: number\n} {\n return {\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 }\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 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 if (values.length === 0) return { n: 0, min: 0, median: 0, p90: 0, max: 0 }\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 readProgressTail(dir: string, maxLines: number): SourceRead<string[]> {\n const path = 'progress.ndjson'\n const read = readSourceFile(join(dir, path), 'progress', path)\n return { value: tailLines(read.value, maxLines), diagnostics: read.diagnostics }\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 if (read.value === undefined)\n return {\n value: undefined,\n diagnostics: [{ source: 'supervisor-state', path, reason: 'missing' }],\n }\n let parsed: Partial<SupervisorState>\n try {\n parsed = JSON.parse(read.value) as Partial<SupervisorState>\n } catch {\n return {\n value: undefined,\n diagnostics: [{ source: 'supervisor-state', path, reason: 'partial-json' }],\n }\n }\n if (!isSupervisorState(parsed))\n return {\n value: undefined,\n diagnostics: [{ source: 'supervisor-state', path, reason: 'invalid-state' }],\n }\n return { value: parsed, diagnostics: [] }\n}\n\nfunction isSupervisorState(value: Partial<SupervisorState> | undefined): value is SupervisorState {\n return (\n value !== undefined &&\n typeof value.id === 'string' &&\n typeof value.status === 'string' &&\n typeof value.task === 'string' &&\n typeof value.workspaceDir === 'string' &&\n typeof value.budget === 'number'\n )\n}\n\nfunction isSpawnEvent(value: unknown): value is TopJournalEvent {\n if (!isRecord(value)) return false\n return (\n (value.kind === 'spawned' && typeof value.id === 'string') ||\n (value.kind === 'settled' && typeof value.id === 'string') ||\n (value.kind === 'cancelled' && typeof value.id === 'string') ||\n (value.kind === 'metered' && typeof value.id === 'string') ||\n (value.kind === 'progress' && typeof value.id === 'string')\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"],"mappings":"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"}
package/dist/tui/bin.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { l as cancelWorker, n as cancelRun, w as writeWorkerSteer, y as supervisorRunsRoot } from "../run-cancellation-CEDiqfhC.js";
3
- import { a as parseTime, i as parseSpend, n as loadTopSnapshot, o as totalSpend, r as numberValue, t as aggregateSnapshot } from "../top-snapshot-BGYI6G6K.js";
2
+ import { l as cancelWorker, n as cancelRun, w as writeWorkerSteer, y as supervisorRunsRoot } from "../run-cancellation-CzFhQGMa.js";
3
+ import { a as parseTime, i as parseSpend, n as loadTopSnapshot, o as totalSpend, r as numberValue, t as aggregateSnapshot } from "../top-snapshot-CflmaDgk.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 { Ir as provisionSupervisor } from "../types-DztCeYd6.js";
1
+ import { Ir as provisionSupervisor } from "../types-C8BGOCBn.js";
2
2
  //#region src/tui/top-snapshot.d.ts
3
3
  /**
4
4
  * The snapshot reader for the supervisor-run TUI: turn the on-disk run layout into a `TopSnapshot`.
package/dist/tui/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { t as provisionSupervisor } from "../provision-supervisor-CysVhSqV.js";
2
- import { n as loadTopSnapshot } from "../top-snapshot-BGYI6G6K.js";
1
+ import { t as provisionSupervisor } from "../provision-supervisor-C4v2vqDo.js";
2
+ import { n as loadTopSnapshot } from "../top-snapshot-CflmaDgk.js";
3
3
  export { loadTopSnapshot, provisionSupervisor };