@tangle-network/agent-eval 0.202.1 → 0.203.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.
- package/CHANGELOG.md +11 -0
- package/dist/adapters/http.d.ts +2 -2
- package/dist/analyst/index.d.ts +5 -5
- package/dist/analyst/index.js +1 -1
- package/dist/benchmarks/index.d.ts +4 -4
- package/dist/campaign/index.d.ts +5 -5
- package/dist/campaign/index.js +2 -2
- package/dist/{claude-jsonl-CxZZrDJ3.js → claude-jsonl-DoQJBCVR.js} +49 -15
- package/dist/claude-jsonl-DoQJBCVR.js.map +1 -0
- package/dist/cli.js +2 -2
- package/dist/contract/index.d.ts +7 -7
- package/dist/contract/index.js +1 -1
- package/dist/{default-registry-D1rNS2yB.d.ts → default-registry-B-utjsmX.d.ts} +3 -3
- package/dist/{default-registry-D1rNS2yB.d.ts.map → default-registry-B-utjsmX.d.ts.map} +1 -1
- package/dist/{default-registry-D4qXx2aG.js → default-registry-CpswV_S2.js} +2 -2
- package/dist/{default-registry-D4qXx2aG.js.map → default-registry-CpswV_S2.js.map} +1 -1
- package/dist/{define-agent-eval-CNkCzx6h.d.ts → define-agent-eval-MAc6BQrq.d.ts} +5 -5
- package/dist/{define-agent-eval-CNkCzx6h.d.ts.map → define-agent-eval-MAc6BQrq.d.ts.map} +1 -1
- package/dist/{engine-DlKIzDKo.d.ts → engine-4_Q4oujc.d.ts} +2 -2
- package/dist/{engine-DlKIzDKo.d.ts.map → engine-4_Q4oujc.d.ts.map} +1 -1
- package/dist/evaluation.d.ts +1 -1
- package/dist/experiment/index.d.ts +1 -1
- package/dist/{exporters-XMCYJlqT.d.ts → exporters-ChTnR90l.d.ts} +2 -2
- package/dist/{exporters-XMCYJlqT.d.ts.map → exporters-ChTnR90l.d.ts.map} +1 -1
- package/dist/{exporters-Coiv-qO2.js → exporters-X4xwla8A.js} +10 -4
- package/dist/{exporters-Coiv-qO2.js.map → exporters-X4xwla8A.js.map} +1 -1
- package/dist/{hf-dataset-kjIfIK_e.js → hf-dataset-BR2yhuNn.js} +3 -3
- package/dist/{hf-dataset-kjIfIK_e.js.map → hf-dataset-BR2yhuNn.js.map} +1 -1
- package/dist/{index-D4pC7Tvd.d.ts → index-BoVEyQwH.d.ts} +18 -14
- package/dist/{index-D4pC7Tvd.d.ts.map → index-BoVEyQwH.d.ts.map} +1 -1
- package/dist/{index-BzSeeKNp.d.ts → index-CAtNOBQY.d.ts} +16 -5
- package/dist/index-CAtNOBQY.d.ts.map +1 -0
- package/dist/{index-DWDvp-6z.d.ts → index-Cuhxk05B.d.ts} +6 -6
- package/dist/{index-DWDvp-6z.d.ts.map → index-Cuhxk05B.d.ts.map} +1 -1
- package/dist/{index-Bi2fLITd.d.ts → index-DBk_4UPs.d.ts} +4 -4
- package/dist/{index-Bi2fLITd.d.ts.map → index-DBk_4UPs.d.ts.map} +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.js +3 -3
- package/dist/{integrity-uwK7XC-8.js → integrity-BV1ZDf42.js} +38 -6
- package/dist/{integrity-uwK7XC-8.js.map → integrity-BV1ZDf42.js.map} +1 -1
- package/dist/{jev-protocol-CpKI7XSu.d.ts → jev-protocol-BQLxwbqD.d.ts} +24 -7
- package/dist/jev-protocol-BQLxwbqD.d.ts.map +1 -0
- package/dist/jev-protocol.d.ts +2 -2
- package/dist/jev-protocol.js +19 -4
- package/dist/jev-protocol.js.map +1 -1
- package/dist/{jev-review-D4ynCORp.d.ts → jev-review-DX6MI_jq.d.ts} +2 -2
- package/dist/{jev-review-D4ynCORp.d.ts.map → jev-review-DX6MI_jq.d.ts.map} +1 -1
- package/dist/jev.d.ts +4 -4
- package/dist/jev.js +2 -2
- package/dist/{matrix--IZKROxD.d.ts → matrix-BucOjLF1.d.ts} +2 -2
- package/dist/{matrix--IZKROxD.d.ts.map → matrix-BucOjLF1.d.ts.map} +1 -1
- package/dist/{mint-C9Lojt1V.d.ts → mint-C1W8w5wo.d.ts} +10 -2
- package/dist/mint-C1W8w5wo.d.ts.map +1 -0
- package/dist/{mint-vlRckJEX.js → mint-CWG-s2mI.js} +26 -7
- package/dist/mint-CWG-s2mI.js.map +1 -0
- package/dist/multishot/golden/index.d.ts +1 -1
- package/dist/multishot/index.d.ts +2 -2
- package/dist/openapi.json +1 -1
- package/dist/{report-command-DzPpFgjB.js → report-command-D0XL2Cvi.js} +128 -15
- package/dist/report-command-D0XL2Cvi.js.map +1 -0
- package/dist/rl.d.ts +6 -6
- package/dist/rl.js +3 -3
- package/dist/rollout/index.d.ts +5 -5
- package/dist/rollout/index.js +6 -6
- package/dist/{rollout-BUQixCoc.js → rollout-BdCoWV9n.js} +41 -21
- package/dist/{rollout-BUQixCoc.js.map → rollout-BdCoWV9n.js.map} +1 -1
- package/dist/{schema-DAMp77zB.js → schema-BuiujZ-g.js} +37 -1
- package/dist/schema-BuiujZ-g.js.map +1 -0
- package/dist/{schema-B5LtYvn9.d.ts → schema-C-ziyJD7.d.ts} +40 -5
- package/dist/schema-C-ziyJD7.d.ts.map +1 -0
- package/dist/search/index.d.ts +2 -2
- package/dist/{search-kernel-C9CXvFR7.d.ts → search-kernel-B8RC6BlK.d.ts} +2 -2
- package/dist/{search-kernel-C9CXvFR7.d.ts.map → search-kernel-B8RC6BlK.d.ts.map} +1 -1
- package/dist/{statistical-heldout-HswMvzbP.d.ts → statistical-heldout-DJtQAUZB.d.ts} +2 -2
- package/dist/{statistical-heldout-HswMvzbP.d.ts.map → statistical-heldout-DJtQAUZB.d.ts.map} +1 -1
- package/dist/{store-tool-spans-Dv9x4XYG.d.ts → store-tool-spans-fkNF7Q9Y.d.ts} +3 -3
- package/dist/{store-tool-spans-Dv9x4XYG.d.ts.map → store-tool-spans-fkNF7Q9Y.d.ts.map} +1 -1
- package/dist/supervisor-run/index.d.ts +2 -2
- package/dist/supervisor-run/index.d.ts.map +1 -1
- package/dist/supervisor-run/index.js +23 -15
- package/dist/supervisor-run/index.js.map +1 -1
- package/dist/terminal-record-BHocwFw1.js.map +1 -1
- package/dist/{tool-groups-BY1MdSIE.d.ts → tool-groups-Zm84Pqpk.d.ts} +2 -2
- package/dist/tool-groups-Zm84Pqpk.d.ts.map +1 -0
- package/dist/{trace-questions-DnqdmwyV.d.ts → trace-questions--lnJTaou.d.ts} +2 -2
- package/dist/{trace-questions-DnqdmwyV.d.ts.map → trace-questions--lnJTaou.d.ts.map} +1 -1
- package/dist/trace-repair/index.d.ts +1 -1
- package/dist/traces.d.ts +2 -2
- package/dist/{types-C4hH69a9.d.ts → types-B6JadxWL.d.ts} +2 -2
- package/dist/{types-C4hH69a9.d.ts.map → types-B6JadxWL.d.ts.map} +1 -1
- package/dist/{types-DfvQOe91.d.ts → types-khIUQ0O5.d.ts} +2 -2
- package/dist/{types-DfvQOe91.d.ts.map → types-khIUQ0O5.d.ts.map} +1 -1
- package/dist/{types-DRNlLbBR.d.ts → types-v6nRcIqg.d.ts} +11 -3
- package/dist/types-v6nRcIqg.d.ts.map +1 -0
- package/docs/campaign-coverage.md +20 -0
- package/docs/changes/jev-recorded-evidence.md +24 -0
- package/docs/jev-replay.md +50 -0
- package/docs/rollout.md +35 -1
- package/package.json +1 -1
- package/dist/claude-jsonl-CxZZrDJ3.js.map +0 -1
- package/dist/index-BzSeeKNp.d.ts.map +0 -1
- package/dist/jev-protocol-CpKI7XSu.d.ts.map +0 -1
- package/dist/mint-C9Lojt1V.d.ts.map +0 -1
- package/dist/mint-vlRckJEX.js.map +0 -1
- package/dist/report-command-DzPpFgjB.js.map +0 -1
- package/dist/schema-B5LtYvn9.d.ts.map +0 -1
- package/dist/schema-DAMp77zB.js.map +0 -1
- package/dist/tool-groups-BY1MdSIE.d.ts.map +0 -1
- package/dist/types-DRNlLbBR.d.ts.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { a as hashCanonical } from "./canonical-BsZVgBhW.js";
|
|
1
2
|
import { o as summarizeNumberSeries } from "./descriptive-D9LUFk1-.js";
|
|
2
3
|
import { a as parseJson, c as workerSourceKey, d as SUPERVISOR_RUN_SCHEMA, f as isUnavailable, i as asRecord, l as NO_SOURCE_LIMITS, m as unavailable, o as parseJsonl, p as showMeasured, r as readTerminalRecord, s as parseSupervisorTree, u as SUPERVISOR_RUN_ROLLUP_SCHEMA } from "./terminal-record-BHocwFw1.js";
|
|
3
4
|
import { basename, join, resolve } from "node:path";
|
|
@@ -322,7 +323,18 @@ function analyzeSupervisorRunSources(src, now = Date.now) {
|
|
|
322
323
|
unknownNodes: closeUsdUnreported && rootId !== null ? [rootId] : []
|
|
323
324
|
}
|
|
324
325
|
};
|
|
326
|
+
const noteCaptureGaps = (owner, captures) => {
|
|
327
|
+
if (captures === null || captures?.length === 0) gaps.push(`${owner} workspaceCapture: no retained output capture evidence`);
|
|
328
|
+
else if (captures !== void 0) for (const [index, capture] of captures.entries()) {
|
|
329
|
+
const source = `${owner} workspaceCapture[${index + 1}]`;
|
|
330
|
+
if (capture.projectionGap !== null) gaps.push(`${source}: ${capture.projectionGap}`);
|
|
331
|
+
if (capture.coverageComplete === false) gaps.push(`${source}: ${capture.incompleteReason ?? "provider reported incomplete coverage"}`);
|
|
332
|
+
if (capture.coverageComplete === null && capture.projectionGap === null) gaps.push(`${source}: capture coverage was not recorded`);
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
noteCaptureGaps(`root ${rootId ?? src.runRef}`, src.rootWorkspaceCaptures);
|
|
325
336
|
const perWorker = (src.workers ?? []).map((w) => {
|
|
337
|
+
noteCaptureGaps(`worker ${w.workerId ?? w.label}`, w.workspaceCaptures);
|
|
326
338
|
const f = tree.workerLogs.get(workerSourceKey(w));
|
|
327
339
|
const matchingSpawns = spawnsForSource(w);
|
|
328
340
|
const spawn = spawnForSource(w);
|
|
@@ -347,7 +359,8 @@ function analyzeSupervisorRunSources(src, now = Date.now) {
|
|
|
347
359
|
usd: usdLimit !== null ? null : w.workerId === void 0 ? workerUsdByLabel.get(w.label) ?? null : workerUsdById.get(w.workerId) ?? null,
|
|
348
360
|
patchBytes: w.patchBytes ?? f?.finishedPatchBytes ?? null,
|
|
349
361
|
passed,
|
|
350
|
-
score: close?.score ?? f?.score ?? null
|
|
362
|
+
score: close?.score ?? f?.score ?? null,
|
|
363
|
+
workspaceCaptures: w.workspaceCaptures ?? null
|
|
351
364
|
};
|
|
352
365
|
});
|
|
353
366
|
const wallDistribution = summarizeNumberSeries(perWorker.map((w) => w.wallMs).filter((w) => w !== null));
|
|
@@ -408,6 +421,7 @@ function analyzeSupervisorRunSources(src, now = Date.now) {
|
|
|
408
421
|
decision,
|
|
409
422
|
economics,
|
|
410
423
|
outcome,
|
|
424
|
+
rootWorkspaceCaptures: src.rootWorkspaceCaptures ?? null,
|
|
411
425
|
gaps,
|
|
412
426
|
traceCommand: src.traceCommand ?? "npx --yes @tangle-network/traces@latest analyze --harness opencode --cwd <worker-clone-cwd>"
|
|
413
427
|
};
|
|
@@ -750,7 +764,7 @@ function renderSupervisorRollupMarkdown(rollup, title = "Round rollup") {
|
|
|
750
764
|
*
|
|
751
765
|
* Transcripts come from Runtime's own records too: `root-stream.jsonl` is the root's, each
|
|
752
766
|
* worker's turn outputs and native-session receipt are read from the journal, and every blob
|
|
753
|
-
* a record names is checked on disk (see `
|
|
767
|
+
* a record names is checked on disk (see `nodeTranscripts`).
|
|
754
768
|
*
|
|
755
769
|
* The run's terminal record is Runtime's own: `result.json` is the
|
|
756
770
|
* `SupervisedResult` that `supervise()` returned, verbatim, and its `kind`
|
|
@@ -1043,13 +1057,87 @@ function runtimeBeginState(root, startedAt) {
|
|
|
1043
1057
|
function blobFile(runDir, ref) {
|
|
1044
1058
|
return typeof ref === "string" && /^sha256:[0-9a-f]{64}$/u.test(ref) ? join(runDir, BLOB_DIR, `${ref.replace(":", "-")}.json`) : null;
|
|
1045
1059
|
}
|
|
1060
|
+
async function workspaceCapturesFromOutput(runDir, ref) {
|
|
1061
|
+
const outRef = typeof ref === "string" ? ref : null;
|
|
1062
|
+
const blobPath = blobFile(runDir, ref);
|
|
1063
|
+
const missing = (projectionGap) => ({
|
|
1064
|
+
outRef,
|
|
1065
|
+
blobPath,
|
|
1066
|
+
receiptPointer: null,
|
|
1067
|
+
receipt: null,
|
|
1068
|
+
attempts: null,
|
|
1069
|
+
coverageComplete: null,
|
|
1070
|
+
incompleteReason: null,
|
|
1071
|
+
projectionGap
|
|
1072
|
+
});
|
|
1073
|
+
if (blobPath === null) return [missing("Runtime output has no valid content address")];
|
|
1074
|
+
if (!await isFile(blobPath)) return [missing("Runtime output blob is missing or not a file")];
|
|
1075
|
+
const raw = await readMaybe(blobPath);
|
|
1076
|
+
if (raw === null) return [missing("Runtime output blob is missing")];
|
|
1077
|
+
let output;
|
|
1078
|
+
try {
|
|
1079
|
+
output = JSON.parse(raw);
|
|
1080
|
+
} catch {
|
|
1081
|
+
return [missing("Runtime output blob is not JSON")];
|
|
1082
|
+
}
|
|
1083
|
+
let addressGap = null;
|
|
1084
|
+
try {
|
|
1085
|
+
if (hashCanonical(output) !== outRef) addressGap = "Runtime output content address does not match output blob";
|
|
1086
|
+
} catch {
|
|
1087
|
+
addressGap = "Runtime output cannot be canonically hashed";
|
|
1088
|
+
}
|
|
1089
|
+
const project = (rawReceipt, receiptPointer) => {
|
|
1090
|
+
const receipt = record(rawReceipt);
|
|
1091
|
+
if (receipt === null) return {
|
|
1092
|
+
...missing(`workspaceCapture receipt is absent or malformed${addressGap === null ? "" : `; ${addressGap}`}`),
|
|
1093
|
+
receiptPointer,
|
|
1094
|
+
receipt: rawReceipt
|
|
1095
|
+
};
|
|
1096
|
+
const provenance = record(receipt.provenance);
|
|
1097
|
+
const attempts = Array.isArray(provenance?.attempts) ? provenance.attempts : null;
|
|
1098
|
+
const coverageComplete = typeof receipt.coverageComplete === "boolean" ? receipt.coverageComplete : null;
|
|
1099
|
+
const incompleteReason = typeof receipt.incompleteReason === "string" ? receipt.incompleteReason : null;
|
|
1100
|
+
const gaps = [];
|
|
1101
|
+
if (addressGap !== null) gaps.push(addressGap);
|
|
1102
|
+
if (coverageComplete === null) gaps.push("workspaceCapture.coverageComplete is absent");
|
|
1103
|
+
if (record(receipt.snapshot) === null) gaps.push("workspaceCapture.snapshot is absent");
|
|
1104
|
+
if (provenance === null) gaps.push("workspaceCapture.provenance is absent");
|
|
1105
|
+
if (attempts === null) gaps.push("workspaceCapture.provenance.attempts is absent");
|
|
1106
|
+
else if (attempts.length === 0 || attempts.some((attempt) => record(attempt) === null)) gaps.push("workspaceCapture.provenance.attempts is empty or malformed");
|
|
1107
|
+
return {
|
|
1108
|
+
outRef,
|
|
1109
|
+
blobPath,
|
|
1110
|
+
receiptPointer,
|
|
1111
|
+
receipt,
|
|
1112
|
+
attempts,
|
|
1113
|
+
coverageComplete,
|
|
1114
|
+
incompleteReason,
|
|
1115
|
+
projectionGap: gaps.length > 0 ? gaps.join("; ") : null
|
|
1116
|
+
};
|
|
1117
|
+
};
|
|
1118
|
+
const result = record(output);
|
|
1119
|
+
const captures = [];
|
|
1120
|
+
for (const key of Object.keys(result ?? {})) if (key === "workspaceCapture") captures.push(project(result?.[key], "/workspaceCapture"));
|
|
1121
|
+
else if (key === "workspaceCaptures") {
|
|
1122
|
+
const receipts = result?.[key];
|
|
1123
|
+
if (Array.isArray(receipts) && receipts.length > 0) for (const [index, receipt] of receipts.entries()) captures.push(project(receipt, `/workspaceCaptures/${index}`));
|
|
1124
|
+
else captures.push({
|
|
1125
|
+
...missing(`workspaceCaptures is empty or malformed${addressGap === null ? "" : `; ${addressGap}`}`),
|
|
1126
|
+
receiptPointer: "/workspaceCaptures",
|
|
1127
|
+
receipt: receipts ?? null
|
|
1128
|
+
});
|
|
1129
|
+
}
|
|
1130
|
+
return captures.length > 0 ? captures : [project(null, null)];
|
|
1131
|
+
}
|
|
1046
1132
|
/**
|
|
1047
|
-
* What Runtime retained of each
|
|
1133
|
+
* What Runtime retained of each node's decisions, from its own records.
|
|
1048
1134
|
*
|
|
1049
1135
|
* - A turn is one `execution-admitted` event in the `dispatched` phase. Its `execution-result`
|
|
1050
1136
|
* names an output blob holding that turn's provider event stream (reasoning, tool calls and
|
|
1051
1137
|
* results as the harness reported them). A dispatched turn with no retained output lost its
|
|
1052
1138
|
* record, which is how a worker that went down mid-turn shows up.
|
|
1139
|
+
* - Every event's `outRef` enters the same collector, once per node and address. Terminal
|
|
1140
|
+
* records retain ordinary and steerable results; they are not counted as dispatched turns.
|
|
1053
1141
|
* - The terminal event's `harnessTranscript` receipt covers the harness's native session files.
|
|
1054
1142
|
* Those are the only record of the harness's own subagents, so an unavailable receipt is a
|
|
1055
1143
|
* separate gap from a missing turn, and its reason is Runtime's, verbatim.
|
|
@@ -1057,14 +1145,15 @@ function blobFile(runDir, ref) {
|
|
|
1057
1145
|
* Blob files are checked on disk: a receipt that names a blob the directory no longer holds is
|
|
1058
1146
|
* not a retained transcript.
|
|
1059
1147
|
*/
|
|
1060
|
-
async function
|
|
1148
|
+
async function nodeTranscripts(runDir, events, nodeIds) {
|
|
1061
1149
|
const facts = /* @__PURE__ */ new Map();
|
|
1062
1150
|
const entry = (id) => {
|
|
1063
1151
|
let found = facts.get(id);
|
|
1064
1152
|
if (found === void 0) {
|
|
1065
1153
|
found = {
|
|
1066
1154
|
dispatched: 0,
|
|
1067
|
-
|
|
1155
|
+
outputRefs: [],
|
|
1156
|
+
outputPositions: /* @__PURE__ */ new Map(),
|
|
1068
1157
|
receipt: null
|
|
1069
1158
|
};
|
|
1070
1159
|
facts.set(id, found);
|
|
@@ -1073,12 +1162,23 @@ async function workerTranscripts(runDir, events, workerIds) {
|
|
|
1073
1162
|
};
|
|
1074
1163
|
for (const event of events) {
|
|
1075
1164
|
const id = nonEmptyString(event.id);
|
|
1076
|
-
if (id === null || !
|
|
1165
|
+
if (id === null || !nodeIds.has(id)) continue;
|
|
1166
|
+
if (Object.hasOwn(event, "outRef")) {
|
|
1167
|
+
const fact = entry(id);
|
|
1168
|
+
const ref = event.outRef;
|
|
1169
|
+
const position = typeof ref === "string" ? fact.outputPositions.get(ref) : void 0;
|
|
1170
|
+
if (position !== void 0) {
|
|
1171
|
+
if (event.kind === "execution-result") fact.outputRefs[position].turn = true;
|
|
1172
|
+
} else {
|
|
1173
|
+
if (typeof ref === "string") fact.outputPositions.set(ref, fact.outputRefs.length);
|
|
1174
|
+
fact.outputRefs.push({
|
|
1175
|
+
value: ref,
|
|
1176
|
+
turn: event.kind === "execution-result"
|
|
1177
|
+
});
|
|
1178
|
+
}
|
|
1179
|
+
}
|
|
1077
1180
|
if (event.kind === "execution-admitted" && record(event.admission)?.phase === "dispatched") entry(id).dispatched += 1;
|
|
1078
|
-
else if (event.kind === "
|
|
1079
|
-
const file = blobFile(runDir, event.outRef);
|
|
1080
|
-
if (file !== null) entry(id).outputFiles.push(file);
|
|
1081
|
-
} else if (event.kind === "settled" || event.kind === "cancelled") {
|
|
1181
|
+
else if (event.kind === "settled" || event.kind === "cancelled") {
|
|
1082
1182
|
const receipt = record(event.harnessTranscript);
|
|
1083
1183
|
if (receipt !== null) entry(id).receipt = receipt;
|
|
1084
1184
|
}
|
|
@@ -1086,7 +1186,16 @@ async function workerTranscripts(runDir, events, workerIds) {
|
|
|
1086
1186
|
const out = /* @__PURE__ */ new Map();
|
|
1087
1187
|
for (const [id, fact] of facts) {
|
|
1088
1188
|
const retained = [];
|
|
1089
|
-
|
|
1189
|
+
let retainedTurns = 0;
|
|
1190
|
+
const workspaceCaptures = [];
|
|
1191
|
+
for (const { value: ref, turn } of fact.outputRefs) {
|
|
1192
|
+
const file = blobFile(runDir, ref);
|
|
1193
|
+
if (file !== null && await isFile(file)) {
|
|
1194
|
+
retained.push(file);
|
|
1195
|
+
if (turn) retainedTurns += 1;
|
|
1196
|
+
}
|
|
1197
|
+
workspaceCaptures.push(...await workspaceCapturesFromOutput(runDir, ref));
|
|
1198
|
+
}
|
|
1090
1199
|
let nativeSession = null;
|
|
1091
1200
|
if (fact.receipt !== null) {
|
|
1092
1201
|
if (fact.receipt.status === "available") {
|
|
@@ -1107,9 +1216,10 @@ async function workerTranscripts(runDir, events, workerIds) {
|
|
|
1107
1216
|
transcriptRef: nativeSession?.status === "available" ? nativeSession.ref : retained.at(-1) ?? null,
|
|
1108
1217
|
turns: {
|
|
1109
1218
|
dispatched: fact.dispatched,
|
|
1110
|
-
retained:
|
|
1219
|
+
retained: retainedTurns
|
|
1111
1220
|
},
|
|
1112
|
-
nativeSession
|
|
1221
|
+
nativeSession,
|
|
1222
|
+
workspaceCaptures: workspaceCaptures.length > 0 ? workspaceCaptures : null
|
|
1113
1223
|
});
|
|
1114
1224
|
}
|
|
1115
1225
|
return out;
|
|
@@ -1153,6 +1263,7 @@ function absentRuntimeSupervisorRun(runDir, resultText, failureText, instanceId)
|
|
|
1153
1263
|
harnessMissingReason: "Runtime FileRunContext has no external worker-token join",
|
|
1154
1264
|
limits: NO_SOURCE_LIMITS,
|
|
1155
1265
|
rootTranscriptRef: null,
|
|
1266
|
+
rootWorkspaceCaptures: null,
|
|
1156
1267
|
traceCommand: "unavailable — Runtime FileRunContext records no provider-session trace identity"
|
|
1157
1268
|
};
|
|
1158
1269
|
}
|
|
@@ -1188,7 +1299,7 @@ async function readRuntimeSupervisorRun(runDir, opts = {}) {
|
|
|
1188
1299
|
assertResultMatchesJournal(normalized.root, result, resultPath);
|
|
1189
1300
|
const childSpawns = normalized.events.filter((event) => event.kind === "spawned" && nonEmptyString(event.id) !== null).filter((event) => event.id !== normalized.root);
|
|
1190
1301
|
const workerIds = new Set(childSpawns.map((event) => nonEmptyString(event.id)).filter((id) => id !== null));
|
|
1191
|
-
const transcripts = await
|
|
1302
|
+
const transcripts = await nodeTranscripts(runDir, normalized.events, /* @__PURE__ */ new Set([normalized.root, ...workerIds]));
|
|
1192
1303
|
const workers = childSpawns.map((event) => {
|
|
1193
1304
|
const workerId = nonEmptyString(event.id);
|
|
1194
1305
|
const transcript = transcripts.get(workerId);
|
|
@@ -1204,6 +1315,7 @@ async function readRuntimeSupervisorRun(runDir, opts = {}) {
|
|
|
1204
1315
|
retained: 0
|
|
1205
1316
|
},
|
|
1206
1317
|
nativeSession: transcript?.nativeSession ?? null,
|
|
1318
|
+
workspaceCaptures: transcript?.workspaceCaptures ?? null,
|
|
1207
1319
|
patchPath: null
|
|
1208
1320
|
};
|
|
1209
1321
|
});
|
|
@@ -1230,6 +1342,7 @@ async function readRuntimeSupervisorRun(runDir, opts = {}) {
|
|
|
1230
1342
|
harnessMissingReason: "Runtime FileRunContext has no external worker-token join",
|
|
1231
1343
|
limits: sourceLimits(normalized.root, normalized.events, workerIds),
|
|
1232
1344
|
rootTranscriptRef: await isFile(rootStream) ? rootStream : null,
|
|
1345
|
+
rootWorkspaceCaptures: transcripts.get(normalized.root)?.workspaceCaptures ?? null,
|
|
1233
1346
|
traceCommand: "unavailable — Runtime FileRunContext records no provider-session trace identity"
|
|
1234
1347
|
};
|
|
1235
1348
|
}
|
|
@@ -1484,4 +1597,4 @@ async function runSupervisorRunCommand(argv, io = PROCESS_IO) {
|
|
|
1484
1597
|
//#endregion
|
|
1485
1598
|
export { writeSupervisorRunReport as a, readRuntimeSupervisorRun as c, renderSupervisorRunHeadline as d, renderSupervisorRunMarkdown as f, rollupSupervisorRuns as h, reportSupervisorRound as i, runtimeSupervisorRunReader as l, parsePatch as m, analyzeSupervisorRun as n, writeSupervisorRunReportSafe as o, analyzeSupervisorRunSources as p, findSupervisorRunDirs as r, isRuntimeSupervisorRunDir as s, runSupervisorRunCommand as t, renderSupervisorRollupMarkdown as u };
|
|
1486
1599
|
|
|
1487
|
-
//# sourceMappingURL=report-command-
|
|
1600
|
+
//# sourceMappingURL=report-command-D0XL2Cvi.js.map
|