@tangle-network/agent-eval 0.207.2 → 0.207.3

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 CHANGED
@@ -4,6 +4,10 @@ All notable changes to `@tangle-network/agent-eval` and its sibling `agent-eval-
4
4
 
5
5
  ---
6
6
 
7
+ ## [0.207.3] — 2026-10-04
8
+
9
+ - fix(supervisor-run): count a receipt as a native session only when its copy is complete and holds a session file (#932)
10
+
7
11
  ## [0.207.2] — 2026-10-04
8
12
 
9
13
  - fix(supervisor-run): count every spawned worker and report the root apart in the trace summary (#930)
@@ -7,7 +7,7 @@ import { a as ExactAnalystBudgetPolicy, c as RegistryRunOpts, i as BudgetPolicy,
7
7
  import { a as createTraceAnalyst, c as BehavioralAnalystOptions, i as TraceAnalystDefinition, l as behavioralAnalyst, n as buildDefaultAnalystRegistry, o as renderPriorFindings, r as CreateTraceAnalystOptions, s as runTraceAnalyst, t as DefaultAnalystRegistryOptions, u as deriveEfficiencyFindings } from "../default-registry-BHEfZHQd.js";
8
8
  import { a as TraceAnalystLimits, c as RawAnalystEvidence, d as evidenceRefsFromRawFinding, f as parseRawFinding, i as TraceAnalysisEngineResult, l as RawAnalystFinding, n as TraceAnalysisEngine, o as resolveTraceAnalystLimits, r as TraceAnalysisEngineRequest, s as RAW_FINDING_SCHEMA_PROMPT, t as DEFAULT_TRACE_ANALYST_OUTPUT_TOKENS, u as RawAnalystFindingSchema } from "../engine-F_PvwesR.js";
9
9
  import { n as buildTraceToolsForGroup, t as TraceToolGroupName } from "../tool-groups-B7_jUPHp.js";
10
- import { A as SemanticConceptJudgeInput, C as DspyRlmTraceEngineOptions, E as createChatTraceEngine, S as renderFindingSubject, T as ChatTraceEngineOptions, _ as FindingSubject, a as FAILURE_MODE_KIND_SPEC, b as findingSubjectGrammarPromptFor, c as emitControlIntegrityFindings, d as FindingsStore, f as PersistedFinding, g as FINDING_SUBJECT_SYNTAX, h as FINDING_SUBJECT_KINDS, i as IMPROVEMENT_KIND_SPEC, j as SemanticConceptJudgeOptions, l as DiffPolicy, m as diffFindings, n as KNOWLEDGE_POISONING_KIND_SPEC, o as CONTROL_INTEGRITY_ANALYST, p as defaultIsMaterial, r as KNOWLEDGE_GAP_KIND_SPEC, s as ControlIntegrityAnalyst, t as DEFAULT_TRACE_ANALYST_KINDS, u as FindingsDiff, v as FindingSubjectKind, w as createDspyRlmTraceEngine, x as parseFindingSubject, y as KIND_EXPECTED_SUBJECTS } from "../index-C9l_-23M.js";
10
+ import { A as SemanticConceptJudgeInput, C as DspyRlmTraceEngineOptions, E as createChatTraceEngine, S as renderFindingSubject, T as ChatTraceEngineOptions, _ as FindingSubject, a as FAILURE_MODE_KIND_SPEC, b as findingSubjectGrammarPromptFor, c as emitControlIntegrityFindings, d as FindingsStore, f as PersistedFinding, g as FINDING_SUBJECT_SYNTAX, h as FINDING_SUBJECT_KINDS, i as IMPROVEMENT_KIND_SPEC, j as SemanticConceptJudgeOptions, l as DiffPolicy, m as diffFindings, n as KNOWLEDGE_POISONING_KIND_SPEC, o as CONTROL_INTEGRITY_ANALYST, p as defaultIsMaterial, r as KNOWLEDGE_GAP_KIND_SPEC, s as ControlIntegrityAnalyst, t as DEFAULT_TRACE_ANALYST_KINDS, u as FindingsDiff, v as FindingSubjectKind, w as createDspyRlmTraceEngine, x as parseFindingSubject, y as KIND_EXPECTED_SUBJECTS } from "../index-DzYX3WBL.js";
11
11
  import { A as ReplyRowDecoded, C as primeProtocolSha256, D as DecodedReply, E as runPrimeExchange, M as decodeReplyRows, O as ReplyContract, S as normalizePrimeUsage, T as projectPrimeTrajectory, _ as buildPrimePrompt, a as PrimeProjectionOutcome, b as extractPrimeJsonObject, c as PrimeProtocolIdentity, d as PrimeRepairPromptSpec, f as PrimeRepairState, g as analystUsageReceiptFromPrimeUsage, h as PrimeTurnRecord, i as PrimeProjectionDelivery, j as ReplyRowRejection, k as ReplyEnvelope, l as PrimeRawUsage, m as PrimeRowDecoded, n as PrimeExchangeOutcome, o as PrimeProjectionSource, p as PrimeReplyContract, r as PrimeFailure, s as PrimePromptSpec, t as PrimeExchangeOptions, u as PrimeRejectedRow, v as buildPrimeRepairPrompt, w as primeReplyDefect, x as mergePrimeRawUsage, y as emptyPrimeRawUsage } from "../prime-protocol-IoN4Qb6c.js";
12
12
  import { i as nodeHttpPrimeBridgeTransport, n as PrimeBridgeTransportRequest, r as PrimeBridgeTransportResult, t as PrimeBridgeTransport } from "../prime-bridge-transport-6feEglLf.js";
13
13
  import { a as askTraceQuestions, i as VerifiedTraceFinding, n as TraceQuestionOutcome, o as citedSpansOnly, r as TraceQuestionSpec, t as AskTraceQuestionsOptions } from "../trace-questions-Dd3AMf-U.js";
package/dist/cli.js CHANGED
@@ -8,7 +8,7 @@ import { t as createChatClient } from "./chat-client-5LLl4Ctl.js";
8
8
  import { t as runAnalystBenchmarkCommand } from "./benchmark-command-DtP94cOB.js";
9
9
  import { a as runRpcBatch, o as runRpcOnce, p as handleVersion, r as startServerAsync, s as buildOpenApi } from "./server-CoBZO1fj.js";
10
10
  import { A as editCreditText, E as front, f as renderMetaSearchText, h as landscape, k as editCredit, l as metaSearch, m as formatLandscape, n as taskMatrix, o as skillManifold, r as formatSkillManifold, t as tree, x as surfaceTextEdits } from "./tree-CN8mlzUO.js";
11
- import { t as runSupervisorRunCommand } from "./report-command-DBp6dl5v.js";
11
+ import { t as runSupervisorRunCommand } from "./report-command-pXtxg5YK.js";
12
12
  import { createHash } from "node:crypto";
13
13
  import { existsSync, readFileSync, writeFileSync } from "node:fs";
14
14
  import { dirname, join } from "node:path";
@@ -6,7 +6,7 @@ import { o as Severity } from "./multi-layer-verifier-BUaQ4C17.js";
6
6
  import { l as ExactCapableAnalyst } from "./exact-types-BBMMYk3g.js";
7
7
  import { i as TraceAnalystDefinition } from "./default-registry-BHEfZHQd.js";
8
8
  import { n as TraceAnalysisEngine } from "./engine-F_PvwesR.js";
9
- import { C as SupervisorRunSources, w as SupervisorRunTree } from "./types-v6nRcIqg.js";
9
+ import { C as SupervisorRunSources, w as SupervisorRunTree } from "./types-DjOMwGY_.js";
10
10
  //#region src/semantic-concept-judge.d.ts
11
11
  /**
12
12
  * Implementation complexity class for weighted scoring.
@@ -476,4 +476,4 @@ declare const KNOWLEDGE_POISONING_KIND_SPEC: TraceAnalystDefinition;
476
476
  declare const DEFAULT_TRACE_ANALYST_KINDS: readonly TraceAnalystDefinition[];
477
477
  //#endregion
478
478
  export { SemanticConceptJudgeInput as A, DspyRlmTraceEngineOptions as C, ConceptFinding as D, createChatTraceEngine as E, SemanticConceptJudgeResult as M, runSemanticConceptJudge as N, ConceptSpec as O, renderFindingSubject as S, ChatTraceEngineOptions as T, FindingSubject as _, FAILURE_MODE_KIND_SPEC as a, findingSubjectGrammarPromptFor as b, emitControlIntegrityFindings as c, FindingsStore as d, PersistedFinding as f, FINDING_SUBJECT_SYNTAX as g, FINDING_SUBJECT_KINDS as h, IMPROVEMENT_KIND_SPEC as i, SemanticConceptJudgeOptions as j, SEMANTIC_CONCEPT_JUDGE_VERSION as k, DiffPolicy as l, diffFindings as m, KNOWLEDGE_POISONING_KIND_SPEC as n, CONTROL_INTEGRITY_ANALYST as o, defaultIsMaterial as p, KNOWLEDGE_GAP_KIND_SPEC as r, ControlIntegrityAnalyst as s, DEFAULT_TRACE_ANALYST_KINDS as t, FindingsDiff as u, FindingSubjectKind as v, createDspyRlmTraceEngine as w, parseFindingSubject as x, KIND_EXPECTED_SUBJECTS as y };
479
- //# sourceMappingURL=index-C9l_-23M.d.ts.map
479
+ //# sourceMappingURL=index-DzYX3WBL.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-C9l_-23M.d.ts","names":[],"sources":["../src/semantic-concept-judge.ts","../src/analyst/chat-trace-engine.ts","../src/analyst/trace-tool-callback.ts","../src/analyst/dspy-rlm-engine.ts","../src/analyst/finding-subject.ts","../src/analyst/findings-store.ts","../src/analyst/kinds/control-integrity.ts","../src/analyst/kinds/failure-mode.ts","../src/analyst/kinds/improvement.ts","../src/analyst/kinds/knowledge-gap.ts","../src/analyst/kinds/knowledge-poisoning.ts","../src/analyst/kinds/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuDY;UAEK;EACf;;EAEA;;EAEA;;EAEA,aAAa;;UAGE;EACf;EACA;;EAEA;EACA;EACA,UAAU;;UAGK;;EAEf;;EAEA;;EAEA,aAAa;IAAQ;IAAc;;;EAEnC,kBAAkB;;EAElB;EACA;;UAGe;EACf;EACA;;EAEA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;;EAEA;EACA;;;;;;;;KASU;UAQK;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA,MAAM;;EAEN,UAAU;EACV,aAAa;EACb;EACA,WAAW;EACX,SAAS;;;;;;EAMT,iBAAiB;;EAEjB,oBAAoB,QAAQ,OAAO;;cAKxB;;;;;;iBAkGS,wBACpB,OAAO,2BACP,SAAS,8BACR,QAAQ;;;UCjMM;;;;;EAKf,MAAM;;EAEN;;EAEA,UAAU;;EAEV;;EAEA;;EAEA,WAAW;;EAEX;;;;;;;;;;EAUA;;;;;;iBAkCc,sBAAsB,SAAS,yBAAyB;;;KCrG5D,0BAA0B;;;UCYrB;;EAEf,MAAM;;EAEN;;EAEA,kBAAkB,aAAa;EAC/B;;EAEA,UAAU;;EAEV;;EAEA;;;;;;EAMA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA,kBAAkB,QAAQ;;EAE1B;;;;;;;;;;EAUA;;EAEA,SAAS;;EAET;;;iBAIc,yBAAyB,SAAS,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KCtClE;EAEN;EAAwB;EAAc;;EACtC;EAAyB;;EACzB;EAAuB;;EACvB;EAAyB;;EAGzB;EAAuB;;EACvB;EAAe;;EACf;EAAkB;EAAc;;EAChC;EAAkB;;EAClB;EAAa;EAAgB;;EAC7B;EAAc;;EACd;EAAkB;;EAClB;EAAkB;;EAClB;EAAwB;;EACxB;EAAuB;;EACvB;EAAc;;EACd;EAAa;EAAgB;;EAC7B;EAAgB;;EAChB;EAAqB;;EACrB;EAAuB;;EAEvB;EAA4B;;EAC5B;EAA2B;;EAE3B;EAAiB;;KAEX,qBAAqB;cAEpB,uBAAuB,cAAc;;;;;;;;;;;;;;;;;iBAgGlC,oBAAoB,iCAAiC;;;;;;;iBAoHrD,qBAAqB,GAAG;;;;;;;;;;cA8D3B,wBAAwB,SAAS,OAAO;;;;;;;;;cAoExC,wBAAwB,eAAe,cAAc;;iBAqElD,+BAA+B;;;;;;;;UCxc9B,yBAAyB;EACxC;;cAGW;WAGiB;mBAFX;EAEjB,YAA4B;EAItB,OAAO,eAAe,UAAU,mBAAmB;;EAQzD,WAAW;;EAkBX,QAAQ,gBAAgB;;UAOT;;EAEf,UAAU;;EAEV,aAAa;;EAEb,WAAW;;;;;EAKX,SAAS;IAAQ,UAAU;IAAkB,SAAS;;;UAGvC;;;;;;;;EAQf,cAAc,UAAU,gBAAgB,SAAS;;;;;;iBAOnC,kBAAkB,GAAG,gBAAgB,GAAG;;;;;iBAWxC,aACd,UAAU,oBACV,SAAS,oBACT,SAAQ,aACP;;;;iBC7Fa,6BACd,OAAO,uBAAuB,mBAC9B,qBACC;;cA4BU,mCACA,oBAAoB,uBAAuB;WAE7C;WACA;WAEA;WACA;IAAS;IAAgC;;WACzC;WACA;aACP;aACA;;EAGI,QACJ,OAAO,uBAAuB,mBAC9B,KAAK,iBACJ,QAAQ;;cAUA,2BAAyB;;;cCHzB,wBAAwB;;;cC3BxB,uBAAuB;;;cCGvB,yBAAyB;;;cCPzB,+BAA+B;;;;;;;;;;;;cCP/B,sCAAsC"}
1
+ {"version":3,"file":"index-DzYX3WBL.d.ts","names":[],"sources":["../src/semantic-concept-judge.ts","../src/analyst/chat-trace-engine.ts","../src/analyst/trace-tool-callback.ts","../src/analyst/dspy-rlm-engine.ts","../src/analyst/finding-subject.ts","../src/analyst/findings-store.ts","../src/analyst/kinds/control-integrity.ts","../src/analyst/kinds/failure-mode.ts","../src/analyst/kinds/improvement.ts","../src/analyst/kinds/knowledge-gap.ts","../src/analyst/kinds/knowledge-poisoning.ts","../src/analyst/kinds/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuDY;UAEK;EACf;;EAEA;;EAEA;;EAEA,aAAa;;UAGE;EACf;EACA;;EAEA;EACA;EACA,UAAU;;UAGK;;EAEf;;EAEA;;EAEA,aAAa;IAAQ;IAAc;;;EAEnC,kBAAkB;;EAElB;EACA;;UAGe;EACf;EACA;;EAEA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;;EAEA;EACA;;;;;;;;KASU;UAQK;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA,MAAM;;EAEN,UAAU;EACV,aAAa;EACb;EACA,WAAW;EACX,SAAS;;;;;;EAMT,iBAAiB;;EAEjB,oBAAoB,QAAQ,OAAO;;cAKxB;;;;;;iBAkGS,wBACpB,OAAO,2BACP,SAAS,8BACR,QAAQ;;;UCjMM;;;;;EAKf,MAAM;;EAEN;;EAEA,UAAU;;EAEV;;EAEA;;EAEA,WAAW;;EAEX;;;;;;;;;;EAUA;;;;;;iBAkCc,sBAAsB,SAAS,yBAAyB;;;KCrG5D,0BAA0B;;;UCYrB;;EAEf,MAAM;;EAEN;;EAEA,kBAAkB,aAAa;EAC/B;;EAEA,UAAU;;EAEV;;EAEA;;;;;;EAMA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA,kBAAkB,QAAQ;;EAE1B;;;;;;;;;;EAUA;;EAEA,SAAS;;EAET;;;iBAIc,yBAAyB,SAAS,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KCtClE;EAEN;EAAwB;EAAc;;EACtC;EAAyB;;EACzB;EAAuB;;EACvB;EAAyB;;EAGzB;EAAuB;;EACvB;EAAe;;EACf;EAAkB;EAAc;;EAChC;EAAkB;;EAClB;EAAa;EAAgB;;EAC7B;EAAc;;EACd;EAAkB;;EAClB;EAAkB;;EAClB;EAAwB;;EACxB;EAAuB;;EACvB;EAAc;;EACd;EAAa;EAAgB;;EAC7B;EAAgB;;EAChB;EAAqB;;EACrB;EAAuB;;EAEvB;EAA4B;;EAC5B;EAA2B;;EAE3B;EAAiB;;KAEX,qBAAqB;cAEpB,uBAAuB,cAAc;;;;;;;;;;;;;;;;;iBAgGlC,oBAAoB,iCAAiC;;;;;;;iBAoHrD,qBAAqB,GAAG;;;;;;;;;;cA8D3B,wBAAwB,SAAS,OAAO;;;;;;;;;cAoExC,wBAAwB,eAAe,cAAc;;iBAqElD,+BAA+B;;;;;;;;UCxc9B,yBAAyB;EACxC;;cAGW;WAGiB;mBAFX;EAEjB,YAA4B;EAItB,OAAO,eAAe,UAAU,mBAAmB;;EAQzD,WAAW;;EAkBX,QAAQ,gBAAgB;;UAOT;;EAEf,UAAU;;EAEV,aAAa;;EAEb,WAAW;;;;;EAKX,SAAS;IAAQ,UAAU;IAAkB,SAAS;;;UAGvC;;;;;;;;EAQf,cAAc,UAAU,gBAAgB,SAAS;;;;;;iBAOnC,kBAAkB,GAAG,gBAAgB,GAAG;;;;;iBAWxC,aACd,UAAU,oBACV,SAAS,oBACT,SAAQ,aACP;;;;iBC7Fa,6BACd,OAAO,uBAAuB,mBAC9B,qBACC;;cA4BU,mCACA,oBAAoB,uBAAuB;WAE7C;WACA;WAEA;WACA;IAAS;IAAgC;;WACzC;WACA;aACP;aACA;;EAGI,QACJ,OAAO,uBAAuB,mBAC9B,KAAK,iBACJ,QAAQ;;cAUA,2BAAyB;;;cCHzB,wBAAwB;;;cC3BxB,uBAAuB;;;cCGvB,yBAAyB;;;cCPzB,+BAA+B;;;;;;;;;;;;cCP/B,sCAAsC"}
package/dist/index.d.ts CHANGED
@@ -30,7 +30,7 @@ import { c as RegistryRunOpts, i as BudgetPolicy, n as AnalystRegistry, r as Ana
30
30
  import { _ as SelfImproveMethodResult, a as DefinedAgentEval, c as SelfImproveMethodOptions, d as SelfImproveProposerOptions, f as SelfImproveProposerResult, g as SelfImproveMethodProvenance, h as selfImprove, i as DefineAgentEvalOptions, l as SelfImproveOptions, n as AgentEvalEvaluateOptions, o as defineAgentEval, p as SelfImproveResult, r as AgentEvalImproveOptions, s as SelfImproveBudget, t as AgentEvalAgent, u as SelfImproveProgressEvent } from "./define-agent-eval-B2YV-RDE.js";
31
31
  import { a as createTraceAnalyst, i as TraceAnalystDefinition, n as buildDefaultAnalystRegistry, r as CreateTraceAnalystOptions, t as DefaultAnalystRegistryOptions } from "./default-registry-BHEfZHQd.js";
32
32
  import { i as TraceAnalysisEngineResult, l as RawAnalystFinding, n as TraceAnalysisEngine, t as DEFAULT_TRACE_ANALYST_OUTPUT_TOKENS } from "./engine-F_PvwesR.js";
33
- import { A as SemanticConceptJudgeInput, C as DspyRlmTraceEngineOptions, D as ConceptFinding, E as createChatTraceEngine, M as SemanticConceptJudgeResult, N as runSemanticConceptJudge, O as ConceptSpec, T as ChatTraceEngineOptions, _ as FindingSubject, a as FAILURE_MODE_KIND_SPEC, d as FindingsStore, f as PersistedFinding, j as SemanticConceptJudgeOptions, k as SEMANTIC_CONCEPT_JUDGE_VERSION, l as DiffPolicy, m as diffFindings, t as DEFAULT_TRACE_ANALYST_KINDS, u as FindingsDiff, v as FindingSubjectKind, w as createDspyRlmTraceEngine } from "./index-C9l_-23M.js";
33
+ import { A as SemanticConceptJudgeInput, C as DspyRlmTraceEngineOptions, D as ConceptFinding, E as createChatTraceEngine, M as SemanticConceptJudgeResult, N as runSemanticConceptJudge, O as ConceptSpec, T as ChatTraceEngineOptions, _ as FindingSubject, a as FAILURE_MODE_KIND_SPEC, d as FindingsStore, f as PersistedFinding, j as SemanticConceptJudgeOptions, k as SEMANTIC_CONCEPT_JUDGE_VERSION, l as DiffPolicy, m as diffFindings, t as DEFAULT_TRACE_ANALYST_KINDS, u as FindingsDiff, v as FindingSubjectKind, w as createDspyRlmTraceEngine } from "./index-DzYX3WBL.js";
34
34
  import { i as BenchmarkEvaluation } from "./types-DZQpUJse.js";
35
35
  import { a as SpanHandle, n as CaptureWrite, o as TraceEmitter, s as TraceEmitterOptions, t as CaptureErrorHandler } from "./emitter-HcCmFQl_.js";
36
36
  import { n as SandboxDriver } from "./sandbox-harness-BlSOu4LX.js";
package/dist/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "@tangle-network/agent-eval — wire protocol",
5
- "version": "0.207.2",
5
+ "version": "0.207.3",
6
6
  "description": "HTTP and stdio RPC interface to agent-eval. The TypeScript runtime is the source of truth; this spec is the contract that cross-language clients (Python, Rust, Go) generate from.\n\nWire-protocol version: 1.1.0. Bumps on breaking changes to request/response schemas.",
7
7
  "contact": {
8
8
  "name": "Tangle Network",
@@ -1064,17 +1064,56 @@ function keepReceipt(fact, receipt) {
1064
1064
  fact.receipt = receipt;
1065
1065
  }
1066
1066
  /**
1067
+ * The files each harness writes its conversation to. A receipt can be available and complete
1068
+ * while holding none of them: on the 2026-10-04 trace proof a Pi worker that never wrote a session
1069
+ * stored only `.pi/agent/models-store.json`, and this summary counted it as a transcript.
1070
+ */
1071
+ const HARNESS_SESSION_FILE = {
1072
+ "claude-code": /(^|\/)\.claude\/projects\/.+\.jsonl$/u,
1073
+ codex: /(^|\/)\.codex\/sessions\/.+\.jsonl$/u,
1074
+ pi: /(^|\/)\.pi\/agent\/sessions\/.+\.jsonl$/u,
1075
+ opencode: /(^|\/)(\.local\/share\/opencode\/(opencode\.db|storage\/session\/.+\.json|export\/.+\.json)|\.opencode\/sessions\/.+)$/u
1076
+ };
1077
+ /** Session files the receipt's transcript blob lists, or undefined when it cannot say. */
1078
+ async function receiptSessionFiles(file) {
1079
+ let descriptor;
1080
+ try {
1081
+ descriptor = JSON.parse(await readFile(file, "utf8"));
1082
+ } catch {
1083
+ return;
1084
+ }
1085
+ const harness = record(descriptor)?.harness;
1086
+ const files = record(descriptor)?.files;
1087
+ const pattern = typeof harness === "string" ? HARNESS_SESSION_FILE[harness] : void 0;
1088
+ if (pattern === void 0 || !Array.isArray(files)) return void 0;
1089
+ return files.filter((entry) => {
1090
+ const path = record(entry)?.path;
1091
+ return typeof path === "string" && pattern.test(path);
1092
+ }).length;
1093
+ }
1094
+ function nativeSessionState(session) {
1095
+ if (session === null || session === void 0) return "none";
1096
+ if (session.status !== "available") return "unavailable";
1097
+ if (session.coverageComplete === false) return "partial";
1098
+ if (session.sessionFiles === 0) return "no-session-file";
1099
+ return "complete";
1100
+ }
1101
+ /**
1067
1102
  * What this reader can say about harness-session traces. Every spawned worker counts, including
1068
1103
  * one that recorded nothing; the root is reported apart because its receipt lives in result.json
1069
1104
  * (`rootHarnessTranscript`), not on a worker. Runtime records the session identity on each
1070
- * receipt, so the sessions are read per node, not through one command.
1105
+ * receipt, so the sessions are read per node, not through one command. A receipt counts as a
1106
+ * session only when its copy is complete and holds a file the harness writes its conversation to.
1071
1107
  */
1072
1108
  function nativeTraceSummary(workers, root) {
1073
- const available = workers.filter((worker) => worker.nativeSession?.status === "available").length;
1109
+ const states = workers.map((worker) => nativeSessionState(worker.nativeSession));
1110
+ const count = (state) => states.filter((s) => s === state).length;
1074
1111
  const rootSession = root?.nativeSession ?? null;
1075
- const rootState = rootSession === null ? "no receipt" : rootSession.status === "available" ? "available" : `unavailable (${rootSession.reason})`;
1076
- if (available === 0 && rootSession === null && workers.every((worker) => worker.nativeSession === null)) return "unavailable — no node carries a Runtime harness transcript receipt";
1077
- return `per node — ${available} of ${workers.length} workers carry an available native harness transcript (workers[].nativeSession); root: ${rootState} (result.json rootHarnessTranscript)`;
1112
+ const rootState = nativeSessionState(rootSession);
1113
+ const rootText = rootSession === null ? "no receipt" : rootSession.status === "unavailable" ? `unavailable (${rootSession.reason})` : rootState === "complete" ? "complete" : rootState === "partial" ? "partial copy" : "no session file";
1114
+ if (rootSession === null && states.every((state) => state === "none")) return "unavailable — no node carries a Runtime harness transcript receipt";
1115
+ const gaps = [count("partial") > 0 ? `${count("partial")} only a partial copy` : null, count("no-session-file") > 0 ? `${count("no-session-file")} a receipt with no session file` : null].filter((gap) => gap !== null);
1116
+ return `per node — ${count("complete")} of ${workers.length} workers carry a complete native session receipt (workers[].nativeSession)${gaps.length > 0 ? `; ${gaps.join("; ")}` : ""}; root: ${rootText} (result.json rootHarnessTranscript)`;
1078
1117
  }
1079
1118
  async function workspaceCapturesFromOutput(runDir, ref) {
1080
1119
  const outRef = typeof ref === "string" ? ref : null;
@@ -1220,10 +1259,16 @@ async function nodeTranscripts(runDir, events, nodeIds, root) {
1220
1259
  if (fact.receipt !== null) {
1221
1260
  if (fact.receipt.status === "available") {
1222
1261
  const file = blobFile(runDir, fact.receipt.transcriptRef);
1223
- nativeSession = file !== null && await isFile(file) ? {
1224
- status: "available",
1225
- ref: file
1226
- } : {
1262
+ if (file !== null && await isFile(file)) {
1263
+ const sessionFiles = await receiptSessionFiles(file);
1264
+ const coverageComplete = fact.receipt.coverageComplete;
1265
+ nativeSession = {
1266
+ status: "available",
1267
+ ref: file,
1268
+ ...typeof coverageComplete === "boolean" ? { coverageComplete } : {},
1269
+ ...sessionFiles === void 0 ? {} : { sessionFiles }
1270
+ };
1271
+ } else nativeSession = {
1227
1272
  status: "unavailable",
1228
1273
  reason: "receipt-blob-missing"
1229
1274
  };
@@ -1620,4 +1665,4 @@ async function runSupervisorRunCommand(argv, io = PROCESS_IO) {
1620
1665
  //#endregion
1621
1666
  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 };
1622
1667
 
1623
- //# sourceMappingURL=report-command-DBp6dl5v.js.map
1668
+ //# sourceMappingURL=report-command-pXtxg5YK.js.map