@tangle-network/agent-eval 0.127.0 → 0.128.1

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 (76) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +4 -0
  3. package/dist/analyst/index.d.ts +5 -8
  4. package/dist/belief-state/index.d.ts +5 -8
  5. package/dist/benchmarks/index.js +7 -8
  6. package/dist/campaign/index.d.ts +16 -21
  7. package/dist/campaign/index.js +6 -7
  8. package/dist/{chunk-NL33OXEP.js → chunk-2JX3CFMB.js} +60 -5
  9. package/dist/chunk-2JX3CFMB.js.map +1 -0
  10. package/dist/{chunk-ZPUEEM5U.js → chunk-2MKQIFS4.js} +7 -3
  11. package/dist/chunk-2MKQIFS4.js.map +1 -0
  12. package/dist/{chunk-IN455XKS.js → chunk-7ZZMD7UK.js} +50 -2
  13. package/dist/chunk-7ZZMD7UK.js.map +1 -0
  14. package/dist/{chunk-OD5NQ2CS.js → chunk-BYT7ELPS.js} +6 -4
  15. package/dist/chunk-BYT7ELPS.js.map +1 -0
  16. package/dist/{chunk-IG35YDN3.js → chunk-DRYIUNWY.js} +11 -3
  17. package/dist/chunk-DRYIUNWY.js.map +1 -0
  18. package/dist/{chunk-X6VOPMLD.js → chunk-EOSZT7PL.js} +11 -7
  19. package/dist/chunk-EOSZT7PL.js.map +1 -0
  20. package/dist/{chunk-WED5KLZQ.js → chunk-EZJEIH2R.js} +2 -2
  21. package/dist/{chunk-UTA2TGC4.js → chunk-IHQDPH7D.js} +2 -2
  22. package/dist/{chunk-FA3MFYNA.js → chunk-NACAGYSY.js} +26 -17
  23. package/dist/chunk-NACAGYSY.js.map +1 -0
  24. package/dist/{chunk-65QETEKG.js → chunk-NKAGIDE2.js} +5 -5
  25. package/dist/{chunk-424XHVKV.js → chunk-NYLOYM6N.js} +2 -2
  26. package/dist/{chunk-CLELFRQG.js → chunk-TBL77AUT.js} +5 -7
  27. package/dist/chunk-TBL77AUT.js.map +1 -0
  28. package/dist/{chunk-PRB53E3J.js → chunk-UB2LOJ6Q.js} +6 -8
  29. package/dist/{chunk-PRB53E3J.js.map → chunk-UB2LOJ6Q.js.map} +1 -1
  30. package/dist/{chunk-IMGJZBFG.js → chunk-VLOATJQ2.js} +2 -2
  31. package/dist/{chunk-Y5CYOL42.js → chunk-XDWDC2MP.js} +43 -14
  32. package/dist/chunk-XDWDC2MP.js.map +1 -0
  33. package/dist/{chunk-ARCFIY7U.js → chunk-XPRT64IE.js} +2 -2
  34. package/dist/contract/index.d.ts +25 -22
  35. package/dist/contract/index.js +37 -18
  36. package/dist/contract/index.js.map +1 -1
  37. package/dist/control.d.ts +26 -11
  38. package/dist/control.js +2 -3
  39. package/dist/hosted/index.d.ts +13 -13
  40. package/dist/hosted/index.js +2 -1
  41. package/dist/index.d.ts +40 -27
  42. package/dist/index.js +63 -33
  43. package/dist/index.js.map +1 -1
  44. package/dist/meta-eval/index.d.ts +5 -8
  45. package/dist/openapi.json +1 -1
  46. package/dist/reporting.d.ts +8 -10
  47. package/dist/reporting.js +4 -3
  48. package/dist/rl.d.ts +25 -15
  49. package/dist/rl.js +9 -7
  50. package/dist/rl.js.map +1 -1
  51. package/dist/rollout/index.d.ts +5 -8
  52. package/dist/rollout/index.js +2 -3
  53. package/dist/{run-campaign-3A2EBYBE.js → run-campaign-ISHFZ7FJ.js} +5 -3
  54. package/dist/traces.d.ts +10 -13
  55. package/dist/traces.js +3 -4
  56. package/docs/customer-journeys.md +7 -6
  57. package/docs/insight-report.md +21 -0
  58. package/package.json +2 -2
  59. package/dist/chunk-CLELFRQG.js.map +0 -1
  60. package/dist/chunk-FA3MFYNA.js.map +0 -1
  61. package/dist/chunk-IG35YDN3.js.map +0 -1
  62. package/dist/chunk-IN455XKS.js.map +0 -1
  63. package/dist/chunk-NL33OXEP.js.map +0 -1
  64. package/dist/chunk-OD5NQ2CS.js.map +0 -1
  65. package/dist/chunk-VSMTAMNK.js +0 -53
  66. package/dist/chunk-VSMTAMNK.js.map +0 -1
  67. package/dist/chunk-X6VOPMLD.js.map +0 -1
  68. package/dist/chunk-Y5CYOL42.js.map +0 -1
  69. package/dist/chunk-ZPUEEM5U.js.map +0 -1
  70. /package/dist/{chunk-WED5KLZQ.js.map → chunk-EZJEIH2R.js.map} +0 -0
  71. /package/dist/{chunk-UTA2TGC4.js.map → chunk-IHQDPH7D.js.map} +0 -0
  72. /package/dist/{chunk-65QETEKG.js.map → chunk-NKAGIDE2.js.map} +0 -0
  73. /package/dist/{chunk-424XHVKV.js.map → chunk-NYLOYM6N.js.map} +0 -0
  74. /package/dist/{chunk-IMGJZBFG.js.map → chunk-VLOATJQ2.js.map} +0 -0
  75. /package/dist/{chunk-ARCFIY7U.js.map → chunk-XPRT64IE.js.map} +0 -0
  76. /package/dist/{run-campaign-3A2EBYBE.js.map → run-campaign-ISHFZ7FJ.js.map} +0 -0
@@ -603,15 +603,12 @@ interface RunRecord {
603
603
  /** Per-split scores + raw bag. */
604
604
  outcome: RunOutcome;
605
605
  /** Canonical task-failure class drawn from the shared
606
- * `FAILURE_CLASSES` taxonomy. This is the aggregation key that makes
607
- * "which failure dominates across the whole fleet" answerable in ONE
608
- * vocabulary — every agent classifies against the same enum. Producers
609
- * set it only from task-result evidence. Execution errors belong in
610
- * `outcome.raw.execution_error_count`, even when the run later fails. */
606
+ * `FAILURE_CLASSES` taxonomy. Producers set it only from task-result
607
+ * evidence. Execution errors belong in
608
+ * `outcome.raw.execution_error_count`. */
611
609
  failureClass?: FailureClass;
612
- /** Free-form task-failure detail, scoped UNDER `failureClass`
613
- * (e.g. failureClass='tool_recovery_failure', failureMode='forge_build_unsatisfied').
614
- * Do not populate this from a child execution error alone. */
610
+ /** Free-form task-failure detail scoped under a non-success
611
+ * `failureClass`. It is invalid without that class. */
615
612
  failureMode?: string;
616
613
  /** Which split this run was drawn from. */
617
614
  splitTag: RunSplitTag;
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.127.0",
5
+ "version": "0.128.1",
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.0.0. Bumps on breaking changes to request/response schemas.",
7
7
  "contact": {
8
8
  "name": "Tangle Network",
@@ -214,15 +214,12 @@ interface RunRecord {
214
214
  /** Per-split scores + raw bag. */
215
215
  outcome: RunOutcome;
216
216
  /** Canonical task-failure class drawn from the shared
217
- * `FAILURE_CLASSES` taxonomy. This is the aggregation key that makes
218
- * "which failure dominates across the whole fleet" answerable in ONE
219
- * vocabulary — every agent classifies against the same enum. Producers
220
- * set it only from task-result evidence. Execution errors belong in
221
- * `outcome.raw.execution_error_count`, even when the run later fails. */
217
+ * `FAILURE_CLASSES` taxonomy. Producers set it only from task-result
218
+ * evidence. Execution errors belong in
219
+ * `outcome.raw.execution_error_count`. */
222
220
  failureClass?: FailureClass;
223
- /** Free-form task-failure detail, scoped UNDER `failureClass`
224
- * (e.g. failureClass='tool_recovery_failure', failureMode='forge_build_unsatisfied').
225
- * Do not populate this from a child execution error alone. */
221
+ /** Free-form task-failure detail scoped under a non-success
222
+ * `failureClass`. It is invalid without that class. */
226
223
  failureMode?: string;
227
224
  /** Which split this run was drawn from. */
228
225
  splitTag: RunSplitTag;
@@ -661,7 +658,8 @@ interface ReleaseTraceEvidence {
661
658
  turnCount?: number;
662
659
  costUsd?: number;
663
660
  durationMs?: number;
664
- failureMode?: string;
661
+ /** Canonical task-failure class. Free-form detail belongs in ASI. */
662
+ failureClass?: FailureClass;
665
663
  asi?: ActionableSideInfo[];
666
664
  metadata?: Record<string, unknown>;
667
665
  }
@@ -734,7 +732,7 @@ interface ReleaseConfidenceMetrics {
734
732
  multiShotTraces: number;
735
733
  splitCounts: Record<DatasetSplit, number>;
736
734
  domainCounts: Record<string, number>;
737
- failureModeCounts: Record<string, number>;
735
+ failureClassCounts: Partial<Record<FailureClass, number>>;
738
736
  responsibleSurfaceCounts: Record<string, number>;
739
737
  }
740
738
  interface ReleaseConfidenceScorecard {
package/dist/reporting.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  evaluateReleaseConfidence,
5
5
  judgeReplayGate,
6
6
  renderReleaseReport
7
- } from "./chunk-Y5CYOL42.js";
7
+ } from "./chunk-XDWDC2MP.js";
8
8
  import {
9
9
  rubricPredictiveValidity
10
10
  } from "./chunk-S5YLIBFX.js";
@@ -18,14 +18,15 @@ import {
18
18
  paretoChart,
19
19
  researchReport,
20
20
  summaryTable
21
- } from "./chunk-IMGJZBFG.js";
21
+ } from "./chunk-VLOATJQ2.js";
22
22
  import "./chunk-DPUHNQLN.js";
23
23
  import {
24
24
  benjaminiHochberg,
25
25
  pairedBootstrap,
26
26
  wilcoxonSignedRank
27
27
  } from "./chunk-MHELPNRP.js";
28
- import "./chunk-VSMTAMNK.js";
28
+ import "./chunk-2JX3CFMB.js";
29
+ import "./chunk-MA6HLL3S.js";
29
30
  import "./chunk-ONWEPEDO.js";
30
31
  import "./chunk-PZ5AY32C.js";
31
32
  export {
package/dist/rl.d.ts CHANGED
@@ -416,15 +416,12 @@ interface RunRecord {
416
416
  /** Per-split scores + raw bag. */
417
417
  outcome: RunOutcome;
418
418
  /** Canonical task-failure class drawn from the shared
419
- * `FAILURE_CLASSES` taxonomy. This is the aggregation key that makes
420
- * "which failure dominates across the whole fleet" answerable in ONE
421
- * vocabulary — every agent classifies against the same enum. Producers
422
- * set it only from task-result evidence. Execution errors belong in
423
- * `outcome.raw.execution_error_count`, even when the run later fails. */
419
+ * `FAILURE_CLASSES` taxonomy. Producers set it only from task-result
420
+ * evidence. Execution errors belong in
421
+ * `outcome.raw.execution_error_count`. */
424
422
  failureClass?: FailureClass;
425
- /** Free-form task-failure detail, scoped UNDER `failureClass`
426
- * (e.g. failureClass='tool_recovery_failure', failureMode='forge_build_unsatisfied').
427
- * Do not populate this from a child execution error alone. */
423
+ /** Free-form task-failure detail scoped under a non-success
424
+ * `failureClass`. It is invalid without that class. */
428
425
  failureMode?: string;
429
426
  /** Which split this run was drawn from. */
430
427
  splitTag: RunSplitTag;
@@ -442,6 +439,23 @@ interface RunRecord {
442
439
  */
443
440
  agentProfile?: AgentProfileCell;
444
441
  }
442
+ /**
443
+ * Canonical task-result classification.
444
+ *
445
+ * A producer may omit classification, record explicit success, or attach
446
+ * domain-specific detail to a non-success class. Detail can never stand alone.
447
+ * Execution errors belong in `outcome.raw.execution_error_count`.
448
+ */
449
+ type RunTaskFailure = {
450
+ failureClass?: undefined;
451
+ failureMode?: undefined;
452
+ } | {
453
+ failureClass: 'success';
454
+ failureMode?: undefined;
455
+ } | {
456
+ failureClass: Exclude<FailureClass, 'success'>;
457
+ failureMode?: string;
458
+ };
445
459
 
446
460
  /**
447
461
  * Adaptive curriculum / active scenario selection.
@@ -3231,7 +3245,7 @@ interface CampaignRunContext<V> {
3231
3245
  */
3232
3246
  llmOpts: LlmClientOptions;
3233
3247
  }
3234
- interface CampaignRunOutcome {
3248
+ interface CampaignRunOutcomeFields {
3235
3249
  /** Did the run pass? Mirrors `RunOutcome.pass` semantics. */
3236
3250
  pass: boolean;
3237
3251
  /** Score for the run on its split. Maps to `searchScore` or `holdoutScore`. */
@@ -3249,12 +3263,6 @@ interface CampaignRunOutcome {
3249
3263
  configHash: string;
3250
3264
  /** Optional extra numeric metrics to land in `outcome.raw`. */
3251
3265
  raw?: Record<string, number>;
3252
- /** Canonical cross-agent failure class from the shared `FAILURE_CLASSES`
3253
- * taxonomy. Propagated to `RunRecord.failureClass` so campaign runs
3254
- * aggregate failures in the same vocabulary as every other producer. */
3255
- failureClass?: FailureClass;
3256
- /** Optional free-form failure detail, scoped under `failureClass`. */
3257
- failureMode?: string;
3258
3266
  /** Optional judge metadata when a judge was used. */
3259
3267
  judgeMetadata?: RunJudgeMetadata;
3260
3268
  /**
@@ -3270,6 +3278,8 @@ interface CampaignRunOutcome {
3270
3278
  */
3271
3279
  agentProfile?: AgentProfileCell | AgentProfileCellInput;
3272
3280
  }
3281
+ /** Campaign result with the same task-failure invariant as `RunRecord`. */
3282
+ type CampaignRunOutcome = CampaignRunOutcomeFields & RunTaskFailure;
3273
3283
  type CampaignRunner<V> = (ctx: CampaignRunContext<V>) => Promise<CampaignRunOutcome>;
3274
3284
  type CampaignIntegrityPolicy = 'throw' | 'mark_failed' | 'log';
3275
3285
  interface EvalCampaignOptions<V> {
package/dist/rl.js CHANGED
@@ -10,16 +10,16 @@ import {
10
10
  } from "./chunk-3RF76KTD.js";
11
11
  import {
12
12
  runEvalCampaign
13
- } from "./chunk-CLELFRQG.js";
13
+ } from "./chunk-TBL77AUT.js";
14
14
  import {
15
15
  detectRewardHacking,
16
16
  extractVerifiableReward,
17
17
  extractVerifiableRewardsFromRecords,
18
18
  filterDeterministicallyRewarded
19
- } from "./chunk-424XHVKV.js";
19
+ } from "./chunk-NYLOYM6N.js";
20
20
  import {
21
21
  campaignCellToRunRecord
22
- } from "./chunk-ZPUEEM5U.js";
22
+ } from "./chunk-2MKQIFS4.js";
23
23
  import "./chunk-PBE2LOSS.js";
24
24
  import {
25
25
  rubricPredictiveValidity
@@ -27,7 +27,7 @@ import {
27
27
  import {
28
28
  evaluateInterimReleaseConfidence
29
29
  } from "./chunk-MAZ26DC7.js";
30
- import "./chunk-IMGJZBFG.js";
30
+ import "./chunk-VLOATJQ2.js";
31
31
  import "./chunk-DPUHNQLN.js";
32
32
  import {
33
33
  benjaminiHochberg,
@@ -45,9 +45,8 @@ import "./chunk-PC4UYEBM.js";
45
45
  import "./chunk-VQMK5FMP.js";
46
46
  import {
47
47
  runTaskScore
48
- } from "./chunk-NL33OXEP.js";
48
+ } from "./chunk-2JX3CFMB.js";
49
49
  import "./chunk-MA6HLL3S.js";
50
- import "./chunk-VSMTAMNK.js";
51
50
  import {
52
51
  ValidationError
53
52
  } from "./chunk-ONWEPEDO.js";
@@ -1412,7 +1411,10 @@ function verificationReportToRunRecord(report, ctx, opts = {}) {
1412
1411
  tokenUsage: { input: 0, output: 0 },
1413
1412
  terminalOutcome: "succeeded",
1414
1413
  outcome,
1415
- failureMode: firstScoredFailure ? `layer_${firstScoredFailure.layer}_fail` : void 0,
1414
+ ...firstScoredFailure ? {
1415
+ failureClass: "unknown",
1416
+ failureMode: `layer_${firstScoredFailure.layer}_fail`
1417
+ } : {},
1416
1418
  splitTag,
1417
1419
  scenarioId: ctx.scenarioId
1418
1420
  };