@tangle-network/agent-eval 0.103.0 → 0.103.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 (146) hide show
  1. package/dist/adapters/http.d.ts +3 -3
  2. package/dist/adapters/langchain.d.ts +3 -3
  3. package/dist/adapters/otel.d.ts +6 -6
  4. package/dist/analyst/index.d.ts +11 -11
  5. package/dist/analyst/index.js +8 -8
  6. package/dist/{analyze-runs-Cd-A_K4l.d.ts → analyze-runs-DJYpep3L.d.ts} +4 -4
  7. package/dist/belief-state/index.d.ts +4 -4
  8. package/dist/belief-state/index.js +3 -3
  9. package/dist/benchmarks/index.d.ts +3 -3
  10. package/dist/builder-eval/index.js +4 -4
  11. package/dist/campaign/index.d.ts +66 -19
  12. package/dist/campaign/index.js +14 -14
  13. package/dist/campaign/index.js.map +1 -1
  14. package/dist/{chunk-FRI6RG3P.js → chunk-2OGPXHOB.js} +3 -3
  15. package/dist/{chunk-XKA6ZGEY.js → chunk-3PFZBGMR.js} +3 -3
  16. package/dist/chunk-3PFZBGMR.js.map +1 -0
  17. package/dist/{chunk-JU6ZX3CX.js → chunk-5PK3626Q.js} +4 -4
  18. package/dist/{chunk-VDGPPGE3.js → chunk-6HFYGEZ3.js} +3 -3
  19. package/dist/{chunk-VDGPPGE3.js.map → chunk-6HFYGEZ3.js.map} +1 -1
  20. package/dist/{chunk-6GT4NI4V.js → chunk-6MFFKPZ4.js} +2 -2
  21. package/dist/{chunk-REVYNR6C.js → chunk-6SK5VFYK.js} +2 -2
  22. package/dist/{chunk-IXOV77YF.js → chunk-BBQILVBH.js} +5 -5
  23. package/dist/{chunk-IH7LYRHL.js → chunk-DBDRR6GF.js} +3 -3
  24. package/dist/{chunk-D5KBVULY.js → chunk-DRPIZQIT.js} +2 -2
  25. package/dist/{chunk-4DIJWVUT.js → chunk-DTJ6QUQB.js} +2 -2
  26. package/dist/{chunk-RQNOLV3I.js → chunk-FOUG2VVS.js} +2 -2
  27. package/dist/{chunk-CWNP4DV4.js → chunk-FUCQVFMU.js} +2 -2
  28. package/dist/{chunk-U3IDYATS.js → chunk-GDZAWO2I.js} +5 -5
  29. package/dist/{chunk-ZOPLCJSY.js → chunk-HZHNRYHK.js} +2 -2
  30. package/dist/{chunk-UFSG7ACU.js → chunk-JZXGWLK5.js} +1 -1
  31. package/dist/chunk-JZXGWLK5.js.map +1 -0
  32. package/dist/{chunk-B2TMQM62.js → chunk-K7QEIHHJ.js} +2 -2
  33. package/dist/{chunk-6FIAJHCU.js → chunk-LIEJUH2I.js} +6 -6
  34. package/dist/{chunk-YBIGNSCZ.js → chunk-LNQEP766.js} +2 -2
  35. package/dist/{chunk-IN3SHQML.js → chunk-LOJ2QVCE.js} +4 -4
  36. package/dist/{chunk-AIGWQEME.js → chunk-N22ZO7FV.js} +2 -2
  37. package/dist/{chunk-3BFEG2F6.js → chunk-ONWEPEDO.js} +1 -1
  38. package/dist/chunk-ONWEPEDO.js.map +1 -0
  39. package/dist/{chunk-L5TVEZFT.js → chunk-QRVS7MX4.js} +3 -3
  40. package/dist/{chunk-2MLIEQSN.js → chunk-RPDDVKI7.js} +2 -2
  41. package/dist/{chunk-SBCB6VZY.js → chunk-TT4KNT67.js} +2 -2
  42. package/dist/{chunk-7RBJANJD.js → chunk-V7HNA47Z.js} +5 -5
  43. package/dist/{chunk-2NSLDY4B.js → chunk-VK6HBGAE.js} +3 -3
  44. package/dist/{chunk-NF7OZ4J7.js → chunk-X6NIXVOD.js} +2 -2
  45. package/dist/{chunk-ABOIVNXL.js → chunk-XJYR7XFV.js} +2 -2
  46. package/dist/chunk-XJYR7XFV.js.map +1 -0
  47. package/dist/{chunk-HRGUJTER.js → chunk-XMSYF4A7.js} +2 -2
  48. package/dist/{chunk-HRGUJTER.js.map → chunk-XMSYF4A7.js.map} +1 -1
  49. package/dist/{chunk-HV5PBTJF.js → chunk-Z7FK73R5.js} +5 -5
  50. package/dist/chunk-Z7FK73R5.js.map +1 -0
  51. package/dist/{chunk-NTVWIH24.js → chunk-ZKIL3VOD.js} +5 -5
  52. package/dist/chunk-ZKIL3VOD.js.map +1 -0
  53. package/dist/cli.js +3 -3
  54. package/dist/{code-agent-session-Ce-9u7YM.d.ts → code-agent-session-rnJKlqmT.d.ts} +1 -1
  55. package/dist/contract/index.d.ts +22 -22
  56. package/dist/contract/index.js +15 -15
  57. package/dist/{control-C8RmK9H4.d.ts → control-B8UthSBL.d.ts} +2 -2
  58. package/dist/control.d.ts +5 -5
  59. package/dist/control.js +4 -4
  60. package/dist/{corpus-CiSzzLa5.d.ts → corpus-eBVwhCp1.d.ts} +1 -1
  61. package/dist/{dataset-BbGkaN2I.d.ts → dataset-DS7ytHZU.d.ts} +1 -1
  62. package/dist/{default-registry-ZhqsTr4K.d.ts → default-registry-BswHCXnU.d.ts} +2 -2
  63. package/dist/diagnose.d.ts +5 -5
  64. package/dist/diagnose.js +5 -5
  65. package/dist/{errors-CzMUYo7b.d.ts → errors-oeQrLqXC.d.ts} +4 -0
  66. package/dist/{feedback-trajectory-BxY0cKfs.d.ts → feedback-trajectory-C9KCo8ag.d.ts} +1 -1
  67. package/dist/fuzz.js +1 -1
  68. package/dist/{gepa-DeyPTlvx.d.ts → gepa-Dn0gtj9n.d.ts} +27 -2
  69. package/dist/governance/index.d.ts +4 -4
  70. package/dist/hosted/index.d.ts +6 -6
  71. package/dist/{index-B-bFgiAF.d.ts → index-C2CC_dry.d.ts} +1 -1
  72. package/dist/index.d.ts +41 -37
  73. package/dist/index.js +26 -26
  74. package/dist/index.js.map +1 -1
  75. package/dist/{insight-report-k0sRTzKg.d.ts → insight-report-B4xrdwEK.d.ts} +2 -2
  76. package/dist/{integrity-D2t12mMw.d.ts → integrity-DqGZg3st.d.ts} +1 -1
  77. package/dist/{judge-calibration-0p2QcWNE.d.ts → judge-calibration-7C-IDmKr.d.ts} +3 -0
  78. package/dist/{kind-factory-D0nk7AKV.d.ts → kind-factory-DvIGo_cP.d.ts} +1 -1
  79. package/dist/{llm-client-Bj7g0rqu.d.ts → llm-client-DyqEH4jH.d.ts} +1 -1
  80. package/dist/meta-eval/index.d.ts +5 -5
  81. package/dist/meta-eval/index.js +4 -4
  82. package/dist/{multi-layer-verifier-DUZXrPDA.d.ts → multi-layer-verifier-CI4jdX-q.d.ts} +3 -0
  83. package/dist/multishot/index.d.ts +3 -3
  84. package/dist/openapi.json +1 -1
  85. package/dist/pipelines/index.d.ts +1 -1
  86. package/dist/pipelines/index.js +4 -4
  87. package/dist/{policy-edit-BDQzzsBU.d.ts → policy-edit-DQUXYMDm.d.ts} +3 -3
  88. package/dist/{pre-registration-mWG2w8d-.d.ts → pre-registration-D8Zr8-rr.d.ts} +4 -4
  89. package/dist/product-benchmark/index.d.ts +2 -2
  90. package/dist/product-benchmark/index.js +2 -2
  91. package/dist/{provenance-BhJm32vN.d.ts → provenance-phkRBl4h.d.ts} +21 -5
  92. package/dist/{query-B7GGjRox.d.ts → query-0aTmbmQe.d.ts} +1 -0
  93. package/dist/{red-team-BWdoyleI.d.ts → red-team-KmmiqBlY.d.ts} +1 -1
  94. package/dist/{release-report-BQ1Ziyu-.d.ts → release-report-DeJpsBiA.d.ts} +6 -3
  95. package/dist/reporting.d.ts +8 -8
  96. package/dist/reporting.js +5 -5
  97. package/dist/{researcher-B_ODTAJs.d.ts → researcher-Wc7dx6GM.d.ts} +4 -4
  98. package/dist/rl.d.ts +12 -12
  99. package/dist/rl.js +11 -11
  100. package/dist/{rubric-predictive-validity-0MdjTt8R.d.ts → rubric-predictive-validity-DPnyG-CE.d.ts} +1 -1
  101. package/dist/run-campaign-PNHAJIT2.js +12 -0
  102. package/dist/{run-record-MRdJ-Kq2.d.ts → run-record-I-Z3JNvO.d.ts} +4 -1
  103. package/dist/{runtime-trajectory-8w0_jmtR.d.ts → runtime-trajectory-iW9IhV3e.d.ts} +1 -1
  104. package/dist/{semantic-concept-judge-D-IlH5v1.d.ts → semantic-concept-judge-BmNZPB_j.d.ts} +4 -4
  105. package/dist/{statistics-xP-cWc5k.d.ts → statistics-D88peojY.d.ts} +1 -1
  106. package/dist/{summary-report-C0nnxOD8.d.ts → summary-report-QMZVe3P-.d.ts} +1 -1
  107. package/dist/traces.d.ts +4 -4
  108. package/dist/traces.js +8 -8
  109. package/dist/{types-Dz9cKF0g.d.ts → types-D1ytG0Yg.d.ts} +2 -2
  110. package/dist/{types-DFI_Z-ZL.d.ts → types-Mh6I44ub.d.ts} +1 -1
  111. package/dist/wire/index.d.ts +3 -3
  112. package/dist/wire/index.js +3 -3
  113. package/dist/workflow/index.d.ts +11 -11
  114. package/dist/workflow/index.js +4 -4
  115. package/package.json +1 -1
  116. package/dist/chunk-3BFEG2F6.js.map +0 -1
  117. package/dist/chunk-ABOIVNXL.js.map +0 -1
  118. package/dist/chunk-HV5PBTJF.js.map +0 -1
  119. package/dist/chunk-NTVWIH24.js.map +0 -1
  120. package/dist/chunk-UFSG7ACU.js.map +0 -1
  121. package/dist/chunk-XKA6ZGEY.js.map +0 -1
  122. package/dist/run-campaign-2L4WCJHR.js +0 -12
  123. /package/dist/{chunk-FRI6RG3P.js.map → chunk-2OGPXHOB.js.map} +0 -0
  124. /package/dist/{chunk-JU6ZX3CX.js.map → chunk-5PK3626Q.js.map} +0 -0
  125. /package/dist/{chunk-6GT4NI4V.js.map → chunk-6MFFKPZ4.js.map} +0 -0
  126. /package/dist/{chunk-REVYNR6C.js.map → chunk-6SK5VFYK.js.map} +0 -0
  127. /package/dist/{chunk-IXOV77YF.js.map → chunk-BBQILVBH.js.map} +0 -0
  128. /package/dist/{chunk-IH7LYRHL.js.map → chunk-DBDRR6GF.js.map} +0 -0
  129. /package/dist/{chunk-D5KBVULY.js.map → chunk-DRPIZQIT.js.map} +0 -0
  130. /package/dist/{chunk-4DIJWVUT.js.map → chunk-DTJ6QUQB.js.map} +0 -0
  131. /package/dist/{chunk-RQNOLV3I.js.map → chunk-FOUG2VVS.js.map} +0 -0
  132. /package/dist/{chunk-CWNP4DV4.js.map → chunk-FUCQVFMU.js.map} +0 -0
  133. /package/dist/{chunk-U3IDYATS.js.map → chunk-GDZAWO2I.js.map} +0 -0
  134. /package/dist/{chunk-ZOPLCJSY.js.map → chunk-HZHNRYHK.js.map} +0 -0
  135. /package/dist/{chunk-B2TMQM62.js.map → chunk-K7QEIHHJ.js.map} +0 -0
  136. /package/dist/{chunk-6FIAJHCU.js.map → chunk-LIEJUH2I.js.map} +0 -0
  137. /package/dist/{chunk-YBIGNSCZ.js.map → chunk-LNQEP766.js.map} +0 -0
  138. /package/dist/{chunk-IN3SHQML.js.map → chunk-LOJ2QVCE.js.map} +0 -0
  139. /package/dist/{chunk-AIGWQEME.js.map → chunk-N22ZO7FV.js.map} +0 -0
  140. /package/dist/{chunk-L5TVEZFT.js.map → chunk-QRVS7MX4.js.map} +0 -0
  141. /package/dist/{chunk-2MLIEQSN.js.map → chunk-RPDDVKI7.js.map} +0 -0
  142. /package/dist/{chunk-SBCB6VZY.js.map → chunk-TT4KNT67.js.map} +0 -0
  143. /package/dist/{chunk-7RBJANJD.js.map → chunk-V7HNA47Z.js.map} +0 -0
  144. /package/dist/{chunk-2NSLDY4B.js.map → chunk-VK6HBGAE.js.map} +0 -0
  145. /package/dist/{chunk-NF7OZ4J7.js.map → chunk-X6NIXVOD.js.map} +0 -0
  146. /package/dist/{run-campaign-2L4WCJHR.js.map → run-campaign-PNHAJIT2.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  AgentEvalError,
7
7
  CaptureIntegrityError
8
- } from "./chunk-3BFEG2F6.js";
8
+ } from "./chunk-ONWEPEDO.js";
9
9
 
10
10
  // src/llm-client.ts
11
11
  var LlmCallError = class extends AgentEvalError {
@@ -542,4 +542,4 @@ export {
542
542
  probeLlm,
543
543
  LlmClient
544
544
  };
545
- //# sourceMappingURL=chunk-CWNP4DV4.js.map
545
+ //# sourceMappingURL=chunk-FUCQVFMU.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  summarizeBackendIntegrity
3
- } from "./chunk-XKA6ZGEY.js";
3
+ } from "./chunk-3PFZBGMR.js";
4
4
  import {
5
5
  paretoChart
6
- } from "./chunk-6GT4NI4V.js";
6
+ } from "./chunk-6MFFKPZ4.js";
7
7
  import {
8
8
  cohensD,
9
9
  pairedBootstrap,
@@ -12,10 +12,10 @@ import {
12
12
  pearsonR,
13
13
  requiredSampleSize,
14
14
  spearmanR
15
- } from "./chunk-HRGUJTER.js";
15
+ } from "./chunk-XMSYF4A7.js";
16
16
  import {
17
17
  llmSpans
18
- } from "./chunk-UFSG7ACU.js";
18
+ } from "./chunk-JZXGWLK5.js";
19
19
 
20
20
  // src/contamination-guard.ts
21
21
  function checkCanaries(output, scenarios) {
@@ -822,4 +822,4 @@ export {
822
822
  HoldoutAuditor,
823
823
  analyzeRuns
824
824
  };
825
- //# sourceMappingURL=chunk-U3IDYATS.js.map
825
+ //# sourceMappingURL=chunk-GDZAWO2I.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TVVP3ZZQ.js";
4
4
  import {
5
5
  ConfigError
6
- } from "./chunk-3BFEG2F6.js";
6
+ } from "./chunk-ONWEPEDO.js";
7
7
 
8
8
  // src/sandbox-harness.ts
9
9
  var vitestTestParser = {
@@ -303,4 +303,4 @@ export {
303
303
  SandboxHarness,
304
304
  runTestGradedScenario
305
305
  };
306
- //# sourceMappingURL=chunk-ZOPLCJSY.js.map
306
+ //# sourceMappingURL=chunk-HZHNRYHK.js.map
@@ -76,4 +76,4 @@ export {
76
76
  aggregateLlm,
77
77
  runFailureClass
78
78
  };
79
- //# sourceMappingURL=chunk-UFSG7ACU.js.map
79
+ //# sourceMappingURL=chunk-JZXGWLK5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/trace/query.ts"],"sourcesContent":["/**\n * Typed query helpers over TraceStore.\n *\n * Not a full SQL engine — a minimal, composable set of operators that\n * cover the canned-pipeline use cases. For ad-hoc analytics, persist to\n * NDJSON and point DuckDB at it; the schema is stable so external SQL\n * tooling works out of the box.\n */\n\nimport type { FailureClass, JudgeSpan, LlmSpan, Run, ToolSpan } from './schema'\nimport { isJudgeSpan, isLlmSpan, isToolSpan } from './schema'\nimport type { TraceStore } from './store'\n\nexport async function runsForScenario(store: TraceStore, scenarioId: string): Promise<Run[]> {\n return store.listRuns({ scenarioId })\n}\n\nexport async function llmSpans(store: TraceStore, runId?: string): Promise<LlmSpan[]> {\n const spans = await store.spans({ runId, kind: 'llm' })\n return spans.filter(isLlmSpan)\n}\n\nexport async function toolSpans(\n store: TraceStore,\n runId?: string,\n toolName?: string,\n): Promise<ToolSpan[]> {\n const spans = await store.spans({ runId, kind: 'tool', toolName })\n return spans.filter(isToolSpan)\n}\n\n/** Query judge-kind spans from the trace store, optionally scoped to a single run. */\nexport async function judgeSpans(store: TraceStore, runId?: string): Promise<JudgeSpan[]> {\n const spans = await store.spans({ runId, kind: 'judge' })\n return spans.filter(isJudgeSpan)\n}\n\n/** Group spans by any key selector. */\nexport function groupBy<T, K extends string | number>(items: T[], key: (t: T) => K): Map<K, T[]> {\n const map = new Map<K, T[]>()\n for (const item of items) {\n const k = key(item)\n let bucket = map.get(k)\n if (!bucket) {\n bucket = []\n map.set(k, bucket)\n }\n bucket.push(item)\n }\n return map\n}\n\n/** Hash tool arguments to an orderless-key-stable string for de-duplication. */\nexport function argHash(args: unknown): string {\n return stableStringify(args)\n}\n\nfunction stableStringify(value: unknown): string {\n // Must ALWAYS return a string: JSON.stringify(undefined) — and stringify of\n // functions/symbols — yields the JS value `undefined`, which would make\n // argHash return a non-string and silently break the de-dup keys behind\n // stuck-loop and failure-cluster.\n if (value === undefined) return 'undefined'\n if (value === null || typeof value !== 'object') return JSON.stringify(value) ?? 'undefined'\n if (Array.isArray(value)) return `[${value.map(stableStringify).join(',')}]`\n // Drop undefined-valued keys to match JSON.stringify semantics, so\n // `{a:1}` and `{a:1,b:undefined}` hash identically.\n const obj = value as Record<string, unknown>\n const keys = Object.keys(obj)\n .filter((k) => obj[k] !== undefined)\n .sort()\n const parts = keys.map((k) => `${JSON.stringify(k)}:${stableStringify(obj[k])}`)\n return `{${parts.join(',')}}`\n}\n\n/** Sum an LLM-span array into aggregate token + cost. */\nexport function aggregateLlm(spans: LlmSpan[]): {\n inputTokens: number\n outputTokens: number\n cachedTokens: number\n reasoningTokens: number\n costUsd: number\n} {\n return spans.reduce(\n (acc, s) => ({\n inputTokens: acc.inputTokens + (s.inputTokens ?? 0),\n outputTokens: acc.outputTokens + (s.outputTokens ?? 0),\n cachedTokens: acc.cachedTokens + (s.cachedTokens ?? 0),\n // reasoningTokens is on LlmSpan but was omitted here — reasoning usage was\n // invisible to any cost/perf analysis reading this aggregate.\n reasoningTokens: acc.reasoningTokens + (s.reasoningTokens ?? 0),\n costUsd: acc.costUsd + (s.costUsd ?? 0),\n }),\n { inputTokens: 0, outputTokens: 0, cachedTokens: 0, reasoningTokens: 0, costUsd: 0 },\n )\n}\n\n/** Pick the outcome's failure class when present, else derive 'success' from run status. */\nexport function runFailureClass(run: Run): FailureClass {\n if (run.outcome?.failureClass) return run.outcome.failureClass\n if (run.status === 'completed' && run.outcome?.pass !== false) return 'success'\n if (run.status === 'aborted') return 'budget_exceeded'\n return 'unknown'\n}\n"],"mappings":";;;;;;;AAaA,eAAsB,gBAAgB,OAAmB,YAAoC;AAC3F,SAAO,MAAM,SAAS,EAAE,WAAW,CAAC;AACtC;AAEA,eAAsB,SAAS,OAAmB,OAAoC;AACpF,QAAM,QAAQ,MAAM,MAAM,MAAM,EAAE,OAAO,MAAM,MAAM,CAAC;AACtD,SAAO,MAAM,OAAO,SAAS;AAC/B;AAEA,eAAsB,UACpB,OACA,OACA,UACqB;AACrB,QAAM,QAAQ,MAAM,MAAM,MAAM,EAAE,OAAO,MAAM,QAAQ,SAAS,CAAC;AACjE,SAAO,MAAM,OAAO,UAAU;AAChC;AAGA,eAAsB,WAAW,OAAmB,OAAsC;AACxF,QAAM,QAAQ,MAAM,MAAM,MAAM,EAAE,OAAO,MAAM,QAAQ,CAAC;AACxD,SAAO,MAAM,OAAO,WAAW;AACjC;AAGO,SAAS,QAAsC,OAAY,KAA+B;AAC/F,QAAM,MAAM,oBAAI,IAAY;AAC5B,aAAW,QAAQ,OAAO;AACxB,UAAM,IAAI,IAAI,IAAI;AAClB,QAAI,SAAS,IAAI,IAAI,CAAC;AACtB,QAAI,CAAC,QAAQ;AACX,eAAS,CAAC;AACV,UAAI,IAAI,GAAG,MAAM;AAAA,IACnB;AACA,WAAO,KAAK,IAAI;AAAA,EAClB;AACA,SAAO;AACT;AAGO,SAAS,QAAQ,MAAuB;AAC7C,SAAO,gBAAgB,IAAI;AAC7B;AAEA,SAAS,gBAAgB,OAAwB;AAK/C,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,UAAU,QAAQ,OAAO,UAAU,SAAU,QAAO,KAAK,UAAU,KAAK,KAAK;AACjF,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,IAAI,MAAM,IAAI,eAAe,EAAE,KAAK,GAAG,CAAC;AAGzE,QAAM,MAAM;AACZ,QAAM,OAAO,OAAO,KAAK,GAAG,EACzB,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,MAAS,EAClC,KAAK;AACR,QAAM,QAAQ,KAAK,IAAI,CAAC,MAAM,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,gBAAgB,IAAI,CAAC,CAAC,CAAC,EAAE;AAC/E,SAAO,IAAI,MAAM,KAAK,GAAG,CAAC;AAC5B;AAGO,SAAS,aAAa,OAM3B;AACA,SAAO,MAAM;AAAA,IACX,CAAC,KAAK,OAAO;AAAA,MACX,aAAa,IAAI,eAAe,EAAE,eAAe;AAAA,MACjD,cAAc,IAAI,gBAAgB,EAAE,gBAAgB;AAAA,MACpD,cAAc,IAAI,gBAAgB,EAAE,gBAAgB;AAAA;AAAA;AAAA,MAGpD,iBAAiB,IAAI,mBAAmB,EAAE,mBAAmB;AAAA,MAC7D,SAAS,IAAI,WAAW,EAAE,WAAW;AAAA,IACvC;AAAA,IACA,EAAE,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,iBAAiB,GAAG,SAAS,EAAE;AAAA,EACrF;AACF;AAGO,SAAS,gBAAgB,KAAwB;AACtD,MAAI,IAAI,SAAS,aAAc,QAAO,IAAI,QAAQ;AAClD,MAAI,IAAI,WAAW,eAAe,IAAI,SAAS,SAAS,MAAO,QAAO;AACtE,MAAI,IAAI,WAAW,UAAW,QAAO;AACrC,SAAO;AACT;","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-YEHAEDUD.js";
5
5
  import {
6
6
  validateRunRecord
7
- } from "./chunk-2NSLDY4B.js";
7
+ } from "./chunk-VK6HBGAE.js";
8
8
  import {
9
9
  TraceEmitter
10
10
  } from "./chunk-TVVP3ZZQ.js";
@@ -610,4 +610,4 @@ export {
610
610
  runProposeReviewAsControlLoop,
611
611
  controlFailureClassFromVerification
612
612
  };
613
- //# sourceMappingURL=chunk-B2TMQM62.js.map
613
+ //# sourceMappingURL=chunk-K7QEIHHJ.js.map
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  assertLlmRoute
3
- } from "./chunk-CWNP4DV4.js";
3
+ } from "./chunk-FUCQVFMU.js";
4
4
  import {
5
5
  researchReport
6
- } from "./chunk-6GT4NI4V.js";
6
+ } from "./chunk-6MFFKPZ4.js";
7
7
  import {
8
8
  RunIntegrityError,
9
9
  assertRunCaptured
10
- } from "./chunk-SBCB6VZY.js";
10
+ } from "./chunk-TT4KNT67.js";
11
11
  import {
12
12
  FileSystemRawProviderSink
13
13
  } from "./chunk-PC4UYEBM.js";
14
14
  import {
15
15
  validateRunRecord
16
- } from "./chunk-2NSLDY4B.js";
16
+ } from "./chunk-VK6HBGAE.js";
17
17
  import {
18
18
  TraceEmitter
19
19
  } from "./chunk-TVVP3ZZQ.js";
20
20
  import {
21
21
  buildAgentProfileCell,
22
22
  verifyAgentProfileCell
23
- } from "./chunk-ABOIVNXL.js";
23
+ } from "./chunk-XJYR7XFV.js";
24
24
  import {
25
25
  canonicalize,
26
26
  hashJson
@@ -354,4 +354,4 @@ function defaultRunId(params) {
354
354
  export {
355
355
  runEvalCampaign
356
356
  };
357
- //# sourceMappingURL=chunk-6FIAJHCU.js.map
357
+ //# sourceMappingURL=chunk-LIEJUH2I.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  NotFoundError
3
- } from "./chunk-3BFEG2F6.js";
3
+ } from "./chunk-ONWEPEDO.js";
4
4
 
5
5
  // src/trace/otlp-attributes.ts
6
6
  var OPENINFERENCE_SPAN_KIND = "openinference.span.kind";
@@ -1031,4 +1031,4 @@ export {
1031
1031
  buildTraceAnalystTools,
1032
1032
  traceAnalystFunctionGroup
1033
1033
  };
1034
- //# sourceMappingURL=chunk-YBIGNSCZ.js.map
1034
+ //# sourceMappingURL=chunk-LNQEP766.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  parseFindingSubject
3
- } from "./chunk-FRI6RG3P.js";
3
+ } from "./chunk-2OGPXHOB.js";
4
4
  import {
5
5
  validateAgentProfileCell
6
- } from "./chunk-ABOIVNXL.js";
6
+ } from "./chunk-XJYR7XFV.js";
7
7
  import {
8
8
  canonicalize
9
9
  } from "./chunk-VSMTAMNK.js";
10
10
  import {
11
11
  ValidationError
12
- } from "./chunk-3BFEG2F6.js";
12
+ } from "./chunk-ONWEPEDO.js";
13
13
 
14
14
  // src/analyst/steer-firewall.ts
15
15
  var OBSERVABLE_KINDS = /* @__PURE__ */ new Set([
@@ -661,4 +661,4 @@ export {
661
661
  aggregateRunScore,
662
662
  clamp012 as clamp01
663
663
  };
664
- //# sourceMappingURL=chunk-IN3SHQML.js.map
664
+ //# sourceMappingURL=chunk-LOJ2QVCE.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pearsonR
3
- } from "./chunk-HRGUJTER.js";
3
+ } from "./chunk-XMSYF4A7.js";
4
4
 
5
5
  // src/rl/verifiable-reward.ts
6
6
  var DEFAULT_DETERMINISTIC_LAYERS = /* @__PURE__ */ new Set([
@@ -309,4 +309,4 @@ export {
309
309
  filterDeterministicallyRewarded,
310
310
  detectRewardHacking
311
311
  };
312
- //# sourceMappingURL=chunk-AIGWQEME.js.map
312
+ //# sourceMappingURL=chunk-N22ZO7FV.js.map
@@ -54,4 +54,4 @@ export {
54
54
  VerificationError,
55
55
  ReplayError
56
56
  };
57
- //# sourceMappingURL=chunk-3BFEG2F6.js.map
57
+ //# sourceMappingURL=chunk-ONWEPEDO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts"],"sourcesContent":["/**\n * Error taxonomy for `@tangle-network/agent-eval`.\n *\n * Every error this package throws as part of its *public contract* extends\n * `AgentEvalError`. Consumers can pattern-match by `instanceof <Subclass>` or\n * by the stable string `code` carried on the base class.\n *\n * The codes are stable across minor versions; new codes can be added, but\n * existing codes never change meaning. New subclasses are non-breaking.\n *\n * Internal invariant guards (`throw new Error('this should never happen')`)\n * remain plain `Error`s on purpose — they're programmer-mistake assertions,\n * not consumer-catchable contract failures.\n */\n\nexport type AgentEvalErrorCode =\n | 'validation'\n | 'not_found'\n | 'config'\n | 'capture_integrity'\n | 'judge'\n | 'verification'\n | 'replay'\n | 'backend_integrity'\n | 'profile_matrix'\n\n/**\n * Base class for every contract error this package throws — carries the stable\n * string `code` taxonomy so consumers can `instanceof`-match or switch on `code`.\n */\nexport class AgentEvalError extends Error {\n /** Stable string code. Survives minification; safe to switch on. */\n readonly code: AgentEvalErrorCode\n\n constructor(code: AgentEvalErrorCode, message: string, options?: { cause?: unknown }) {\n super(message, options)\n this.name = this.constructor.name\n this.code = code\n }\n}\n\n/** Caller passed invalid arguments (out of range, mutually-exclusive options, bad shape). */\nexport class ValidationError extends AgentEvalError {\n constructor(message: string, options?: { cause?: unknown }) {\n super('validation', message, options)\n }\n}\n\n/** A named resource (run, span, rubric, scenario, dataset row, route) does not exist. */\nexport class NotFoundError extends AgentEvalError {\n constructor(message: string, options?: { cause?: unknown }) {\n super('not_found', message, options)\n }\n}\n\n/** Configuration missing or malformed (`HOME` unset, required image not supplied, env var absent). */\nexport class ConfigError extends AgentEvalError {\n constructor(message: string, options?: { cause?: unknown }) {\n super('config', message, options)\n }\n}\n\n/**\n * A run is missing the artifacts a launch-grade check requires:\n * raw HTTP capture absent, no LLM spans, route assertion failed, run-end\n * assertion tripped. Block ship on this; do not catch and move on.\n */\nexport class CaptureIntegrityError extends AgentEvalError {\n constructor(message: string, options?: { cause?: unknown }) {\n super('capture_integrity', message, options)\n }\n}\n\n/** A judge call failed in a way that's not retryable: schema parse failure, bad rubric, conflicting dimensions. */\nexport class JudgeError extends AgentEvalError {\n constructor(message: string, options?: { cause?: unknown }) {\n super('judge', message, options)\n }\n}\n\n/** A verifier signalled a hard failure (compile, test, schema) — distinct from a low judge score. */\nexport class VerificationError extends AgentEvalError {\n constructor(message: string, options?: { cause?: unknown }) {\n super('verification', message, options)\n }\n}\n\n/** Replay cache cannot satisfy a request: miss with no fallback, sink lacks list(), unsupported URL. */\nexport class ReplayError extends AgentEvalError {\n constructor(message: string, options?: { cause?: unknown }) {\n super('replay', message, options)\n }\n}\n"],"mappings":";AA8BO,IAAM,iBAAN,cAA6B,MAAM;AAAA;AAAA,EAE/B;AAAA,EAET,YAAY,MAA0B,SAAiB,SAA+B;AACpF,UAAM,SAAS,OAAO;AACtB,SAAK,OAAO,KAAK,YAAY;AAC7B,SAAK,OAAO;AAAA,EACd;AACF;AAGO,IAAM,kBAAN,cAA8B,eAAe;AAAA,EAClD,YAAY,SAAiB,SAA+B;AAC1D,UAAM,cAAc,SAAS,OAAO;AAAA,EACtC;AACF;AAGO,IAAM,gBAAN,cAA4B,eAAe;AAAA,EAChD,YAAY,SAAiB,SAA+B;AAC1D,UAAM,aAAa,SAAS,OAAO;AAAA,EACrC;AACF;AAGO,IAAM,cAAN,cAA0B,eAAe;AAAA,EAC9C,YAAY,SAAiB,SAA+B;AAC1D,UAAM,UAAU,SAAS,OAAO;AAAA,EAClC;AACF;AAOO,IAAM,wBAAN,cAAoC,eAAe;AAAA,EACxD,YAAY,SAAiB,SAA+B;AAC1D,UAAM,qBAAqB,SAAS,OAAO;AAAA,EAC7C;AACF;AAGO,IAAM,aAAN,cAAyB,eAAe;AAAA,EAC7C,YAAY,SAAiB,SAA+B;AAC1D,UAAM,SAAS,SAAS,OAAO;AAAA,EACjC;AACF;AAGO,IAAM,oBAAN,cAAgC,eAAe;AAAA,EACpD,YAAY,SAAiB,SAA+B;AAC1D,UAAM,gBAAgB,SAAS,OAAO;AAAA,EACxC;AACF;AAGO,IAAM,cAAN,cAA0B,eAAe;AAAA,EAC9C,YAAY,SAAiB,SAA+B;AAC1D,UAAM,UAAU,SAAS,OAAO;AAAA,EAClC;AACF;","names":[]}
@@ -2,7 +2,7 @@ import {
2
2
  AnalystRegistry,
3
3
  DEFAULT_TRACE_ANALYST_KINDS,
4
4
  createTraceAnalystKind
5
- } from "./chunk-FRI6RG3P.js";
5
+ } from "./chunk-2OGPXHOB.js";
6
6
  import {
7
7
  makeFinding
8
8
  } from "./chunk-45EEMHTC.js";
@@ -10,7 +10,7 @@ import {
10
10
  LLM_INPUT_TOKEN_ATTR_KEYS,
11
11
  LLM_OUTPUT_TOKEN_ATTR_KEYS,
12
12
  TOOL_NAME_ATTR_KEYS
13
- } from "./chunk-YBIGNSCZ.js";
13
+ } from "./chunk-LNQEP766.js";
14
14
 
15
15
  // src/trace-analyst/behavioral-metrics.ts
16
16
  var INPUT_GROWTH_FACTOR = 3;
@@ -204,4 +204,4 @@ export {
204
204
  behavioralAnalyst,
205
205
  buildDefaultAnalystRegistry
206
206
  };
207
- //# sourceMappingURL=chunk-L5TVEZFT.js.map
207
+ //# sourceMappingURL=chunk-QRVS7MX4.js.map
@@ -2,7 +2,7 @@ import {
2
2
  OtlpFileTraceStore,
3
3
  TraceFileMissingError,
4
4
  buildTraceAnalystTools
5
- } from "./chunk-YBIGNSCZ.js";
5
+ } from "./chunk-LNQEP766.js";
6
6
 
7
7
  // src/trace-analyst/prompts.ts
8
8
  var TRACE_ANALYST_ACTOR_DESCRIPTION = `You answer questions about an OTLP-shaped JSONL trace dataset using the trace tools provided in the \`traces\` namespace.
@@ -198,4 +198,4 @@ export {
198
198
  TRACE_ANALYST_SUBAGENT_DESCRIPTION,
199
199
  analyzeTraces
200
200
  };
201
- //# sourceMappingURL=chunk-2MLIEQSN.js.map
201
+ //# sourceMappingURL=chunk-RPDDVKI7.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CaptureIntegrityError
3
- } from "./chunk-3BFEG2F6.js";
3
+ } from "./chunk-ONWEPEDO.js";
4
4
 
5
5
  // src/trace/integrity.ts
6
6
  var RunIntegrityError = class extends CaptureIntegrityError {
@@ -121,4 +121,4 @@ export {
121
121
  assertRunCaptured,
122
122
  throwIfRunIncomplete
123
123
  };
124
- //# sourceMappingURL=chunk-SBCB6VZY.js.map
124
+ //# sourceMappingURL=chunk-TT4KNT67.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  analyzeTraces
3
- } from "./chunk-2MLIEQSN.js";
3
+ } from "./chunk-RPDDVKI7.js";
4
4
  import {
5
5
  LLM_CACHED_TOKEN_ATTR_KEYS,
6
6
  LLM_COST_ATTR_KEYS,
@@ -19,21 +19,21 @@ import {
19
19
  projectOtlpFlatLine,
20
20
  spanEpochMillis,
21
21
  traceSpanKindToOpenInferenceKind
22
- } from "./chunk-YBIGNSCZ.js";
22
+ } from "./chunk-LNQEP766.js";
23
23
  import {
24
24
  defaultProviderRedactor,
25
25
  providerFromBaseUrl
26
26
  } from "./chunk-PC4UYEBM.js";
27
27
  import {
28
28
  validateRunRecord
29
- } from "./chunk-2NSLDY4B.js";
29
+ } from "./chunk-VK6HBGAE.js";
30
30
  import {
31
31
  canonicalize,
32
32
  hashJson
33
33
  } from "./chunk-VSMTAMNK.js";
34
34
  import {
35
35
  ReplayError
36
- } from "./chunk-3BFEG2F6.js";
36
+ } from "./chunk-ONWEPEDO.js";
37
37
 
38
38
  // src/trace-analyst/hook.ts
39
39
  var DEFAULT_QUESTION = "Summarise what happened in this run. Surface any failure modes, surprising findings, or evidence that the run's verdict is wrong.";
@@ -1954,4 +1954,4 @@ export {
1954
1954
  createReplayFetch,
1955
1955
  iterateRawCalls
1956
1956
  };
1957
- //# sourceMappingURL=chunk-7RBJANJD.js.map
1957
+ //# sourceMappingURL=chunk-V7HNA47Z.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  validateAgentProfileCell
3
- } from "./chunk-ABOIVNXL.js";
3
+ } from "./chunk-XJYR7XFV.js";
4
4
  import {
5
5
  ValidationError
6
- } from "./chunk-3BFEG2F6.js";
6
+ } from "./chunk-ONWEPEDO.js";
7
7
 
8
8
  // src/run-record.ts
9
9
  var MANDATORY_TOP_LEVEL = [
@@ -246,4 +246,4 @@ export {
246
246
  roundTripRunRecord,
247
247
  modelHasSnapshot
248
248
  };
249
- //# sourceMappingURL=chunk-2NSLDY4B.js.map
249
+ //# sourceMappingURL=chunk-VK6HBGAE.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  pearsonR,
3
3
  spearmanR
4
- } from "./chunk-HRGUJTER.js";
4
+ } from "./chunk-XMSYF4A7.js";
5
5
 
6
6
  // src/meta-eval/rubric-predictive-validity.ts
7
7
  async function rubricPredictiveValidity(input) {
@@ -133,4 +133,4 @@ function makeRng(seed) {
133
133
  export {
134
134
  rubricPredictiveValidity
135
135
  };
136
- //# sourceMappingURL=chunk-NF7OZ4J7.js.map
136
+ //# sourceMappingURL=chunk-X6NIXVOD.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-VSMTAMNK.js";
4
4
  import {
5
5
  ValidationError
6
- } from "./chunk-3BFEG2F6.js";
6
+ } from "./chunk-ONWEPEDO.js";
7
7
 
8
8
  // src/agent-profile-cell.ts
9
9
  var AgentProfileCellValidationError = class extends ValidationError {
@@ -314,4 +314,4 @@ export {
314
314
  toAgentProfileJson,
315
315
  buildAgentInterfaceProfileCell
316
316
  };
317
- //# sourceMappingURL=chunk-ABOIVNXL.js.map
317
+ //# sourceMappingURL=chunk-XJYR7XFV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/agent-profile-cell.ts"],"sourcesContent":["import type { AgentProfile } from '@tangle-network/agent-interface'\nimport { ValidationError } from './errors'\nimport { hashJson } from './pre-registration'\n\nexport type AgentProfileCellSchemaVersion = 'agent-profile-cell/v1'\n\nexport type AgentProfileJson =\n | string\n | number\n | boolean\n | null\n | AgentProfileJson[]\n | { [key: string]: AgentProfileJson }\n\nexport type AgentProfileDimensionValue = string | number | boolean | null\n\nexport interface AgentProfileSource {\n /** Runtime/profile contract being fingerprinted, e.g. `agent-interface-profile`. */\n kind: string\n /** sha256 over the canonical source profile object. */\n hash: string\n}\n\nexport interface AgentProfileSourceInput {\n kind: string\n /** Precomputed sha256 for callers that already sign their profile artifact. */\n hash?: string\n /** Full canonical runtime profile; hashed and then discarded from the cell. */\n profile?: AgentProfileJson\n}\n\nexport interface AgentProfileHarness {\n id: string\n version?: string\n hash?: string\n}\n\nexport interface AgentProfileCellInput {\n profileId: string\n sourceProfile: AgentProfileSourceInput\n harness?: AgentProfileHarness\n model?: string\n promptHash?: string\n dimensions?: Record<string, AgentProfileDimensionValue>\n}\n\nexport interface AgentProfileCell {\n schemaVersion: AgentProfileCellSchemaVersion\n cellId: string\n profileId: string\n sourceProfile: AgentProfileSource\n harness?: AgentProfileHarness\n model?: string\n promptHash?: string\n dimensions?: Record<string, AgentProfileDimensionValue>\n}\n\nexport class AgentProfileCellValidationError extends ValidationError {\n readonly path: string\n constructor(message: string, path = '') {\n super(path ? `${message} (at ${path})` : message)\n this.path = path\n }\n}\n\nconst SHA256_HEX = /^[0-9a-f]{64}$/\nconst CELL_ID = /^agent-profile-cell:sha256:[0-9a-f]{64}$/\n\nexport async function buildAgentProfileCell(\n input: AgentProfileCellInput,\n): Promise<AgentProfileCell> {\n const material = await normalizeAgentProfileCellInput(input)\n const cellId = `agent-profile-cell:sha256:${await hashJson(material)}`\n return { ...material, cellId }\n}\n\nexport function agentProfileCellHashMaterial(\n cell: AgentProfileCell,\n): Omit<AgentProfileCell, 'cellId'> {\n const { cellId: _cellId, ...material } = cell\n void _cellId\n return normalizeAgentProfileCell(material)\n}\n\n/**\n * Verify an `AgentProfileCell`'s `cellId` matches the sha256 of its hash-material fields, confirming the record has not been tampered with.\n */\nexport async function verifyAgentProfileCell(cell: AgentProfileCell): Promise<boolean> {\n validateAgentProfileCell(cell)\n return (\n cell.cellId ===\n `agent-profile-cell:sha256:${await hashJson(agentProfileCellHashMaterial(cell))}`\n )\n}\n\nexport function validateAgentProfileCell(input: unknown): AgentProfileCell {\n if (input === null || typeof input !== 'object') {\n throw new AgentProfileCellValidationError('expected object')\n }\n const obj = input as Record<string, unknown>\n expectLiteral(obj.schemaVersion, 'agent-profile-cell/v1', 'schemaVersion')\n if (typeof obj.cellId !== 'string' || !CELL_ID.test(obj.cellId)) {\n throw new AgentProfileCellValidationError(\n 'cellId must match agent-profile-cell:sha256:<64 lowercase hex chars>',\n 'cellId',\n )\n }\n expectString(obj.profileId, 'profileId')\n validateSource(obj.sourceProfile, 'sourceProfile')\n if (obj.harness !== undefined) validateHarness(obj.harness, 'harness')\n if (obj.model !== undefined) expectString(obj.model, 'model')\n if (obj.promptHash !== undefined) expectString(obj.promptHash, 'promptHash')\n if (obj.dimensions !== undefined) validateDimensions(obj.dimensions, 'dimensions')\n return input as AgentProfileCell\n}\n\nexport function requireAgentProfileCell(record: {\n runId: string\n agentProfile?: AgentProfileCell\n}): AgentProfileCell {\n if (!record.agentProfile) {\n throw new AgentProfileCellValidationError(\n `run \"${record.runId}\" is missing agentProfile; profile-cell grouping requires explicit profile identity`,\n 'agentProfile',\n )\n }\n return validateAgentProfileCell(record.agentProfile)\n}\n\nexport function agentProfileCellKey(record: {\n runId: string\n agentProfile?: AgentProfileCell\n}): string {\n return requireAgentProfileCell(record).cellId\n}\n\nexport async function assertRunAgentProfileCell(record: {\n runId: string\n model: string\n promptHash: string\n agentProfile?: AgentProfileCell\n}): Promise<AgentProfileCell> {\n const profile = requireAgentProfileCell(record)\n if (!(await verifyAgentProfileCell(profile))) {\n throw new AgentProfileCellValidationError(\n `run \"${record.runId}\" has an agentProfile.cellId that does not match its content`,\n 'agentProfile.cellId',\n )\n }\n if (profile.model !== undefined && profile.model !== record.model) {\n throw new AgentProfileCellValidationError(\n `run \"${record.runId}\" agentProfile.model \"${profile.model}\" does not match model \"${record.model}\"`,\n 'agentProfile.model',\n )\n }\n if (profile.promptHash !== undefined && profile.promptHash !== record.promptHash) {\n throw new AgentProfileCellValidationError(\n `run \"${record.runId}\" agentProfile.promptHash \"${profile.promptHash}\" does not match promptHash \"${record.promptHash}\"`,\n 'agentProfile.promptHash',\n )\n }\n return profile\n}\n\nexport function groupRunsByAgentProfileCell<\n T extends { runId: string; agentProfile?: AgentProfileCell },\n>(records: readonly T[]): Map<string, T[]> {\n const groups = new Map<string, T[]>()\n for (const record of records) {\n const key = agentProfileCellKey(record)\n const bucket = groups.get(key)\n if (bucket) bucket.push(record)\n else groups.set(key, [record])\n }\n return groups\n}\n\nasync function normalizeAgentProfileCellInput(\n input: AgentProfileCellInput,\n): Promise<Omit<AgentProfileCell, 'cellId'>> {\n return normalizeAgentProfileCell({\n schemaVersion: 'agent-profile-cell/v1',\n profileId: input.profileId,\n sourceProfile: await normalizeSourceInput(input.sourceProfile),\n harness: input.harness,\n model: input.model,\n promptHash: input.promptHash,\n dimensions: input.dimensions,\n })\n}\n\nfunction normalizeAgentProfileCell(\n input: Omit<AgentProfileCell, 'cellId'>,\n): Omit<AgentProfileCell, 'cellId'> {\n return compactObject({\n schemaVersion: 'agent-profile-cell/v1' as const,\n profileId: requireNonEmpty(input.profileId, 'profileId'),\n sourceProfile: normalizeSource(input.sourceProfile),\n harness: input.harness ? normalizeHarness(input.harness, 'harness') : undefined,\n model: optionalNonEmpty(input.model, 'model'),\n promptHash: optionalNonEmpty(input.promptHash, 'promptHash'),\n dimensions: input.dimensions\n ? nonEmptyRecord(normalizeDimensions(input.dimensions))\n : undefined,\n })\n}\n\nasync function normalizeSourceInput(input: AgentProfileSourceInput): Promise<AgentProfileSource> {\n const kind = requireNonEmpty(input.kind, 'sourceProfile.kind')\n if (input.hash !== undefined && input.profile !== undefined) {\n throw new AgentProfileCellValidationError(\n 'sourceProfile must provide either hash or profile, not both',\n 'sourceProfile',\n )\n }\n if (input.hash !== undefined) {\n return { kind, hash: requireSha256Hex(input.hash, 'sourceProfile.hash') }\n }\n if (input.profile === undefined) {\n throw new AgentProfileCellValidationError(\n 'sourceProfile must provide hash or profile',\n 'sourceProfile',\n )\n }\n assertJson(input.profile, 'sourceProfile.profile')\n return { kind, hash: await hashJson(input.profile) }\n}\n\nfunction normalizeSource(input: AgentProfileSource): AgentProfileSource {\n return {\n kind: requireNonEmpty(input.kind, 'sourceProfile.kind'),\n hash: requireSha256Hex(input.hash, 'sourceProfile.hash'),\n }\n}\n\nfunction normalizeHarness(input: AgentProfileHarness, path: string): AgentProfileHarness {\n return compactObject({\n id: requireNonEmpty(input.id, `${path}.id`),\n version: optionalNonEmpty(input.version, `${path}.version`),\n hash: optionalNonEmpty(input.hash, `${path}.hash`),\n })\n}\n\nfunction normalizeDimensions(\n input: Record<string, AgentProfileDimensionValue>,\n): Record<string, AgentProfileDimensionValue> {\n const out: Record<string, AgentProfileDimensionValue> = {}\n for (const key of Object.keys(input).sort()) {\n const value = input[key]\n requireNonEmpty(key, 'dimensions.<key>')\n if (\n value !== null &&\n typeof value !== 'string' &&\n typeof value !== 'number' &&\n typeof value !== 'boolean'\n ) {\n throw new AgentProfileCellValidationError(\n 'expected primitive dimension value',\n `dimensions.${key}`,\n )\n }\n if (typeof value === 'number' && !Number.isFinite(value)) {\n throw new AgentProfileCellValidationError('expected finite number', `dimensions.${key}`)\n }\n out[key] = value\n }\n return out\n}\n\nfunction compactObject<T extends Record<string, unknown>>(input: T): T {\n const out: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(input)) {\n if (value !== undefined) out[key] = value\n }\n return out as T\n}\n\nfunction nonEmptyRecord<T extends Record<string, unknown>>(input: T): T | undefined {\n return Object.keys(input).length > 0 ? input : undefined\n}\n\nfunction validateSource(value: unknown, path: string): void {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n throw new AgentProfileCellValidationError('expected object', path)\n }\n const rec = value as Record<string, unknown>\n expectString(rec.kind, `${path}.kind`)\n requireSha256Hex(rec.hash, `${path}.hash`)\n}\n\nfunction validateHarness(value: unknown, path: string): void {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n throw new AgentProfileCellValidationError('expected object', path)\n }\n const rec = value as Record<string, unknown>\n expectString(rec.id, `${path}.id`)\n if (rec.version !== undefined) expectString(rec.version, `${path}.version`)\n if (rec.hash !== undefined) expectString(rec.hash, `${path}.hash`)\n}\n\nfunction validateDimensions(value: unknown, path: string): void {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n throw new AgentProfileCellValidationError('expected object', path)\n }\n normalizeDimensions(value as Record<string, AgentProfileDimensionValue>)\n}\n\nfunction assertJson(value: AgentProfileJson, path: string): void {\n if (value === null) return\n const type = typeof value\n if (type === 'string' || type === 'boolean') return\n if (type === 'number') {\n if (!Number.isFinite(value)) {\n throw new AgentProfileCellValidationError('expected finite number', path)\n }\n return\n }\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n assertJson(item, `${path}[${index}]`)\n })\n return\n }\n if (type === 'object') {\n for (const [key, nested] of Object.entries(value)) {\n requireNonEmpty(key, `${path}.<key>`)\n assertJson(nested, `${path}.${key}`)\n }\n return\n }\n throw new AgentProfileCellValidationError('expected JSON-compatible value', path)\n}\n\nfunction expectLiteral(value: unknown, expected: string, path: string): void {\n if (value !== expected) {\n throw new AgentProfileCellValidationError(`expected ${expected}`, path)\n }\n}\n\nfunction expectString(value: unknown, path: string): void {\n if (typeof value !== 'string' || value.length === 0) {\n throw new AgentProfileCellValidationError('expected non-empty string', path)\n }\n}\n\nfunction requireNonEmpty(value: string, path: string): string {\n if (typeof value !== 'string' || value.length === 0) {\n throw new AgentProfileCellValidationError('expected non-empty string', path)\n }\n return value\n}\n\nfunction optionalNonEmpty(value: string | undefined, path: string): string | undefined {\n if (value === undefined) return undefined\n return requireNonEmpty(value, path)\n}\n\nfunction requireSha256Hex(value: unknown, path: string): string {\n if (typeof value !== 'string' || !SHA256_HEX.test(value)) {\n throw new AgentProfileCellValidationError('expected 64 lowercase sha256 hex chars', path)\n }\n return value\n}\n\n// ── Consumer helpers ─────────────────────────────────────────────────\n//\n// Boilerplate every product consuming `buildAgentProfileCell` used to duplicate:\n//\n// 1. A `JSON.parse(JSON.stringify(value))` helper that canonicalizes an\n// arbitrary `@tangle-network/agent-interface` `AgentProfile` into the recursive\n// `AgentProfileJson` shape, with a fail-loud error when the profile\n// is not JSON-serializable.\n//\n// 2. The magic string `'agent-interface-profile'` for `sourceProfile.kind`.\n//\n// Both belong here so the cross-product cell join (same canonical profile\n// hashes to the same `sourceProfile.hash` across products) is enforced by\n// the type system, not by every consumer remembering to do it right.\n// See blueprint-agent issue tangle-network/agent-eval#82.\n\n/** Canonical `sourceProfile.kind` values. Two products fingerprinting the\n * same canonical profile MUST use the same kind for their cells to share\n * `sourceProfile.hash`. Extend rather than create new strings — adding a\n * new kind is a deliberate cross-product schema change. */\nexport const AGENT_PROFILE_KINDS = {\n /** A profile declared via `defineAgentProfile(...)` from\n * `@tangle-network/agent-interface`. The default kind for router-backed\n * and sandbox-backed products. */\n AGENT_INTERFACE_PROFILE: 'agent-interface-profile',\n} as const\n\nexport type AgentProfileKind = (typeof AGENT_PROFILE_KINDS)[keyof typeof AGENT_PROFILE_KINDS]\n\n/** Canonicalize an arbitrary value into `AgentProfileJson` by JSON\n * round-trip. Throws when the value contains anything not representable\n * as JSON (functions, BigInt, cycles) — non-portable profiles fail loud\n * rather than silently dropping fields. */\nexport function toAgentProfileJson(value: unknown): AgentProfileJson {\n let serialized: string | undefined\n try {\n serialized = JSON.stringify(value)\n } catch (err) {\n throw new AgentProfileCellValidationError(\n `agent profile must be JSON-serializable: ${err instanceof Error ? err.message : String(err)}`,\n 'sourceProfile.profile',\n )\n }\n if (serialized === undefined) {\n throw new AgentProfileCellValidationError(\n 'agent profile must be JSON-serializable (got undefined after JSON.stringify)',\n 'sourceProfile.profile',\n )\n }\n return JSON.parse(serialized) as AgentProfileJson\n}\n\n/** Canonical AgentProfile shape required when deriving a stable cell id. */\nexport type AgentInterfaceProfileLike = AgentProfile & { name: string; version: string }\n\n/** Higher-level helper that hard-codes the canonical\n * `agent-interface-profile` kind plus the JSON canonicalization. Equivalent\n * to calling `buildAgentProfileCell` with `profileId = \\`${name}@${version}\\``\n * and `sourceProfile = { kind: AGENT_INTERFACE_PROFILE, profile: <round-tripped> }`.\n *\n * Use this from any product consuming an agent-interface `AgentProfile`; the\n * manual `buildAgentProfileCell` call is reserved for advanced cases\n * (custom kinds, pre-computed source hashes, alternate profileId\n * conventions). */\nexport async function buildAgentInterfaceProfileCell(\n profile: AgentInterfaceProfileLike,\n input: Omit<AgentProfileCellInput, 'profileId' | 'sourceProfile'>,\n): Promise<AgentProfileCell> {\n if (!profile || typeof profile !== 'object') {\n throw new AgentProfileCellValidationError('AgentProfile must be an object', 'profile')\n }\n if (typeof profile.name !== 'string' || profile.name.length === 0) {\n throw new AgentProfileCellValidationError(\n 'AgentProfile must have a non-empty `name`',\n 'profile.name',\n )\n }\n if (typeof profile.version !== 'string' || profile.version.length === 0) {\n throw new AgentProfileCellValidationError(\n 'AgentProfile must have a non-empty `version`',\n 'profile.version',\n )\n }\n return buildAgentProfileCell({\n ...input,\n profileId: `${profile.name}@${profile.version}`,\n sourceProfile: {\n kind: AGENT_PROFILE_KINDS.AGENT_INTERFACE_PROFILE,\n profile: toAgentProfileJson(profile),\n },\n })\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ValidationError
3
- } from "./chunk-3BFEG2F6.js";
3
+ } from "./chunk-ONWEPEDO.js";
4
4
 
5
5
  // src/statistics.ts
6
6
  var normalizeScores = (scores) => scores;
@@ -1103,4 +1103,4 @@ export {
1103
1103
  eProcess,
1104
1104
  mulberry32
1105
1105
  };
1106
- //# sourceMappingURL=chunk-HRGUJTER.js.map
1106
+ //# sourceMappingURL=chunk-XMSYF4A7.js.map