@tangle-network/agent-eval 0.139.3 → 0.140.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 (124) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/analyst/index.d.ts +15 -13
  3. package/dist/analyst/index.d.ts.map +1 -1
  4. package/dist/analyst/index.js +6 -6
  5. package/dist/{benchmark-DDVdWcwA.d.ts → benchmark-DxaZfy0w.d.ts} +3 -3
  6. package/dist/{benchmark-DDVdWcwA.d.ts.map → benchmark-DxaZfy0w.d.ts.map} +1 -1
  7. package/dist/{benchmark-command-xvi2liH7.js → benchmark-command-CK0UnXAD.js} +54 -33
  8. package/dist/benchmark-command-CK0UnXAD.js.map +1 -0
  9. package/dist/benchmarks/index.d.ts +1 -1
  10. package/dist/benchmarks/index.js +1 -1
  11. package/dist/{benchmarks-zxhy1QV3.js → benchmarks-HwoBE32G.js} +4 -4
  12. package/dist/{benchmarks-zxhy1QV3.js.map → benchmarks-HwoBE32G.js.map} +1 -1
  13. package/dist/campaign/index.d.ts +5 -5
  14. package/dist/campaign/index.js +3 -3
  15. package/dist/{campaign-DrS6_hLd.js → campaign-BzjYNYVZ.js} +5 -5
  16. package/dist/{campaign-DrS6_hLd.js.map → campaign-BzjYNYVZ.js.map} +1 -1
  17. package/dist/cli.js +2 -2
  18. package/dist/{client-BohnDFBq.d.ts → client-BoqGxEqx.d.ts} +4 -4
  19. package/dist/{client-BohnDFBq.d.ts.map → client-BoqGxEqx.d.ts.map} +1 -1
  20. package/dist/{completion-verifier-IPoP4fQO.d.ts → completion-verifier-D15NHYSk.d.ts} +5 -5
  21. package/dist/{completion-verifier-IPoP4fQO.d.ts.map → completion-verifier-D15NHYSk.d.ts.map} +1 -1
  22. package/dist/contract/index.d.ts +10 -10
  23. package/dist/contract/index.js +6 -6
  24. package/dist/control.d.ts +2 -2
  25. package/dist/{cost-ledger-CZ9diLxY.js → cost-ledger-DMFxsLKr.js} +22 -8
  26. package/dist/cost-ledger-DMFxsLKr.js.map +1 -0
  27. package/dist/{cost-ledger-DKgyIWRj.d.ts → cost-ledger-FuQvHxPm.d.ts} +8 -2
  28. package/dist/{cost-ledger-DKgyIWRj.d.ts.map → cost-ledger-FuQvHxPm.d.ts.map} +1 -1
  29. package/dist/{default-registry-B8vf7Rmf.d.ts → default-registry-Ci7wAAR8.d.ts} +5 -5
  30. package/dist/{default-registry-B8vf7Rmf.d.ts.map → default-registry-Ci7wAAR8.d.ts.map} +1 -1
  31. package/dist/{default-registry-BgJJItGr.js → default-registry-DCp-6hc-.js} +3 -3
  32. package/dist/{default-registry-BgJJItGr.js.map → default-registry-DCp-6hc-.js.map} +1 -1
  33. package/dist/{dspy-rlm-engine-DTkVyDX-.js → dspy-rlm-engine-Bkak4nzo.js} +11 -4
  34. package/dist/dspy-rlm-engine-Bkak4nzo.js.map +1 -0
  35. package/dist/{eval-campaign-BmptJj50.js → eval-campaign-YdkpWWoT.js} +2 -2
  36. package/dist/{eval-campaign-BmptJj50.js.map → eval-campaign-YdkpWWoT.js.map} +1 -1
  37. package/dist/{exact-types-MaaFcllV.d.ts → exact-types-B0lJV3tu.d.ts} +2 -2
  38. package/dist/{exact-types-MaaFcllV.d.ts.map → exact-types-B0lJV3tu.d.ts.map} +1 -1
  39. package/dist/{external-optimizer-contracts-BrxY2Sli.d.ts → external-optimizer-contracts-nb7c_WAR.d.ts} +12 -2
  40. package/dist/{external-optimizer-contracts-BrxY2Sli.d.ts.map → external-optimizer-contracts-nb7c_WAR.d.ts.map} +1 -1
  41. package/dist/{extract-usage-DZs601Va.js → extract-usage-C5vMw-0R.js} +2 -2
  42. package/dist/{extract-usage-DZs601Va.js.map → extract-usage-C5vMw-0R.js.map} +1 -1
  43. package/dist/{feedback-trajectory-BJUWOkJM.d.ts → feedback-trajectory-BCHqzLh3.d.ts} +3 -3
  44. package/dist/{feedback-trajectory-BJUWOkJM.d.ts.map → feedback-trajectory-BCHqzLh3.d.ts.map} +1 -1
  45. package/dist/fuzz.d.ts +1 -1
  46. package/dist/fuzz.js +1 -1
  47. package/dist/hosted/index.d.ts +3 -3
  48. package/dist/{index-_66rVpwN.d.ts → index-CKI1CXTL.d.ts} +5 -5
  49. package/dist/{index-_66rVpwN.d.ts.map → index-CKI1CXTL.d.ts.map} +1 -1
  50. package/dist/{index-CWOPCJiw.d.ts → index-D2enbqA0.d.ts} +2 -2
  51. package/dist/{index-CWOPCJiw.d.ts.map → index-D2enbqA0.d.ts.map} +1 -1
  52. package/dist/{index-BTm_P9aC.d.ts → index-DCP4I2Qx.d.ts} +10 -10
  53. package/dist/{index-BTm_P9aC.d.ts.map → index-DCP4I2Qx.d.ts.map} +1 -1
  54. package/dist/{index-CtR1xh4V.d.ts → index-DFLVtPZ9.d.ts} +3 -3
  55. package/dist/{index-CtR1xh4V.d.ts.map → index-DFLVtPZ9.d.ts.map} +1 -1
  56. package/dist/index.d.ts +23 -23
  57. package/dist/index.js +13 -13
  58. package/dist/{insight-report-Bu5Wi9tG.d.ts → insight-report-Bh_8ksel.d.ts} +4 -4
  59. package/dist/{insight-report-Bu5Wi9tG.d.ts.map → insight-report-Bh_8ksel.d.ts.map} +1 -1
  60. package/dist/{integrity-COTh3DTH.d.ts → integrity-DRXobPEs.d.ts} +2 -2
  61. package/dist/{integrity-COTh3DTH.d.ts.map → integrity-DRXobPEs.d.ts.map} +1 -1
  62. package/dist/{kind-factory-CFxA0JQX.js → kind-factory-DB7nIs35.js} +2 -2
  63. package/dist/{kind-factory-CFxA0JQX.js.map → kind-factory-DB7nIs35.js.map} +1 -1
  64. package/dist/{llm-client-bkztEfIx.js → llm-client-B3WXSH5Y.js} +2 -2
  65. package/dist/{llm-client-bkztEfIx.js.map → llm-client-B3WXSH5Y.js.map} +1 -1
  66. package/dist/meta-eval/index.d.ts +2 -2
  67. package/dist/multishot/index.d.ts +2 -2
  68. package/dist/openapi.json +1 -1
  69. package/dist/{release-report-fZarvIm-.d.ts → release-report-B_bQOHM-.d.ts} +3 -3
  70. package/dist/{release-report-fZarvIm-.d.ts.map → release-report-B_bQOHM-.d.ts.map} +1 -1
  71. package/dist/{replay-DjG4IG60.d.ts → replay-BqTgoioO.d.ts} +6 -6
  72. package/dist/{replay-DjG4IG60.d.ts.map → replay-BqTgoioO.d.ts.map} +1 -1
  73. package/dist/{replay-SA4OB7O7.js → replay-k2MsOmv5.js} +4 -4
  74. package/dist/{replay-SA4OB7O7.js.map → replay-k2MsOmv5.js.map} +1 -1
  75. package/dist/reporting.d.ts +4 -4
  76. package/dist/{researcher-BxhtGfKa.d.ts → researcher-C6lzl-rP.d.ts} +5 -5
  77. package/dist/{researcher-BxhtGfKa.d.ts.map → researcher-C6lzl-rP.d.ts.map} +1 -1
  78. package/dist/{reward-hacking-CqSLiV51.d.ts → reward-hacking-CEVVmy3h.d.ts} +2 -2
  79. package/dist/{reward-hacking-CqSLiV51.d.ts.map → reward-hacking-CEVVmy3h.d.ts.map} +1 -1
  80. package/dist/rl.d.ts +5 -5
  81. package/dist/rl.js +1 -1
  82. package/dist/rollout/index.d.ts +1 -1
  83. package/dist/{rubric-predictive-validity-DQBQj6uV.d.ts → rubric-predictive-validity-C2CthIfY.d.ts} +2 -2
  84. package/dist/{rubric-predictive-validity-DQBQj6uV.d.ts.map → rubric-predictive-validity-C2CthIfY.d.ts.map} +1 -1
  85. package/dist/{run-evidence-C4RcRQT5.d.ts → run-evidence-8Ou28QSa.d.ts} +3 -3
  86. package/dist/{run-evidence-C4RcRQT5.d.ts.map → run-evidence-8Ou28QSa.d.ts.map} +1 -1
  87. package/dist/{run-record-CztDMXVF.d.ts → run-record-Tb3TTtUn.d.ts} +2 -2
  88. package/dist/{run-record-CztDMXVF.d.ts.map → run-record-Tb3TTtUn.d.ts.map} +1 -1
  89. package/dist/{semantic-concept-judge-BuIJ9IfB.js → semantic-concept-judge-DJQtFr95.js} +3 -3
  90. package/dist/{semantic-concept-judge-BuIJ9IfB.js.map → semantic-concept-judge-DJQtFr95.js.map} +1 -1
  91. package/dist/{server-DaCpLfi0.js → server-Cu4M3NSO.js} +3 -3
  92. package/dist/{server-DaCpLfi0.js.map → server-Cu4M3NSO.js.map} +1 -1
  93. package/dist/{single-run-lock-BTTtPZ9N.js → single-run-lock-CiQThJxB.js} +22 -12
  94. package/dist/single-run-lock-CiQThJxB.js.map +1 -0
  95. package/dist/{skill-usage-B-BFS8M2.d.ts → skill-usage-CVVnoIx-.d.ts} +26 -10
  96. package/dist/skill-usage-CVVnoIx-.d.ts.map +1 -0
  97. package/dist/{skillopt-optimization-method-BbGnCC53.js → skillopt-optimization-method-CSBQ8Qma.js} +4 -4
  98. package/dist/{skillopt-optimization-method-BbGnCC53.js.map → skillopt-optimization-method-CSBQ8Qma.js.map} +1 -1
  99. package/dist/{skillopt-optimization-method-_s0Tub7Y.d.ts → skillopt-optimization-method-D1dqGzzH.d.ts} +11 -11
  100. package/dist/{skillopt-optimization-method-_s0Tub7Y.d.ts.map → skillopt-optimization-method-D1dqGzzH.d.ts.map} +1 -1
  101. package/dist/{statistics-B5d0Zd-z.d.ts → statistics-B4u_CiFd.d.ts} +2 -2
  102. package/dist/{statistics-B5d0Zd-z.d.ts.map → statistics-B4u_CiFd.d.ts.map} +1 -1
  103. package/dist/{store-otlp-DX4fGIcf.js → store-otlp-vRByAR6h.js} +2 -2
  104. package/dist/{store-otlp-DX4fGIcf.js.map → store-otlp-vRByAR6h.js.map} +1 -1
  105. package/dist/{summary-report-Cg7BifAM.d.ts → summary-report-o3eJ3gxG.d.ts} +3 -3
  106. package/dist/{summary-report-Cg7BifAM.d.ts.map → summary-report-o3eJ3gxG.d.ts.map} +1 -1
  107. package/dist/{tool-groups-CdYq22lX.d.ts → tool-groups-DVQTy9lq.d.ts} +8 -8
  108. package/dist/{tool-groups-CdYq22lX.d.ts.map → tool-groups-DVQTy9lq.d.ts.map} +1 -1
  109. package/dist/traces.d.ts +6 -6
  110. package/dist/traces.js +4 -4
  111. package/dist/{types-uPrS6mD-.d.ts → types-BjMFz88h.d.ts} +2 -2
  112. package/dist/{types-uPrS6mD-.d.ts.map → types-BjMFz88h.d.ts.map} +1 -1
  113. package/dist/{types-DoEYskCd.d.ts → types-D3jh6F98.d.ts} +4 -4
  114. package/dist/{types-DoEYskCd.d.ts.map → types-D3jh6F98.d.ts.map} +1 -1
  115. package/dist/{types-BBFNHxSK.d.ts → types-Dk7PB7vh.d.ts} +5 -5
  116. package/dist/{types-BBFNHxSK.d.ts.map → types-Dk7PB7vh.d.ts.map} +1 -1
  117. package/dist/wire/index.d.ts +3 -3
  118. package/dist/wire/index.js +1 -1
  119. package/package.json +1 -1
  120. package/dist/benchmark-command-xvi2liH7.js.map +0 -1
  121. package/dist/cost-ledger-CZ9diLxY.js.map +0 -1
  122. package/dist/dspy-rlm-engine-DTkVyDX-.js.map +0 -1
  123. package/dist/single-run-lock-BTTtPZ9N.js.map +0 -1
  124. package/dist/skill-usage-B-BFS8M2.d.ts.map +0 -1
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { o as runRolloutReleaseCli } from "./hf-dataset-XggBupCr.js";
3
- import { n as runAnalystBenchmarkCommand } from "./benchmark-command-xvi2liH7.js";
4
- import { a as runRpcBatch, o as runRpcOnce, p as handleVersion, r as startServerAsync, s as buildOpenApi } from "./server-DaCpLfi0.js";
3
+ import { n as runAnalystBenchmarkCommand } from "./benchmark-command-CK0UnXAD.js";
4
+ import { a as runRpcBatch, o as runRpcOnce, p as handleVersion, r as startServerAsync, s as buildOpenApi } from "./server-Cu4M3NSO.js";
5
5
  import { writeFileSync } from "node:fs";
6
6
  //#region src/cli-config.ts
7
7
  function resolveCliLlmConfig(env = process.env) {
@@ -1,6 +1,6 @@
1
- import { l as RunTerminalOutcome } from "./run-record-CztDMXVF.js";
2
- import { _ as GateDecision, j as MutableSurface } from "./types-BBFNHxSK.js";
3
- import { o as InsightReport } from "./insight-report-Bu5Wi9tG.js";
1
+ import { l as RunTerminalOutcome } from "./run-record-Tb3TTtUn.js";
2
+ import { _ as GateDecision, j as MutableSurface } from "./types-Dk7PB7vh.js";
3
+ import { o as InsightReport } from "./insight-report-Bh_8ksel.js";
4
4
  //#region src/hosted/types.d.ts
5
5
  declare const HOSTED_WIRE_VERSION: '2026-07-24.v1';
6
6
  type HostedWireVersion = typeof HOSTED_WIRE_VERSION;
@@ -199,4 +199,4 @@ declare function hostedClientFromEnv(overrides?: Partial<HostedTenant> & {
199
199
  }): HostedClient | undefined;
200
200
  //#endregion
201
201
  export { UnixNanoTimestamp as _, hostedTenantFromEnv as a, EvalRunGenerationSnapshot as c, HostedIngestHeaders as d, HostedWireVersion as f, TraceSpanEvent as g, IngestTracesRequest as h, hostedClientFromEnv as i, EvalRunStatus as l, IngestResponse as m, HostedTenant as n, EvalRunCellScore as o, IngestEvalRunsRequest as p, createHostedClient as r, EvalRunEvent as s, HostedClient as t, HOSTED_WIRE_VERSION as u };
202
- //# sourceMappingURL=client-BohnDFBq.d.ts.map
202
+ //# sourceMappingURL=client-BoqGxEqx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-BohnDFBq.d.ts","names":[],"sources":["../src/hosted/types.ts","../src/hosted/client.ts"],"mappings":";;;;cAgCa;KACD,2BAA2B;;UAKtB;;EAEf;;EAEA;;EAEA,yBAAyB;;EAEzB;;;KAMU;UAQK;;EAEf;;EAEA;;EAEA;;EAEA,YAAY,eAAe;;EAE3B,iBAAiB;;EAEjB;;EAEA;;UAGe;;EAEf;;;EAGA;;;EAGA,UAAU;;EAEV,OAAO;;EAEP;;EAEA;;EAEA;;;;;;;UAQe;;EAEf;;EAEA;;EAEA;;EAEA,QAAQ;;EAER,QAAQ;;EAER,WAAW;;EAEX,aAAa;;EAEb,eAAe;;EAEf;;EAEA;;EAEA;;EAEA;;;;;;EAMA,gBAAgB;;;;;;KASN;;;;;;UAOK;EACf;EACA;EACA;EACA;EACA,mBAAmB;EACnB,iBAAiB;EACjB,YAAY;EACZ,SAAS;IACP,cAAc;IACd;IACA,aAAa;;EAEf;IAAW;IAAgC;;;EAE3C;;EAEA;;EAEA;;EAEA;;UAKe;EACf,aAAa;EACb,QAAQ;;UAGO;EACf,aAAa;EACb,OAAO;;UAGQ;;EAEf;;EAEA,UAAU;IAAQ;IAAe;;;;;UC1JlB;;EAEf;;EAEA;;EAEA;;EAEA,mBAAmB;;EAEnB;;EAEA;;UAGe;EACf,cAAc,OAAO,cAAc,0BAA0B,QAAQ;EACrE,eAAe,QAAQ,gBAAgB,0BAA0B,QAAQ;EACzE,aAAa,OAAO,kBAAkB,0BAA0B,QAAQ;WAC/D,QAAQ;WACR,aAAa;;iBAyGR,mBAAmB,QAAQ,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsE1C,oBACd,YAAW,QAAQ;EAAkB,MAAM;IAC1C;iBAiBa,oBACd,YAAW,QAAQ;EAAkB,MAAM;IAC1C"}
1
+ {"version":3,"file":"client-BoqGxEqx.d.ts","names":[],"sources":["../src/hosted/types.ts","../src/hosted/client.ts"],"mappings":";;;;cAgCa;KACD,2BAA2B;;UAKtB;;EAEf;;EAEA;;EAEA,yBAAyB;;EAEzB;;;KAMU;UAQK;;EAEf;;EAEA;;EAEA;;EAEA,YAAY,eAAe;;EAE3B,iBAAiB;;EAEjB;;EAEA;;UAGe;;EAEf;;;EAGA;;;EAGA,UAAU;;EAEV,OAAO;;EAEP;;EAEA;;EAEA;;;;;;;UAQe;;EAEf;;EAEA;;EAEA;;EAEA,QAAQ;;EAER,QAAQ;;EAER,WAAW;;EAEX,aAAa;;EAEb,eAAe;;EAEf;;EAEA;;EAEA;;EAEA;;;;;;EAMA,gBAAgB;;;;;;KASN;;;;;;UAOK;EACf;EACA;EACA;EACA;EACA,mBAAmB;EACnB,iBAAiB;EACjB,YAAY;EACZ,SAAS;IACP,cAAc;IACd;IACA,aAAa;;EAEf;IAAW;IAAgC;;;EAE3C;;EAEA;;EAEA;;EAEA;;UAKe;EACf,aAAa;EACb,QAAQ;;UAGO;EACf,aAAa;EACb,OAAO;;UAGQ;;EAEf;;EAEA,UAAU;IAAQ;IAAe;;;;;UC1JlB;;EAEf;;EAEA;;EAEA;;EAEA,mBAAmB;;EAEnB;;EAEA;;UAGe;EACf,cAAc,OAAO,cAAc,0BAA0B,QAAQ;EACrE,eAAe,QAAQ,gBAAgB,0BAA0B,QAAQ;EACzE,aAAa,OAAO,kBAAkB,0BAA0B,QAAQ;WAC/D,QAAQ;WACR,aAAa;;iBAyGR,mBAAmB,QAAQ,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsE1C,oBACd,YAAW,QAAQ;EAAkB,MAAM;IAC1C;iBAiBa,oBACd,YAAW,QAAQ;EAAkB,MAAM;IAC1C"}
@@ -1,8 +1,8 @@
1
1
  import { t as DefaultVerdict } from "./verdict-Dps8_okt.js";
2
- import { c as CostLedgerHandle } from "./cost-ledger-DKgyIWRj.js";
3
- import { A as ChatClient, _t as RawProviderSink } from "./types-uPrS6mD-.js";
4
- import { c as AnalystRunInputs, i as AnalystFinding, l as AnalystRunResult, n as AnalystContext, s as AnalystRunEvent, t as Analyst, u as AnalystRunSummary } from "./types-DoEYskCd.js";
5
- import { i as ExactAnalystRunEvent, o as ExactAnalystRunResult, u as ExactExecutionComponentIdentity } from "./exact-types-MaaFcllV.js";
2
+ import { c as CostLedgerHandle } from "./cost-ledger-FuQvHxPm.js";
3
+ import { A as ChatClient, _t as RawProviderSink } from "./types-BjMFz88h.js";
4
+ import { c as AnalystRunInputs, i as AnalystFinding, l as AnalystRunResult, n as AnalystContext, s as AnalystRunEvent, t as Analyst, u as AnalystRunSummary } from "./types-D3jh6F98.js";
5
+ import { i as ExactAnalystRunEvent, o as ExactAnalystRunResult, u as ExactExecutionComponentIdentity } from "./exact-types-B0lJV3tu.js";
6
6
  //#region src/analyst/registry.d.ts
7
7
  interface AnalystHooks {
8
8
  /** Legacy runs may mutate ctx; exact runs provide a frozen observational context. */
@@ -411,4 +411,4 @@ declare function createTokenRecallChecker(opts?: {
411
411
  }): CorrectnessChecker;
412
412
  //#endregion
413
413
  export { ExactAnalystRunExecutionError as A, jsonHasKeys as C, AnalystRegistryOptions as D, AnalystRegistry as E, RegistryRunOpts as M, assertExactRegistryRunOpts as N, BudgetPolicy as O, containsAll as S, AnalystHooks as T, ValidationContext as _, ProducedProposal as a, byteLengthRange as b, SatisfiedBy as c, createLlmCorrectnessChecker as d, createTokenRecallChecker as f, ArtifactValidator as g, Artifact as h, LlmCorrectnessCheckerOpts as i, ExactRegistryRunOpts as j, ExactAnalystBudgetPolicy as k, TaskGold as l, verifyCompletion as m, CompletionVerdict as n, ProducedState as o, parseCorrectnessResponse as p, CorrectnessChecker as r, RequirementCheck as s, CompletionRequirement as t, completionVerdict as u, ValidationIssue as v, regexMatch as w, composeValidators as x, ValidationResult as y };
414
- //# sourceMappingURL=completion-verifier-IPoP4fQO.d.ts.map
414
+ //# sourceMappingURL=completion-verifier-D15NHYSk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"completion-verifier-IPoP4fQO.d.ts","names":[],"sources":["../src/analyst/registry.ts","../src/artifact-validator.ts","../src/completion-verifier.ts"],"mappings":"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"}
1
+ {"version":3,"file":"completion-verifier-D15NHYSk.d.ts","names":[],"sources":["../src/analyst/registry.ts","../src/artifact-validator.ts","../src/completion-verifier.ts"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { c as CostLedgerHandle, f as CostLedgerSummary, m as CostReceipt } from "../cost-ledger-DKgyIWRj.js";
2
- import { a as RunRecord, n as RunCostProvenance, s as RunSplitTag } from "../run-record-CztDMXVF.js";
3
- import { A as ChatClient, F as CreateChatClientOpts, V as createChatClient } from "../types-uPrS6mD-.js";
4
- import { h as ProposalFindingOrigin, i as AnalystFinding, m as ProposalFinding, v as makeProposalFinding } from "../types-DoEYskCd.js";
5
- import { n as buildDefaultAnalystRegistry, t as DefaultAnalystRegistryOptions } from "../default-registry-B8vf7Rmf.js";
6
- import { C as JudgeDimension, H as SurfaceProposer, M as OptimizerConfig, R as Scenario, S as JudgeConfig, V as SessionScript, _ as GateDecision, a as CampaignResult, b as GenerationRecord, c as CampaignTraceWriter, d as DispatchContext, f as DispatchFn, g as GateContribution, h as GateContext, i as CampaignCostMeter, j as MutableSurface, k as LabeledScenarioStore, l as CodeSurface, m as GateCheckStatus, n as CampaignArtifactWriter, p as Gate, r as CampaignCellResult, t as CampaignAggregates, v as GateResult, w as JudgeScore, y as GenerationCandidate } from "../types-BBFNHxSK.js";
7
- import { a as FailureClusterInsight, c as JudgeInsight, d as Recommendation, f as ReleaseSummary, i as FailureClassTally, l as LiftInsight, m as TokenUsageInsight, n as ExecutionErrorOutcomeCell, o as InsightReport, p as ScalarDistribution, r as ExecutionInsight, s as InterRaterInsight, t as CostProvenanceSummary, u as OutcomeCorrelationInsight } from "../insight-report-Bu5Wi9tG.js";
8
- import { A as summarizeExecution, D as ExecutionReport, E as AnalyzeRunsOptions, O as SummarizeExecutionOptions, k as analyzeRuns } from "../tool-groups-CdYq22lX.js";
9
- import { A as RunEvalOptions, B as OptimizerModelBudget, Bt as ComparisonCost, C as RunImprovementLoopOptions, Cn as ReferenceEquivalenceJudgeResult, D as RunOptimizationOptions, Dn as LlmJudgeDimension, E as PremeasuredOptimizationBaseline, En as runReferenceEquivalenceJudge, F as GepaOptimizationMethodConfig, Ft as ExternalTextOptimizerContext, G as ObjectiveSource, Gt as OptimizationMethodProvenance, H as AxisVerdict, Ht as OptimizationMethodComparison, I as GepaOptimizationRecipe, It as ExternalTextOptimizerResult, J as PromotionPolicy, K as ParetoSignificanceGateOptions, Kt as OptimizationMethodResult, L as GepaRunnerCommand, Lt as ExternalOptimizationExample, M as GepaAdaptiveEngineRun, Mt as composeGate, N as GepaEngineOptions, Nt as externalTextOptimizationMethod, On as LlmJudgeOptions, P as GepaEngineRun, Pt as ExternalTextOptimizationMethodConfig, R as gepaOptimizationMethod, Rt as ExternalTextEvaluationResponse, Sn as ReferenceEquivalenceJudgeOptions, T as runImprovementLoop, Tn as createReferenceEquivalenceJudge, U as BuildEvidenceVectorOptions, Ut as OptimizationMethodInput, V as AxisEvidence, Vt as OptimizationMethod, W as EvidenceVector, X as paretoPolicy, Xt as OptimizationTokenUsage, Y as buildEvidenceVector, Yt as OptimizationPackageSource, Z as paretoSignificanceGate, Zt as compareOptimizationMethods, bn as REFERENCE_EQUIVALENCE_JUDGE_VERSION, dt as DefaultProductionGateCheck, en as CampaignCellFailureReceipt, ft as DefaultProductionGateOptions, i as skillOptOptimizationMethod, in as RunCampaignOptions, j as runEval, kn as llmJudge, ln as fsCampaignStorage, lt as HeldOutGateOptions, mn as campaignSplitDigest, mt as defaultProductionGate, n as SkillOptRunnerCommand, on as runCampaign, ot as PowerPreflight, p as LoopProvenanceRecord, pt as DefaultProductionRewardHackingOptions, q as PromotionObjective, r as SkillOptTrainerConfig, sn as CampaignStorage, t as SkillOptOptimizationMethodConfig, un as inMemoryCampaignStorage, ut as heldOutGate, w as RunImprovementLoopResult, wn as ReferenceEquivalenceScenario, xn as ReferenceEquivalenceJudgeInput, yn as REFERENCE_EQUIVALENCE_INPUT_LIMITS, z as OpenAICompatibleOptimizerModel, zt as CompareOptimizationMethodsOptions } from "../skillopt-optimization-method-_s0Tub7Y.js";
10
- import { c as EvalRunGenerationSnapshot, g as TraceSpanEvent, n as HostedTenant, o as EvalRunCellScore, s as EvalRunEvent } from "../client-BohnDFBq.js";
1
+ import { c as CostLedgerHandle, f as CostLedgerSummary, m as CostReceipt } from "../cost-ledger-FuQvHxPm.js";
2
+ import { a as RunRecord, n as RunCostProvenance, s as RunSplitTag } from "../run-record-Tb3TTtUn.js";
3
+ import { A as ChatClient, F as CreateChatClientOpts, V as createChatClient } from "../types-BjMFz88h.js";
4
+ import { h as ProposalFindingOrigin, i as AnalystFinding, m as ProposalFinding, v as makeProposalFinding } from "../types-D3jh6F98.js";
5
+ import { n as buildDefaultAnalystRegistry, t as DefaultAnalystRegistryOptions } from "../default-registry-Ci7wAAR8.js";
6
+ import { C as JudgeDimension, H as SurfaceProposer, M as OptimizerConfig, R as Scenario, S as JudgeConfig, V as SessionScript, _ as GateDecision, a as CampaignResult, b as GenerationRecord, c as CampaignTraceWriter, d as DispatchContext, f as DispatchFn, g as GateContribution, h as GateContext, i as CampaignCostMeter, j as MutableSurface, k as LabeledScenarioStore, l as CodeSurface, m as GateCheckStatus, n as CampaignArtifactWriter, p as Gate, r as CampaignCellResult, t as CampaignAggregates, v as GateResult, w as JudgeScore, y as GenerationCandidate } from "../types-Dk7PB7vh.js";
7
+ import { a as FailureClusterInsight, c as JudgeInsight, d as Recommendation, f as ReleaseSummary, i as FailureClassTally, l as LiftInsight, m as TokenUsageInsight, n as ExecutionErrorOutcomeCell, o as InsightReport, p as ScalarDistribution, r as ExecutionInsight, s as InterRaterInsight, t as CostProvenanceSummary, u as OutcomeCorrelationInsight } from "../insight-report-Bh_8ksel.js";
8
+ import { A as summarizeExecution, D as ExecutionReport, E as AnalyzeRunsOptions, O as SummarizeExecutionOptions, k as analyzeRuns } from "../tool-groups-DVQTy9lq.js";
9
+ import { A as RunEvalOptions, B as OptimizerModelBudget, Bt as ComparisonCost, C as RunImprovementLoopOptions, Cn as ReferenceEquivalenceJudgeResult, D as RunOptimizationOptions, Dn as LlmJudgeDimension, E as PremeasuredOptimizationBaseline, En as runReferenceEquivalenceJudge, F as GepaOptimizationMethodConfig, Ft as ExternalTextOptimizerContext, G as ObjectiveSource, Gt as OptimizationMethodProvenance, H as AxisVerdict, Ht as OptimizationMethodComparison, I as GepaOptimizationRecipe, It as ExternalTextOptimizerResult, J as PromotionPolicy, K as ParetoSignificanceGateOptions, Kt as OptimizationMethodResult, L as GepaRunnerCommand, Lt as ExternalOptimizationExample, M as GepaAdaptiveEngineRun, Mt as composeGate, N as GepaEngineOptions, Nt as externalTextOptimizationMethod, On as LlmJudgeOptions, P as GepaEngineRun, Pt as ExternalTextOptimizationMethodConfig, R as gepaOptimizationMethod, Rt as ExternalTextEvaluationResponse, Sn as ReferenceEquivalenceJudgeOptions, T as runImprovementLoop, Tn as createReferenceEquivalenceJudge, U as BuildEvidenceVectorOptions, Ut as OptimizationMethodInput, V as AxisEvidence, Vt as OptimizationMethod, W as EvidenceVector, X as paretoPolicy, Xt as OptimizationTokenUsage, Y as buildEvidenceVector, Yt as OptimizationPackageSource, Z as paretoSignificanceGate, Zt as compareOptimizationMethods, bn as REFERENCE_EQUIVALENCE_JUDGE_VERSION, dt as DefaultProductionGateCheck, en as CampaignCellFailureReceipt, ft as DefaultProductionGateOptions, i as skillOptOptimizationMethod, in as RunCampaignOptions, j as runEval, kn as llmJudge, ln as fsCampaignStorage, lt as HeldOutGateOptions, mn as campaignSplitDigest, mt as defaultProductionGate, n as SkillOptRunnerCommand, on as runCampaign, ot as PowerPreflight, p as LoopProvenanceRecord, pt as DefaultProductionRewardHackingOptions, q as PromotionObjective, r as SkillOptTrainerConfig, sn as CampaignStorage, t as SkillOptOptimizationMethodConfig, un as inMemoryCampaignStorage, ut as heldOutGate, w as RunImprovementLoopResult, wn as ReferenceEquivalenceScenario, xn as ReferenceEquivalenceJudgeInput, yn as REFERENCE_EQUIVALENCE_INPUT_LIMITS, z as OpenAICompatibleOptimizerModel, zt as CompareOptimizationMethodsOptions } from "../skillopt-optimization-method-D1dqGzzH.js";
10
+ import { c as EvalRunGenerationSnapshot, g as TraceSpanEvent, n as HostedTenant, o as EvalRunCellScore, s as EvalRunEvent } from "../client-BoqGxEqx.js";
11
11
  import { i as InMemoryOutcomeStore, n as FileSystemOutcomeStore, o as OutcomeStore, r as FileSystemOutcomeStoreOptions, t as DeploymentOutcome } from "../outcome-store-BYHIuO0e.js";
12
12
  import { AgentCandidateBenchmarkCellRef, AgentCandidateBenchmarkSuiteInputs, AgentCandidateBenchmarkTask, AgentCandidateBenchmarkTaskMaterial, AgentCandidateBundle, AgentCandidateEvaluationPolicy, AgentCandidateExperiment, AgentCandidateExperimentMaterial, AgentCandidateExperimentMeasurement, AgentImprovementCost, AgentImprovementMeasuredComparison, AgentProfileImprovementExperiment, AgentProfileImprovementExperimentMaterial, AgentProfileImprovementMeasuredComparison, AgentProfileImprovementMeasurement, AgentProfileImprovementRunCell, AgentProfileImprovementRunReceipt, AgentProfileImprovementSuiteInputs, AgentProfileImprovementTask, AgentProfileImprovementTaskMaterial, CandidateExecutionEvidence, Sha256Digest } from "@tangle-network/agent-interface";
13
13
  //#region src/contract/self-improve.d.ts
@@ -1,16 +1,16 @@
1
1
  import { c as ValidationError } from "../errors-D-LKuDhb.js";
2
2
  import { i as estimateCost, o as isModelPriced } from "../metrics-C9YY1OcL.js";
3
- import { i as CostLedger } from "../cost-ledger-CZ9diLxY.js";
4
- import { C as createChatClient, t as buildDefaultAnalystRegistry } from "../default-registry-BgJJItGr.js";
3
+ import { i as CostLedger } from "../cost-ledger-DMFxsLKr.js";
4
+ import { C as createChatClient, t as buildDefaultAnalystRegistry } from "../default-registry-DCp-6hc-.js";
5
5
  import { LLM_MODEL_ATTR_KEYS, SPAN_KIND_ATTR_KEYS } from "../trace-attributes.js";
6
- import { nt as classifyOtlpSpanRole, rt as isOtlpModelCall } from "../kind-factory-CFxA0JQX.js";
6
+ import { nt as classifyOtlpSpanRole, rt as isOtlpModelCall } from "../kind-factory-DB7nIs35.js";
7
7
  import { s as makeProposalFinding } from "../usage-receipt-CgxMEBZq.js";
8
- import { i as inMemoryCampaignStorage, n as createRunCostLedger, r as fsCampaignStorage } from "../single-run-lock-BTTtPZ9N.js";
8
+ import { i as inMemoryCampaignStorage, n as createRunCostLedger, r as fsCampaignStorage } from "../single-run-lock-CiQThJxB.js";
9
9
  import { m as mapConcurrentRange } from "../ledger-core-Dxz0Rkwa.js";
10
- import { A as assertOptimizationResult, B as surfaceHash, Dt as decidePairedPromotion, J as runCampaign, O as composeGate, S as defaultProductionGate, T as heldoutSignificance, Y as resolveRunDir, _ as buildEvidenceVector, a as emitLoopProvenance, at as createReferenceEquivalenceJudge, b as powerPreflight, d as runImprovementLoop, et as campaignSplitDigest, g as gepaOptimizationMethod, ht as llmJudge, it as REFERENCE_EQUIVALENCE_JUDGE_VERSION, j as compareOptimizationMethods, k as externalTextOptimizationMethod, o as loopProvenanceArgsFromResult, ot as runReferenceEquivalenceJudge, p as runEval, rt as REFERENCE_EQUIVALENCE_INPUT_LIMITS, t as skillOptOptimizationMethod, v as paretoPolicy, x as heldOutGate, y as paretoSignificanceGate, z as surfaceContentHash } from "../skillopt-optimization-method-BbGnCC53.js";
10
+ import { A as assertOptimizationResult, B as surfaceHash, Dt as decidePairedPromotion, J as runCampaign, O as composeGate, S as defaultProductionGate, T as heldoutSignificance, Y as resolveRunDir, _ as buildEvidenceVector, a as emitLoopProvenance, at as createReferenceEquivalenceJudge, b as powerPreflight, d as runImprovementLoop, et as campaignSplitDigest, g as gepaOptimizationMethod, ht as llmJudge, it as REFERENCE_EQUIVALENCE_JUDGE_VERSION, j as compareOptimizationMethods, k as externalTextOptimizationMethod, o as loopProvenanceArgsFromResult, ot as runReferenceEquivalenceJudge, p as runEval, rt as REFERENCE_EQUIVALENCE_INPUT_LIMITS, t as skillOptOptimizationMethod, v as paretoPolicy, x as heldOutGate, y as paretoSignificanceGate, z as surfaceContentHash } from "../skillopt-optimization-method-CSBQ8Qma.js";
11
11
  import { E as pairedBootstrap } from "../statistics-ByxzSiOM.js";
12
12
  import { i as parseRunRecordSafe, r as modelHasSnapshot } from "../run-record-vRgqWmJw.js";
13
- import { a as recordAggregateMeasurements, i as readTaskFailureLabels, o as summarizeExecutionMeasurements, s as summarizeTraceErrors, t as extractUsage } from "../extract-usage-DZs601Va.js";
13
+ import { a as recordAggregateMeasurements, i as readTaskFailureLabels, o as summarizeExecutionMeasurements, s as summarizeTraceErrors, t as extractUsage } from "../extract-usage-C5vMw-0R.js";
14
14
  import { n as summarizeExecution, t as analyzeRuns } from "../analyze-runs-BScZvqMV.js";
15
15
  import { a as campaignCellExecutionEvidence, c as campaignCellToRunRecord, o as campaignCellJudgeDimensions, s as campaignCellTaskScore } from "../reward-hacking-GyN0kMd8.js";
16
16
  import { n as InMemoryOutcomeStore, t as FileSystemOutcomeStore } from "../outcome-store-ChBKlTd_.js";
package/dist/control.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { $ as ControlRunResult, J as ControlActionOutcome, Q as ControlEvalResult, X as ControlContext, Y as ControlBudget, Z as ControlDecision, at as StopDecision, ct as runAgentControlLoop, dt as subjectiveEval, et as ControlRuntimeConfig, it as ControlStopPolicies, lt as stopOnNoProgress, nt as ControlSeverity, ot as allCriticalPassed, q as ControlActionFailureMode, rt as ControlStep, st as objectiveEval, tt as ControlRuntimeError, ut as stopOnRepeatedAction } from "./feedback-trajectory-BJUWOkJM.js";
2
- import { A as ActionExecutionPolicy, M as evaluateActionPolicy, _ as ProposeReviewReport, a as ProposeReviewControlAction, c as ProposeReviewControlState, g as ProposeReviewConfig, i as scoreFromEvals, j as ActionPolicyDecision, k as runProposeReview, n as RunEvidenceMetadata, o as ProposeReviewControlConfig, r as controlRunToRunRecord, s as ProposeReviewControlResult, t as ControlRunToRunRecordOptions, u as runProposeReviewAsControlLoop } from "./run-evidence-C4RcRQT5.js";
1
+ import { $ as ControlRunResult, J as ControlActionOutcome, Q as ControlEvalResult, X as ControlContext, Y as ControlBudget, Z as ControlDecision, at as StopDecision, ct as runAgentControlLoop, dt as subjectiveEval, et as ControlRuntimeConfig, it as ControlStopPolicies, lt as stopOnNoProgress, nt as ControlSeverity, ot as allCriticalPassed, q as ControlActionFailureMode, rt as ControlStep, st as objectiveEval, tt as ControlRuntimeError, ut as stopOnRepeatedAction } from "./feedback-trajectory-BCHqzLh3.js";
2
+ import { A as ActionExecutionPolicy, M as evaluateActionPolicy, _ as ProposeReviewReport, a as ProposeReviewControlAction, c as ProposeReviewControlState, g as ProposeReviewConfig, i as scoreFromEvals, j as ActionPolicyDecision, k as runProposeReview, n as RunEvidenceMetadata, o as ProposeReviewControlConfig, r as controlRunToRunRecord, s as ProposeReviewControlResult, t as ControlRunToRunRecordOptions, u as runProposeReviewAsControlLoop } from "./run-evidence-8Ou28QSa.js";
3
3
  export { type ActionExecutionPolicy, type ActionPolicyDecision, type ControlActionFailureMode, type ControlActionOutcome, type ControlBudget, type ControlContext, type ControlDecision, type ControlEvalResult, type ControlRunResult, type ControlRunToRunRecordOptions, type ControlRuntimeConfig, type ControlRuntimeError, type ControlSeverity, type ControlStep, type ControlStopPolicies, type ProposeReviewConfig, type ProposeReviewControlAction, type ProposeReviewControlConfig, type ProposeReviewControlResult, type ProposeReviewControlState, type ProposeReviewReport, type RunEvidenceMetadata, type StopDecision, allCriticalPassed, controlRunToRunRecord, evaluateActionPolicy, objectiveEval, runAgentControlLoop, runProposeReview, runProposeReviewAsControlLoop, scoreFromEvals, stopOnNoProgress, stopOnRepeatedAction, subjectiveEval };
@@ -115,17 +115,18 @@ var CostLedger = class {
115
115
  error: new CostAccountingIncompleteError(`CostLedger: ${summary.unresolvedCalls} unresolved call(s) must be reconciled before new paid work`)
116
116
  };
117
117
  if (this.costCeilingUsd === void 0) break;
118
- if (this.hasIncompleteSettledCall()) return {
118
+ if (this.hasBudgetBreachingSettledCall()) return {
119
119
  succeeded: false,
120
120
  callId,
121
- error: new CostAccountingIncompleteError(`CostLedger: accounting is incomplete; refusing paid call '${input.actor}' during '${input.phase}'`)
121
+ error: new CostAccountingIncompleteError(`CostLedger: a settled call exceeded its enforced maximum; refusing paid call '${input.actor}' during '${input.phase}'`)
122
122
  };
123
- if (summary.totalCostUsd + maximumCostUsd > this.costCeilingUsd) return {
123
+ const committedCostUsd = this.conservativeSettledCostUsd();
124
+ if (committedCostUsd + maximumCostUsd > this.costCeilingUsd) return {
124
125
  succeeded: false,
125
126
  callId,
126
- error: new CostCeilingReachedError(this.costCeilingUsd, summary.totalCostUsd, maximumCostUsd, input.phase, input.actor)
127
+ error: new CostCeilingReachedError(this.costCeilingUsd, committedCostUsd, maximumCostUsd, input.phase, input.actor)
127
128
  };
128
- if (summary.totalCostUsd + summary.reservedCostUsd + maximumCostUsd <= this.costCeilingUsd) break;
129
+ if (committedCostUsd + summary.reservedCostUsd + maximumCostUsd <= this.costCeilingUsd) break;
129
130
  await this.waitForReservationRelease(input.signal);
130
131
  }
131
132
  pending = {
@@ -406,8 +407,21 @@ var CostLedger = class {
406
407
  }
407
408
  return priced.costUsd;
408
409
  }
409
- hasIncompleteSettledCall() {
410
- return [...this.records.values()].some((record) => record.status === "settled" && (record.costUnknown || record.usageUnknown || record.maximumCostUsd !== void 0 && record.costUsd > record.maximumCostUsd));
410
+ hasBudgetBreachingSettledCall() {
411
+ return [...this.records.values()].some((record) => record.status === "settled" && record.maximumCostUsd !== void 0 && record.costUsd > record.maximumCostUsd);
412
+ }
413
+ /**
414
+ * Total settled cost with each unknown-cost call charged its reserved
415
+ * maximum. A provider that omits a call's cost cannot make the ceiling check
416
+ * under-count: the call is bounded by what it was allowed to spend.
417
+ */
418
+ conservativeSettledCostUsd() {
419
+ let total = 0;
420
+ for (const record of this.records.values()) {
421
+ if (record.status !== "settled") continue;
422
+ total += record.costUnknown ? record.maximumCostUsd ?? record.costUsd : record.costUsd;
423
+ }
424
+ return total;
411
425
  }
412
426
  appendRecord(record) {
413
427
  const callId = record.callId;
@@ -881,4 +895,4 @@ function assertString(value, name) {
881
895
  //#endregion
882
896
  export { CostLedgerPersistenceError as a, costForTokenPricing as c, CostLedger as i, costForUsage as l, CostCallConflictError as n, CostReceiptCaptureError as o, CostCeilingReachedError as r, CostReservationExceededError as s, CostAccountingIncompleteError as t, modelPriceKey as u };
883
897
 
884
- //# sourceMappingURL=cost-ledger-CZ9diLxY.js.map
898
+ //# sourceMappingURL=cost-ledger-DMFxsLKr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-ledger-DMFxsLKr.js","names":[],"sources":["../src/cost-ledger.ts"],"sourcesContent":["import { z } from 'zod'\nimport { ValidationError } from './errors'\nimport { estimateCost, isModelPriced, resolveModelPricing } from './metrics'\n\nexport type CostChannel = 'agent' | 'judge' | 'verifier' | 'analyst' | 'driver' | (string & {})\n\n/** How a USD amount was obtained. */\nexport type CostProvenance =\n | { kind: 'observed'; usd: number }\n | { kind: 'estimated'; usd: number }\n | { kind: 'uncaptured'; usd: null }\n\nexport interface CostUsage {\n inputTokens: number\n /** Includes reasoning tokens when the provider bills them as output. */\n outputTokens: number\n /** Reasoning-token subset of outputTokens, when reported. */\n reasoningTokens?: number\n /** Prompt tokens served from a provider cache. */\n cachedTokens?: number\n /** Prompt tokens written into a provider cache. */\n cacheWriteTokens?: number\n}\n\ninterface CostCallBase {\n callId: string\n channel: CostChannel\n phase: string\n actor: string\n model: string\n maximumCostUsd?: number\n tags?: Record<string, string>\n timestamp: number\n}\n\nexport interface PendingCostCall extends CostCallBase {\n status: 'pending'\n}\n\nexport interface PendingCostCallView extends PendingCostCall {\n state: 'active' | 'late' | 'interrupted'\n}\n\nexport interface CostReceipt extends CostCallBase, CostUsage {\n status: 'settled'\n costUsd: number\n costUnknown: boolean\n usageUnknown?: boolean\n /** Rates used to estimate cost locally. Absent when cost is provider-reported or unknown. */\n pricing?: {\n inputUsdPerThousand: number\n cachedInputUsdPerThousand?: number\n cacheWriteUsdPerThousand?: number\n outputUsdPerThousand: number\n }\n /** Cost reported by the provider, not a local token-price calculation. */\n actualCostUsd?: number\n /** Known non-provider amount supplied by an external executor. */\n estimatedCostUsd?: number\n /** Why the call failed. `'paid-call-failed'` is the ledger's own value for\n * recovery settles; a reconciling caller may record its own reason. */\n error?: string\n}\n\nexport type CostLedgerRecord = PendingCostCall | CostReceipt\n\nexport interface CostReceiptInput extends CostUsage {\n model: string\n /** Caller-supplied rates for a local estimate when the provider does not report billed cost. */\n customTokenPricing?: CustomTokenPricing\n actualCostUsd?: number\n /** A known estimate from an external executor that cannot provide token pricing. */\n estimatedCostUsd?: number\n costUnknown?: boolean\n usageUnknown?: boolean\n}\n\n/** Per-million token rates for a model or endpoint not covered by package pricing. */\nexport interface CustomTokenPricing {\n /** Non-cached input tokens. */\n inputUsdPerMillion: number\n /** Cache-read tokens. Falls back to the normal input rate when omitted. */\n cachedInputUsdPerMillion?: number\n /** Cache-creation or cache-write tokens. Falls back to the normal input rate when omitted. */\n cacheWriteUsdPerMillion?: number\n outputUsdPerMillion: number\n}\n\nexport type MaximumCharge =\n | { externallyEnforcedMaximumUsd: number }\n | ({\n customTokenPricing: CustomTokenPricing\n } & Pick<CostUsage, 'inputTokens' | 'outputTokens' | 'cachedTokens' | 'cacheWriteTokens'>)\n | ({ model: string } & CostUsage)\n\nexport interface RunPaidCallInput<T> {\n callId?: string\n channel: CostChannel\n phase: string\n actor: string\n /** Used before a provider receipt exists and on failures without one. */\n model?: string\n tags?: Record<string, string>\n signal?: AbortSignal\n /** Provider-enforced dollar maximum, or maximum token usage with known pricing. Required when capped. */\n maximumCharge?: MaximumCharge\n /** `callId` can be forwarded as the provider's idempotency key. */\n execute(signal: AbortSignal, callId: string): Promise<T>\n receipt(value: T): CostReceiptInput\n receiptFromError?(error: Error): CostReceiptInput | undefined\n}\n\nexport type PaidCallResult<T> =\n | { succeeded: true; callId: string; value: T; receipt: CostReceipt }\n | { succeeded: false; callId?: string; error: Error; receipt?: CostReceipt }\n\nexport interface ChannelRollup {\n channel: CostChannel\n calls: number\n inputTokens: number\n outputTokens: number\n reasoningTokens?: number\n cachedTokens: number\n cacheWriteTokens?: number\n costUsd: number\n unpricedCalls: number\n unknownUsageCalls: number\n}\n\nexport interface CostLedgerSummary {\n totalCalls: number\n pendingCalls: number\n unresolvedCalls: number\n reservedCostUsd: number\n inputTokens: number\n outputTokens: number\n reasoningTokens?: number\n cachedTokens: number\n cacheWriteTokens?: number\n totalCostUsd: number\n costProvenance: CostProvenance\n byChannel: ChannelRollup[]\n unpricedModels: string[]\n fullyPriced: boolean\n usageComplete: boolean\n accountingComplete: boolean\n incompleteReasons: string[]\n}\n\nexport interface CostLedgerFilter {\n channel?: CostChannel\n phase?: string\n tags?: Record<string, string>\n}\n\nexport interface CostLedgerWaitOptions {\n /** Maximum time to wait for active provider calls. Default 5 seconds. */\n timeoutMs?: number\n /** Wait only for calls matching this attribution filter. */\n filter?: CostLedgerFilter\n}\n\n/** Append-only storage. `append` must atomically reject stale revisions. */\nexport interface CostLedgerPersistence {\n read(): { revision: string; events: string }\n append(expectedRevision: string, event: string): string | undefined\n}\n\nexport interface CostLedgerOptions {\n costCeilingUsd?: number\n persistence?: CostLedgerPersistence\n /** Import already-settled receipts without admitting new paid work. */\n receipts?: readonly CostReceipt[]\n}\n\nexport class CostCeilingReachedError extends ValidationError {\n constructor(\n ceilingUsd: number,\n committedUsd: number,\n requestedUsd: number,\n phase: string,\n actor: string,\n ) {\n super(\n `CostLedger: reserving ${requestedUsd} for '${actor}' during '${phase}' would exceed ceiling ${ceilingUsd} with ${committedUsd} already committed`,\n )\n }\n}\n\nexport class CostAccountingIncompleteError extends ValidationError {}\n\nexport class CostReservationExceededError extends ValidationError {\n constructor(actor: string, actualUsd: number, maximumUsd: number) {\n super(\n `CostLedger: '${actor}' charged ${actualUsd}, exceeding its enforced maximum ${maximumUsd}`,\n )\n }\n}\n\nexport class CostCallConflictError extends ValidationError {\n readonly callId?: string\n readonly receipt?: CostReceipt\n\n constructor(\n message: string,\n options: { callId?: string; receipt?: CostReceipt; cause?: unknown } = {},\n ) {\n super(message, options.cause === undefined ? undefined : { cause: options.cause })\n this.callId = options.callId\n this.receipt = options.receipt ? cloneReceipt(options.receipt) : undefined\n }\n}\n\nexport class CostLedgerPersistenceError extends ValidationError {\n readonly callId?: string\n readonly receipt?: CostReceipt\n\n constructor(cause: unknown, callId?: string, receipt?: CostReceipt) {\n super(\n `CostLedger: failed to persist${callId ? ` call '${callId}'` : ''}: ${toError(cause).message}`,\n { cause },\n )\n this.callId = callId\n this.receipt = receipt ? cloneReceipt(receipt) : undefined\n }\n}\n\nexport class CostReceiptCaptureError extends ValidationError {\n readonly callId: string\n readonly receipt?: CostReceipt\n readonly receiptError: Error\n\n constructor(callId: string, cause: unknown, receiptError: unknown, receipt?: CostReceipt) {\n super(`CostLedger: could not capture the provider receipt for call '${callId}'`, { cause })\n this.callId = callId\n this.receipt = receipt ? cloneReceipt(receipt) : undefined\n this.receiptError = toError(receiptError)\n }\n}\n\ninterface PendingCostCallEvent {\n version: 1\n record: PendingCostCall\n}\n\ninterface SettledCostCallEvent {\n version: 2\n record: CostReceipt\n}\n\ninterface CompletedTasksEvent {\n version: 1\n completedTasks: number\n}\n\ninterface CostLimitEvent {\n version: 1\n costCeilingUsd: number\n}\n\ntype CostCallEvent = PendingCostCallEvent | SettledCostCallEvent\ntype CostLedgerEvent = CostCallEvent | CompletedTasksEvent | CostLimitEvent\n\n/** Run-wide paid-call admission, durable call state, receipts, and summaries. */\nexport class CostLedger {\n private readonly records = new Map<string, CostLedgerRecord>()\n private readonly activeCallIds = new Set<string>()\n private readonly lateCallIds = new Set<string>()\n private readonly idleWaiters = new Set<() => void>()\n private completedTasks = 0\n private revision = 'memory'\n private costLimitPersisted = false\n readonly costCeilingUsd?: number\n private readonly persistence?: CostLedgerPersistence\n\n constructor(input?: number | CostLedgerOptions) {\n const options = typeof input === 'number' ? { costCeilingUsd: input } : (input ?? {})\n this.persistence = options.persistence\n if (options.costCeilingUsd !== undefined) {\n assertNonNegative(options.costCeilingUsd, 'costCeilingUsd')\n }\n\n let persistedCostCeilingUsd: number | undefined\n if (this.persistence) {\n let stored: ReturnType<CostLedgerPersistence['read']>\n try {\n stored = this.persistence.read()\n } catch (cause) {\n throw new CostLedgerPersistenceError(cause)\n }\n assertString(stored.revision, 'persistence revision')\n this.revision = stored.revision\n const restored = parseEvents(stored.events)\n for (const record of restored.records) this.records.set(record.callId, record)\n this.completedTasks = restored.completedTasks\n persistedCostCeilingUsd = restored.costCeilingUsd\n }\n\n if (\n options.costCeilingUsd !== undefined &&\n persistedCostCeilingUsd !== undefined &&\n options.costCeilingUsd !== persistedCostCeilingUsd\n ) {\n throw new ValidationError(\n `CostLedger: requested cost ceiling ${options.costCeilingUsd} does not match persisted ceiling ${persistedCostCeilingUsd}`,\n )\n }\n this.costCeilingUsd = persistedCostCeilingUsd ?? options.costCeilingUsd\n this.costLimitPersisted =\n !this.persistence ||\n this.costCeilingUsd === undefined ||\n persistedCostCeilingUsd !== undefined\n\n if (\n this.costCeilingUsd !== undefined &&\n [...this.records.values()].some(\n (record) => record.status === 'pending' && record.maximumCostUsd === undefined,\n )\n ) {\n throw new ValidationError('CostLedger: capped event log contains an unbounded pending call')\n }\n\n if (options.receipts?.length) {\n const imported = options.receipts.map((receipt, index) =>\n parseImportedReceipt(receipt, `imported receipt ${index + 1}`),\n )\n this.ensureCostLimitPersisted()\n for (const receipt of imported) this.appendRecord(receipt)\n }\n }\n\n async runPaidCall<T>(input: RunPaidCallInput<T>): Promise<PaidCallResult<T>> {\n let callId: string | undefined\n let pending: PendingCostCall | undefined\n try {\n callId = resolveCallId(input.callId)\n validateAttribution(input)\n if (input.signal?.aborted) {\n return { succeeded: false, callId, error: abortError(input.signal) }\n }\n this.ensureCostLimitPersisted(callId)\n\n const maximumCostUsd = this.resolveMaximum(input.maximumCharge)\n const existing = this.records.get(callId)\n if (existing) {\n return {\n succeeded: false,\n callId,\n error: new CostCallConflictError(\n existing.status === 'pending'\n ? `CostLedger: callId '${callId}' is unresolved and must be reconciled before retry`\n : `CostLedger: callId '${callId}' already exists`,\n { callId },\n ),\n }\n }\n\n if (!pending) {\n while (true) {\n if (this.records.has(callId)) {\n return {\n succeeded: false,\n callId,\n error: new CostCallConflictError(`CostLedger: callId '${callId}' already exists`),\n }\n }\n const summary = this.summary()\n if (summary.unresolvedCalls > 0) {\n return {\n succeeded: false,\n callId,\n error: new CostAccountingIncompleteError(\n `CostLedger: ${summary.unresolvedCalls} unresolved call(s) must be reconciled before new paid work`,\n ),\n }\n }\n if (this.costCeilingUsd === undefined) break\n if (this.hasBudgetBreachingSettledCall()) {\n return {\n succeeded: false,\n callId,\n error: new CostAccountingIncompleteError(\n `CostLedger: a settled call exceeded its enforced maximum; refusing paid call '${input.actor}' during '${input.phase}'`,\n ),\n }\n }\n // A settled call whose cost the provider left unknown is charged its\n // reserved maximum here, so the ceiling is enforced against a real\n // upper bound and one under-reported response cannot let later calls\n // silently exceed the budget — while still permitting them.\n const committedCostUsd = this.conservativeSettledCostUsd()\n if (committedCostUsd + maximumCostUsd! > this.costCeilingUsd) {\n return {\n succeeded: false,\n callId,\n error: new CostCeilingReachedError(\n this.costCeilingUsd,\n committedCostUsd,\n maximumCostUsd!,\n input.phase,\n input.actor,\n ),\n }\n }\n if (committedCostUsd + summary.reservedCostUsd + maximumCostUsd! <= this.costCeilingUsd) {\n break\n }\n await this.waitForReservationRelease(input.signal)\n }\n\n pending = {\n status: 'pending',\n callId,\n channel: input.channel,\n phase: input.phase,\n actor: input.actor,\n model: pendingModel(input),\n ...(maximumCostUsd === undefined ? {} : { maximumCostUsd }),\n ...(input.tags ? { tags: { ...input.tags } } : {}),\n timestamp: Date.now(),\n }\n this.appendRecord(pending)\n this.activeCallIds.add(callId)\n }\n } catch (error) {\n return { succeeded: false, ...(callId ? { callId } : {}), error: toError(error) }\n }\n\n try {\n return await this.execute(input, pending)\n } catch (error) {\n return { succeeded: false, callId: pending.callId, error: toError(error) }\n } finally {\n if (!this.lateCallIds.has(pending.callId)) this.releaseActiveCall(pending.callId)\n }\n }\n\n /** Wait until every call started by this ledger has produced a durable outcome. */\n async waitForIdle(options: CostLedgerWaitOptions = {}): Promise<boolean> {\n const hasActiveMatch = (): boolean =>\n [...this.activeCallIds].some((callId) => {\n const record = this.records.get(callId)\n return record !== undefined && matches(record, options.filter)\n })\n if (!hasActiveMatch()) return true\n const timeoutMs = options.timeoutMs ?? 5_000\n assertTimeout(timeoutMs, 'waitForIdle.timeoutMs')\n return new Promise<boolean>((resolve) => {\n let timer: ReturnType<typeof setTimeout> | undefined\n const finish = (settled: boolean): void => {\n this.idleWaiters.delete(onIdle)\n if (timer !== undefined) clearTimeout(timer)\n resolve(settled)\n }\n const onIdle = (): void => {\n if (!hasActiveMatch()) finish(true)\n }\n this.idleWaiters.add(onIdle)\n timer = setTimeout(() => finish(false), timeoutMs)\n onIdle()\n })\n }\n\n /** Settle a call left pending by a crashed process after reconciling with the provider. */\n reconcile(\n callId: string,\n observed: CostReceiptInput,\n options: { failed?: boolean; error?: string } = {},\n ): CostReceipt {\n const pending = [...this.records.values()].find(\n (record): record is PendingCostCall =>\n record.callId === callId && record.status === 'pending',\n )\n if (!pending) throw new CostCallConflictError(`CostLedger: no pending call '${callId}'`)\n if (this.activeCallIds.has(callId)) {\n throw new CostCallConflictError(`CostLedger: call '${callId}' is still active`)\n }\n this.ensureCostLimitPersisted(callId)\n return this.commitReceipt(\n pending,\n observed,\n options.failed === true || options.error !== undefined,\n options.error,\n )\n }\n\n list(filter?: CostLedgerFilter): CostReceipt[] {\n return [...this.records.values()]\n .filter((record): record is CostReceipt => record.status === 'settled')\n .filter((receipt) => matches(receipt, filter))\n .map(cloneReceipt)\n }\n\n /** Read pending calls without exposing mutable ledger state. */\n listPending(filter?: CostLedgerFilter): PendingCostCallView[] {\n return [...this.records.values()]\n .filter((record): record is PendingCostCall => record.status === 'pending')\n .filter((record) => matches(record, filter))\n .map((record) => ({\n ...clonePendingCall(record),\n state: this.lateCallIds.has(record.callId)\n ? 'late'\n : this.activeCallIds.has(record.callId)\n ? 'active'\n : 'interrupted',\n }))\n }\n\n summary(filter?: CostLedgerFilter): CostLedgerSummary {\n const records = [...this.records.values()].filter((record) => matches(record, filter))\n const pending = records.filter(\n (record): record is PendingCostCall => record.status === 'pending',\n )\n const receipts = records.filter((record): record is CostReceipt => record.status === 'settled')\n const byChannel = new Map<string, ChannelRollup>()\n const unpriced = new Set<string>()\n const incompleteReasons: string[] = pending.map(\n (record) => `call '${record.callId}' for '${record.actor}' is pending`,\n )\n let inputTokens = 0\n let outputTokens = 0\n let reasoningTokens = 0\n let cachedTokens = 0\n let cacheWriteTokens = 0\n let totalCostUsd = 0\n\n for (const receipt of receipts) {\n inputTokens += receipt.inputTokens\n outputTokens += receipt.outputTokens\n reasoningTokens += receipt.reasoningTokens ?? 0\n cachedTokens += receipt.cachedTokens ?? 0\n cacheWriteTokens += receipt.cacheWriteTokens ?? 0\n totalCostUsd += receipt.costUsd\n if (receipt.costUnknown) {\n unpriced.add(receipt.model)\n incompleteReasons.push(\n receipt.error ?? `cost unknown for '${receipt.actor}' using '${receipt.model}'`,\n )\n }\n if (receipt.usageUnknown) {\n incompleteReasons.push(\n `token usage unknown for '${receipt.actor}' using '${receipt.model}'`,\n )\n }\n if (receipt.maximumCostUsd !== undefined && receipt.costUsd > receipt.maximumCostUsd) {\n incompleteReasons.push(\n `'${receipt.actor}' charged ${receipt.costUsd}, exceeding its enforced maximum ${receipt.maximumCostUsd}`,\n )\n }\n const rollup = byChannel.get(receipt.channel) ?? emptyRollup(receipt.channel)\n rollup.calls += 1\n rollup.inputTokens += receipt.inputTokens\n rollup.outputTokens += receipt.outputTokens\n rollup.reasoningTokens = (rollup.reasoningTokens ?? 0) + (receipt.reasoningTokens ?? 0)\n rollup.cachedTokens += receipt.cachedTokens ?? 0\n rollup.cacheWriteTokens = (rollup.cacheWriteTokens ?? 0) + (receipt.cacheWriteTokens ?? 0)\n rollup.costUsd += receipt.costUsd\n if (receipt.costUnknown) rollup.unpricedCalls += 1\n if (receipt.usageUnknown) rollup.unknownUsageCalls += 1\n byChannel.set(receipt.channel, rollup)\n }\n\n return {\n totalCalls: receipts.length,\n pendingCalls: pending.length,\n unresolvedCalls: pending.filter(\n (record) => !this.activeCallIds.has(record.callId) || this.lateCallIds.has(record.callId),\n ).length,\n reservedCostUsd: pending.reduce((sum, record) => sum + (record.maximumCostUsd ?? 0), 0),\n inputTokens,\n outputTokens,\n reasoningTokens,\n cachedTokens,\n cacheWriteTokens,\n totalCostUsd,\n costProvenance:\n pending.length > 0 || receipts.some((receipt) => receipt.costUnknown)\n ? { kind: 'uncaptured', usd: null }\n : receipts.every((receipt) => receipt.actualCostUsd !== undefined)\n ? { kind: 'observed', usd: totalCostUsd }\n : { kind: 'estimated', usd: totalCostUsd },\n byChannel: [...byChannel.values()].sort((a, b) => a.channel.localeCompare(b.channel)),\n unpricedModels: [...unpriced].sort(),\n fullyPriced: unpriced.size === 0,\n usageComplete: pending.length === 0 && receipts.every((receipt) => !receipt.usageUnknown),\n accountingComplete: incompleteReasons.length === 0,\n incompleteReasons: [...new Set(incompleteReasons)],\n }\n }\n\n markCompleted(count = 1): void {\n if (!Number.isInteger(count) || count < 0) {\n throw new ValidationError(\n `CostLedger.markCompleted: count must be a non-negative integer, got ${count}`,\n )\n }\n if (count === 0) return\n this.ensureCostLimitPersisted()\n this.appendEvent({ version: 1, completedTasks: count })\n this.completedTasks += count\n }\n\n costPerCompletedTask(): number | null {\n return this.completedTasks === 0 ? null : this.summary().totalCostUsd / this.completedTasks\n }\n\n private async execute<T>(\n input: RunPaidCallInput<T>,\n pending: PendingCostCall,\n ): Promise<PaidCallResult<T>> {\n const signal = input.signal ?? new AbortController().signal\n if (signal.aborted) {\n return this.commitOutcome(pending, abortError(signal), {\n model: pending.model,\n inputTokens: 0,\n outputTokens: 0,\n actualCostUsd: 0,\n })\n }\n\n const operation = Promise.resolve().then(() => input.execute(signal, pending.callId))\n const settled = await settle(operation, signal)\n if (settled.kind === 'aborted') {\n this.lateCallIds.add(pending.callId)\n this.captureLateOutcome(input, pending, operation)\n return paidFailure(pending.callId, abortError(signal))\n }\n if (settled.kind === 'error') {\n let observed: CostReceiptInput | undefined\n try {\n observed = input.receiptFromError?.(settled.error)\n } catch (receiptError) {\n return this.captureFailure(pending, settled.error, receiptError)\n }\n return this.commitOutcome(pending, settled.error, observed ?? unknownReceipt(pending.model))\n }\n\n try {\n const receipt = this.commitReceipt(pending, input.receipt(settled.value))\n if (receipt.maximumCostUsd !== undefined && receipt.costUsd > receipt.maximumCostUsd) {\n return paidFailure(\n pending.callId,\n new CostReservationExceededError(pending.actor, receipt.costUsd, receipt.maximumCostUsd),\n receipt,\n )\n }\n return { succeeded: true, callId: pending.callId, value: settled.value, receipt }\n } catch (receiptError) {\n if (\n receiptError instanceof CostLedgerPersistenceError ||\n receiptError instanceof CostCallConflictError\n ) {\n return paidFailure(pending.callId, receiptError)\n }\n return this.captureFailure(pending, receiptError, receiptError)\n }\n }\n\n private captureLateOutcome<T>(\n input: RunPaidCallInput<T>,\n pending: PendingCostCall,\n operation: Promise<T>,\n ): void {\n void operation\n .then(\n (value) => {\n if (this.records.get(pending.callId)?.status !== 'pending') return\n try {\n this.commitReceipt(pending, input.receipt(value))\n } catch {\n // A failed durable settlement leaves the reservation pending and blocks new paid work.\n }\n },\n (cause) => {\n if (this.records.get(pending.callId)?.status !== 'pending') return\n const error = toError(cause)\n try {\n const observed = input.receiptFromError?.(error)\n this.commitReceipt(pending, observed ?? unknownReceipt(pending.model), true)\n } catch (receiptError) {\n if (\n receiptError instanceof CostLedgerPersistenceError ||\n receiptError instanceof CostCallConflictError\n ) {\n return\n }\n this.captureFailure(pending, error, receiptError)\n }\n },\n )\n .finally(() => {\n this.lateCallIds.delete(pending.callId)\n this.releaseActiveCall(pending.callId)\n })\n }\n\n private releaseActiveCall(callId: string): void {\n this.activeCallIds.delete(callId)\n for (const resolve of [...this.idleWaiters]) resolve()\n }\n\n private async waitForReservationRelease(signal?: AbortSignal): Promise<void> {\n if (signal?.aborted) throw abortError(signal)\n await new Promise<void>((resolve, reject) => {\n let finished = false\n const finish = (error?: Error): void => {\n if (finished) return\n finished = true\n this.idleWaiters.delete(onRelease)\n signal?.removeEventListener('abort', onAbort)\n if (error) reject(error)\n else resolve()\n }\n const onRelease = (): void => finish()\n const onAbort = (): void => finish(abortError(signal!))\n this.idleWaiters.add(onRelease)\n signal?.addEventListener('abort', onAbort, { once: true })\n if (this.activeCallIds.size === 0) onRelease()\n })\n }\n\n private commitOutcome<T>(\n pending: PendingCostCall,\n error: Error,\n observed: CostReceiptInput,\n ): PaidCallResult<T> {\n try {\n const receipt = this.commitReceipt(pending, observed, true)\n return paidFailure(pending.callId, error, receipt)\n } catch (receiptError) {\n if (\n receiptError instanceof CostLedgerPersistenceError ||\n receiptError instanceof CostCallConflictError\n ) {\n return paidFailure(pending.callId, receiptError)\n }\n return this.captureFailure(pending, error, receiptError)\n }\n }\n\n private captureFailure<T>(\n pending: PendingCostCall,\n cause: unknown,\n receiptError: unknown,\n ): PaidCallResult<T> {\n try {\n const receipt = this.commitReceipt(pending, unknownReceipt(pending.model), true)\n return paidFailure(\n pending.callId,\n new CostReceiptCaptureError(pending.callId, cause, receiptError, receipt),\n receipt,\n )\n } catch (error) {\n const typed = error instanceof Error ? error : toError(error)\n return paidFailure(pending.callId, typed)\n }\n }\n\n private commitReceipt(\n pending: PendingCostCall,\n observed: CostReceiptInput,\n failed = false,\n error?: string,\n ): CostReceipt {\n const receipt = buildReceipt(pending, observed, failed, error)\n if (this.records.get(pending.callId)?.status !== 'pending') {\n throw new CostCallConflictError(`CostLedger: call '${pending.callId}' is not pending`)\n }\n this.appendRecord(receipt)\n return cloneReceipt(receipt)\n }\n\n private resolveMaximum(maximum: MaximumCharge | undefined): number | undefined {\n if (!maximum) {\n if (this.costCeilingUsd !== undefined) {\n throw new CostAccountingIncompleteError(\n 'CostLedger: capped paid calls require a hard maximumCharge before execution',\n )\n }\n return undefined\n }\n if ('externallyEnforcedMaximumUsd' in maximum) {\n assertNonNegative(\n maximum.externallyEnforcedMaximumUsd,\n 'maximumCharge.externallyEnforcedMaximumUsd',\n )\n return maximum.externallyEnforcedMaximumUsd\n }\n if ('customTokenPricing' in maximum) {\n return costForTokenPricing(maximum.customTokenPricing, maximum)\n }\n const priced = costForUsage(maximum.model, maximum)\n if (priced.costUnknown) {\n if (this.costCeilingUsd !== undefined) {\n throw new CostAccountingIncompleteError(\n `CostLedger: cannot reserve unpriced model '${maximum.model}' in a capped run`,\n )\n }\n return undefined\n }\n return priced.costUsd\n }\n\n private hasBudgetBreachingSettledCall(): boolean {\n return [...this.records.values()].some(\n (record) =>\n record.status === 'settled' &&\n record.maximumCostUsd !== undefined &&\n record.costUsd > record.maximumCostUsd,\n )\n }\n\n /**\n * Total settled cost with each unknown-cost call charged its reserved\n * maximum. A provider that omits a call's cost cannot make the ceiling check\n * under-count: the call is bounded by what it was allowed to spend.\n */\n private conservativeSettledCostUsd(): number {\n let total = 0\n for (const record of this.records.values()) {\n if (record.status !== 'settled') continue\n total += record.costUnknown ? (record.maximumCostUsd ?? record.costUsd) : record.costUsd\n }\n return total\n }\n\n private appendRecord(record: CostLedgerRecord): void {\n const callId = record.callId\n const receipt = record.status === 'settled' ? record : undefined\n validateTransition(this.records, record)\n const event: CostCallEvent =\n record.status === 'settled'\n ? { version: 2, record: cloneReceipt(record) }\n : { version: 1, record: clonePendingCall(record) }\n this.appendEvent(event, callId, receipt)\n this.records.set(callId, cloneRecord(record))\n }\n\n private ensureCostLimitPersisted(callId?: string): void {\n if (this.costLimitPersisted || this.costCeilingUsd === undefined) return\n this.appendEvent({ version: 1, costCeilingUsd: this.costCeilingUsd }, callId)\n this.costLimitPersisted = true\n }\n\n private appendEvent(event: CostLedgerEvent, callId?: string, receipt?: CostReceipt): void {\n try {\n if (this.persistence) {\n const nextRevision = this.persistence.append(this.revision, `${JSON.stringify(event)}\\n`)\n if (nextRevision === undefined) {\n throw new CostCallConflictError(\n `CostLedger: persisted revision changed while writing call '${callId}'`,\n { callId, receipt },\n )\n }\n assertString(nextRevision, 'persistence revision')\n this.revision = nextRevision\n }\n } catch (cause) {\n if (cause instanceof CostCallConflictError) throw cause\n throw new CostLedgerPersistenceError(cause, callId, receipt)\n }\n }\n}\n\n/** Public callback surface for a shared cost ledger.\n *\n * Declaration bundles may expose this type through multiple package subpaths.\n * Keeping callback contracts structural lets those subpaths compose while the\n * concrete {@link CostLedger} retains its private durable state.\n */\nexport type CostLedgerHandle = Pick<\n CostLedger,\n Exclude<keyof CostLedger, 'listPending' | 'waitForIdle'>\n> &\n Partial<Pick<CostLedger, 'listPending' | 'waitForIdle'>>\n\n/** Return the canonical pricing-table key, or null when the model is unpriced. */\nexport function modelPriceKey(model: string): string | null {\n return isModelPriced(model) ? model : null\n}\n\nexport interface CostResult {\n costUsd: number\n costUnknown: boolean\n}\n\nexport function costForUsage(model: string, usage: CostUsage): CostResult {\n assertUsage(usage)\n if (!resolveModelPricing(model)) return { costUsd: 0, costUnknown: true }\n return {\n costUsd: estimateCost(\n usage.inputTokens + (usage.cachedTokens ?? 0) + (usage.cacheWriteTokens ?? 0),\n usage.outputTokens,\n model,\n ),\n costUnknown: false,\n }\n}\n\n/** Price token counts with caller-supplied per-million rates. */\nexport function costForTokenPricing(\n pricing: CustomTokenPricing,\n usage: Pick<CostUsage, 'inputTokens' | 'outputTokens' | 'cachedTokens' | 'cacheWriteTokens'>,\n): number {\n assertTokenCount(usage.inputTokens, 'usage.inputTokens')\n assertTokenCount(usage.outputTokens, 'usage.outputTokens')\n if (usage.cachedTokens !== undefined) {\n assertTokenCount(usage.cachedTokens, 'usage.cachedTokens')\n }\n if (usage.cacheWriteTokens !== undefined) {\n assertTokenCount(usage.cacheWriteTokens, 'usage.cacheWriteTokens')\n }\n assertNonNegative(pricing.inputUsdPerMillion, 'pricing.inputUsdPerMillion')\n if (pricing.cachedInputUsdPerMillion !== undefined) {\n assertNonNegative(pricing.cachedInputUsdPerMillion, 'pricing.cachedInputUsdPerMillion')\n }\n if (pricing.cacheWriteUsdPerMillion !== undefined) {\n assertNonNegative(pricing.cacheWriteUsdPerMillion, 'pricing.cacheWriteUsdPerMillion')\n }\n assertNonNegative(pricing.outputUsdPerMillion, 'pricing.outputUsdPerMillion')\n const cachedInputRate = pricing.cachedInputUsdPerMillion ?? pricing.inputUsdPerMillion\n const cacheWriteRate = pricing.cacheWriteUsdPerMillion ?? pricing.inputUsdPerMillion\n return (\n (usage.inputTokens / 1_000_000) * pricing.inputUsdPerMillion +\n ((usage.cachedTokens ?? 0) / 1_000_000) * cachedInputRate +\n ((usage.cacheWriteTokens ?? 0) / 1_000_000) * cacheWriteRate +\n (usage.outputTokens / 1_000_000) * pricing.outputUsdPerMillion\n )\n}\n\ntype Settled<T> =\n | { kind: 'value'; value: T }\n | { kind: 'error'; error: Error }\n | { kind: 'aborted' }\n\nasync function settle<T>(promise: Promise<T>, signal: AbortSignal): Promise<Settled<T>> {\n return await new Promise((resolve) => {\n let done = false\n const finish = (value: Settled<T>): void => {\n if (done) return\n done = true\n signal.removeEventListener('abort', onAbort)\n resolve(value)\n }\n const onAbort = () => finish({ kind: 'aborted' })\n signal.addEventListener('abort', onAbort, { once: true })\n if (signal.aborted) onAbort()\n promise.then(\n (value) => finish({ kind: 'value', value }),\n (error) => finish({ kind: 'error', error: toError(error) }),\n )\n })\n}\n\nfunction buildReceipt(\n pending: PendingCostCall,\n observed: CostReceiptInput,\n failed = false,\n error?: string,\n): CostReceipt {\n assertUsage(observed)\n assertString(observed.model, 'receipt.model')\n const suppliedAmounts = [\n observed.actualCostUsd,\n observed.estimatedCostUsd,\n observed.customTokenPricing,\n ].filter((value) => value !== undefined)\n if (suppliedAmounts.length > 1) {\n throw new ValidationError(\n 'CostLedger: a receipt can have only one of actualCostUsd, estimatedCostUsd, or customTokenPricing',\n )\n }\n const customPricingSnapshot =\n observed.customTokenPricing === undefined\n ? undefined\n : pricingSnapshot(observed.customTokenPricing)\n const estimated = customPricingSnapshot\n ? {\n costUsd: costFromPricing(observed, customPricingSnapshot),\n costUnknown: false,\n }\n : costForUsage(observed.model, observed)\n const hasActual = observed.actualCostUsd !== undefined\n const hasExternalEstimate = observed.estimatedCostUsd !== undefined\n if (hasActual && observed.costUnknown === true) {\n throw new ValidationError(\n 'CostLedger: a receipt cannot have both actualCostUsd and costUnknown=true',\n )\n }\n if (hasActual) assertNonNegative(observed.actualCostUsd!, 'actualCostUsd')\n if (hasExternalEstimate) assertNonNegative(observed.estimatedCostUsd!, 'estimatedCostUsd')\n if (hasExternalEstimate && observed.costUnknown === true) {\n throw new ValidationError(\n 'CostLedger: a receipt cannot have both estimatedCostUsd and costUnknown=true',\n )\n }\n const usageUnknown = observed.usageUnknown === true\n const costUnknown =\n observed.costUnknown === true ||\n (!hasActual && !hasExternalEstimate && (usageUnknown || estimated.costUnknown))\n const resolvedModelPricing =\n !customPricingSnapshot && !hasActual && !hasExternalEstimate && !costUnknown\n ? resolveModelPricing(observed.model)\n : null\n const receiptPricing =\n !hasActual && !hasExternalEstimate && !costUnknown\n ? (customPricingSnapshot ??\n (resolvedModelPricing\n ? {\n inputUsdPerThousand: resolvedModelPricing.input,\n outputUsdPerThousand: resolvedModelPricing.output,\n }\n : undefined))\n : undefined\n return parseReceipt(\n {\n status: 'settled',\n callId: pending.callId,\n channel: pending.channel,\n phase: pending.phase,\n actor: pending.actor,\n model: observed.model,\n inputTokens: observed.inputTokens,\n outputTokens: observed.outputTokens,\n ...(observed.reasoningTokens === undefined\n ? {}\n : { reasoningTokens: observed.reasoningTokens }),\n ...(observed.cachedTokens === undefined ? {} : { cachedTokens: observed.cachedTokens }),\n ...(observed.cacheWriteTokens === undefined\n ? {}\n : { cacheWriteTokens: observed.cacheWriteTokens }),\n costUsd: costUnknown\n ? 0\n : hasActual\n ? observed.actualCostUsd!\n : hasExternalEstimate\n ? observed.estimatedCostUsd!\n : estimated.costUsd,\n costUnknown,\n usageUnknown,\n ...(receiptPricing ? { pricing: receiptPricing } : {}),\n ...(hasActual ? { actualCostUsd: observed.actualCostUsd } : {}),\n ...(hasExternalEstimate ? { estimatedCostUsd: observed.estimatedCostUsd } : {}),\n ...(pending.maximumCostUsd === undefined ? {} : { maximumCostUsd: pending.maximumCostUsd }),\n ...(failed ? { error: error ?? 'paid-call-failed' } : {}),\n ...(pending.tags ? { tags: { ...pending.tags } } : {}),\n timestamp: pending.timestamp,\n },\n 'provider receipt',\n )\n}\n\nconst NonEmptyString = z.string().refine((value) => value.trim().length > 0, 'must be non-empty')\nconst TokenCount = z.number().int().nonnegative().finite()\nconst NonNegative = z.number().nonnegative().finite()\nconst Tags = z.record(NonEmptyString, z.string())\nconst CostPricingSchema = z.strictObject({\n inputUsdPerThousand: NonNegative,\n cachedInputUsdPerThousand: NonNegative.optional(),\n cacheWriteUsdPerThousand: NonNegative.optional(),\n outputUsdPerThousand: NonNegative,\n})\nconst CostCallBaseShape = {\n callId: NonEmptyString,\n channel: NonEmptyString,\n phase: NonEmptyString,\n actor: NonEmptyString,\n model: NonEmptyString,\n maximumCostUsd: NonNegative.optional(),\n tags: Tags.optional(),\n timestamp: NonNegative,\n}\nconst PendingCostCallSchema = z.strictObject({\n status: z.literal('pending'),\n ...CostCallBaseShape,\n})\nconst CostReceiptBaseShape = {\n status: z.literal('settled'),\n ...CostCallBaseShape,\n inputTokens: TokenCount,\n outputTokens: TokenCount,\n cachedTokens: TokenCount.optional(),\n costUsd: NonNegative,\n costUnknown: z.boolean(),\n usageUnknown: z.boolean().default(false),\n pricing: CostPricingSchema.optional(),\n actualCostUsd: NonNegative.optional(),\n estimatedCostUsd: NonNegative.optional(),\n error: NonEmptyString.optional(),\n}\nconst CostReceiptSchema = z\n .strictObject({\n ...CostReceiptBaseShape,\n reasoningTokens: TokenCount.optional(),\n cacheWriteTokens: TokenCount.optional(),\n })\n .superRefine((receipt, ctx) => validateCostReceipt(receipt, ctx))\n\nfunction validateCostReceipt(\n receipt: CostUsage & {\n costUsd: number\n costUnknown: boolean\n usageUnknown: boolean\n pricing?: NonNullable<CostReceipt['pricing']>\n actualCostUsd?: number\n estimatedCostUsd?: number\n },\n ctx: z.RefinementCtx,\n): void {\n if (receipt.reasoningTokens !== undefined && receipt.reasoningTokens > receipt.outputTokens) {\n ctx.addIssue({ code: 'custom', message: 'reasoningTokens must not exceed outputTokens' })\n }\n\n if (receipt.actualCostUsd !== undefined && receipt.estimatedCostUsd !== undefined) {\n ctx.addIssue({\n code: 'custom',\n message: 'actual and external estimated costs cannot both be present',\n })\n }\n\n if (receipt.actualCostUsd !== undefined) {\n if (receipt.costUnknown || receipt.costUsd !== receipt.actualCostUsd) {\n ctx.addIssue({ code: 'custom', message: 'actual cost must be known and equal costUsd' })\n }\n if (receipt.pricing !== undefined) {\n ctx.addIssue({ code: 'custom', message: 'actual cost must not include estimated pricing' })\n }\n return\n }\n\n if (receipt.estimatedCostUsd !== undefined) {\n if (receipt.costUnknown || receipt.costUsd !== receipt.estimatedCostUsd) {\n ctx.addIssue({ code: 'custom', message: 'external estimate must be known and equal costUsd' })\n }\n if (receipt.pricing !== undefined) {\n ctx.addIssue({ code: 'custom', message: 'external estimate must not include token pricing' })\n }\n return\n }\n\n if (receipt.costUnknown) {\n if (receipt.costUsd !== 0) {\n ctx.addIssue({ code: 'custom', message: 'unknown cost must have costUsd 0' })\n }\n if (receipt.pricing !== undefined) {\n ctx.addIssue({ code: 'custom', message: 'unknown cost must not include estimated pricing' })\n }\n return\n }\n\n if (receipt.usageUnknown) {\n ctx.addIssue({ code: 'custom', message: 'known estimated cost requires known usage' })\n }\n if (!receipt.pricing) {\n ctx.addIssue({ code: 'custom', message: 'known estimated cost requires a pricing snapshot' })\n return\n }\n\n const expected = costFromPricing(receipt, receipt.pricing)\n if (!costAmountsMatch(receipt.costUsd, expected)) {\n ctx.addIssue({\n code: 'custom',\n message: `estimated cost ${receipt.costUsd} does not match pricing snapshot ${expected}`,\n })\n }\n}\n\nfunction costAmountsMatch(left: number, right: number): boolean {\n const scale = Math.max(1, Math.abs(left), Math.abs(right))\n return Math.abs(left - right) <= Number.EPSILON * scale * 8\n}\n\nconst CostLedgerEventSchema = z.union([\n z.strictObject({\n version: z.literal(1),\n record: PendingCostCallSchema,\n }),\n z.strictObject({\n version: z.literal(2),\n record: CostReceiptSchema,\n }),\n z.strictObject({\n version: z.literal(1),\n completedTasks: TokenCount,\n }),\n z.strictObject({\n version: z.literal(1),\n costCeilingUsd: NonNegative,\n }),\n])\n\nfunction parseEvents(serialized: string): {\n records: CostLedgerRecord[]\n completedTasks: number\n costCeilingUsd?: number\n} {\n const records = new Map<string, CostLedgerRecord>()\n let completedTasks = 0\n let costCeilingUsd: number | undefined\n let lineNumber = 0\n try {\n for (const line of completeJournalPrefix(serialized).split('\\n')) {\n if (!line.trim()) continue\n lineNumber += 1\n const event = CostLedgerEventSchema.parse(JSON.parse(line)) as CostLedgerEvent\n if ('record' in event) {\n const record = event.record\n validateTransition(records, record)\n records.set(record.callId, cloneRecord(record))\n } else if ('completedTasks' in event) {\n completedTasks += event.completedTasks\n if (!Number.isSafeInteger(completedTasks)) {\n throw new ValidationError('CostLedger: completed task count exceeds safe integer range')\n }\n } else {\n if (costCeilingUsd !== undefined) {\n throw new ValidationError('CostLedger: duplicate persisted cost ceiling')\n }\n costCeilingUsd = event.costCeilingUsd\n }\n }\n return {\n records: [...records.values()],\n completedTasks,\n ...(costCeilingUsd === undefined ? {} : { costCeilingUsd }),\n }\n } catch (cause) {\n throw new ValidationError(\n `CostLedger: invalid persisted event ${lineNumber || 1}: ${validationMessage(cause)}`,\n { cause },\n )\n }\n}\n\nfunction completeJournalPrefix(serialized: string): string {\n if (!serialized || serialized.endsWith('\\n')) return serialized\n const finalNewline = serialized.lastIndexOf('\\n')\n const tail = serialized.slice(finalNewline + 1)\n try {\n JSON.parse(tail)\n } catch {\n return finalNewline < 0 ? '' : serialized.slice(0, finalNewline + 1)\n }\n throw new ValidationError(\n 'CostLedger: complete final persisted event is missing its newline terminator',\n )\n}\n\nfunction validateTransition(\n records: ReadonlyMap<string, CostLedgerRecord>,\n record: CostLedgerRecord,\n): void {\n const current = records.get(record.callId)\n if (!current) return\n if (record.status === 'pending' || current.status === 'settled') {\n throw new CostCallConflictError(`CostLedger: duplicate callId '${record.callId}'`)\n }\n if (!sameAttribution(current, record)) {\n throw new ValidationError(`CostLedger: receipt attribution changed for call '${record.callId}'`)\n }\n}\n\nfunction sameAttribution(before: CostCallBase, after: CostCallBase): boolean {\n return (\n before.channel === after.channel &&\n before.phase === after.phase &&\n before.actor === after.actor &&\n before.maximumCostUsd === after.maximumCostUsd &&\n before.timestamp === after.timestamp &&\n sameTags(before.tags, after.tags)\n )\n}\n\nfunction sameTags(\n left: Readonly<Record<string, string>> | undefined,\n right: Readonly<Record<string, string>> | undefined,\n): boolean {\n const leftEntries = Object.entries(left ?? {}).sort(([a], [b]) => a.localeCompare(b))\n const rightEntries = Object.entries(right ?? {}).sort(([a], [b]) => a.localeCompare(b))\n return JSON.stringify(leftEntries) === JSON.stringify(rightEntries)\n}\n\nfunction parseReceipt(value: unknown, path: string): CostReceipt {\n try {\n return CostReceiptSchema.parse(value) as CostReceipt\n } catch (cause) {\n throw new ValidationError(`CostLedger: invalid ${path}: ${validationMessage(cause)}`, { cause })\n }\n}\n\nfunction parseImportedReceipt(value: unknown, path: string): CostReceipt {\n if (typeof value !== 'object' || value === null) return parseReceipt(value, path)\n const candidate = { ...value } as Record<string, unknown>\n if (\n candidate.status === 'settled' &&\n candidate.actualCostUsd === undefined &&\n candidate.estimatedCostUsd === undefined &&\n candidate.costUnknown === false &&\n candidate.pricing === undefined &&\n typeof candidate.model === 'string'\n ) {\n const pricing = resolveModelPricing(candidate.model)\n if (pricing) {\n candidate.pricing = {\n inputUsdPerThousand: pricing.input,\n outputUsdPerThousand: pricing.output,\n }\n }\n }\n return parseReceipt(candidate, path)\n}\n\nfunction validateAttribution(\n input: Pick<RunPaidCallInput<unknown>, 'channel' | 'phase' | 'actor' | 'model' | 'tags'>,\n): void {\n assertString(input.channel, 'channel')\n assertString(input.phase, 'phase')\n assertString(input.actor, 'actor')\n if (input.model !== undefined) assertString(input.model, 'model')\n if (input.tags !== undefined) {\n const parsed = Tags.safeParse(input.tags)\n if (!parsed.success)\n throw new ValidationError(`CostLedger: invalid tags: ${parsed.error.message}`)\n }\n}\n\nfunction matches(record: CostCallBase, filter: CostLedgerFilter | undefined): boolean {\n if (!filter) return true\n if (filter.channel !== undefined && record.channel !== filter.channel) return false\n if (filter.phase !== undefined && record.phase !== filter.phase) return false\n return Object.entries(filter.tags ?? {}).every(([key, value]) => record.tags?.[key] === value)\n}\n\nfunction cloneRecord(record: CostLedgerRecord): CostLedgerRecord {\n if (record.status === 'settled') return cloneReceipt(record)\n return clonePendingCall(record)\n}\n\nfunction clonePendingCall(record: PendingCostCall): PendingCostCall {\n const { tags, ...rest } = record\n return { ...rest, ...(tags ? { tags: { ...tags } } : {}) }\n}\n\nfunction cloneReceipt(receipt: CostReceipt): CostReceipt {\n const { pricing, tags, ...rest } = receipt\n return {\n ...rest,\n ...(tags ? { tags: { ...tags } } : {}),\n ...(pricing ? { pricing: { ...pricing } } : {}),\n }\n}\n\nfunction costFromPricing(usage: CostUsage, pricing: NonNullable<CostReceipt['pricing']>): number {\n const cachedInputRate = pricing.cachedInputUsdPerThousand ?? pricing.inputUsdPerThousand\n const cacheWriteRate = pricing.cacheWriteUsdPerThousand ?? pricing.inputUsdPerThousand\n return (\n (usage.inputTokens / 1000) * pricing.inputUsdPerThousand +\n ((usage.cachedTokens ?? 0) / 1000) * cachedInputRate +\n ((usage.cacheWriteTokens ?? 0) / 1000) * cacheWriteRate +\n (usage.outputTokens / 1000) * pricing.outputUsdPerThousand\n )\n}\n\nfunction pricingSnapshot(pricing: CustomTokenPricing): NonNullable<CostReceipt['pricing']> {\n costForTokenPricing(pricing, { inputTokens: 0, outputTokens: 0 })\n return {\n inputUsdPerThousand: pricing.inputUsdPerMillion / 1000,\n ...(pricing.cachedInputUsdPerMillion === undefined\n ? {}\n : { cachedInputUsdPerThousand: pricing.cachedInputUsdPerMillion / 1000 }),\n ...(pricing.cacheWriteUsdPerMillion === undefined\n ? {}\n : { cacheWriteUsdPerThousand: pricing.cacheWriteUsdPerMillion / 1000 }),\n outputUsdPerThousand: pricing.outputUsdPerMillion / 1000,\n }\n}\n\nfunction emptyRollup(channel: CostChannel): ChannelRollup {\n return {\n channel,\n calls: 0,\n inputTokens: 0,\n outputTokens: 0,\n reasoningTokens: 0,\n cachedTokens: 0,\n cacheWriteTokens: 0,\n costUsd: 0,\n unpricedCalls: 0,\n unknownUsageCalls: 0,\n }\n}\n\nfunction pendingModel(input: RunPaidCallInput<unknown>): string {\n if (input.model) return input.model\n if (input.maximumCharge && 'model' in input.maximumCharge) return input.maximumCharge.model\n return 'unknown'\n}\n\nfunction unknownReceipt(model: string): CostReceiptInput {\n return { model, inputTokens: 0, outputTokens: 0, costUnknown: true, usageUnknown: true }\n}\n\nfunction resolveCallId(input: string | undefined): string {\n if (input !== undefined) {\n assertString(input, 'callId')\n return input\n }\n if (typeof globalThis.crypto?.randomUUID !== 'function') {\n throw new ValidationError('CostLedger: crypto.randomUUID is required when callId is omitted')\n }\n return globalThis.crypto.randomUUID()\n}\n\nfunction abortError(signal: AbortSignal): Error {\n const reason = (signal as { reason?: unknown }).reason\n if (reason instanceof Error) return reason\n const error = new Error('CostLedger: paid call aborted')\n error.name = 'AbortError'\n return error\n}\n\nfunction toError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value))\n}\n\nfunction paidFailure<T>(callId: string, error: Error, receipt?: CostReceipt): PaidCallResult<T> {\n return {\n succeeded: false,\n callId,\n error,\n ...(receipt ? { receipt: cloneReceipt(receipt) } : {}),\n }\n}\n\nfunction validationMessage(cause: unknown): string {\n return cause instanceof z.ZodError ? z.prettifyError(cause) : toError(cause).message\n}\n\nfunction assertUsage(usage: CostUsage): void {\n assertTokenCount(usage.inputTokens, 'inputTokens')\n assertTokenCount(usage.outputTokens, 'outputTokens')\n if (usage.reasoningTokens !== undefined) {\n assertTokenCount(usage.reasoningTokens, 'reasoningTokens')\n if (usage.reasoningTokens > usage.outputTokens) {\n throw new ValidationError('CostLedger: reasoningTokens must not exceed outputTokens')\n }\n }\n if (usage.cachedTokens !== undefined) assertTokenCount(usage.cachedTokens, 'cachedTokens')\n if (usage.cacheWriteTokens !== undefined) {\n assertTokenCount(usage.cacheWriteTokens, 'cacheWriteTokens')\n }\n}\n\nfunction assertTokenCount(value: unknown, name: string): asserts value is number {\n if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {\n throw new ValidationError(\n `CostLedger: ${name} must be a non-negative integer, got ${String(value)}`,\n )\n }\n}\n\nfunction assertNonNegative(value: unknown, name: string): asserts value is number {\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n throw new ValidationError(\n `CostLedger: ${name} must be a non-negative finite number, got ${String(value)}`,\n )\n }\n}\n\nfunction assertTimeout(value: unknown, name: string): asserts value is number {\n if (\n typeof value !== 'number' ||\n !Number.isSafeInteger(value) ||\n value < 0 ||\n value > 2_147_483_647\n ) {\n throw new ValidationError(\n `CostLedger: ${name} must be a non-negative safe integer no greater than 2147483647, got ${String(value)}`,\n )\n }\n}\n\nfunction assertString(value: unknown, name: string): asserts value is string {\n if (typeof value !== 'string' || value.trim().length === 0) {\n throw new ValidationError(`CostLedger: ${name} must be a non-empty string`)\n }\n}\n"],"mappings":"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"}
@@ -230,7 +230,13 @@ declare class CostLedger {
230
230
  private captureFailure;
231
231
  private commitReceipt;
232
232
  private resolveMaximum;
233
- private hasIncompleteSettledCall;
233
+ private hasBudgetBreachingSettledCall;
234
+ /**
235
+ * Total settled cost with each unknown-cost call charged its reserved
236
+ * maximum. A provider that omits a call's cost cannot make the ceiling check
237
+ * under-count: the call is bounded by what it was allowed to spend.
238
+ */
239
+ private conservativeSettledCostUsd;
234
240
  private appendRecord;
235
241
  private ensureCostLimitPersisted;
236
242
  private appendEvent;
@@ -253,4 +259,4 @@ declare function costForUsage(model: string, usage: CostUsage): CostResult;
253
259
  declare function costForTokenPricing(pricing: CustomTokenPricing, usage: Pick<CostUsage, 'inputTokens' | 'outputTokens' | 'cachedTokens' | 'cacheWriteTokens'>): number;
254
260
  //#endregion
255
261
  export { PendingCostCall as C, costForUsage as D, costForTokenPricing as E, modelPriceKey as O, PaidCallResult as S, RunPaidCallInput as T, CostReservationExceededError as _, CostChannel as a, CustomTokenPricing as b, CostLedgerHandle as c, CostLedgerPersistenceError as d, CostLedgerSummary as f, CostReceiptInput as g, CostReceiptCaptureError as h, CostCeilingReachedError as i, CostLedgerOptions as l, CostReceipt as m, CostAccountingIncompleteError as n, CostLedger as o, CostProvenance as p, CostCallConflictError as r, CostLedgerFilter as s, ChannelRollup as t, CostLedgerPersistence as u, CostResult as v, PendingCostCallView as w, MaximumCharge as x, CostUsage as y };
256
- //# sourceMappingURL=cost-ledger-DKgyIWRj.d.ts.map
262
+ //# sourceMappingURL=cost-ledger-FuQvHxPm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cost-ledger-DKgyIWRj.d.ts","names":[],"sources":["../src/cost-ledger.ts"],"mappings":";;KAIY;;KAGA;EACN;EAAkB;;EAClB;EAAmB;;EACnB;EAAoB;;UAET;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;UAGQ;EACR;EACA,SAAS;EACT;EACA;EACA;EACA;EACA,OAAO;EACP;;UAGe,wBAAwB;EACvC;;UAGe,4BAA4B;EAC3C;;UAGe,oBAAoB,cAAc;EACjD;EACA;EACA;EACA;;EAEA;IACE;IACA;IACA;IACA;;;EAGF;;EAEA;;;EAGA;;UAKe,yBAAyB;EACxC;;EAEA,qBAAqB;EACrB;;EAEA;EACA;EACA;;;UAIe;;EAEf;;EAEA;;EAEA;EACA;;KAGU;EACN;;EAEA,oBAAoB;IAClB,KAAK;EACN;IAAkB;UAER,iBAAiB;EAChC;EACA,SAAS;EACT;EACA;;EAEA;EACA,OAAO;EACP,SAAS;;EAET,gBAAgB;;EAEhB,QAAQ,QAAQ,aAAa,iBAAiB,QAAQ;EACtD,QAAQ,OAAO,IAAI;EACnB,kBAAkB,OAAO,QAAQ;;KAGvB,eAAe;EACrB;EAAiB;EAAgB,OAAO;EAAG,SAAS;;EACpD;EAAkB;EAAiB,OAAO;EAAO,UAAU;;UAEhD;EACf,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB;EAChB,WAAW;EACX;EACA;EACA;EACA;EACA;;UAGe;EACf,UAAU;EACV;EACA,OAAO;;UAGQ;;EAEf;;EAEA,SAAS;;;UAIM;EACf;IAAU;IAAkB;;EAC5B,OAAO,0BAA0B;;UAGlB;EACf;EACA,cAAc;;EAEd,oBAAoB;;cAGT,gCAAgC;EAC3C,YACE,oBACA,sBACA,sBACA,eACA;;cAQS,sCAAsC;cAEtC,qCAAqC;EAChD,YAAY,eAAe,mBAAmB;;cAOnC,8BAA8B;WAChC;WACA,UAAU;EAEnB,YACE,iBACA;IAAW;IAAiB,UAAU;IAAa;;;cAQ1C,mCAAmC;WACrC;WACA,UAAU;EAEnB,YAAY,gBAAgB,iBAAiB,UAAU;;cAU5C,gCAAgC;WAClC;WACA,UAAU;WACV,cAAc;EAEvB,YAAY,gBAAgB,gBAAgB,uBAAuB,UAAU;;;cAgClE;mBACM;mBACA;mBACA;mBACA;UACT;UACA;UACA;WACC;mBACQ;EAEjB,YAAY,iBAAiB;EAwDvB,YAAY,GAAG,OAAO,iBAAiB,KAAK,QAAQ,eAAe;;EAyGnE,YAAY,UAAS,wBAA6B;;EA0BxD,UACE,gBACA,UAAU,kBACV;IAAW;IAAkB;MAC5B;EAkBH,KAAK,SAAS,mBAAmB;;EAQjC,YAAY,SAAS,mBAAmB;EAcxC,QAAQ,SAAS,mBAAmB;EAkFpC,cAAc;EAYd;UAIc;UAoDN;UAsCA;UAKM;UAoBN;UAmBA;UAkBA;UAcA;UA+BA;UAUA;UAYA;UAMA;;;;;;;;KA0BE,mBAAmB,KAC7B,YACA,cAAc,8CAEd,QAAQ,KAAK;;iBAGC,cAAc;UAIb;EACf;EACA;;iBAGc,aAAa,eAAe,OAAO,YAAY;;iBAc/C,oBACd,SAAS,oBACT,OAAO,KAAK"}
1
+ {"version":3,"file":"cost-ledger-FuQvHxPm.d.ts","names":[],"sources":["../src/cost-ledger.ts"],"mappings":";;KAIY;;KAGA;EACN;EAAkB;;EAClB;EAAmB;;EACnB;EAAoB;;UAET;EACf;;EAEA;;EAEA;;EAEA;;EAEA;;UAGQ;EACR;EACA,SAAS;EACT;EACA;EACA;EACA;EACA,OAAO;EACP;;UAGe,wBAAwB;EACvC;;UAGe,4BAA4B;EAC3C;;UAGe,oBAAoB,cAAc;EACjD;EACA;EACA;EACA;;EAEA;IACE;IACA;IACA;IACA;;;EAGF;;EAEA;;;EAGA;;UAKe,yBAAyB;EACxC;;EAEA,qBAAqB;EACrB;;EAEA;EACA;EACA;;;UAIe;;EAEf;;EAEA;;EAEA;EACA;;KAGU;EACN;;EAEA,oBAAoB;IAClB,KAAK;EACN;IAAkB;UAER,iBAAiB;EAChC;EACA,SAAS;EACT;EACA;;EAEA;EACA,OAAO;EACP,SAAS;;EAET,gBAAgB;;EAEhB,QAAQ,QAAQ,aAAa,iBAAiB,QAAQ;EACtD,QAAQ,OAAO,IAAI;EACnB,kBAAkB,OAAO,QAAQ;;KAGvB,eAAe;EACrB;EAAiB;EAAgB,OAAO;EAAG,SAAS;;EACpD;EAAkB;EAAiB,OAAO;EAAO,UAAU;;UAEhD;EACf,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB;EAChB,WAAW;EACX;EACA;EACA;EACA;EACA;;UAGe;EACf,UAAU;EACV;EACA,OAAO;;UAGQ;;EAEf;;EAEA,SAAS;;;UAIM;EACf;IAAU;IAAkB;;EAC5B,OAAO,0BAA0B;;UAGlB;EACf;EACA,cAAc;;EAEd,oBAAoB;;cAGT,gCAAgC;EAC3C,YACE,oBACA,sBACA,sBACA,eACA;;cAQS,sCAAsC;cAEtC,qCAAqC;EAChD,YAAY,eAAe,mBAAmB;;cAOnC,8BAA8B;WAChC;WACA,UAAU;EAEnB,YACE,iBACA;IAAW;IAAiB,UAAU;IAAa;;;cAQ1C,mCAAmC;WACrC;WACA,UAAU;EAEnB,YAAY,gBAAgB,iBAAiB,UAAU;;cAU5C,gCAAgC;WAClC;WACA,UAAU;WACV,cAAc;EAEvB,YAAY,gBAAgB,gBAAgB,uBAAuB,UAAU;;;cAgClE;mBACM;mBACA;mBACA;mBACA;UACT;UACA;UACA;WACC;mBACQ;EAEjB,YAAY,iBAAiB;EAwDvB,YAAY,GAAG,OAAO,iBAAiB,KAAK,QAAQ,eAAe;;EA2GnE,YAAY,UAAS,wBAA6B;;EA0BxD,UACE,gBACA,UAAU,kBACV;IAAW;IAAkB;MAC5B;EAkBH,KAAK,SAAS,mBAAmB;;EAQjC,YAAY,SAAS,mBAAmB;EAcxC,QAAQ,SAAS,mBAAmB;EAkFpC,cAAc;EAYd;UAIc;UAoDN;UAsCA;UAKM;UAoBN;UAmBA;UAkBA;UAcA;UA+BA;;;;;;UAcA;UASA;UAYA;UAMA;;;;;;;;KA0BE,mBAAmB,KAC7B,YACA,cAAc,8CAEd,QAAQ,KAAK;;iBAGC,cAAc;UAIb;EACf;EACA;;iBAGc,aAAa,eAAe,OAAO,YAAY;;iBAc/C,oBACd,SAAS,oBACT,OAAO,KAAK"}
@@ -1,7 +1,7 @@
1
- import { N as TraceAnalystSpan, i as AnalystFinding, n as AnalystContext, x as TraceAnalysisStore } from "./types-DoEYskCd.js";
2
- import { l as ExactCapableAnalyst } from "./exact-types-MaaFcllV.js";
3
- import { D as AnalystRegistryOptions, E as AnalystRegistry } from "./completion-verifier-IPoP4fQO.js";
4
- import { i as TraceAnalysisEngine, o as TraceAnalysisEngineResult, p as RawAnalystFinding, s as TraceAnalystLimits, t as TraceToolGroupName } from "./tool-groups-CdYq22lX.js";
1
+ import { N as TraceAnalystSpan, i as AnalystFinding, n as AnalystContext, x as TraceAnalysisStore } from "./types-D3jh6F98.js";
2
+ import { l as ExactCapableAnalyst } from "./exact-types-B0lJV3tu.js";
3
+ import { D as AnalystRegistryOptions, E as AnalystRegistry } from "./completion-verifier-D15NHYSk.js";
4
+ import { i as TraceAnalysisEngine, o as TraceAnalysisEngineResult, p as RawAnalystFinding, s as TraceAnalystLimits, t as TraceToolGroupName } from "./tool-groups-DVQTy9lq.js";
5
5
  //#region src/trace-analyst/behavioral-metrics.d.ts
6
6
  type SuboptimalCode = 'monotonic-input-growth' | 'output-length-decay' | 'single-tool-dependency' | 'no-self-verification';
7
7
  interface SuboptimalSignal {
@@ -115,4 +115,4 @@ interface DefaultAnalystRegistryOptions {
115
115
  declare function buildDefaultAnalystRegistry(options?: DefaultAnalystRegistryOptions): AnalystRegistry;
116
116
  //#endregion
117
117
  export { createTraceAnalyst as a, runTraceAnalyst as c, deriveEfficiencyFindings as d, BehavioralMetrics as f, computeTraceMetrics as g, SuboptimalSignal as h, TraceAnalystDefinition as i, BehavioralAnalystOptions as l, SuboptimalCode as m, buildDefaultAnalystRegistry as n, renderPriorFindings as o, BehavioralTokenSequence as p, CreateTraceAnalystOptions as r, renderUpstreamFindings as s, DefaultAnalystRegistryOptions as t, behavioralAnalyst as u };
118
- //# sourceMappingURL=default-registry-B8vf7Rmf.d.ts.map
118
+ //# sourceMappingURL=default-registry-Ci7wAAR8.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-registry-B8vf7Rmf.d.ts","names":[],"sources":["../src/trace-analyst/behavioral-metrics.ts","../src/analyst/behavioral-analyst.ts","../src/analyst/kind-factory.ts","../src/analyst/default-registry.ts"],"mappings":";;;;;KAoBY;UAMK;EACf,MAAM;EACN;;EAEA;;EAEA,UAAU;;UAGK;;EAEf;EACA;;EAEA,gBAAgB;;EAEhB;EACA;EACA,eAAe;EACf;EACA;;EAEA;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA,sBAAsB;EACtB,uBAAuB;;;;;;iBA+DT,oBAAoB,gBAAgB,qBAAqB;;;UCzFxD;;EAEf;;EAEA;;;;;;iBA+Dc,yBACd,SAAS,mBACT;EAAQ;EAAoB;IAC3B;;iBAkCa,kBACd,UAAS,2BACR,oBAAoB;;;;UCrHN;EACf;EACA;EACA;EACA;;EAEA,sBAAsB,SAAS;;EAE/B;;EAEA,WAAW;;EAEX,kBACE,OAAO,oBACP,SAAS,wCACe;EAC1B,SAAS,QAAQ;EACjB,eAAe,KAAK,mBAAmB,SAAS,mBAAmB;EACnE;EACA;;UAGe;EACf,QAAQ;;EAER;EACA;;;iBAIoB,gBAAgB;EACpC,YAAY;EACZ,QAAQ;EACR,OAAO;EACP,SAAS;EACT;IACE,QAAQ;;iBAgFI,mBACd,YAAY,wBACZ,SAAS,4BACR,oBAAoB;iBA+QP,oBAAoB,OAAO;iBAe3B,uBAAuB,UAAU;;;UCnahC;;;;;;EAMf,SAAS;EACT,uBAAuB;;EAEvB;EACA,aAAa;EACb,WAAW;;iBAGG,4BACd,UAAS,gCACR"}
1
+ {"version":3,"file":"default-registry-Ci7wAAR8.d.ts","names":[],"sources":["../src/trace-analyst/behavioral-metrics.ts","../src/analyst/behavioral-analyst.ts","../src/analyst/kind-factory.ts","../src/analyst/default-registry.ts"],"mappings":";;;;;KAoBY;UAMK;EACf,MAAM;EACN;;EAEA;;EAEA,UAAU;;UAGK;;EAEf;EACA;;EAEA,gBAAgB;;EAEhB;EACA;EACA,eAAe;EACf;EACA;;EAEA;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA,sBAAsB;EACtB,uBAAuB;;;;;;iBA+DT,oBAAoB,gBAAgB,qBAAqB;;;UCzFxD;;EAEf;;EAEA;;;;;;iBA+Dc,yBACd,SAAS,mBACT;EAAQ;EAAoB;IAC3B;;iBAkCa,kBACd,UAAS,2BACR,oBAAoB;;;;UCrHN;EACf;EACA;EACA;EACA;;EAEA,sBAAsB,SAAS;;EAE/B;;EAEA,WAAW;;EAEX,kBACE,OAAO,oBACP,SAAS,wCACe;EAC1B,SAAS,QAAQ;EACjB,eAAe,KAAK,mBAAmB,SAAS,mBAAmB;EACnE;EACA;;UAGe;EACf,QAAQ;;EAER;EACA;;;iBAIoB,gBAAgB;EACpC,YAAY;EACZ,QAAQ;EACR,OAAO;EACP,SAAS;EACT;IACE,QAAQ;;iBAgFI,mBACd,YAAY,wBACZ,SAAS,4BACR,oBAAoB;iBA+QP,oBAAoB,OAAO;iBAe3B,uBAAuB,UAAU;;;UCnahC;;;;;;EAMf,SAAS;EACT,uBAAuB;;EAEvB;EACA,aAAa;EACb,WAAW;;iBAGG,4BACd,UAAS,gCACR"}
@@ -1,7 +1,7 @@
1
- import { n as LlmClient } from "./llm-client-bkztEfIx.js";
1
+ import { n as LlmClient } from "./llm-client-B3WXSH5Y.js";
2
2
  import { LLM_CONTEXT_TOKENS, LLM_INPUT_TOKEN_ATTR_KEYS, LLM_OUTPUT_TOKEN_ATTR_KEYS, TOOL_NAME_ATTR_KEYS } from "./trace-attributes.js";
3
3
  import { t as executionTrackByLane } from "./execution-tracks-CpgFPpS5.js";
4
- import { $ as spanEpochMillis, H as snapshotExactExecutionPlan, R as findingSubjectGrammarPromptFor, U as deepFreezeCanonicalJson, V as snapshotExactExecutionComponentIdentity, t as createTraceAnalyst } from "./kind-factory-CFxA0JQX.js";
4
+ import { $ as spanEpochMillis, H as snapshotExactExecutionPlan, R as findingSubjectGrammarPromptFor, U as deepFreezeCanonicalJson, V as snapshotExactExecutionComponentIdentity, t as createTraceAnalyst } from "./kind-factory-DB7nIs35.js";
5
5
  import { i as validateUsageSettlementTimeout, o as makeFinding, t as assertValidAnalystUsageReceipt } from "./usage-receipt-CgxMEBZq.js";
6
6
  import { i as hashCanonical, r as canonicalString } from "./canonical-D011XM8r.js";
7
7
  import { t as analyzeSupervisorRunIntegrity } from "./integrity-CCXTftiL.js";
@@ -2361,4 +2361,4 @@ function buildDefaultAnalystRegistry(options = {}) {
2361
2361
  //#endregion
2362
2362
  export { createChatClient as C, computeTraceMetrics as S, CONTROL_INTEGRITY_ANALYST as _, analystFindingDigest as a, behavioralAnalyst as b, completedAnalystReviewQuality as c, validateAnalystReviewDecisions as d, DEFAULT_TRACE_ANALYST_KINDS as f, FAILURE_MODE_KIND_SPEC as g, IMPROVEMENT_KIND_SPEC as h, assertExactRegistryRunOpts as i, readAnalystReview as l, KNOWLEDGE_GAP_KIND_SPEC as m, AnalystRegistry as n, analystRunDigest as o, KNOWLEDGE_POISONING_KIND_SPEC as p, ExactAnalystRunExecutionError as r, assertUniqueFindingIds as s, buildDefaultAnalystRegistry as t, snapshotAnalystRun as u, ControlIntegrityAnalyst as v, deriveEfficiencyFindings as x, emitControlIntegrityFindings as y };
2363
2363
 
2364
- //# sourceMappingURL=default-registry-BgJJItGr.js.map
2364
+ //# sourceMappingURL=default-registry-DCp-6hc-.js.map