@tangle-network/agent-eval 0.137.0 → 0.138.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 (150) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +33 -0
  3. package/dist/analyst/index.d.ts +473 -39
  4. package/dist/analyst/index.d.ts.map +1 -1
  5. package/dist/analyst/index.js +11 -593
  6. package/dist/analyst/index.js.map +1 -1
  7. package/dist/{analyze-runs-PVtnfjvA.d.ts → analyze-runs-CPYxfPWT.d.ts} +5 -5
  8. package/dist/{analyze-runs-PVtnfjvA.d.ts.map → analyze-runs-CPYxfPWT.d.ts.map} +1 -1
  9. package/dist/{benchmark-YDrpumqB.js → benchmark-D8dkki-J.js} +299 -159
  10. package/dist/benchmark-D8dkki-J.js.map +1 -0
  11. package/dist/{benchmark-CHX4orG7.d.ts → benchmark-DlQgU_XI.d.ts} +67 -15
  12. package/dist/benchmark-DlQgU_XI.d.ts.map +1 -0
  13. package/dist/benchmark-command-CMqVqReF.js +4332 -0
  14. package/dist/benchmark-command-CMqVqReF.js.map +1 -0
  15. package/dist/benchmarks/index.d.ts +1 -1
  16. package/dist/benchmarks/index.js +1 -1
  17. package/dist/{benchmarks-DCLkQOmc.js → benchmarks-BJ_xK5rQ.js} +4 -3
  18. package/dist/{benchmarks-DCLkQOmc.js.map → benchmarks-BJ_xK5rQ.js.map} +1 -1
  19. package/dist/campaign/index.d.ts +5 -5
  20. package/dist/campaign/index.js +3 -3
  21. package/dist/{campaign-lgObcHFC.js → campaign-BIBS-NHV.js} +16 -9
  22. package/dist/campaign-BIBS-NHV.js.map +1 -0
  23. package/dist/cli.js +9 -2
  24. package/dist/cli.js.map +1 -1
  25. package/dist/{client-C8L6h6Wf.d.ts → client-BwPKohkJ.d.ts} +4 -4
  26. package/dist/{client-C8L6h6Wf.d.ts.map → client-BwPKohkJ.d.ts.map} +1 -1
  27. package/dist/{completion-verifier-DSyRNVzU.d.ts → completion-verifier-B4-IMYcS.d.ts} +3 -3
  28. package/dist/{completion-verifier-DSyRNVzU.d.ts.map → completion-verifier-B4-IMYcS.d.ts.map} +1 -1
  29. package/dist/contract/index.d.ts +10 -10
  30. package/dist/contract/index.js +8 -8
  31. package/dist/control.d.ts +2 -2
  32. package/dist/{cost-ledger-D2o6JOrL.d.ts → cost-ledger-B1D3COAc.d.ts} +5 -4
  33. package/dist/{cost-ledger-D2o6JOrL.d.ts.map → cost-ledger-B1D3COAc.d.ts.map} +1 -1
  34. package/dist/{cost-ledger-D-5_-dhi.js → cost-ledger-CHDLA0Ss.js} +90 -45
  35. package/dist/cost-ledger-CHDLA0Ss.js.map +1 -0
  36. package/dist/{default-registry-Dc5D_Loc.d.ts → default-registry-PUhIVRWz.d.ts} +18 -5
  37. package/dist/default-registry-PUhIVRWz.d.ts.map +1 -0
  38. package/dist/{default-registry-CLXbRt0f.js → default-registry-lp5R0lve.js} +1503 -258
  39. package/dist/default-registry-lp5R0lve.js.map +1 -0
  40. package/dist/{eval-campaign-CHqfLnff.js → eval-campaign-9MozgKL7.js} +2 -2
  41. package/dist/{eval-campaign-CHqfLnff.js.map → eval-campaign-9MozgKL7.js.map} +1 -1
  42. package/dist/exact-types-Dpw2LeHA.d.ts +234 -0
  43. package/dist/exact-types-Dpw2LeHA.d.ts.map +1 -0
  44. package/dist/{extract-usage-p-56bh8q.js → extract-usage-CS391dOE.js} +2 -2
  45. package/dist/{extract-usage-p-56bh8q.js.map → extract-usage-CS391dOE.js.map} +1 -1
  46. package/dist/{feedback-trajectory-N_F0PwHz.d.ts → feedback-trajectory-CoNep7rl.d.ts} +3 -2
  47. package/dist/feedback-trajectory-CoNep7rl.d.ts.map +1 -0
  48. package/dist/fuzz.d.ts +1 -1
  49. package/dist/fuzz.js +1 -1
  50. package/dist/hosted/index.d.ts +3 -3
  51. package/dist/{index-U3RHOShi.d.ts → index-B2-IxCMB.d.ts} +2 -2
  52. package/dist/{index-U3RHOShi.d.ts.map → index-B2-IxCMB.d.ts.map} +1 -1
  53. package/dist/{index-BnP1QJUv.d.ts → index-CjVYlVBK.d.ts} +5 -5
  54. package/dist/{index-BnP1QJUv.d.ts.map → index-CjVYlVBK.d.ts.map} +1 -1
  55. package/dist/{index-C-Pr4OWg.d.ts → index-D0cxAdaV.d.ts} +11 -10
  56. package/dist/index-D0cxAdaV.d.ts.map +1 -0
  57. package/dist/index-DEb46kc6.d.ts.map +1 -1
  58. package/dist/{index-DRNl6g_N.d.ts → index-sMN_hI4E.d.ts} +3 -3
  59. package/dist/{index-DRNl6g_N.d.ts.map → index-sMN_hI4E.d.ts.map} +1 -1
  60. package/dist/index.d.ts +24 -23
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +19 -353
  63. package/dist/index.js.map +1 -1
  64. package/dist/{insight-report-B9ooYH_g.d.ts → insight-report-CXd8VBDR.d.ts} +4 -4
  65. package/dist/{insight-report-B9ooYH_g.d.ts.map → insight-report-CXd8VBDR.d.ts.map} +1 -1
  66. package/dist/{integrity-CKxosZ5Z.d.ts → integrity-B-MLFz0I.d.ts} +2 -2
  67. package/dist/{integrity-CKxosZ5Z.d.ts.map → integrity-B-MLFz0I.d.ts.map} +1 -1
  68. package/dist/ledger-core/index.js +1 -1
  69. package/dist/{ledger-core-t6sItivm.js → ledger-core-C0Yx1I14.js} +220 -27
  70. package/dist/ledger-core-C0Yx1I14.js.map +1 -0
  71. package/dist/{llm-client-DKB25jV8.js → llm-client-Cj3c7PEm.js} +5 -5
  72. package/dist/llm-client-Cj3c7PEm.js.map +1 -0
  73. package/dist/meta-eval/index.d.ts +2 -2
  74. package/dist/multishot/index.d.ts +2 -2
  75. package/dist/openapi.json +1 -1
  76. package/dist/{proposal-findings-DCawte-y.js → proposal-findings-2GIUo1et.js} +2 -68
  77. package/dist/proposal-findings-2GIUo1et.js.map +1 -0
  78. package/dist/{registry-BdM7SuTr.d.ts → registry-C4yJTza7.d.ts} +60 -6
  79. package/dist/registry-C4yJTza7.d.ts.map +1 -0
  80. package/dist/{release-report-CofgVNZt.d.ts → release-report-CoyvyLBs.d.ts} +3 -3
  81. package/dist/{release-report-CofgVNZt.d.ts.map → release-report-CoyvyLBs.d.ts.map} +1 -1
  82. package/dist/{replay-Bju0T8Ls.js → replay-Cb-4Vf0k.js} +8 -7
  83. package/dist/replay-Cb-4Vf0k.js.map +1 -0
  84. package/dist/{replay-K8FaC0CB.d.ts → replay-DbIYwso6.d.ts} +7 -7
  85. package/dist/{replay-K8FaC0CB.d.ts.map → replay-DbIYwso6.d.ts.map} +1 -1
  86. package/dist/reporting.d.ts +4 -4
  87. package/dist/{researcher-Da0Wj-bt.d.ts → researcher-BCeOEjtR.d.ts} +5 -5
  88. package/dist/{researcher-Da0Wj-bt.d.ts.map → researcher-BCeOEjtR.d.ts.map} +1 -1
  89. package/dist/{reward-hacking-CQ3hTCO3.d.ts → reward-hacking-sE2l_NV6.d.ts} +2 -2
  90. package/dist/{reward-hacking-CQ3hTCO3.d.ts.map → reward-hacking-sE2l_NV6.d.ts.map} +1 -1
  91. package/dist/rl.d.ts +5 -5
  92. package/dist/rl.js +1 -1
  93. package/dist/rollout/index.d.ts +1 -1
  94. package/dist/{rubric-predictive-validity-C4sztLR3.d.ts → rubric-predictive-validity-w2klGv1u.d.ts} +2 -2
  95. package/dist/{rubric-predictive-validity-C4sztLR3.d.ts.map → rubric-predictive-validity-w2klGv1u.d.ts.map} +1 -1
  96. package/dist/{run-evidence-BDIircdA.d.ts → run-evidence-CbE0A8Xg.d.ts} +3 -3
  97. package/dist/{run-evidence-BDIircdA.d.ts.map → run-evidence-CbE0A8Xg.d.ts.map} +1 -1
  98. package/dist/{run-record-BPCa2rQ8.d.ts → run-record-DwHMk1Ai.d.ts} +2 -2
  99. package/dist/{run-record-BPCa2rQ8.d.ts.map → run-record-DwHMk1Ai.d.ts.map} +1 -1
  100. package/dist/{semantic-concept-judge-Bz64IckK.js → semantic-concept-judge-DYXDPZW0.js} +11 -5
  101. package/dist/semantic-concept-judge-DYXDPZW0.js.map +1 -0
  102. package/dist/{server-KjXZZUDX.js → server-DLEvyW2z.js} +3 -3
  103. package/dist/{server-KjXZZUDX.js.map → server-DLEvyW2z.js.map} +1 -1
  104. package/dist/single-run-lock-D_bS5xhj.js +318 -0
  105. package/dist/single-run-lock-D_bS5xhj.js.map +1 -0
  106. package/dist/{skill-usage-CFDLLlhF.d.ts → skill-usage-Bv3G4VkA.d.ts} +18 -8
  107. package/dist/skill-usage-Bv3G4VkA.d.ts.map +1 -0
  108. package/dist/{skillopt-optimization-method-f4o9sUT4.js → skillopt-optimization-method-CjKMZy0d.js} +7 -182
  109. package/dist/skillopt-optimization-method-CjKMZy0d.js.map +1 -0
  110. package/dist/{skillopt-optimization-method-BpbnlvAZ.d.ts → skillopt-optimization-method-CzfnA8O-.d.ts} +10 -10
  111. package/dist/{skillopt-optimization-method-BpbnlvAZ.d.ts.map → skillopt-optimization-method-CzfnA8O-.d.ts.map} +1 -1
  112. package/dist/{statistics-_7P642CN.d.ts → statistics-mf70aXKp.d.ts} +2 -2
  113. package/dist/{statistics-_7P642CN.d.ts.map → statistics-mf70aXKp.d.ts.map} +1 -1
  114. package/dist/{tools-DZk2Jn64.js → store-otlp-BenKynPE.js} +4 -192
  115. package/dist/store-otlp-BenKynPE.js.map +1 -0
  116. package/dist/{summary-report-DHipz9Kx.d.ts → summary-report-BKinV4yD.d.ts} +3 -3
  117. package/dist/{summary-report-DHipz9Kx.d.ts.map → summary-report-BKinV4yD.d.ts.map} +1 -1
  118. package/dist/tools-DZGdROtG.js +255 -0
  119. package/dist/tools-DZGdROtG.js.map +1 -0
  120. package/dist/traces.d.ts +5 -5
  121. package/dist/traces.js +4 -3
  122. package/dist/{types-CTvKfr5F.d.ts → types-5q2T25iW.d.ts} +2 -2
  123. package/dist/{types-CTvKfr5F.d.ts.map → types-5q2T25iW.d.ts.map} +1 -1
  124. package/dist/{types-CKswbJGO.d.ts → types-BtJhn8v6.d.ts} +4 -4
  125. package/dist/{types-CKswbJGO.d.ts.map → types-BtJhn8v6.d.ts.map} +1 -1
  126. package/dist/{types-CTGbIm57.d.ts → types-zFYez3PK.d.ts} +5 -5
  127. package/dist/{types-CTGbIm57.d.ts.map → types-zFYez3PK.d.ts.map} +1 -1
  128. package/dist/wire/index.d.ts +3 -3
  129. package/dist/wire/index.js +1 -1
  130. package/docs/trace-analysis.md +123 -3
  131. package/package.json +5 -3
  132. package/dist/benchmark-CHX4orG7.d.ts.map +0 -1
  133. package/dist/benchmark-YDrpumqB.js.map +0 -1
  134. package/dist/campaign-lgObcHFC.js.map +0 -1
  135. package/dist/concurrency-MUjT7VjM.js +0 -109
  136. package/dist/concurrency-MUjT7VjM.js.map +0 -1
  137. package/dist/cost-ledger-D-5_-dhi.js.map +0 -1
  138. package/dist/default-registry-CLXbRt0f.js.map +0 -1
  139. package/dist/default-registry-Dc5D_Loc.d.ts.map +0 -1
  140. package/dist/feedback-trajectory-N_F0PwHz.d.ts.map +0 -1
  141. package/dist/index-C-Pr4OWg.d.ts.map +0 -1
  142. package/dist/ledger-core-t6sItivm.js.map +0 -1
  143. package/dist/llm-client-DKB25jV8.js.map +0 -1
  144. package/dist/proposal-findings-DCawte-y.js.map +0 -1
  145. package/dist/registry-BdM7SuTr.d.ts.map +0 -1
  146. package/dist/replay-Bju0T8Ls.js.map +0 -1
  147. package/dist/semantic-concept-judge-Bz64IckK.js.map +0 -1
  148. package/dist/skill-usage-CFDLLlhF.d.ts.map +0 -1
  149. package/dist/skillopt-optimization-method-f4o9sUT4.js.map +0 -1
  150. package/dist/tools-DZk2Jn64.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,54 @@ All notable changes to `@tangle-network/agent-eval` and its sibling `agent-eval-
4
4
 
5
5
  ---
6
6
 
7
+ ## [0.138.0] - 2026-07-30 - exact analyst runs with sealed receipts
8
+
9
+ ### Fixed
10
+
11
+ - A release version bump no longer invalidates the published analyst benchmark evidence.
12
+ The dependency-lock pin now tracks the current lockfiles, the evidence keeps its own creation-time digest and package version, and a test proves the two locks differ by the version stamp alone — a real dependency change still forces a new benchmark run or explicit retirement of the evidence.
13
+
14
+ ### Added
15
+
16
+ - `AnalystRegistry.runExact()` requires ordered analyst ids and an explicit value for every run-policy field.
17
+ It never inherits registry insertion order or the constructor's default budget.
18
+ Disabled budgets, timeouts, cancellation, cost attribution, tags, and prior findings use explicit `null` values.
19
+ Exact runs bind analyst, ledger, hook, chat, and policy identities with non-secret configuration digests.
20
+ They use the registry's shared serial execution path and persist canonical equal or weighted allocations instead of adding a second scheduler or allocator.
21
+ Exact receipts explicitly distinguish complete execution from a failed ordered prefix.
22
+ `ExactAnalystRunExecutionError.result` is always a canonical immutable failed receipt with valid completed work and accounting.
23
+ - `defineTraceAnalyst()` accepts canonical `executionConfig` and returns an exact-capable custom analyst when it is supplied, while preserving its existing minimal form.
24
+ - **Breaking:** `AnalystBenchmarkCase` now requires `clusterId` and `labelState`.
25
+ A case must identify its independent source unit and state whether labels prove an issue, prove no issue, or leave the outcome unknown.
26
+ The benchmark no longer guesses either field from an empty issue list.
27
+ - `agent-eval analyst-benchmark` compares an empty baseline with a real-model AgentRx or CodeTraceBench analyst through any OpenAI-compatible endpoint.
28
+ It requires an explicit case limit and immutable dataset revision, validates labeled spans before paid work, uses benchmark-specific output adapters, and writes complete JSON plus Markdown results.
29
+ CodeTraceBench cases also retain hashed final verification artifacts, parse known upstream result formats, and mark missing outcomes unavailable.
30
+ Limited hash samples report source-versus-selected class, agent, model, difficulty, and solved distributions without claiming representativeness.
31
+ The published all-row score is retained, while a calibrated view measures solved label-empty trajectories as trusted negatives and keeps failed or unknown label-empty trajectories unlabeled.
32
+ Interrupted runs persist hash-chained observations and resume only when public inputs, model settings, local paths, and endpoint still match.
33
+ Reports include pooled and per-case step-localization metrics, exact source-quote coverage, final-result availability, and imported runtime duration.
34
+ External runner failures retain reported token, cost, duration, and metadata instead of becoming telemetry gaps.
35
+ Public model runs use one structured model call over a bounded trace projection.
36
+ A durable run-wide cost ledger enforces `--max-cost-usd` across concurrency and resume.
37
+ Paid responses are cached under deterministic call ids before settlement, so resume neither loses a completed response nor creates a second reservation after interruption.
38
+ Completed results retain a digest of every behavior-defining source file and are read through one strict recursive schema.
39
+ The repository includes one pinned 32-case CodeTraceBench input, two complete 64-call GLM-5.2 Agent Eval runs, and a failure-inclusive run of pinned CodeTracer on the same trajectories.
40
+ Exact source, input, result, resume, usage, cost, and secret-scan checks are committed with the results.
41
+
42
+ ### Fixed
43
+
44
+ - Canonical `trace://<trace>/span/<span>` evidence is classified as span evidence instead of artifact evidence.
45
+ - Public model output selects positive integer assistant step ids.
46
+ The runner builds canonical trace URIs and exact action excerpts from those spans, and rejects missing, non-assistant, or empty steps.
47
+ - Capped concurrent paid calls wait for active reservations to settle when their final spend may still fit.
48
+ They fail immediately only when committed spend plus the next enforced maximum exceeds the run limit.
49
+ - Releasing a single-run lock now removes its process exit listener instead of leaking one callback per completed campaign.
50
+ - Phoenix evaluator tests use OpenTelemetry Core 2.10 instead of the vulnerable 1.x transitive dependency.
51
+ - CodeTracer prediction adapters accept the published schema and both flat and grouped step-label outputs emitted by CodeTracer 0.2.
52
+ - The CodeTraceBench model prompt now matches the public incorrect-step task by scoring wrong actions that are later recovered, instead of treating final task success as proof that earlier steps were correct.
53
+ - JSON-text finding rows reach the existing per-row schema repair instead of failing the entire trace analyst response.
54
+
7
55
  ## [0.137.0] - 2026-07-29 - trace analyst measurement and review integrity
8
56
 
9
57
  ### Added
package/README.md CHANGED
@@ -357,6 +357,39 @@ pnpm tsx examples/selfimprove-quickstart/index.ts
357
357
  You do not need a runnable agent to analyze data you already captured.
358
358
  Use `analyzeRuns()` for `RunRecord[]`.
359
359
  For traces, run a registry of built-in or custom analysts, measure it on labeled issues and exact span locations, then turn only reviewed findings into eval data.
360
+ For a public quality check, convert CodeTraceBench with `traces import-codetracebench`, then run `agent-eval analyst-benchmark` against the pinned labels and a real model.
361
+
362
+ Use `AnalystRegistry.runExact()` when the caller, rather than registry defaults, must own every execution choice.
363
+ The ordered `analystIds` array is the execution order, and `null` explicitly disables optional budget, timeout, cancellation, cost, tag, or prior-finding channels.
364
+ Exact runs are serial; callers that need recursive or concurrent scheduling compose them through their runtime rather than adding a second scheduler here.
365
+
366
+ ```ts
367
+ const result = await registry.runExact('analysis-1', inputs, {
368
+ analystIds: ['failure-mode', 'improvement'],
369
+ budget: { kind: 'equal', totalUsd: 2 },
370
+ totalTimeoutMs: 30_000,
371
+ signal: null,
372
+ costLedger: null,
373
+ costLedgerIdentity: null,
374
+ costPhase: null,
375
+ tags: null,
376
+ priorFindings: null,
377
+ chainFindings: true,
378
+ missingInputMode: 'abort',
379
+ applyRegistryHooks: false,
380
+ useRegistryChat: false,
381
+ })
382
+ ```
383
+
384
+ Custom analysts passed to `runExact()` declare canonical `executionConfig`.
385
+ The same `defineTraceAnalyst()` helper returns an exact-capable analyst when that field is present.
386
+ Built-in analysts already declare it.
387
+ Trace analysts selected by `runExact()` also require `aiIdentity`, using the same non-secret `id`, `version`, and canonical `config` shape as cost ledgers, registry hooks, and registry chat clients.
388
+ Exact lifecycle hooks receive frozen snapshots for observation; they cannot rewrite the planned context.
389
+ Persisted results store configuration digests, not raw configuration.
390
+ The persisted plan records the exact equal or weighted allocation for every routed analyst, and archival validates summaries against that same plan.
391
+ Every exact receipt says whether it is `complete` or `failed`; a complete receipt must cover the full plan, while a failed receipt may contain only the executed prefix.
392
+ Any failure after an exact run starts rejects with `ExactAnalystRunExecutionError`; its immutable failed receipt preserves valid completed summaries, findings, usage, and cost.
360
393
 
361
394
  See [concepts](./docs/concepts.md), [customer paths](./docs/customer-journeys.md), and [trace analysis](./docs/trace-analysis.md).
362
395