@tangle-network/agent-runtime 0.216.0 → 0.217.2

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 (49) hide show
  1. package/dist/{activation-B5ssx8dt.d.ts → activation-D5bSCvRA.d.ts} +2 -2
  2. package/dist/{activation-DKYeOZqa.js → activation-DGj9G2yE.js} +2 -2
  3. package/dist/{activation-DKYeOZqa.js.map → activation-DGj9G2yE.js.map} +1 -1
  4. package/dist/agent.d.ts +1 -1
  5. package/dist/agent.js +2 -2
  6. package/dist/{coordination-driver-C2FneHgw.js → coordination-driver-yaK8G6xJ.js} +2 -2
  7. package/dist/{coordination-driver-C2FneHgw.js.map → coordination-driver-yaK8G6xJ.js.map} +1 -1
  8. package/dist/{delegate-DpF6PLb3.js → delegate-C7VG1TYq.js} +2 -2
  9. package/dist/{delegate-DpF6PLb3.js.map → delegate-C7VG1TYq.js.map} +1 -1
  10. package/dist/durable.d.ts +2 -2
  11. package/dist/durable.js +2 -2
  12. package/dist/{graph-BMJ-hMOB.js → graph-qQmOHVc3.js} +3 -3
  13. package/dist/{graph-BMJ-hMOB.js.map → graph-qQmOHVc3.js.map} +1 -1
  14. package/dist/{improvement-cycle-BbGmeW9g.js → improvement-cycle-CAIv8aB8.js} +3 -3
  15. package/dist/{improvement-cycle-BbGmeW9g.js.map → improvement-cycle-CAIv8aB8.js.map} +1 -1
  16. package/dist/{index-BIW3SWog.d.ts → index-XlvRo6ys.d.ts} +2 -2
  17. package/dist/index.d.ts +4 -4
  18. package/dist/index.js +7 -7
  19. package/dist/intelligence.d.ts +2 -2
  20. package/dist/intelligence.js +3 -3
  21. package/dist/kernel.d.ts +2 -2
  22. package/dist/kernel.js +8 -8
  23. package/dist/{loop-runner-bin-kAFDA0CY.d.ts → loop-runner-bin-C4hZxGiX.d.ts} +3 -3
  24. package/dist/{loop-runner-bin-DB10tHvj.js → loop-runner-bin-su5-oyU1.js} +3 -3
  25. package/dist/{loop-runner-bin-DB10tHvj.js.map → loop-runner-bin-su5-oyU1.js.map} +1 -1
  26. package/dist/loop-runner-bin.d.ts +1 -1
  27. package/dist/loop-runner-bin.js +1 -1
  28. package/dist/mcp/bin.js +3 -3
  29. package/dist/mcp/index.d.ts +2 -2
  30. package/dist/mcp/index.js +4 -4
  31. package/dist/{provision-supervisor-B8ViAmnR.js → provision-supervisor-DviRl_a5.js} +3 -3
  32. package/dist/{provision-supervisor-B8ViAmnR.js.map → provision-supervisor-DviRl_a5.js.map} +1 -1
  33. package/dist/{runtime-DU3-YfpU.js → runtime-DoeK2k20.js} +8 -8
  34. package/dist/{runtime-DU3-YfpU.js.map → runtime-DoeK2k20.js.map} +1 -1
  35. package/dist/{server-CrvRwD6b.js → server-COJLaFTK.js} +3 -3
  36. package/dist/{server-CrvRwD6b.js.map → server-COJLaFTK.js.map} +1 -1
  37. package/dist/{stream-agent-turn-uwQd_pqM.d.ts → stream-agent-turn-DPv9w25U.d.ts} +14 -1
  38. package/dist/{structural-rollout-BlIso-lM.js → structural-rollout-CffrdFuX.js} +2 -2
  39. package/dist/{structural-rollout-BlIso-lM.js.map → structural-rollout-CffrdFuX.js.map} +1 -1
  40. package/dist/{supervise-DVM_yQyh.js → supervise-Bl5eBJhb.js} +3 -3
  41. package/dist/{supervise-DVM_yQyh.js.map → supervise-Bl5eBJhb.js.map} +1 -1
  42. package/dist/{redact-DyckXHLF.js → supervisor-CvF_KeLc.js} +214 -127
  43. package/dist/supervisor-CvF_KeLc.js.map +1 -0
  44. package/dist/testing.d.ts +2 -2
  45. package/dist/testing.js +12 -12
  46. package/dist/tui/index.d.ts +1 -1
  47. package/dist/tui/index.js +1 -1
  48. package/package.json +3 -3
  49. package/dist/redact-DyckXHLF.js.map +0 -1
@@ -5211,6 +5211,89 @@ function publicCreateOptions(create) {
5211
5211
  };
5212
5212
  }
5213
5213
  //#endregion
5214
+ //#region src/redact.ts
5215
+ const redactedMarker = "[redacted]";
5216
+ /** Secret-bearing key names: when an object key matches, its value is fully
5217
+ * replaced regardless of the value's own content. Lowercased compare. */
5218
+ const secretKeyPattern = /(api[-_]?key|secret|token|password|passwd|authorization|auth|private[-_]?key|credential|access[-_]?key|client[-_]?secret|session[-_]?(id|token)|cookie|bearer)/i;
5219
+ /** AgentProfile's numeric model limits describe compute, not credentials. */
5220
+ const tokenLimitKeyPattern = /^max(?:VisibleOutput|Reasoning|TotalOutput)Tokens$/;
5221
+ /** In-value secret/PII patterns scrubbed from any string, regardless of key. */
5222
+ const valuePatterns = [
5223
+ /\bBearer\s+[A-Za-z0-9._\-+/=]{8,}/gi,
5224
+ /\b(?:sk|pk|rk|ak)[-_][A-Za-z0-9_-]{12,}/g,
5225
+ /\bgh[pousr]_[A-Za-z0-9]{20,}/g,
5226
+ /\bAKIA[0-9A-Z]{16}\b/g,
5227
+ /-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,
5228
+ /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g
5229
+ ];
5230
+ /** Secret assignments embedded inside an otherwise opaque string, including
5231
+ * serialized JSON and log-style `key=value` text. */
5232
+ const secretAssignmentPattern = /((?:"|')?(?:api[-_]?key|secret|token|password|passwd|authorization|auth|private[-_]?key|credential|access[-_]?key|client[-_]?secret|session[-_]?(?:id|token)|cookie|bearer)(?:"|')?\s*[:=]\s*)(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[^\s,;}]+)/gi;
5233
+ /** Scrub a single string of in-value secret/PII patterns. */
5234
+ function scrubString(input) {
5235
+ let out = input;
5236
+ for (const pattern of valuePatterns) out = out.replace(pattern, redactedMarker);
5237
+ return out.replace(secretAssignmentPattern, `$1${redactedMarker}`);
5238
+ }
5239
+ /**
5240
+ * The built-in redactor. Walks objects and arrays; replaces values under
5241
+ * secret-bearing keys wholesale; scrubs in-value patterns from every string.
5242
+ * Cycle-safe (a seen-set short-circuits self-referential payloads to
5243
+ * `'[circular]'`), depth-bounded, and total — never throws on customer input.
5244
+ */
5245
+ function defaultRedactor(value) {
5246
+ return walk(value, /* @__PURE__ */ new WeakSet(), 0);
5247
+ }
5248
+ const maxDepth = 32;
5249
+ function walk(value, seen, depth) {
5250
+ if (depth > maxDepth) return "[truncated]";
5251
+ if (typeof value === "string") return scrubString(value);
5252
+ if (value === null || typeof value !== "object") return value;
5253
+ if (seen.has(value)) return "[circular]";
5254
+ seen.add(value);
5255
+ if (Array.isArray(value)) return value.map((item) => walk(item, seen, depth + 1));
5256
+ const out = {};
5257
+ for (const [key, v] of Object.entries(value)) {
5258
+ const tokenLimit = tokenLimitKeyPattern.test(key) && typeof v === "number" && Number.isSafeInteger(v) && v >= 0;
5259
+ if (secretKeyPattern.test(key) && !tokenLimit) {
5260
+ out[key] = redactedMarker;
5261
+ continue;
5262
+ }
5263
+ out[key] = walk(v, seen, depth + 1);
5264
+ }
5265
+ return out;
5266
+ }
5267
+ /** Stable identity input for saved work that depends on built-in redaction behavior. */
5268
+ function defaultRedactorIdentityMaterial() {
5269
+ const patternIdentity = (pattern) => ({
5270
+ source: pattern.source,
5271
+ flags: pattern.flags
5272
+ });
5273
+ return {
5274
+ marker: redactedMarker,
5275
+ secretKeyPattern: patternIdentity(secretKeyPattern),
5276
+ tokenLimitKeyPattern: patternIdentity(tokenLimitKeyPattern),
5277
+ valuePatterns: valuePatterns.map(patternIdentity),
5278
+ secretAssignmentPattern: patternIdentity(secretAssignmentPattern),
5279
+ maxDepth,
5280
+ scrubString: Function.prototype.toString.call(scrubString),
5281
+ walk: Function.prototype.toString.call(walk),
5282
+ defaultRedactor: Function.prototype.toString.call(defaultRedactor)
5283
+ };
5284
+ }
5285
+ /**
5286
+ * Resolve the redactor a client uses. A caller-supplied hook handles
5287
+ * domain-specific values first, then the built-in scrubber still removes
5288
+ * common credentials and email addresses. Returning `false` is the explicit
5289
+ * opt-out for already-reviewed public values.
5290
+ */
5291
+ function resolveRedactor(redact) {
5292
+ if (redact === false) return (value) => value;
5293
+ if (!redact) return defaultRedactor;
5294
+ return (value) => defaultRedactor(redact(value));
5295
+ }
5296
+ //#endregion
5214
5297
  //#region src/runtime/interaction-capabilities.ts
5215
5298
  /**
5216
5299
  * Check one turn's interaction request before the provider can dispatch it.
@@ -7498,21 +7581,53 @@ async function providerExecutionSource(args, turn, signal) {
7498
7581
  if (!environment) throw new Error("retained provider environment is unavailable");
7499
7582
  const session = exactSession(environment, handle.controlRef).session;
7500
7583
  async function* events() {
7501
- for await (const event of session.events({
7502
- executionId: handle.controlRef.executionId,
7503
- signal
7504
- })) {
7505
- assertEventBinding(event, handle.controlRef);
7506
- yield event;
7584
+ let iterator;
7585
+ let observationFailure;
7586
+ try {
7587
+ iterator = session.events({
7588
+ executionId: handle.controlRef.executionId,
7589
+ signal
7590
+ })[Symbol.asyncIterator]();
7591
+ } catch (error) {
7592
+ if (signal.aborted) throw error;
7593
+ observationFailure = { error };
7594
+ }
7595
+ try {
7596
+ while (iterator !== void 0) {
7597
+ let next;
7598
+ try {
7599
+ next = await awaitAbortable$1(Promise.resolve().then(() => iterator.next()), signal);
7600
+ } catch (error) {
7601
+ if (signal.aborted) throw error;
7602
+ observationFailure = { error };
7603
+ break;
7604
+ }
7605
+ if (next.done) break;
7606
+ assertEventBinding(next.value, handle.controlRef);
7607
+ yield next.value;
7608
+ }
7609
+ } finally {
7610
+ if (signal.aborted || observationFailure !== void 0) Promise.resolve().then(() => iterator?.return?.()).catch(() => void 0);
7611
+ else await iterator?.return?.();
7612
+ }
7613
+ let result;
7614
+ try {
7615
+ result = await awaitAbortable$1(handle.result(), signal);
7616
+ } catch (error) {
7617
+ if (observationFailure === void 0 || signal.aborted) throw error;
7618
+ throw new AggregateError([observationFailure.error, error], "retained event observation failed and its exact result could not be reconciled", { cause: error });
7507
7619
  }
7508
- const result = await awaitAbortable$1(handle.result(), signal);
7509
7620
  yield {
7510
7621
  type: "result",
7511
7622
  data: {
7512
7623
  finalText: result.text,
7513
7624
  success: result.success,
7514
7625
  ...result.error ? { error: result.error } : {},
7515
- usageMode: "cumulative"
7626
+ usageMode: "cumulative",
7627
+ ...observationFailure === void 0 ? {} : {
7628
+ eventStreamComplete: false,
7629
+ eventStreamError: String(defaultRedactor(observationFailure.error instanceof Error ? observationFailure.error.message : String(observationFailure.error))).slice(0, 2048)
7630
+ }
7516
7631
  },
7517
7632
  ...result.usage ? { usage: result.usage } : {}
7518
7633
  };
@@ -15011,6 +15126,7 @@ const outsideKinds = /* @__PURE__ */ new Set([
15011
15126
  "execution-admitted",
15012
15127
  "execution-result",
15013
15128
  "progress",
15129
+ "reconciled",
15014
15130
  "edge",
15015
15131
  "teardown-unconfirmed",
15016
15132
  "trace-unpropagated",
@@ -15075,6 +15191,7 @@ async function replaySpawnTree(journal, blobs, root) {
15075
15191
  if (ev.kind === "waiting") continue;
15076
15192
  if (ev.kind === "metered") continue;
15077
15193
  if (ev.kind === "progress") continue;
15194
+ if (ev.kind === "reconciled") continue;
15078
15195
  if (ev.kind === "materialized") continue;
15079
15196
  if (ev.kind === "execution-bound") continue;
15080
15197
  if (ev.kind === "execution-input" || ev.kind === "execution-admitted" || ev.kind === "execution-result") continue;
@@ -15278,6 +15395,10 @@ function materializeTreeView(events) {
15278
15395
  node.executionBindings ??= [];
15279
15396
  node.executionBindings.push(ev.binding);
15280
15397
  }
15398
+ for (const ev of [...events].filter((event) => event.kind === "reconciled").sort((a, b) => a.seq - b.seq)) {
15399
+ const node = requireNode(nodes, ev.id);
15400
+ if (node.status === "pending") node.spent = cloneSpend(ev.spent);
15401
+ }
15281
15402
  for (const ev of events) {
15282
15403
  if (ev.kind !== "metered") continue;
15283
15404
  const node = requireNode(nodes, ev.id);
@@ -16989,7 +17110,11 @@ async function* streamCliLeaf(args) {
16989
17110
  args.signal.addEventListener("abort", onAbort, { once: true });
16990
17111
  args.controller.signal.addEventListener("abort", onAbort, { once: true });
16991
17112
  }
17113
+ let deliveryError;
16992
17114
  if (proc.stdin) {
17115
+ proc.stdin.on("error", (error) => {
17116
+ if (error.code !== "EPIPE") deliveryError ??= error;
17117
+ });
16993
17118
  proc.stdin.write(prompt);
16994
17119
  proc.stdin.end();
16995
17120
  }
@@ -17008,6 +17133,7 @@ async function* streamCliLeaf(args) {
17008
17133
  args.controller.signal.removeEventListener("abort", onAbort);
17009
17134
  if (exit.error) throw new ValidationError$1(`cliExecutor: spawn failed: ${exit.error.message}`, { cause: exit.error });
17010
17135
  if (exit.code !== 0) throw new ValidationError$1(`cliExecutor: ${args.seam.bin} exited ${exit.code}: ${errChunks.join("").slice(0, 200)}`);
17136
+ if (deliveryError) throw new ValidationError$1(`cliExecutor: could not deliver the task to ${args.seam.bin}: ${deliveryError.message}`, { cause: deliveryError });
17011
17137
  const out = { content: chunks.join("") };
17012
17138
  args.onArtifact({
17013
17139
  outRef: contentRef("cli", out),
@@ -19004,10 +19130,15 @@ function keyedAssignments(events, settled) {
19004
19130
  }
19005
19131
  return keys;
19006
19132
  }
19007
- /** Child reservations whose spawn was durable but whose terminal record never landed. */
19133
+ /** Child reservations whose spawn was durable, whose terminal record never landed, and whose
19134
+ * reservation was never reconciled: the process died with them in flight, so nothing observed
19135
+ * their spend and the ceiling is the only sound charge. An open node with a `reconciled` record is
19136
+ * not uncertain in that sense — its floor is measured evidence and is charged by
19137
+ * {@link sumMeasuredSpendFromEvents}, never here, so the two readers cannot charge one node twice. */
19008
19138
  function uncertainSpawnBudgets(events, recovered = /* @__PURE__ */ new Set()) {
19009
19139
  const terminal = new Set(events.filter(closesCursorSlot).map((event) => event.id));
19010
- return events.filter((event) => event.kind === "spawned" && event.parent !== void 0 && !terminal.has(event.id) && !recovered.has(event.id) && event.runtime !== "inline").map((event) => event.budget);
19140
+ const reconciled = new Set(events.flatMap((event) => event.kind === "reconciled" ? [event.id] : []));
19141
+ return events.filter((event) => event.kind === "spawned" && event.parent !== void 0 && !terminal.has(event.id) && !reconciled.has(event.id) && !recovered.has(event.id) && event.runtime !== "inline").map((event) => event.budget);
19011
19142
  }
19012
19143
  /** Highest `seq` among events matching `pred`, or `-1` when none match (so a resumed scope's
19013
19144
  * first new ordinal/seq is 0 — the same start a fresh scope uses). */
@@ -19016,9 +19147,12 @@ function maxSeqOf(events, pred) {
19016
19147
  for (const ev of events) if (pred(ev) && ev.seq > max) max = ev.seq;
19017
19148
  return max;
19018
19149
  }
19019
- /** Per-channel sum over a journaled event list: `settled` = spawned-child work (reconciled);
19020
- * `metered` = driver inference (re-homed up the tree, so a single root-tree pass already
19021
- * includes every nested driver's inference). */
19150
+ /** Per-channel sum over a journaled event list: `settled` = spawned-child work (reconciled), plus
19151
+ * the reconciled floor of every node still open, plus the declared ceiling of every open node
19152
+ * nothing reconciled; `metered` = driver inference (re-homed up the tree, so a single root-tree
19153
+ * pass already includes every nested driver's inference). The pool commits exactly these amounts
19154
+ * — a floor where a reconcile ran, a ceiling where the process died first — so this sum is the
19155
+ * same ledger the pool holds, read from the journal. */
19022
19156
  function sumSpendFromEvents(events) {
19023
19157
  const totals = sumMeasuredSpendFromEvents(events);
19024
19158
  const rootBudget = events.find((event) => event.kind === "spawned" && event.parent === void 0)?.budget;
@@ -19041,12 +19175,19 @@ function sumMeasuredSpendFromEvents(events) {
19041
19175
  let childWork = zeroSpend();
19042
19176
  let driverInference = zeroSpend();
19043
19177
  const owners = /* @__PURE__ */ new Map();
19178
+ const terminal = new Set(events.filter(closesCursorSlot).map((event) => event.id));
19179
+ const floors = /* @__PURE__ */ new Map();
19044
19180
  for (const ev of events) if (ev.kind === "settled" || ev.kind === "cancelled") childWork = addSpend(childWork, withBudgetResources(ev.spent ?? {
19045
19181
  ...zeroSpend(),
19046
19182
  tokensKnown: false,
19047
19183
  usdKnown: false
19048
19184
  }, budgets.get(ev.id) ?? {}));
19049
19185
  else if (ev.kind === "metered") owners.set(ev.id, addSpend(owners.get(ev.id) ?? zeroSpend(), ev.spend));
19186
+ else if (ev.kind === "reconciled" && !terminal.has(ev.id)) {
19187
+ const prior = floors.get(ev.id);
19188
+ if (prior === void 0 || ev.seq > prior.seq) floors.set(ev.id, ev);
19189
+ }
19190
+ for (const [id, floor] of floors) childWork = addSpend(childWork, withBudgetResources(floor.spent, budgets.get(id) ?? {}));
19050
19191
  for (const [id, spend] of owners) driverInference = addSpend(driverInference, withBudgetResources(spend, budgets.get(id) ?? {}));
19051
19192
  return {
19052
19193
  childWork,
@@ -19058,9 +19199,9 @@ async function prepareScopeResume(opts, events, signal, now, parentId = opts.run
19058
19199
  const prepared = await prepareInterruptedExecutors(opts, events, signal, now, parentId);
19059
19200
  const prior = prepared.events;
19060
19201
  const recovering = new Set(prepared.recoveries.map((item) => item.spawned.id));
19061
- const measuredEvents = prior.filter((event) => event.kind !== "metered" || !recovering.has(event.id));
19202
+ const measuredEvents = prior.filter((event) => event.kind !== "metered" && event.kind !== "reconciled" || !recovering.has(event.id));
19062
19203
  const measured = sumMeasuredSpendFromEvents(measuredEvents);
19063
- const hasCommittedEvidence = measuredEvents.some((event) => event.kind === "metered" || event.kind === "settled" || event.kind === "cancelled");
19204
+ const hasCommittedEvidence = measuredEvents.some((event) => event.kind === "metered" || event.kind === "reconciled" || event.kind === "settled" || event.kind === "cancelled");
19064
19205
  const settled = await replaySpawnTree(opts.journal, opts.blobs, opts.runId);
19065
19206
  signal.throwIfAborted();
19066
19207
  return {
@@ -20677,17 +20818,34 @@ async function raceFirstSettled(pending) {
20677
20818
  }
20678
20819
  /** Rehomed inference has its own per-child sequence, independent of terminal cursors. */
20679
20820
  async function appendSettlementMetering(journal, root, id, spend, at) {
20680
- const event = {
20821
+ await appendAcknowledged(journal, root, {
20681
20822
  kind: "metered",
20682
20823
  id,
20683
20824
  spend,
20684
- seq: (await journal.loadTree(root) ?? []).reduce((max, event) => event.kind === "metered" && event.id === id ? Math.max(max, event.seq) : max, -1) + 1,
20825
+ seq: await nextPerNodeSeq(journal, root, "metered", id),
20685
20826
  at
20686
- };
20827
+ });
20828
+ }
20829
+ /** An open node's reconciled floor has the same per-child sequence discipline as its metering:
20830
+ * outside the cursor namespace, monotonic per node, so a node reconciled once per process (a
20831
+ * retained failure, a recovery, a second retained failure) keeps its records ordered. */
20832
+ async function appendReconciledFloor(journal, root, id, spent, at) {
20833
+ await appendAcknowledged(journal, root, {
20834
+ kind: "reconciled",
20835
+ id,
20836
+ spent,
20837
+ seq: await nextPerNodeSeq(journal, root, "reconciled", id),
20838
+ at
20839
+ });
20840
+ }
20841
+ async function nextPerNodeSeq(journal, root, kind, id) {
20842
+ return (await journal.loadTree(root) ?? []).reduce((max, event) => event.kind === kind && event.id === id ? Math.max(max, event.seq) : max, -1) + 1;
20843
+ }
20844
+ async function appendAcknowledged(journal, root, event) {
20687
20845
  try {
20688
20846
  await journal.appendEvent(root, event);
20689
20847
  } catch (error) {
20690
- if (!(await journal.loadTree(root))?.some((record) => record.kind === "metered" && contentAddress(record) === contentAddress(event))) throw error;
20848
+ if (!(await journal.loadTree(root))?.some((record) => record.kind === event.kind && contentAddress(record) === contentAddress(event))) throw error;
20691
20849
  }
20692
20850
  }
20693
20851
  /** Stamp the cursor `seq`, write the `settled` journal record, and project the
@@ -20722,6 +20880,7 @@ async function finalizeSettlement(child, settlement, seq, args, now) {
20722
20880
  seq,
20723
20881
  at
20724
20882
  });
20883
+ else if (settlement.reconciled !== void 0) await appendReconciledFloor(args.journal, args.root, child.id, settlement.reconciled, at);
20725
20884
  notifyRuntimeHookEvent(args.hooks, {
20726
20885
  id: `${child.id}:settled`,
20727
20886
  runId: args.root,
@@ -21049,19 +21208,22 @@ async function runChild(live, executor, childAbort, task, opts, pool, ticket, bl
21049
21208
  live.executorDone = true;
21050
21209
  const trace = await captureTraceOnce();
21051
21210
  await teardownOnce(opts.shutdown ?? "brutalKill").catch(() => void 0);
21052
- const metered = executor.metered?.();
21053
- reconcileOnce({
21054
- iterations: metered?.iterations ?? opts.budget.maxIterations,
21055
- tokens: metered?.tokens ?? {
21056
- input: opts.budget.maxTokens,
21057
- output: 0
21058
- },
21059
- tokensKnown: false,
21060
- usd: metered?.usd ?? opts.budget.maxUsd ?? 0,
21061
- usdKnown: false,
21062
- ms: Math.max(0, now() - live.startedAt)
21063
- });
21064
- return downRecord(errMessage(err), true, trace, metered);
21211
+ if (!reconciled) {
21212
+ const accounting = executor.accounting?.();
21213
+ const ms = Math.max(0, now() - live.startedAt);
21214
+ live.spent = {
21215
+ ...unknownFloor(accounting?.reported ?? live.spent),
21216
+ ms
21217
+ };
21218
+ reconcileOnce({
21219
+ ...unknownFloor(accounting?.reservation ?? live.spent),
21220
+ ms
21221
+ });
21222
+ }
21223
+ return {
21224
+ ...downRecord(errMessage(err), true, trace, executor.metered?.()),
21225
+ reconciled: live.spent
21226
+ };
21065
21227
  }
21066
21228
  live.executorDone = true;
21067
21229
  let evidenceError;
@@ -21081,15 +21243,7 @@ async function runChild(live, executor, childAbort, task, opts, pool, ticket, bl
21081
21243
  if (accounting) live.spent = accounting.reported;
21082
21244
  const providerModel = runtimeOwnedExecutorProviderEvidence(executor);
21083
21245
  const aborted = childAbort.signal.aborted || isAbortError(err);
21084
- if (started && !terminalTelemetryCaptured && accounting === void 0) live.spent = {
21085
- ...live.spent,
21086
- tokensKnown: false,
21087
- usdKnown: false,
21088
- ...live.spent.resources === void 0 ? {} : { resources: Object.fromEntries(Object.entries(live.spent.resources).map(([name, value]) => [name, {
21089
- ...value,
21090
- known: false
21091
- }])) }
21092
- };
21246
+ if (started && !terminalTelemetryCaptured && accounting === void 0) live.spent = unknownFloor(live.spent);
21093
21247
  const reconcileError = reconcileOnce(accounting?.reservation ?? live.spent);
21094
21248
  return downRecord(errMessage(err), evidenceError !== void 0 || teardownError !== void 0 || reconcileError !== void 0 || aborted || isInfraError(err), trace, executor.metered?.(), providerModel);
21095
21249
  } finally {
@@ -21315,6 +21469,19 @@ async function awaitAbortable(work, signal) {
21315
21469
  });
21316
21470
  });
21317
21471
  }
21472
+ /** Observed partial counts as a lower bound on every channel: the work happened, its remainder went
21473
+ * unreported, and no reader may take the counts for a measurement. */
21474
+ function unknownFloor(spend) {
21475
+ return {
21476
+ ...spend,
21477
+ tokensKnown: false,
21478
+ usdKnown: false,
21479
+ ...spend.resources === void 0 ? {} : { resources: Object.fromEntries(Object.entries(spend.resources).map(([name, value]) => [name, {
21480
+ ...value,
21481
+ known: false
21482
+ }])) }
21483
+ };
21484
+ }
21318
21485
  function downRecord(reason, infra, trace, metered, providerModel) {
21319
21486
  return {
21320
21487
  kind: "down",
@@ -22124,7 +22291,10 @@ function createSupervisor() {
22124
22291
  controller.abort(reason);
22125
22292
  return true;
22126
22293
  };
22127
- const onCallerAbort = () => cascadeAbort(opts.signal?.reason instanceof RunCancellationReason ? opts.signal.reason : new RunCancellationReason("signal", typeof opts.signal?.reason === "string" ? opts.signal.reason : "caller signal aborted"));
22294
+ const onCallerAbort = () => {
22295
+ const reason = opts.signal ? abortReason(opts.signal, "caller signal aborted") : "caller signal aborted";
22296
+ cascadeAbort(reason instanceof RunCancellationReason ? reason : new RunCancellationReason("signal", typeof reason === "string" ? reason : "caller signal aborted"));
22297
+ };
22128
22298
  if (opts.signal) if (opts.signal.aborted) onCallerAbort();
22129
22299
  else opts.signal.addEventListener("abort", onCallerAbort, { once: true });
22130
22300
  const breaker = createIntensityBreaker(opts, () => cascadeAbort("intensity breaker tripped"));
@@ -22592,89 +22762,6 @@ function isNonEmptySpend(s) {
22592
22762
  return s.iterations > 0 || s.tokens.input > 0 || s.tokens.output > 0 || s.usd > 0 || s.ms > 0 || s.tokensKnown === false || s.usdKnown === false || Object.values(s.resources ?? {}).some((resource) => resource.amount > 0 || !resource.known);
22593
22763
  }
22594
22764
  //#endregion
22595
- //#region src/redact.ts
22596
- const redactedMarker = "[redacted]";
22597
- /** Secret-bearing key names: when an object key matches, its value is fully
22598
- * replaced regardless of the value's own content. Lowercased compare. */
22599
- const secretKeyPattern = /(api[-_]?key|secret|token|password|passwd|authorization|auth|private[-_]?key|credential|access[-_]?key|client[-_]?secret|session[-_]?(id|token)|cookie|bearer)/i;
22600
- /** AgentProfile's numeric model limits describe compute, not credentials. */
22601
- const tokenLimitKeyPattern = /^max(?:VisibleOutput|Reasoning|TotalOutput)Tokens$/;
22602
- /** In-value secret/PII patterns scrubbed from any string, regardless of key. */
22603
- const valuePatterns = [
22604
- /\bBearer\s+[A-Za-z0-9._\-+/=]{8,}/gi,
22605
- /\b(?:sk|pk|rk|ak)[-_][A-Za-z0-9_-]{12,}/g,
22606
- /\bgh[pousr]_[A-Za-z0-9]{20,}/g,
22607
- /\bAKIA[0-9A-Z]{16}\b/g,
22608
- /-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,
22609
- /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g
22610
- ];
22611
- /** Secret assignments embedded inside an otherwise opaque string, including
22612
- * serialized JSON and log-style `key=value` text. */
22613
- const secretAssignmentPattern = /((?:"|')?(?:api[-_]?key|secret|token|password|passwd|authorization|auth|private[-_]?key|credential|access[-_]?key|client[-_]?secret|session[-_]?(?:id|token)|cookie|bearer)(?:"|')?\s*[:=]\s*)(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[^\s,;}]+)/gi;
22614
- /** Scrub a single string of in-value secret/PII patterns. */
22615
- function scrubString(input) {
22616
- let out = input;
22617
- for (const pattern of valuePatterns) out = out.replace(pattern, redactedMarker);
22618
- return out.replace(secretAssignmentPattern, `$1${redactedMarker}`);
22619
- }
22620
- /**
22621
- * The built-in redactor. Walks objects and arrays; replaces values under
22622
- * secret-bearing keys wholesale; scrubs in-value patterns from every string.
22623
- * Cycle-safe (a seen-set short-circuits self-referential payloads to
22624
- * `'[circular]'`), depth-bounded, and total — never throws on customer input.
22625
- */
22626
- function defaultRedactor(value) {
22627
- return walk(value, /* @__PURE__ */ new WeakSet(), 0);
22628
- }
22629
- const maxDepth = 32;
22630
- function walk(value, seen, depth) {
22631
- if (depth > maxDepth) return "[truncated]";
22632
- if (typeof value === "string") return scrubString(value);
22633
- if (value === null || typeof value !== "object") return value;
22634
- if (seen.has(value)) return "[circular]";
22635
- seen.add(value);
22636
- if (Array.isArray(value)) return value.map((item) => walk(item, seen, depth + 1));
22637
- const out = {};
22638
- for (const [key, v] of Object.entries(value)) {
22639
- const tokenLimit = tokenLimitKeyPattern.test(key) && typeof v === "number" && Number.isSafeInteger(v) && v >= 0;
22640
- if (secretKeyPattern.test(key) && !tokenLimit) {
22641
- out[key] = redactedMarker;
22642
- continue;
22643
- }
22644
- out[key] = walk(v, seen, depth + 1);
22645
- }
22646
- return out;
22647
- }
22648
- /** Stable identity input for saved work that depends on built-in redaction behavior. */
22649
- function defaultRedactorIdentityMaterial() {
22650
- const patternIdentity = (pattern) => ({
22651
- source: pattern.source,
22652
- flags: pattern.flags
22653
- });
22654
- return {
22655
- marker: redactedMarker,
22656
- secretKeyPattern: patternIdentity(secretKeyPattern),
22657
- tokenLimitKeyPattern: patternIdentity(tokenLimitKeyPattern),
22658
- valuePatterns: valuePatterns.map(patternIdentity),
22659
- secretAssignmentPattern: patternIdentity(secretAssignmentPattern),
22660
- maxDepth,
22661
- scrubString: Function.prototype.toString.call(scrubString),
22662
- walk: Function.prototype.toString.call(walk),
22663
- defaultRedactor: Function.prototype.toString.call(defaultRedactor)
22664
- };
22665
- }
22666
- /**
22667
- * Resolve the redactor a client uses. A caller-supplied hook handles
22668
- * domain-specific values first, then the built-in scrubber still removes
22669
- * common credentials and email addresses. Returning `false` is the explicit
22670
- * opt-out for already-reviewed public values.
22671
- */
22672
- function resolveRedactor(redact) {
22673
- if (redact === false) return (value) => value;
22674
- if (!redact) return defaultRedactor;
22675
- return (value) => defaultRedactor(redact(value));
22676
- }
22677
- //#endregion
22678
- export { captureReusableExecutorConfig as $, traceContextToEnv as $n, inheritRuntimeOwnedExecutorAttestation as $r, bridgeRuntimeAttachmentsKey as $t, consumeScopeRetainedOwnerResult as A, sumSandboxUsage as Ai, throwAbort as An, assertProfileMaterialization as Ar, workerTraceHeaders as At, workerInteractiveBindingFile as B, registerRetainedExecutorPreparation as Bn, renderUnsupported as Br, claimsAuthority as Bt, settledToIteration as C, extractLlmCallEvent as Ci, deleteBoxSafe as Cn, DEFAULT_LOCAL_HARNESS as Cr, contentAddress as Ct, timerAt as D, notifySandboxEventObserver as Di, randomSuffix as Dn, parseCodexTokenUsage as Dr, WORKER_TRACE_PROPAGATION as Dt, pollFor as E, mapSandboxToolEvent as Ei, promptCacheTokenClasses as En, localHarnessExecutable as Er, spendFromUsageEvents as Et, interactiveAdmissionSeamKey as F, promptOptionsFromAgentTurnInput as Fi, resourceTelemetry as Fn, promptControlProfileMaterialization as Fr, readWorkerProgress as Ft, destroyInteractiveEnvironment as G, reconnectRetainedRun as Gn, isNoEntError as Gr, isLiveNodeStatus as Gt, reconnectRetainedInteractiveRun as H, RunCancellationReason as Hn, unsupportedProfileDimensions as Hr, isPeerMailEnvelope as Ht, readWorkerInteractiveAdmissions as I, providerMessageText as Ii, withBudgetResources as In, promptModelProfileMaterialization as Ir, createInbox as It, queueOf as J, startRetainedRunInEnvironment as Jn, writeAllBytes as Jr, bridgeModelRouteRefusal as Jt, effectiveConcurrency as K, recoverRetainedRun as Kn, parseCommittedJsonLines as Kr, isTerminalNodeStatus as Kt, workerInteractiveAdmissionFile as L, createPushTraceSource as Ln, promptOnlyProfileMaterialization as Lr, AUTHORITY_MARKERS as Lt, scopeRetainedOwnerContext as M, abortError$2 as Mi, unmeteredSpend as Mn, defineProfileMaterializationContract as Mr, taskToPrompt as Mt, scopeRetainedOwnerPriorSpend as N, awaitAbortable$1 as Ni, zeroSpend as Nn, fullProfileMaterialization as Nr, DEFAULT_STALL_AFTER_MS as Nt, validateWaitSpec as O, sandboxEventServedBackend as Oi, sleep as On, CodexExecutionDiagnosticError as Or, readWorkerTraceContext as Ot, scopeRetainedOwnerResult as P, promptFromAgentTurnInput as Pi, addResourceSpend as Pn, profileMaterializationAxes$1 as Pr, createActivityLog as Pt, bindReusableExecutorExecutionId as Q, readTraceContextFromEnv as Qn, finalizeRuntimeOwnedPendingExecutor as Qr, readCodexRolloutSession as Qt, attachWorker as R, decodeToolPart as Rn, promptResourceProfileMaterialization as Rr, DEFAULT_PEER_MAIL_LIMITS as Rt, scopeOwnerExecutorNodeContext as S, createSandboxUsageLedger as Si, cloneSpend as Sn, removeWorktree as Sr, workerTraceAnalysisStore as St, isWaitOutcome as T, mapSandboxEvent as Ti, isAbortError$2 as Tn, harnessSupportsReasoningEffort as Tr, createBudgetPool as Tt, recoverRetainedInteractiveRun as U, abortError$1 as Un, validateProfileMaterialization as Ur, peerMailTools as Ut, workerInteractiveBindingsDir as V, retainedExecutorSeamKey as Vn, sandboxActProfileMaterialization as Vr, createPeerMailbox as Vt, startRetainedInteractiveRun as W, linkAbort as Wn, worktreeCliProfileMaterialization as Wr, peerMailVerbNames as Wt, DEFAULT_SUCCESSFUL_SHUTDOWN_MS as X, createPropagatingTraceEmitter as Xn, attestRuntimeOwnedScopeOwner as Xr, createCodexRolloutStoreReader as Xt, rollingDispatch as Y, retainedCreateMaterial as Yn, attestRuntimeOwnedPendingExecutor as Yr, addHarnessUsage as Yt, teardownExecutor as Z, mergeTraceEnv as Zn, authoredProfileDigest as Zr, harnessUsageIsEmpty as Zt, deriveNodeExecutionIdentity as _, projectSandboxOutcome as _i, providerAsSandboxClient as _n, sanitizeRuntimeStreamEvent as _r, replaySpawnTree as _t, createSupervisor as a, runtimeOwnedDriveHarnessProviderEvidence as ai, runAgentRounds as an, createOtelExporter as ar, createWorktreeCliExecutor as at, recordScopeOwnerMaterialization as b, canonicalStreamEventFromSandboxEvent as bi, addSpend as bn, captureWorktreeDiff as br, isTraceAnalysisStore as bt, pickBestDelivered as c, runtimeOwnedExecutorProviderEvidence as ci, acquireSandbox as cn, generateSpanId as cr, createInPlaceCliExecutor as ct, driverChild as d, unknownExecutionBindingReceipt as di, routerBrain as dn, padTraceId as dr, InMemoryResultBlobStore as dt, knownExecutionBindingReceipt as ei, bridgeStopSignalKey as en, INTELLIGENCE_WIRE_VERSION as er, cliInPlaceExecutor as et, driverExecutorFactory as f, unknownMaterializationReceipt as fi, runBrainLoop as fn, toOtelAttributes as fr, InMemorySpawnJournal as ft, createScope as g, detachedSnapshot as gi, providerAsExecutor as gn, sanitizeKnowledgeReadinessReport as gr, pendingWaits as gt, beginScopeOwnerAttempt as h, detachedFrozen as hi, createAgentEnvironmentProviderRegistry as hn, sanitizeAgentRuntimeEvent as hr, materializeTreeView as ht, createRootHandle as i, recordRuntimeOwnedDriveHarnessProviderEvidence as ii, isTerminalDecision as in, createOpenInferenceFileExporter as ir, snapshotExecutorConfig as it, prepareScopeRetainedOwnerTask as j, decodeHarnessUsage as ji, throwIfAborted as jn, controlProfileMaterialization as jr, workerTraceSeamKey as jt, waitUntil as k, sandboxProgressEvents as ki, stringifySafe as kn, AGENT_PROFILE_MATERIALIZATION_AXES as kr, workerTraceEnv as kt, runFinalizer as l, runtimeOwnedPendingExecutorMaterialization as li, assertBoxlessPromptOptions as ln, loopEventToOtelSpan as lr, FileResultBlobStore as lt, withDriverExecutor as m, executableAgentSpecSnapshot as mi, observedModelMatchesDeclared as mn, createRuntimeStreamEventCollector as mr, loadSpawnForest as mt, defaultRedactorIdentityMaterial as n, newExecutionAttemptId as ni, createSandboxForSpec as nn, buildLoopSpanNodes as nr, createExecutor as nt, bestDelivered as o, runtimeOwnedExecutorExecutionBinding as oi, createSandboxLineage as on, exportEvalRuns as or, DEFAULT_SANDBOX_STEERING_MAX_TURNS as ot, isDriverSpec as p, executableAgentProfileSnapshot as pi, canonicalObservedModelParts as pn, createRuntimeEventCollector as pr, insideCursorNamespace as pt, freeSlots as q, startRetainedRun as qn, prepareJsonlAppend as qr, bridgeAdmissionRefusal as qt, resolveRedactor as r, providerAttemptEvidence as ri, defaultSelectWinner as rn, buildRuntimeEventOtelSpans as rr, createExecutorRegistry as rt, collectDelivered as s, runtimeOwnedExecutorMaterialization as si, probeSandboxCapabilities as sn, flatOtelSpan as sr, createSteerableSandboxSession as st, defaultRedactor as t, knownMaterializationReceipt as ti, TERMINAL_DECISIONS as tn, buildLoopOtelSpans as tr, cliWorktreeExecutor as tt, runTree as u, runtimeOwnedScopeOwnerRuntime as ui, readPromptOptions as un, padSpanId as ur, FileSpawnJournal as ut, meterRuntimeOwnedAccounting as v, readSandboxOutcome as vi, resolveAgentEnvironmentProvider as vn, runSettledCommand as vr, WORKER_TOOL_TRACE_SCHEMA_VERSION as vt, createWaitProbes as w, isSandboxTerminalEvent as wi, hasCompleteCacheBreakdown as wn, LOCAL_HARNESSES as wr, assertValidBudget as wt, restoreScopeOwnerAcceptedExecution as x, createSandboxToolPartState as xi, chargedTokens as xn, createWorktree as xr, parseWorkerToolTraceArtifact as xt, meterRuntimeOwnedProviderAttempt as y, assertSandboxServedModel as yi, sandboxClientAsProvider as yn, runWorktreeHarness as yr, captureWorkerTraceEvidence as yt, readWorkerInteractiveBinding as z, sandboxSessionTraceSource as zn, renderProfileMaterializationIssues as zr, PEER_MAIL_WIRE_KEY as zt };
22765
+ export { createExecutor as $, traceContextToEnv as $n, inheritRuntimeOwnedExecutorAttestation as $r, createSandboxForSpec as $t, scopeRetainedOwnerPriorSpend as A, sumSandboxUsage as Ai, zeroSpend as An, assertProfileMaterialization as Ar, DEFAULT_STALL_AFTER_MS as At, recoverRetainedInteractiveRun as B, abortError$1 as Bn, renderUnsupported as Br, peerMailTools as Bt, pollFor as C, extractLlmCallEvent as Ci, promptCacheTokenClasses as Cn, DEFAULT_LOCAL_HARNESS as Cr, spendFromUsageEvents as Ct, consumeScopeRetainedOwnerResult as D, notifySandboxEventObserver as Di, throwAbort as Dn, parseCodexTokenUsage as Dr, workerTraceHeaders as Dt, waitUntil as E, mapSandboxToolEvent as Ei, stringifySafe as En, localHarnessExecutable as Er, workerTraceEnv as Et, attachWorker as F, promptOptionsFromAgentTurnInput as Fi, decodeToolPart as Fn, promptControlProfileMaterialization as Fr, DEFAULT_PEER_MAIL_LIMITS as Ft, queueOf as G, startRetainedRunInEnvironment as Gn, isNoEntError as Gr, bridgeModelRouteRefusal as Gt, destroyInteractiveEnvironment as H, reconnectRetainedRun as Hn, unsupportedProfileDimensions as Hr, isLiveNodeStatus as Ht, readWorkerInteractiveBinding as I, providerMessageText as Ii, sandboxSessionTraceSource as In, promptModelProfileMaterialization as Ir, PEER_MAIL_WIRE_KEY as It, teardownExecutor as J, defaultRedactorIdentityMaterial as Jn, writeAllBytes as Jr, harnessUsageIsEmpty as Jt, rollingDispatch as K, retainedCreateMaterial as Kn, parseCommittedJsonLines as Kr, addHarnessUsage as Kt, workerInteractiveBindingFile as L, registerRetainedExecutorPreparation as Ln, promptOnlyProfileMaterialization as Lr, claimsAuthority as Lt, interactiveAdmissionSeamKey as M, abortError$2 as Mi, resourceTelemetry as Mn, defineProfileMaterializationContract as Mr, readWorkerProgress as Mt, readWorkerInteractiveAdmissions as N, awaitAbortable$1 as Ni, withBudgetResources as Nn, fullProfileMaterialization as Nr, createInbox as Nt, prepareScopeRetainedOwnerTask as O, sandboxEventServedBackend as Oi, throwIfAborted as On, CodexExecutionDiagnosticError as Or, workerTraceSeamKey as Ot, workerInteractiveAdmissionFile as P, promptFromAgentTurnInput as Pi, createPushTraceSource as Pn, profileMaterializationAxes$1 as Pr, AUTHORITY_MARKERS as Pt, cliWorktreeExecutor as Q, readTraceContextFromEnv as Qn, finalizeRuntimeOwnedPendingExecutor as Qr, TERMINAL_DECISIONS as Qt, workerInteractiveBindingsDir as R, retainedExecutorSeamKey as Rn, promptResourceProfileMaterialization as Rr, createPeerMailbox as Rt, isWaitOutcome as S, createSandboxUsageLedger as Si, isAbortError$2 as Sn, removeWorktree as Sr, createBudgetPool as St, validateWaitSpec as T, mapSandboxEvent as Ti, sleep as Tn, harnessSupportsReasoningEffort as Tr, readWorkerTraceContext as Tt, effectiveConcurrency as U, recoverRetainedRun as Un, validateProfileMaterialization as Ur, isTerminalNodeStatus as Ut, startRetainedInteractiveRun as V, linkAbort as Vn, sandboxActProfileMaterialization as Vr, peerMailVerbNames as Vt, freeSlots as W, startRetainedRun as Wn, worktreeCliProfileMaterialization as Wr, bridgeAdmissionRefusal as Wt, captureReusableExecutorConfig as X, createPropagatingTraceEmitter as Xn, attestRuntimeOwnedScopeOwner as Xr, bridgeRuntimeAttachmentsKey as Xt, bindReusableExecutorExecutionId as Y, resolveRedactor as Yn, attestRuntimeOwnedPendingExecutor as Yr, readCodexRolloutSession as Yt, cliInPlaceExecutor as Z, mergeTraceEnv as Zn, authoredProfileDigest as Zr, bridgeStopSignalKey as Zt, recordScopeOwnerMaterialization as _, projectSandboxOutcome as _i, addSpend as _n, sanitizeRuntimeStreamEvent as _r, isTraceAnalysisStore as _t, pickBestDelivered as a, runtimeOwnedDriveHarnessProviderEvidence as ai, acquireSandbox as an, createOtelExporter as ar, createInPlaceCliExecutor as at, settledToIteration as b, canonicalStreamEventFromSandboxEvent as bi, deleteBoxSafe as bn, captureWorktreeDiff as br, contentAddress as bt, driverChild as c, runtimeOwnedExecutorProviderEvidence as ci, routerBrain as cn, generateSpanId as cr, InMemoryResultBlobStore as ct, withDriverExecutor as d, unknownExecutionBindingReceipt as di, observedModelMatchesDeclared as dn, padTraceId as dr, loadSpawnForest as dt, knownExecutionBindingReceipt as ei, defaultSelectWinner as en, INTELLIGENCE_WIRE_VERSION as er, createExecutorRegistry as et, beginScopeOwnerAttempt as f, unknownMaterializationReceipt as fi, createAgentEnvironmentProviderRegistry as fn, toOtelAttributes as fr, materializeTreeView as ft, meterRuntimeOwnedProviderAttempt as g, detachedSnapshot as gi, sandboxClientAsProvider as gn, sanitizeKnowledgeReadinessReport as gr, captureWorkerTraceEvidence as gt, meterRuntimeOwnedAccounting as h, detachedFrozen as hi, resolveAgentEnvironmentProvider as hn, sanitizeAgentRuntimeEvent as hr, WORKER_TOOL_TRACE_SCHEMA_VERSION as ht, collectDelivered as i, recordRuntimeOwnedDriveHarnessProviderEvidence as ii, probeSandboxCapabilities as in, createOpenInferenceFileExporter as ir, createSteerableSandboxSession as it, scopeRetainedOwnerResult as j, decodeHarnessUsage as ji, addResourceSpend as jn, controlProfileMaterialization as jr, createActivityLog as jt, scopeRetainedOwnerContext as k, sandboxProgressEvents as ki, unmeteredSpend as kn, AGENT_PROFILE_MATERIALIZATION_AXES as kr, taskToPrompt as kt, driverExecutorFactory as l, runtimeOwnedPendingExecutorMaterialization as li, runBrainLoop as ln, loopEventToOtelSpan as lr, InMemorySpawnJournal as lt, deriveNodeExecutionIdentity as m, executableAgentSpecSnapshot as mi, providerAsSandboxClient as mn, createRuntimeStreamEventCollector as mr, replaySpawnTree as mt, createSupervisor as n, newExecutionAttemptId as ni, runAgentRounds as nn, buildLoopSpanNodes as nr, createWorktreeCliExecutor as nt, runFinalizer as o, runtimeOwnedExecutorExecutionBinding as oi, assertBoxlessPromptOptions as on, exportEvalRuns as or, FileResultBlobStore as ot, createScope as p, executableAgentProfileSnapshot as pi, providerAsExecutor as pn, createRuntimeEventCollector as pr, pendingWaits as pt, DEFAULT_SUCCESSFUL_SHUTDOWN_MS as q, defaultRedactor as qn, prepareJsonlAppend as qr, createCodexRolloutStoreReader as qt, bestDelivered as r, providerAttemptEvidence as ri, createSandboxLineage as rn, buildRuntimeEventOtelSpans as rr, DEFAULT_SANDBOX_STEERING_MAX_TURNS as rt, runTree as s, runtimeOwnedExecutorMaterialization as si, readPromptOptions as sn, flatOtelSpan as sr, FileSpawnJournal as st, createRootHandle as t, knownMaterializationReceipt as ti, isTerminalDecision as tn, buildLoopOtelSpans as tr, snapshotExecutorConfig as tt, isDriverSpec as u, runtimeOwnedScopeOwnerRuntime as ui, canonicalObservedModelParts as un, padSpanId as ur, insideCursorNamespace as ut, restoreScopeOwnerAcceptedExecution as v, readSandboxOutcome as vi, chargedTokens as vn, runSettledCommand as vr, parseWorkerToolTraceArtifact as vt, timerAt as w, isSandboxTerminalEvent as wi, randomSuffix as wn, LOCAL_HARNESSES as wr, WORKER_TRACE_PROPAGATION as wt, createWaitProbes as x, createSandboxToolPartState as xi, hasCompleteCacheBreakdown as xn, createWorktree as xr, assertValidBudget as xt, scopeOwnerExecutorNodeContext as y, assertSandboxServedModel as yi, cloneSpend as yn, runWorktreeHarness as yr, workerTraceAnalysisStore as yt, reconnectRetainedInteractiveRun as z, RunCancellationReason as zn, renderProfileMaterializationIssues as zr, isPeerMailEnvelope as zt };
22679
22766
 
22680
- //# sourceMappingURL=redact-DyckXHLF.js.map
22767
+ //# sourceMappingURL=supervisor-CvF_KeLc.js.map