niceeval 0.13.1 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/INDEX.md +25 -2
  2. package/README.md +9 -10
  3. package/README.zh.md +9 -10
  4. package/dist/agents/ai-sdk.cjs.map +1 -1
  5. package/dist/agents/ai-sdk.d.cts +1 -1
  6. package/dist/agents/ai-sdk.d.mts +1 -1
  7. package/dist/agents/ai-sdk.d.ts +1 -1
  8. package/dist/agents/bub-install-spec.cjs +19 -5
  9. package/dist/agents/bub-install-spec.cjs.map +1 -1
  10. package/dist/agents/bub-install-spec.d.cts +9 -2
  11. package/dist/agents/bub-install-spec.d.mts +9 -2
  12. package/dist/agents/bub-install-spec.d.ts +9 -2
  13. package/dist/agents/bub-install-spec.js +14 -12
  14. package/dist/agents/bub.cjs +10 -6
  15. package/dist/agents/bub.cjs.map +1 -1
  16. package/dist/agents/bub.d.cts +2 -2
  17. package/dist/agents/bub.d.mts +2 -2
  18. package/dist/agents/bub.d.ts +2 -2
  19. package/dist/agents/claude-code.cjs.map +1 -1
  20. package/dist/agents/claude-code.d.cts +2 -2
  21. package/dist/agents/claude-code.d.mts +2 -2
  22. package/dist/agents/claude-code.d.ts +2 -2
  23. package/dist/agents/codex.cjs +4 -4
  24. package/dist/agents/codex.cjs.map +1 -1
  25. package/dist/agents/codex.d.cts +3 -3
  26. package/dist/agents/codex.d.mts +3 -3
  27. package/dist/agents/codex.d.ts +3 -3
  28. package/dist/agents/coding-cli-versions.cjs +10 -1
  29. package/dist/agents/coding-cli-versions.cjs.map +1 -1
  30. package/dist/agents/coding-cli-versions.d.cts +8 -3
  31. package/dist/agents/coding-cli-versions.d.mts +8 -3
  32. package/dist/agents/coding-cli-versions.d.ts +8 -3
  33. package/dist/agents/coding-cli-versions.js +18 -12
  34. package/dist/agents/deepseek-harness.cjs +151 -0
  35. package/dist/agents/deepseek-harness.cjs.map +1 -0
  36. package/dist/agents/deepseek-harness.d.cts +14 -0
  37. package/dist/agents/deepseek-harness.d.mts +14 -0
  38. package/dist/agents/deepseek-harness.d.ts +14 -0
  39. package/dist/agents/deepseek-harness.js +7 -0
  40. package/dist/agents/deepseek-harness.js.map +1 -0
  41. package/dist/agents/exact-npm-plugins.cjs +28 -0
  42. package/dist/agents/exact-npm-plugins.cjs.map +1 -0
  43. package/dist/agents/exact-npm-plugins.d.cts +10 -0
  44. package/dist/agents/exact-npm-plugins.d.mts +10 -0
  45. package/dist/agents/exact-npm-plugins.d.ts +10 -0
  46. package/dist/agents/exact-npm-plugins.js +8 -0
  47. package/dist/agents/exact-npm-plugins.js.map +1 -0
  48. package/dist/agents/index.cjs +5 -1
  49. package/dist/agents/index.cjs.map +1 -1
  50. package/dist/agents/index.d.cts +4 -0
  51. package/dist/agents/index.d.mts +4 -0
  52. package/dist/agents/index.d.ts +4 -0
  53. package/dist/agents/index.js +54 -50
  54. package/dist/agents/index.mjs +54 -50
  55. package/dist/agents/omp.cjs +170 -0
  56. package/dist/agents/omp.cjs.map +1 -0
  57. package/dist/agents/omp.d.cts +14 -0
  58. package/dist/agents/omp.d.mts +14 -0
  59. package/dist/agents/omp.d.ts +14 -0
  60. package/dist/agents/omp.js +7 -0
  61. package/dist/agents/omp.js.map +1 -0
  62. package/dist/agents/openclaw.cjs +51 -2
  63. package/dist/agents/openclaw.cjs.map +1 -1
  64. package/dist/agents/openclaw.d.cts +2 -0
  65. package/dist/agents/openclaw.d.mts +2 -0
  66. package/dist/agents/openclaw.d.ts +2 -0
  67. package/dist/agents/types.cjs.map +1 -1
  68. package/dist/agents/types.d.cts +4 -4
  69. package/dist/agents/types.d.mts +4 -4
  70. package/dist/agents/types.d.ts +4 -4
  71. package/dist/agents/ui-message-stream.cjs +24 -7
  72. package/dist/agents/ui-message-stream.cjs.map +1 -1
  73. package/dist/analysis/api.cjs +28 -2
  74. package/dist/analysis/api.cjs.map +1 -1
  75. package/dist/analysis/api.d.cts +22 -1
  76. package/dist/analysis/api.d.mts +22 -1
  77. package/dist/analysis/api.d.ts +22 -1
  78. package/dist/analysis/api.js +8 -6
  79. package/dist/analysis/bindings.cjs +11 -18
  80. package/dist/analysis/bindings.cjs.map +1 -1
  81. package/dist/analysis/bindings.d.cts +177 -49
  82. package/dist/analysis/bindings.d.mts +177 -49
  83. package/dist/analysis/bindings.d.ts +177 -49
  84. package/dist/analysis/contracts.cjs +1 -0
  85. package/dist/analysis/contracts.cjs.map +1 -1
  86. package/dist/analysis/contracts.d.cts +43 -3
  87. package/dist/analysis/contracts.d.mts +43 -3
  88. package/dist/analysis/contracts.d.ts +43 -3
  89. package/dist/analysis/cost-projection.cjs +2 -1
  90. package/dist/analysis/cost-projection.cjs.map +1 -1
  91. package/dist/analysis/cost-projection.d.cts +1 -1
  92. package/dist/analysis/cost-projection.d.mts +1 -1
  93. package/dist/analysis/cost-projection.d.ts +1 -1
  94. package/dist/analysis/cost.cjs +13 -3
  95. package/dist/analysis/cost.cjs.map +1 -1
  96. package/dist/analysis/cost.d.cts +10 -3
  97. package/dist/analysis/cost.d.mts +10 -3
  98. package/dist/analysis/cost.d.ts +10 -3
  99. package/dist/analysis/experiment-groups.cjs +96 -0
  100. package/dist/analysis/experiment-groups.cjs.map +1 -0
  101. package/dist/analysis/experiment-groups.d.cts +9 -0
  102. package/dist/analysis/experiment-groups.d.mts +9 -0
  103. package/dist/analysis/experiment-groups.d.ts +9 -0
  104. package/dist/analysis/experiment-groups.js +10 -0
  105. package/dist/analysis/experiment-groups.js.map +1 -0
  106. package/dist/analysis/index.cjs +4 -1
  107. package/dist/analysis/index.cjs.map +1 -1
  108. package/dist/analysis/index.d.cts +4 -2
  109. package/dist/analysis/index.d.mts +4 -2
  110. package/dist/analysis/index.d.ts +4 -2
  111. package/dist/analysis/index.js +40 -36
  112. package/dist/analysis/index.mjs +40 -36
  113. package/dist/assertions/limits.cjs +4 -0
  114. package/dist/assertions/limits.cjs.map +1 -1
  115. package/dist/assertions/limits.d.cts +4 -0
  116. package/dist/assertions/limits.d.mts +4 -0
  117. package/dist/assertions/limits.d.ts +4 -0
  118. package/dist/assertions/match.cjs +63 -25
  119. package/dist/assertions/match.cjs.map +1 -1
  120. package/dist/assertions/match.d.cts +7 -0
  121. package/dist/assertions/match.d.mts +7 -0
  122. package/dist/assertions/match.d.ts +7 -0
  123. package/dist/assertions/record/attachment.cjs +32 -4
  124. package/dist/assertions/record/attachment.cjs.map +1 -1
  125. package/dist/assertions/record/diff.cjs +10 -4
  126. package/dist/assertions/record/diff.cjs.map +1 -1
  127. package/dist/assertions/record/producer.cjs +101 -4
  128. package/dist/assertions/record/producer.cjs.map +1 -1
  129. package/dist/assertions/record/producer.d.cts +4 -1
  130. package/dist/assertions/record/producer.d.mts +4 -1
  131. package/dist/assertions/record/producer.d.ts +4 -1
  132. package/dist/assertions/runtime.cjs +45 -5
  133. package/dist/assertions/runtime.cjs.map +1 -1
  134. package/dist/cli/record.cjs +113 -8
  135. package/dist/cli/record.cjs.map +1 -1
  136. package/dist/cli/record.d.cts +20 -1
  137. package/dist/cli/record.d.mts +20 -1
  138. package/dist/cli/record.d.ts +20 -1
  139. package/dist/cli/record.js +4 -2
  140. package/dist/cli.cjs +386 -31
  141. package/dist/cli.cjs.map +1 -1
  142. package/dist/cli.d.cts +10 -2
  143. package/dist/cli.d.mts +10 -2
  144. package/dist/cli.d.ts +10 -2
  145. package/dist/context/send-retry.cjs +4 -4
  146. package/dist/context/send-retry.cjs.map +1 -1
  147. package/dist/coordination/host/runtime.cjs +8 -30
  148. package/dist/coordination/host/runtime.cjs.map +1 -1
  149. package/dist/coordination/host/runtime.d.cts +3 -3
  150. package/dist/coordination/host/runtime.d.mts +3 -3
  151. package/dist/coordination/host/runtime.d.ts +3 -3
  152. package/dist/coordination/host/types.cjs.map +1 -1
  153. package/dist/coordination/host/types.d.cts +0 -5
  154. package/dist/coordination/host/types.d.mts +0 -5
  155. package/dist/coordination/host/types.d.ts +0 -5
  156. package/dist/coordination/platform/node.cjs +90 -9
  157. package/dist/coordination/platform/node.cjs.map +1 -1
  158. package/dist/define.cjs +25 -1
  159. package/dist/define.cjs.map +1 -1
  160. package/dist/experiment/host/index.cjs +1 -0
  161. package/dist/experiment/host/index.cjs.map +1 -1
  162. package/dist/i18n/en.cjs +26 -8
  163. package/dist/i18n/en.cjs.map +1 -1
  164. package/dist/i18n/en.d.cts +19 -6
  165. package/dist/i18n/en.d.mts +19 -6
  166. package/dist/i18n/en.d.ts +19 -6
  167. package/dist/index.cjs.map +1 -1
  168. package/dist/index.d.cts +1 -1
  169. package/dist/index.d.mts +1 -1
  170. package/dist/index.d.ts +1 -1
  171. package/dist/o11y/parsers/hermes.cjs +1 -1
  172. package/dist/o11y/parsers/hermes.cjs.map +1 -1
  173. package/dist/o11y/prices.json +1 -1
  174. package/dist/o11y/record/families.cjs +12 -3
  175. package/dist/o11y/record/families.cjs.map +1 -1
  176. package/dist/o11y/record/families.d.cts +8 -8
  177. package/dist/o11y/record/families.d.mts +8 -8
  178. package/dist/o11y/record/families.d.ts +8 -8
  179. package/dist/o11y/record/family-projectors.d.cts +66 -18
  180. package/dist/o11y/record/family-projectors.d.mts +66 -18
  181. package/dist/o11y/record/family-projectors.d.ts +66 -18
  182. package/dist/o11y/record/family-writers.d.cts +11 -3
  183. package/dist/o11y/record/family-writers.d.mts +11 -3
  184. package/dist/o11y/record/family-writers.d.ts +11 -3
  185. package/dist/o11y/record/runner-producer.cjs +14 -4
  186. package/dist/o11y/record/runner-producer.cjs.map +1 -1
  187. package/dist/record/codec/core.d.cts +2 -2
  188. package/dist/record/codec/core.d.mts +2 -2
  189. package/dist/record/codec/core.d.ts +2 -2
  190. package/dist/record/family/catalog.d.cts +44 -12
  191. package/dist/record/family/catalog.d.mts +44 -12
  192. package/dist/record/family/catalog.d.ts +44 -12
  193. package/dist/record/family/index.js +128 -124
  194. package/dist/record/family/observability-v1.cjs +35 -0
  195. package/dist/record/family/observability-v1.cjs.map +1 -0
  196. package/dist/record/family/observability-v1.d.cts +3 -0
  197. package/dist/record/family/observability-v1.d.mts +3 -0
  198. package/dist/record/family/observability-v1.d.ts +3 -0
  199. package/dist/record/family/observability-v1.js +6 -0
  200. package/dist/record/family/observability-v1.js.map +1 -0
  201. package/dist/record/family/observability.cjs +58 -9
  202. package/dist/record/family/observability.cjs.map +1 -1
  203. package/dist/record/family/observability.d.cts +1014 -15
  204. package/dist/record/family/observability.d.mts +1014 -15
  205. package/dist/record/family/observability.d.ts +1014 -15
  206. package/dist/record/family/observability.js +22 -18
  207. package/dist/record/host/runtime.cjs +600 -31
  208. package/dist/record/host/runtime.cjs.map +1 -1
  209. package/dist/record/host/types.cjs.map +1 -1
  210. package/dist/record/host/types.d.cts +33 -9
  211. package/dist/record/host/types.d.mts +33 -9
  212. package/dist/record/host/types.d.ts +33 -9
  213. package/dist/record/maintenance/runtime.cjs +1 -2
  214. package/dist/record/maintenance/runtime.cjs.map +1 -1
  215. package/dist/record/model/core.cjs.map +1 -1
  216. package/dist/record/model/core.d.cts +1 -1
  217. package/dist/record/model/core.d.mts +1 -1
  218. package/dist/record/model/core.d.ts +1 -1
  219. package/dist/record/model/definition.d.cts +6 -6
  220. package/dist/record/model/definition.d.mts +6 -6
  221. package/dist/record/model/definition.d.ts +6 -6
  222. package/dist/record/model/identifiers.cjs +1 -1
  223. package/dist/record/model/identifiers.cjs.map +1 -1
  224. package/dist/record/model/identifiers.d.cts +1 -1
  225. package/dist/record/model/identifiers.d.mts +1 -1
  226. package/dist/record/model/identifiers.d.ts +1 -1
  227. package/dist/record/platform/node.cjs +159 -23
  228. package/dist/record/platform/node.cjs.map +1 -1
  229. package/dist/record/platform/services.cjs.map +1 -1
  230. package/dist/record/platform/services.d.cts +15 -2
  231. package/dist/record/platform/services.d.mts +15 -2
  232. package/dist/record/platform/services.d.ts +15 -2
  233. package/dist/record/reader/errors.cjs +37 -1
  234. package/dist/record/reader/errors.cjs.map +1 -1
  235. package/dist/record/reader/errors.d.cts +49 -1
  236. package/dist/record/reader/errors.d.mts +49 -1
  237. package/dist/record/reader/errors.d.ts +49 -1
  238. package/dist/record/reader/errors.js +22 -12
  239. package/dist/record/reader/format.cjs +76 -17
  240. package/dist/record/reader/format.cjs.map +1 -1
  241. package/dist/record/reader/format.d.cts +11 -4
  242. package/dist/record/reader/format.d.mts +11 -4
  243. package/dist/record/reader/format.d.ts +11 -4
  244. package/dist/record/reader/format.js +2 -0
  245. package/dist/record/reader/index.js +32 -18
  246. package/dist/record/reader/runtime.cjs +64 -0
  247. package/dist/record/reader/runtime.cjs.map +1 -1
  248. package/dist/record/reader/runtime.d.cts +15 -0
  249. package/dist/record/reader/runtime.d.mts +15 -0
  250. package/dist/record/reader/runtime.d.ts +15 -0
  251. package/dist/record/reader/runtime.js +2 -0
  252. package/dist/report/assets/styles.css +53 -29
  253. package/dist/report/built-in/analysis-values.cjs +21 -13
  254. package/dist/report/built-in/analysis-values.cjs.map +1 -1
  255. package/dist/report/built-in/analysis-values.d.cts +11 -22
  256. package/dist/report/built-in/analysis-values.d.mts +11 -22
  257. package/dist/report/built-in/analysis-values.d.ts +11 -22
  258. package/dist/report/built-in/analysis-values.js +4 -6
  259. package/dist/report/built-in/index.cjs +1 -3
  260. package/dist/report/built-in/index.cjs.map +1 -1
  261. package/dist/report/built-in/index.d.cts +1 -1
  262. package/dist/report/built-in/index.d.mts +1 -1
  263. package/dist/report/built-in/index.d.ts +1 -1
  264. package/dist/report/built-in/index.js +4 -8
  265. package/dist/report/built-in/index.mjs +4 -8
  266. package/dist/report/built-in/machine.cjs +0 -2
  267. package/dist/report/built-in/machine.cjs.map +1 -1
  268. package/dist/report/built-in/machine.d.cts +0 -2
  269. package/dist/report/built-in/machine.d.mts +0 -2
  270. package/dist/report/built-in/machine.d.ts +0 -2
  271. package/dist/report/built-in/result-components.cjs +49 -51
  272. package/dist/report/built-in/result-components.cjs.map +1 -1
  273. package/dist/report/built-in/result-components.d.cts +16 -17
  274. package/dist/report/built-in/result-components.d.mts +16 -17
  275. package/dist/report/built-in/result-components.d.ts +16 -17
  276. package/dist/report/built-in/result-components.js +0 -4
  277. package/dist/report/built-in/run-membership-overview.cjs +126 -17
  278. package/dist/report/built-in/run-membership-overview.cjs.map +1 -1
  279. package/dist/report/built-in/run-membership-overview.d.cts +14 -0
  280. package/dist/report/built-in/run-membership-overview.d.mts +14 -0
  281. package/dist/report/built-in/run-membership-overview.d.ts +14 -0
  282. package/dist/report/built-in/run-membership-overview.js +4 -2
  283. package/dist/report/built-in/standard.cjs +80 -45
  284. package/dist/report/built-in/standard.cjs.map +1 -1
  285. package/dist/report/built-in/standard.d.cts +19 -41
  286. package/dist/report/built-in/standard.d.mts +19 -41
  287. package/dist/report/built-in/standard.d.ts +19 -41
  288. package/dist/report/built-in/standard.js +6 -6
  289. package/dist/report/components/attempt-detail/compute.cjs +78 -2
  290. package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
  291. package/dist/report/components/attempt-detail/compute.d.cts +1 -1
  292. package/dist/report/components/attempt-detail/compute.d.mts +1 -1
  293. package/dist/report/components/attempt-detail/compute.d.ts +1 -1
  294. package/dist/report/components/attempt-detail/content.cjs +1 -1
  295. package/dist/report/components/attempt-detail/content.cjs.map +1 -1
  296. package/dist/report/components/entity-lists/compute.cjs +42 -5
  297. package/dist/report/components/entity-lists/compute.cjs.map +1 -1
  298. package/dist/report/components/entity-lists/compute.d.cts +10 -8
  299. package/dist/report/components/entity-lists/compute.d.mts +10 -8
  300. package/dist/report/components/entity-lists/compute.d.ts +10 -8
  301. package/dist/report/components/entity-lists/content.cjs +31 -6
  302. package/dist/report/components/entity-lists/content.cjs.map +1 -1
  303. package/dist/report/components/entity-lists/index.cjs +9 -4
  304. package/dist/report/components/entity-lists/index.cjs.map +1 -1
  305. package/dist/report/components/entity-lists/index.d.cts +4 -7
  306. package/dist/report/components/entity-lists/index.d.mts +4 -7
  307. package/dist/report/components/entity-lists/index.d.ts +4 -7
  308. package/dist/report/components/summaries/compute.cjs +8 -1
  309. package/dist/report/components/summaries/compute.cjs.map +1 -1
  310. package/dist/report/components/summaries/compute.d.cts +9 -1
  311. package/dist/report/components/summaries/compute.d.mts +9 -1
  312. package/dist/report/components/summaries/compute.d.ts +9 -1
  313. package/dist/report/components/summaries/index.cjs +48 -4
  314. package/dist/report/components/summaries/index.cjs.map +1 -1
  315. package/dist/report/components/summaries/index.d.cts +7 -4
  316. package/dist/report/components/summaries/index.d.mts +7 -4
  317. package/dist/report/components/summaries/index.d.ts +7 -4
  318. package/dist/report/definition/cell.cjs +3 -0
  319. package/dist/report/definition/cell.cjs.map +1 -1
  320. package/dist/report/definition/cell.d.cts +2 -0
  321. package/dist/report/definition/cell.d.mts +2 -0
  322. package/dist/report/definition/cell.d.ts +2 -0
  323. package/dist/report/definition/primitives/chart.cjs +8 -5
  324. package/dist/report/definition/primitives/chart.cjs.map +1 -1
  325. package/dist/report/definition/primitives/points-dataset.cjs +1 -0
  326. package/dist/report/definition/primitives/points-dataset.cjs.map +1 -1
  327. package/dist/report/definition/primitives.cjs +15 -2
  328. package/dist/report/definition/primitives.cjs.map +1 -1
  329. package/dist/report/definition/report.cjs +27 -3
  330. package/dist/report/definition/report.cjs.map +1 -1
  331. package/dist/report/definition/report.d.cts +8 -0
  332. package/dist/report/definition/report.d.mts +8 -0
  333. package/dist/report/definition/report.d.ts +8 -0
  334. package/dist/report/execution/machine.cjs +30 -14
  335. package/dist/report/execution/machine.cjs.map +1 -1
  336. package/dist/report/execution/machine.d.cts +20 -10
  337. package/dist/report/execution/machine.d.mts +20 -10
  338. package/dist/report/execution/machine.d.ts +20 -10
  339. package/dist/report/execution/machine.js +6 -6
  340. package/dist/report/host/execute.cjs +25 -16
  341. package/dist/report/host/execute.cjs.map +1 -1
  342. package/dist/report/host/execute.d.cts +4 -0
  343. package/dist/report/host/execute.d.mts +4 -0
  344. package/dist/report/host/execute.d.ts +4 -0
  345. package/dist/report/host/from-record.cjs +22 -5
  346. package/dist/report/host/from-record.cjs.map +1 -1
  347. package/dist/report/host/machine.cjs +53 -11
  348. package/dist/report/host/machine.cjs.map +1 -1
  349. package/dist/report/host/site-runtime.cjs +9 -8
  350. package/dist/report/host/site-runtime.cjs.map +1 -1
  351. package/dist/report/host/site-runtime.d.cts +1 -1
  352. package/dist/report/host/site-runtime.d.mts +1 -1
  353. package/dist/report/host/site-runtime.d.ts +1 -1
  354. package/dist/report/host/static.cjs +56 -9
  355. package/dist/report/host/static.cjs.map +1 -1
  356. package/dist/report/index.cjs.map +1 -1
  357. package/dist/report/index.d.cts +1 -1
  358. package/dist/report/index.d.mts +1 -1
  359. package/dist/report/index.d.ts +1 -1
  360. package/dist/report/model/dataset.cjs +7 -2
  361. package/dist/report/model/dataset.cjs.map +1 -1
  362. package/dist/report/model/locale.cjs +2 -0
  363. package/dist/report/model/locale.cjs.map +1 -1
  364. package/dist/report/model/locale.d.cts +1 -0
  365. package/dist/report/model/locale.d.mts +1 -0
  366. package/dist/report/model/locale.d.ts +1 -0
  367. package/dist/report/model/metrics.cjs +3 -1
  368. package/dist/report/model/metrics.cjs.map +1 -1
  369. package/dist/report/model/pricing.cjs +16 -11
  370. package/dist/report/model/pricing.cjs.map +1 -1
  371. package/dist/report/react/styles.css +53 -29
  372. package/dist/runner/adoption.cjs +1 -0
  373. package/dist/runner/adoption.cjs.map +1 -1
  374. package/dist/runner/attempt.cjs +44 -5
  375. package/dist/runner/attempt.cjs.map +1 -1
  376. package/dist/runner/attempt.d.cts +13 -1
  377. package/dist/runner/attempt.d.mts +13 -1
  378. package/dist/runner/attempt.d.ts +13 -1
  379. package/dist/runner/config-identity.cjs +10 -2
  380. package/dist/runner/config-identity.cjs.map +1 -1
  381. package/dist/runner/config-identity.d.cts +4 -2
  382. package/dist/runner/config-identity.d.mts +4 -2
  383. package/dist/runner/config-identity.d.ts +4 -2
  384. package/dist/runner/feedback/human.cjs +298 -59
  385. package/dist/runner/feedback/human.cjs.map +1 -1
  386. package/dist/runner/feedback/json.cjs +14 -6
  387. package/dist/runner/feedback/json.cjs.map +1 -1
  388. package/dist/runner/feedback/json.d.cts +3 -2
  389. package/dist/runner/feedback/json.d.mts +3 -2
  390. package/dist/runner/feedback/json.d.ts +3 -2
  391. package/dist/runner/feedback/reducer.cjs +2 -0
  392. package/dist/runner/feedback/reducer.cjs.map +1 -1
  393. package/dist/runner/judge-config.cjs +1 -1
  394. package/dist/runner/judge-config.cjs.map +1 -1
  395. package/dist/runner/ledger.cjs +124 -12
  396. package/dist/runner/ledger.cjs.map +1 -1
  397. package/dist/runner/project-current.cjs +13 -5
  398. package/dist/runner/project-current.cjs.map +1 -1
  399. package/dist/runner/run.cjs +564 -256
  400. package/dist/runner/run.cjs.map +1 -1
  401. package/dist/runner/sandbox-pool.cjs +161 -30
  402. package/dist/runner/sandbox-pool.cjs.map +1 -1
  403. package/dist/runner/sandbox-pool.d.cts +34 -2
  404. package/dist/runner/sandbox-pool.d.mts +34 -2
  405. package/dist/runner/sandbox-pool.d.ts +34 -2
  406. package/dist/runner/shared-state-lease.cjs +803 -0
  407. package/dist/runner/shared-state-lease.cjs.map +1 -0
  408. package/dist/runner/shared-state-lease.d.cts +121 -0
  409. package/dist/runner/shared-state-lease.d.mts +121 -0
  410. package/dist/runner/shared-state-lease.d.ts +121 -0
  411. package/dist/runner/shared-state-lease.js +24 -0
  412. package/dist/runner/shared-state-lease.js.map +1 -0
  413. package/dist/runner/teardown-registry.cjs +97 -34
  414. package/dist/runner/teardown-registry.cjs.map +1 -1
  415. package/dist/runner/teardown-registry.d.cts +27 -1
  416. package/dist/runner/teardown-registry.d.mts +27 -1
  417. package/dist/runner/teardown-registry.d.ts +27 -1
  418. package/dist/runner/teardown-registry.js +20 -16
  419. package/dist/runner/types.cjs.map +1 -1
  420. package/dist/runner/types.d.cts +31 -5
  421. package/dist/runner/types.d.mts +31 -5
  422. package/dist/runner/types.d.ts +31 -5
  423. package/dist/sample/analysis.cjs +249 -459
  424. package/dist/sample/analysis.cjs.map +1 -1
  425. package/dist/sample/capability.cjs +138 -7
  426. package/dist/sample/capability.cjs.map +1 -1
  427. package/dist/sample/capability.d.cts +3 -1
  428. package/dist/sample/capability.d.mts +3 -1
  429. package/dist/sample/capability.d.ts +3 -1
  430. package/dist/sample/capability.js +8 -6
  431. package/dist/sandbox/docker-agent-image.cjs +5 -1
  432. package/dist/sandbox/docker-agent-image.cjs.map +1 -1
  433. package/dist/sandbox/docker-agent-image.d.cts +2 -0
  434. package/dist/sandbox/docker-agent-image.d.mts +2 -0
  435. package/dist/sandbox/docker-agent-image.d.ts +2 -0
  436. package/dist/sandbox/docker-agent-image.js +14 -10
  437. package/dist/sandbox/docker-profile/schema.cjs +283 -534
  438. package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
  439. package/dist/sandbox/docker-profile/schema.d.cts +10 -27
  440. package/dist/sandbox/docker-profile/schema.d.mts +10 -27
  441. package/dist/sandbox/docker-profile/schema.d.ts +10 -27
  442. package/dist/sandbox/e2b-agent-template.cjs +5 -2
  443. package/dist/sandbox/e2b-agent-template.cjs.map +1 -1
  444. package/dist/sandbox/index.cjs +4 -2
  445. package/dist/sandbox/index.cjs.map +1 -1
  446. package/dist/sandbox/index.d.cts +1 -1
  447. package/dist/sandbox/index.d.mts +1 -1
  448. package/dist/sandbox/index.d.ts +1 -1
  449. package/dist/sandbox/index.js +120 -116
  450. package/dist/sandbox/index.mjs +120 -116
  451. package/dist/sandbox/keep-registry.cjs +28 -66
  452. package/dist/sandbox/keep-registry.cjs.map +1 -1
  453. package/dist/sandbox/types.cjs.map +1 -1
  454. package/dist/sandbox/types.d.cts +1 -1
  455. package/dist/sandbox/types.d.mts +1 -1
  456. package/dist/sandbox/types.d.ts +1 -1
  457. package/dist/shared/aggregate.cjs +16 -6
  458. package/dist/shared/aggregate.cjs.map +1 -1
  459. package/dist/shared/aggregate.d.cts +12 -4
  460. package/dist/shared/aggregate.d.mts +12 -4
  461. package/dist/shared/aggregate.d.ts +12 -4
  462. package/dist/shared/turn-label.cjs +20 -2
  463. package/dist/shared/turn-label.cjs.map +1 -1
  464. package/dist/shared/turn-label.d.cts +2 -0
  465. package/dist/shared/turn-label.d.mts +2 -0
  466. package/dist/shared/turn-label.d.ts +2 -0
  467. package/dist/shared/turn-label.js +4 -2
  468. package/dist/vendor/remark/remark-gfm.cjs +7 -7
  469. package/dist/vendor/remark/remark-gfm.cjs.map +1 -1
  470. package/dist/vendor/remark/remark-parse.cjs +12 -12
  471. package/dist/vendor/remark/remark-parse.cjs.map +1 -1
  472. package/dist/vendor/remark/remark.cjs +13 -13
  473. package/dist/vendor/remark/remark.cjs.map +1 -1
  474. package/dist/view/server.cjs +6 -0
  475. package/dist/view/server.cjs.map +1 -1
  476. package/docs-site/images/hitl-handshake-zh.svg +3 -3
  477. package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
  478. package/docs-site/zh/examples/coding-agent-extensions.mdx +1 -1
  479. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +4 -3
  480. package/docs-site/zh/examples/integrations/claude-sdk.mdx +3 -3
  481. package/docs-site/zh/examples/integrations/codex-sdk.mdx +5 -5
  482. package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
  483. package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
  484. package/docs-site/zh/explanation/adapter.mdx +5 -5
  485. package/docs-site/zh/explanation/assert.mdx +7 -7
  486. package/docs-site/zh/explanation/drive.mdx +4 -2
  487. package/docs-site/zh/explanation/evals.mdx +10 -8
  488. package/docs-site/zh/explanation/experiment.mdx +2 -2
  489. package/docs-site/zh/explanation/hitl.mdx +9 -9
  490. package/docs-site/zh/explanation/judge.mdx +5 -5
  491. package/docs-site/zh/explanation/overview.mdx +3 -3
  492. package/docs-site/zh/explanation/runner.mdx +1 -1
  493. package/docs-site/zh/index.mdx +3 -3
  494. package/docs-site/zh/reference/builtin-agents.mdx +13 -13
  495. package/docs-site/zh/reference/capabilities.mdx +1 -1
  496. package/docs-site/zh/reference/cli.mdx +18 -12
  497. package/docs-site/zh/reference/define-agent.mdx +130 -5
  498. package/docs-site/zh/reference/define-config.mdx +2 -2
  499. package/docs-site/zh/reference/define-eval.mdx +4 -4
  500. package/docs-site/zh/reference/events.mdx +11 -11
  501. package/docs-site/zh/reference/official-adapters.mdx +6 -6
  502. package/docs-site/zh/reference/results-data.mdx +6 -0
  503. package/docs-site/zh/troubleshooting/debugging.mdx +1 -1
  504. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +37 -5
  505. package/docs-site/zh/tutorials/accept-results.mdx +72 -0
  506. package/docs-site/zh/tutorials/agent-onboarding.mdx +6 -6
  507. package/docs-site/zh/tutorials/authoring.mdx +9 -13
  508. package/docs-site/zh/tutorials/ci-integration.mdx +6 -6
  509. package/docs-site/zh/tutorials/compare-runs.mdx +61 -0
  510. package/docs-site/zh/tutorials/concurrency.mdx +13 -12
  511. package/docs-site/zh/tutorials/configuration.mdx +4 -6
  512. package/docs-site/zh/tutorials/connect-your-agent.mdx +1 -1
  513. package/docs-site/zh/tutorials/control-run-cost.mdx +58 -0
  514. package/docs-site/zh/tutorials/criteria-files.mdx +2 -2
  515. package/docs-site/zh/tutorials/custom-reports.mdx +2 -2
  516. package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +46 -0
  517. package/docs-site/zh/tutorials/docker-in-docker.mdx +52 -43
  518. package/docs-site/zh/tutorials/eval-groups.mdx +6 -6
  519. package/docs-site/zh/tutorials/evaluation-kinds.mdx +3 -3
  520. package/docs-site/zh/tutorials/experiments.mdx +2 -3
  521. package/docs-site/zh/tutorials/handle-execution-failures.mdx +18 -10
  522. package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +16 -8
  523. package/docs-site/zh/tutorials/nixos-managed-dind.mdx +160 -0
  524. package/docs-site/zh/tutorials/plugins.mdx +14 -0
  525. package/docs-site/zh/tutorials/rerun-and-cache.mdx +4 -2
  526. package/docs-site/zh/tutorials/sandbox-agent.mdx +17 -11
  527. package/docs-site/zh/tutorials/sandbox-providers.mdx +17 -13
  528. package/docs-site/zh/tutorials/sandbox-reuse.mdx +12 -19
  529. package/docs-site/zh/tutorials/select-and-preview.mdx +65 -0
  530. package/docs-site/zh/tutorials/verify-judge.mdx +78 -0
  531. package/docs-site/zh/tutorials/viewing-results.mdx +38 -1
  532. package/docs-site/zh/tutorials/write-experiment.mdx +7 -5
  533. package/docs-site/zh/tutorials/write-send.mdx +9 -8
  534. package/package.json +9 -5
  535. package/dist/report/built-in/overview.cjs +0 -44
  536. package/dist/report/built-in/overview.cjs.map +0 -1
  537. package/dist/report/built-in/overview.d.cts +0 -6
  538. package/dist/report/built-in/overview.d.mts +0 -6
  539. package/dist/report/built-in/overview.d.ts +0 -6
  540. package/dist/report/built-in/overview.js +0 -9
  541. package/dist/report/built-in/overview.js.map +0 -1
  542. package/dist/runner/gate-lease.cjs +0 -283
  543. package/dist/runner/gate-lease.cjs.map +0 -1
  544. package/dist/runner/gate-lease.d.cts +0 -62
  545. package/dist/runner/gate-lease.d.mts +0 -62
  546. package/dist/runner/gate-lease.d.ts +0 -62
  547. package/dist/runner/gate-lease.js +0 -22
  548. package/dist/runner/gate-lease.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cost.js","sourceRoot":"","sources":["cost.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { createOpaqueMeasure, logicalSlots, type LogicalSlot, type Measure, } from \"./definitions.ts\";\nimport type { MetricBasis, MetricValue, } from \"./contracts.ts\";\nimport type { CanonicalDecimal, CurrencyCode, SafeIdentifier, } from \"../o11y/record/model.ts\";\nimport { isCanonicalDecimal, isCurrencyCode, isSafeIdentifier, isStrictUnicodeText, utf8ByteLength, } from \"../o11y/record/model.ts\";\nimport type { ExecutionIdentityDigest, UtcMillis, } from \"../record/model/identifiers.ts\";\nimport { isPortableSegment, isRecordDomainIdentity, isSha256Digest, isUtcMillis, } from \"../record/model/identifiers.ts\";\nimport { INDEPENDENTLY_BILLABLE_TOKEN_BUCKETS, isIndependentlyBillableTokenBucket, type IndependentlyBillableTokenBucket, } from \"./cost-decimal.ts\";\n/** Cross-ESM/CJS v1 Profile descriptor. Its value is a frozen data record. */\nconst PricingProfileDescriptor: unique symbol = Symbol.for(\"niceeval.report.pricing-profile/v1\") as never;\n/** Cross-ESM/CJS v1 profile-bound Measure descriptor. */\nconst CostMeasureDescriptor: unique symbol = Symbol.for(\"niceeval.analysis.cost-measure/v1\") as never;\nconst validatedPricingProfiles = new WeakSet<object>();\ndeclare const pricingProfileContentIdentityTypeId: unique symbol;\ndeclare const pricingCoverageIdTypeId: unique symbol;\nexport type PricingProfileContentIdentity = string & {\n readonly [pricingProfileContentIdentityTypeId]: true;\n};\nexport type PricingCoverageId = string & {\n readonly [pricingCoverageIdTypeId]: true;\n};\nexport interface PricingDisplay {\n readonly decimalPlaces: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n readonly rounding: \"half-away-from-zero\";\n}\nexport interface PricingDisplayInput {\n readonly decimalPlaces: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n readonly rounding: \"half-away-from-zero\";\n}\n/** The declaration that made this rate card auditable. */\nexport interface PricingProvenance {\n readonly kind: \"declared-rate-card\";\n readonly source: string;\n readonly asOf: UtcMillis;\n}\nexport interface PricingProvenanceInput {\n readonly kind: \"declared-rate-card\";\n readonly source: string;\n readonly asOf: number;\n}\n/**\n * Every selector predicate reads the origin Attempt's closed Core projection.\n * Optional dimensions are explicit wildcards; model is required and never\n * inferred from current Report source, the selected target Run, or a provider.\n */\nexport interface PricingSelector {\n /** Omitted only by a model catalog entry whose quote is provider-neutral. */\n readonly provider?: SafeIdentifier;\n readonly model: string;\n readonly agentId?: string;\n readonly reasoningEffort?: string | null;\n readonly executionIdentityDigest?: ExecutionIdentityDigest;\n}\nexport interface PricingSelectorInput {\n readonly provider?: string;\n readonly model: string;\n readonly agentId?: string;\n readonly reasoningEffort?: string | null;\n readonly executionIdentityDigest?: string;\n}\nexport interface PricingEffectiveCondition {\n readonly startsAt: UtcMillis;\n readonly endsAt: UtcMillis | null;\n}\nexport interface PricingEffectiveConditionInput {\n readonly startsAt: number;\n readonly endsAt: number | null;\n}\nexport interface TokenPricingCharge {\n readonly kind: \"token\";\n readonly bucket: IndependentlyBillableTokenBucket;\n readonly perMillionTokens: CanonicalDecimal;\n}\nexport interface TokenPricingChargeInput {\n readonly kind: \"token\";\n readonly bucket: string;\n readonly perMillionTokens: string;\n}\nexport interface RequestPricingCharge {\n readonly kind: \"request\";\n readonly requestKind: \"model\" | \"tool\";\n readonly ratePerRequest: CanonicalDecimal;\n}\nexport interface RequestPricingChargeInput {\n readonly kind: \"request\";\n readonly requestKind: \"model\" | \"tool\";\n readonly ratePerRequest: string;\n}\nexport type PricingCharge = TokenPricingCharge | RequestPricingCharge;\nexport type PricingChargeInput = TokenPricingChargeInput | RequestPricingChargeInput;\ninterface PricingCoverageBase {\n readonly coverageId: PricingCoverageId;\n readonly selector: PricingSelector;\n readonly effective: PricingEffectiveCondition;\n}\nexport interface PricedCoverage extends PricingCoverageBase {\n readonly state: \"priced\";\n readonly charges: readonly [\n PricingCharge,\n ...PricingCharge[]\n ];\n}\nexport interface UnpricedCoverage extends PricingCoverageBase {\n readonly state: \"unpriced\";\n readonly reason: \"provider-not-priced\" | \"billing-mode-not-priced\" | \"rate-not-published\";\n}\nexport type PricingCoverage = PricedCoverage | UnpricedCoverage;\nexport interface PricedCoverageInput {\n readonly coverageId: string;\n readonly state: \"priced\";\n readonly selector: PricingSelectorInput;\n readonly effective: PricingEffectiveConditionInput;\n readonly charges: readonly [\n PricingChargeInput,\n ...PricingChargeInput[]\n ];\n}\nexport interface UnpricedCoverageInput {\n readonly coverageId: string;\n readonly state: \"unpriced\";\n readonly selector: PricingSelectorInput;\n readonly effective: PricingEffectiveConditionInput;\n readonly reason: \"provider-not-priced\" | \"billing-mode-not-priced\" | \"rate-not-published\";\n}\nexport type PricingCoverageInput = PricedCoverageInput | UnpricedCoverageInput;\ninterface PricingProfileCanonicalContent {\n readonly version: 1;\n readonly currency: \"USD\";\n readonly display: PricingDisplay;\n readonly provenance: PricingProvenance;\n readonly coverage: readonly PricingCoverage[];\n}\ninterface PricingProfileDescriptorValue {\n readonly version: 1;\n readonly contentIdentity: PricingProfileContentIdentity;\n readonly content: PricingProfileCanonicalContent;\n}\n/**\n * v1 profile data is direct and data-only. The global Symbol descriptor lets\n * another ESM/CJS instance revalidate the exact same frozen canonical value.\n */\nexport interface PricingProfile {\n readonly contentIdentity: PricingProfileContentIdentity;\n readonly currency: \"USD\";\n readonly display: PricingDisplay;\n readonly provenance: PricingProvenance;\n readonly coverage: readonly PricingCoverage[];\n readonly [PricingProfileDescriptor]: PricingProfileDescriptorValue;\n}\nexport interface PricingProfileInput {\n readonly currency: \"USD\";\n readonly display: PricingDisplayInput;\n readonly provenance: PricingProvenanceInput;\n readonly coverage: readonly PricingCoverageInput[];\n}\nexport type CostProjectionState = \"available\" | \"partial\" | \"unavailable\";\nexport type CostBasis = \"observed\" | \"estimated\" | \"mixed\" | \"unavailable\";\nexport interface ProjectedMoney {\n readonly amount: CanonicalDecimal;\n readonly currency: CurrencyCode;\n readonly decimalPlaces: number;\n}\n/** Closed, auditable profile facts without a source object or calculator. */\nexport interface CostProjectionProfile {\n readonly contentIdentity: PricingProfileContentIdentity;\n readonly currency: CurrencyCode;\n readonly display: PricingDisplay;\n readonly provenance: PricingProvenance;\n readonly coverage: readonly PricingCoverage[];\n}\nexport type CostCoverageReasonCode = \"member-not-recorded\" | \"core-invalid\" | \"origin-run-unavailable\" | \"execution-model-not-recorded\" | \"usage-not-recorded\" | \"usage-unavailable\" | \"usage-unsupported\" | \"usage-invalid\" | \"usage-collection-partial\" | \"pricing-coverage-not-found\" | \"pricing-coverage-unpriced\" | \"pricing-charge-not-found\" | \"observed-cost-other-currency\";\nexport interface CostCoverageReason {\n readonly slot: import(\"./contracts.ts\").AnalysisSlotRef;\n readonly provider: SafeIdentifier | null;\n readonly code: CostCoverageReasonCode;\n}\nexport interface ObservedCostComponent {\n readonly kind: \"provider-cost\";\n readonly provider: SafeIdentifier;\n readonly currency: CurrencyCode;\n readonly amount: CanonicalDecimal;\n}\nexport interface EstimatedTokenCostComponent {\n readonly kind: \"token\";\n readonly provider: SafeIdentifier;\n readonly bucket: IndependentlyBillableTokenBucket;\n readonly tokens: number;\n readonly ratePerMillionTokens: CanonicalDecimal;\n readonly amount: CanonicalDecimal;\n}\nexport interface EstimatedRequestCostComponent {\n readonly kind: \"request\";\n readonly provider: SafeIdentifier;\n readonly requestKind: \"model\" | \"tool\";\n readonly ratePerRequest: CanonicalDecimal;\n readonly amount: CanonicalDecimal;\n}\nexport type CostComponent = ObservedCostComponent | EstimatedTokenCostComponent | EstimatedRequestCostComponent;\nexport interface ObservedOtherCurrency {\n readonly provider: SafeIdentifier;\n readonly currency: CurrencyCode;\n readonly amount: CanonicalDecimal;\n}\n/** One Slot/provider branch; observed and estimated facts never mix in it. */\nexport type CostLedgerEntry = {\n readonly slot: import(\"./contracts.ts\").AnalysisSlotRef;\n readonly provider: SafeIdentifier | null;\n readonly branch: \"observed\";\n readonly components: readonly [\n ObservedCostComponent,\n ...ObservedCostComponent[]\n ];\n readonly estimated: null;\n} | {\n readonly slot: import(\"./contracts.ts\").AnalysisSlotRef;\n readonly provider: SafeIdentifier;\n readonly branch: \"estimated\";\n readonly components: readonly (EstimatedTokenCostComponent | EstimatedRequestCostComponent)[];\n readonly estimated: ProjectedMoney;\n} | {\n readonly slot: import(\"./contracts.ts\").AnalysisSlotRef;\n readonly provider: SafeIdentifier | null;\n readonly branch: \"unavailable\";\n readonly components: readonly [\n ];\n readonly estimated: null;\n};\n/** Exact aggregation before any display / Number conversion. */\nexport type CostProjectionAggregate = {\n readonly kind: \"mean\";\n /** Canonical USD subtotal before division or display rounding. */\n readonly numerator: CanonicalDecimal;\n /** Slots with a known quote-currency subtotal, never full denominator. */\n readonly denominator: number;\n} | {\n readonly kind: \"total\";\n /** Canonical USD subtotal before display rounding. */\n readonly total: CanonicalDecimal;\n};\ninterface CostProjectionCommon {\n readonly profile: CostProjectionProfile;\n readonly aggregate: CostProjectionAggregate;\n readonly observedOtherCurrencies: readonly ObservedOtherCurrency[];\n readonly reasons: readonly CostCoverageReason[];\n readonly ledger: readonly CostLedgerEntry[];\n}\nexport interface CostProjectionKnown extends CostProjectionCommon {\n readonly state: \"available\" | \"partial\";\n readonly basis: Exclude<CostBasis, \"unavailable\">;\n readonly observed: ProjectedMoney | null;\n readonly estimated: ProjectedMoney | null;\n readonly combined: ProjectedMoney;\n}\nexport interface CostProjectionUnavailable extends CostProjectionCommon {\n readonly state: \"unavailable\";\n readonly basis: \"unavailable\";\n readonly observed: null;\n readonly estimated: null;\n readonly combined: null;\n}\nexport type CostProjectionValue = CostProjectionKnown | CostProjectionUnavailable;\n/** A normal MetricValue with a closed cost domain value attached. */\nexport interface CostMetricValue extends MetricValue<number> {\n readonly state: CostProjectionState;\n readonly format: \"currency-usd\";\n readonly better: \"lower\";\n readonly projection: CostProjectionValue;\n}\ninterface CostMeasureDescriptorValue {\n readonly version: 1;\n readonly mode: \"mean\" | \"total\";\n readonly profile: PricingProfile;\n readonly profileIdentity: PricingProfileContentIdentity;\n}\n/** A Measure whose data descriptor binds it to exactly one validated Profile. */\nexport interface CostMeasure extends Measure<LogicalSlot, number> {\n readonly [CostMeasureDescriptor]: CostMeasureDescriptorValue;\n}\ntype CostMeasureMode = CostMeasureDescriptorValue[\"mode\"];\nconst utf8 = new TextEncoder();\n/** Defines, deeply freezes, canonically sorts, and content-addresses one USD Profile. */\nexport function definePricingProfile(input: PricingProfileInput): PricingProfile {\n const content = normalizeProfileContent(input);\n const identity = contentIdentityFor(content);\n const descriptor = Object.freeze({\n version: 1 as const,\n contentIdentity: identity,\n content,\n });\n const profile = Object.create(null) as PricingProfile;\n Object.assign(profile, {\n contentIdentity: identity,\n currency: content.currency,\n display: content.display,\n provenance: content.provenance,\n coverage: content.coverage,\n });\n Object.defineProperty(profile, PricingProfileDescriptor, {\n value: descriptor,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n Object.freeze(profile);\n validatedPricingProfiles.add(profile);\n return profile;\n}\ninterface BuiltInPriceEntry {\n readonly in: number;\n readonly out: number;\n readonly cacheRead?: number;\n readonly cacheWrite?: number;\n}\nconst builtInCatalog = loadBuiltInCatalog();\n/**\n * Identity-bearing Profile for NiceEval's complete vendored model catalog.\n * Resolution matches an exact model identifier and does not infer a billing\n * provider from an agent name. Missing models and buckets remain unpriced.\n */\nexport const builtInPricingProfile: PricingProfile = definePricingProfile({\n currency: \"USD\",\n display: { decimalPlaces: 6, rounding: \"half-away-from-zero\" },\n provenance: {\n kind: \"declared-rate-card\",\n source: `NiceEval vendored models.dev catalog ${builtInCatalog.digest}`,\n asOf: builtInCatalog.asOf,\n },\n coverage: [{\n coverageId: `niceeval-catalog-${builtInCatalog.digest.slice(\"sha256:\".length)}`,\n state: \"unpriced\",\n selector: { model: \"niceeval:built-in-catalog\" },\n effective: { startsAt: 0, endsAt: null },\n reason: \"rate-not-published\",\n }],\n});\n/** @internal Resolves one exact model from the catalog named by the built-in Profile. */\nexport function builtInPricingCoverage(model: string): PricedCoverage | undefined {\n const price = builtInCatalog.prices[model];\n if (price === undefined)\n return undefined;\n return normalizeCoverage({\n coverageId: `niceeval-catalog-model-${createHash(\"sha256\").update(model).digest(\"hex\")}`,\n state: \"priced\",\n selector: { model },\n effective: { startsAt: 0, endsAt: null },\n charges: catalogCharges(price, builtInCatalog.modelRequest),\n }, 0) as PricedCoverage;\n}\nfunction catalogCharges(price: BuiltInPriceEntry, modelRequest: number): readonly [\n PricingChargeInput,\n ...PricingChargeInput[]\n] {\n return [\n { kind: \"token\", bucket: \"input\", perMillionTokens: decimalFromPrice(price.in) },\n { kind: \"token\", bucket: \"output\", perMillionTokens: decimalFromPrice(price.out) },\n ...(price.cacheRead === undefined\n ? []\n : [{ kind: \"token\" as const, bucket: \"cache-read\", perMillionTokens: decimalFromPrice(price.cacheRead) }]),\n ...(price.cacheWrite === undefined\n ? []\n : [{ kind: \"token\" as const, bucket: \"cache-write\", perMillionTokens: decimalFromPrice(price.cacheWrite) }]),\n { kind: \"request\", requestKind: \"model\", ratePerRequest: decimalFromPrice(modelRequest) },\n ];\n}\nfunction loadBuiltInCatalog(): {\n readonly digest: string;\n readonly asOf: number;\n readonly modelRequest: number;\n readonly prices: Record<string, BuiltInPriceEntry>;\n} {\n const raw = readFileSync(fileURLToPath(new URL(\"../o11y/prices.json\", __niceevalImportMetaUrl)), \"utf8\");\n const parsed = JSON.parse(raw) as {\n readonly $asOf?: number;\n readonly $modelRequest?: number;\n readonly prices?: Record<string, BuiltInPriceEntry>;\n };\n if (parsed.prices === undefined || Object.keys(parsed.prices).length === 0 ||\n typeof parsed.$asOf !== \"number\" || !isUtcMillis(parsed.$asOf) ||\n typeof parsed.$modelRequest !== \"number\") {\n throw pricingError(\"built-in pricing catalog metadata is invalid\");\n }\n return Object.freeze({\n digest: `sha256:${createHash(\"sha256\").update(raw).digest(\"hex\")}`,\n asOf: parsed.$asOf,\n modelRequest: parsed.$modelRequest,\n prices: parsed.prices,\n });\n}\nfunction decimalFromPrice(value: number): string {\n if (!Number.isFinite(value) || value < 0)\n throw pricingError(\"built-in catalog price must be non-negative and finite\");\n const decimal = String(value);\n if (!isCanonicalDecimal(decimal))\n throw pricingError(`built-in catalog price ${decimal} is not canonical`);\n return decimal;\n}\n/** @internal\n * Locally created or already revalidated Profiles use a WeakSet fast path.\n * A value from another package graph must first pass the global Symbol data\n * descriptor, recursive freezing, canonical content, and SHA-256 checks.\n */\nexport function isPricingProfile(value: unknown): value is PricingProfile {\n if (typeof value === \"object\" && value !== null && validatedPricingProfiles.has(value))\n return true;\n if (!isPlainObject(value) || !isDeeplyFrozen(value))\n return false;\n if (!hasExactOwnKeys(value, [\"contentIdentity\", \"currency\", \"display\", \"provenance\", \"coverage\"], [PricingProfileDescriptor])) {\n return false;\n }\n const descriptor = dataDescriptorValue<PricingProfileDescriptorValue>(value, PricingProfileDescriptor);\n if (descriptor === undefined || !isDeeplyFrozen(descriptor))\n return false;\n if (!hasExactOwnKeys(descriptor, [\"version\", \"contentIdentity\", \"content\"]))\n return false;\n try {\n if (descriptor.version !== 1 || typeof value.contentIdentity !== \"string\")\n return false;\n if (value.contentIdentity !== descriptor.contentIdentity)\n return false;\n const content = normalizeProfileContent({\n currency: value.currency,\n display: value.display,\n provenance: value.provenance,\n coverage: value.coverage,\n });\n if (canonicalJson(content) !== canonicalJson(descriptor.content))\n return false;\n if (contentIdentityFor(content) !== value.contentIdentity)\n return false;\n validatedPricingProfiles.add(value);\n return true;\n }\n catch {\n return false;\n }\n}\n/**\n * @internal Validates one already-closed cost projection without rebuilding a\n * price, a ledger, or a numeric result. Report imports this internal guard so\n * every deep cost-domain rule remains owned by Analysis.\n */\nexport function isCostProjectionValue(value: unknown): value is CostProjectionValue {\n if (!isPlainObject(value) || !isDeeplyFrozen(value) || !hasExactOwnKeys(value, COST_PROJECTION_FIELDS)) {\n return false;\n }\n const projection = value as Readonly<Record<string, unknown>>;\n const profile = projection.profile;\n if (!isClosedCostProjectionProfile(profile) || !isCostProjectionAggregate(projection.aggregate) ||\n !isClosedDataArray(projection.observedOtherCurrencies) ||\n !projection.observedOtherCurrencies.every(isObservedOtherCurrency) ||\n !isClosedDataArray(projection.reasons) || !projection.reasons.every(isCostCoverageReason) ||\n !isClosedDataArray(projection.ledger) ||\n !projection.ledger.every((entry) => isCostLedgerEntry(entry, profile))) {\n return false;\n }\n if (projection.state === \"unavailable\") {\n return projection.basis === \"unavailable\" && projection.observed === null &&\n projection.estimated === null && projection.combined === null;\n }\n if (projection.state !== \"available\" && projection.state !== \"partial\" ||\n !isNullableProjectedMoney(projection.observed, profile) ||\n !isNullableProjectedMoney(projection.estimated, profile) ||\n !isProjectedMoney(projection.combined, profile)) {\n return false;\n }\n return projection.observed !== null && projection.estimated !== null\n ? projection.basis === \"mixed\"\n : projection.observed !== null\n ? projection.basis === \"observed\"\n : projection.estimated !== null && projection.basis === \"estimated\";\n}\nconst COST_PROJECTION_FIELDS = Object.freeze([\n \"state\",\n \"basis\",\n \"profile\",\n \"aggregate\",\n \"observedOtherCurrencies\",\n \"reasons\",\n \"ledger\",\n \"observed\",\n \"estimated\",\n \"combined\",\n] as const);\nconst COST_COVERAGE_REASON_CODES = new Set<CostCoverageReason[\"code\"]>([\n \"member-not-recorded\",\n \"core-invalid\",\n \"origin-run-unavailable\",\n \"execution-model-not-recorded\",\n \"usage-not-recorded\",\n \"usage-unavailable\",\n \"usage-unsupported\",\n \"usage-invalid\",\n \"usage-collection-partial\",\n \"pricing-coverage-not-found\",\n \"pricing-coverage-unpriced\",\n \"pricing-charge-not-found\",\n \"observed-cost-other-currency\",\n]);\n/** The projection profile is descriptor-free data, so canonicalize it here. */\nfunction isClosedCostProjectionProfile(value: unknown): value is CostProjectionProfile {\n if (!isPlainObject(value) || !hasExactOwnKeys(value, [\"contentIdentity\", \"currency\", \"display\", \"provenance\", \"coverage\"])) {\n return false;\n }\n const profile = value as Readonly<Record<string, unknown>>;\n if (typeof profile.contentIdentity !== \"string\")\n return false;\n try {\n const content = normalizeProfileContent({\n currency: profile.currency,\n display: profile.display,\n provenance: profile.provenance,\n coverage: profile.coverage,\n });\n const supplied = Object.freeze({\n version: 1,\n currency: profile.currency,\n display: profile.display,\n provenance: profile.provenance,\n coverage: profile.coverage,\n });\n return canonicalJson(content) === canonicalJson(supplied) &&\n contentIdentityFor(content) === profile.contentIdentity;\n }\n catch {\n return false;\n }\n}\nfunction isCostProjectionAggregate(value: unknown): boolean {\n if (!isPlainObject(value))\n return false;\n if (value.kind === \"mean\") {\n return hasExactOwnKeys(value, [\"kind\", \"numerator\", \"denominator\"]) &&\n isCanonicalDecimalValue(value.numerator) && isNonNegativeSafeInteger(value.denominator);\n }\n return value.kind === \"total\" && hasExactOwnKeys(value, [\"kind\", \"total\"]) &&\n isCanonicalDecimalValue(value.total);\n}\nfunction isNullableProjectedMoney(value: unknown, profile: CostProjectionProfile): boolean {\n return value === null || isProjectedMoney(value, profile);\n}\nfunction isProjectedMoney(value: unknown, profile: CostProjectionProfile): boolean {\n if (!isPlainObject(value) || !hasExactOwnKeys(value, [\"amount\", \"currency\", \"decimalPlaces\"]))\n return false;\n return isCanonicalDecimalValue(value.amount) && value.currency === profile.currency &&\n typeof value.currency === \"string\" && isCurrencyCode(value.currency) &&\n value.decimalPlaces === profile.display.decimalPlaces;\n}\nfunction isObservedOtherCurrency(value: unknown): boolean {\n return isPlainObject(value) && hasExactOwnKeys(value, [\"provider\", \"currency\", \"amount\"]) &&\n typeof value.provider === \"string\" && isSafeIdentifier(value.provider) &&\n typeof value.currency === \"string\" && isCurrencyCode(value.currency) && isCanonicalDecimalValue(value.amount);\n}\nfunction isCostCoverageReason(value: unknown): boolean {\n return isPlainObject(value) && hasExactOwnKeys(value, [\"slot\", \"provider\", \"code\"]) &&\n isAnalysisSlotRef(value.slot) &&\n (value.provider === null || (typeof value.provider === \"string\" && isSafeIdentifier(value.provider))) &&\n typeof value.code === \"string\" && COST_COVERAGE_REASON_CODES.has(value.code as CostCoverageReason[\"code\"]);\n}\nfunction isCostLedgerEntry(value: unknown, profile: CostProjectionProfile): boolean {\n if (!isPlainObject(value) || !hasExactOwnKeys(value, [\"slot\", \"provider\", \"branch\", \"components\", \"estimated\"]) ||\n !isAnalysisSlotRef(value.slot) || !isClosedDataArray(value.components)) {\n return false;\n }\n if (value.branch === \"observed\") {\n const provider = value.provider;\n if (typeof provider !== \"string\" || !isSafeIdentifier(provider) ||\n value.estimated !== null || value.components.length === 0)\n return false;\n return value.components.every((component) => isObservedCostComponent(component, provider));\n }\n if (value.branch === \"estimated\") {\n const provider = value.provider;\n if (typeof provider !== \"string\" || !isSafeIdentifier(provider) ||\n value.components.length === 0 || !isProjectedMoney(value.estimated, profile))\n return false;\n return value.components.every((component) => isEstimatedCostComponent(component, provider));\n }\n return value.branch === \"unavailable\" &&\n (value.provider === null || (typeof value.provider === \"string\" && isSafeIdentifier(value.provider))) &&\n value.components.length === 0 && value.estimated === null;\n}\nfunction isObservedCostComponent(value: unknown, provider: string): boolean {\n return isPlainObject(value) && hasExactOwnKeys(value, [\"kind\", \"provider\", \"currency\", \"amount\"]) &&\n value.kind === \"provider-cost\" && value.provider === provider &&\n typeof value.currency === \"string\" && isCurrencyCode(value.currency) && isCanonicalDecimalValue(value.amount);\n}\nfunction isEstimatedCostComponent(value: unknown, provider: string): boolean {\n if (!isPlainObject(value))\n return false;\n if (value.kind === \"token\") {\n return hasExactOwnKeys(value, [\"kind\", \"provider\", \"bucket\", \"tokens\", \"ratePerMillionTokens\", \"amount\"]) &&\n value.provider === provider && typeof value.bucket === \"string\" && isIndependentlyBillableTokenBucket(value.bucket) &&\n isNonNegativeSafeInteger(value.tokens) && isCanonicalDecimalValue(value.ratePerMillionTokens) &&\n isCanonicalDecimalValue(value.amount);\n }\n return value.kind === \"request\" &&\n hasExactOwnKeys(value, [\"kind\", \"provider\", \"requestKind\", \"ratePerRequest\", \"amount\"]) &&\n value.provider === provider && (value.requestKind === \"model\" || value.requestKind === \"tool\") &&\n isCanonicalDecimalValue(value.ratePerRequest) && isCanonicalDecimalValue(value.amount);\n}\nfunction isAnalysisSlotRef(value: unknown): boolean {\n if (!isPlainObject(value) || !hasExactOwnKeys(value, [\n \"runId\",\n \"slotId\",\n \"experimentId\",\n \"evalId\",\n \"attemptOrdinal\",\n \"executionIdentityDigest\",\n ]))\n return false;\n return typeof value.runId === \"string\" && isPortableSegment(value.runId) &&\n typeof value.slotId === \"string\" && isPortableSegment(value.slotId) &&\n typeof value.experimentId === \"string\" && isRecordDomainIdentity(value.experimentId) &&\n typeof value.evalId === \"string\" && isRecordDomainIdentity(value.evalId) &&\n isNonNegativeSafeInteger(value.attemptOrdinal) &&\n typeof value.executionIdentityDigest === \"string\" && isSha256Digest(value.executionIdentityDigest);\n}\nfunction isClosedDataArray(value: unknown): value is readonly unknown[] {\n try {\n dataArrayValues(value, \"CostProjection\");\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isCanonicalDecimalValue(value: unknown): value is CanonicalDecimal {\n return typeof value === \"string\" && isCanonicalDecimal(value);\n}\nfunction isNonNegativeSafeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n/** Mean known USD cost per logical Slot for exactly one Profile. */\nexport function costUSD(profile: PricingProfile): CostMeasure {\n return defineCostMeasure(profile, \"mean\");\n}\n/** Total known USD cost across logical Slots for exactly one Profile. */\nexport function totalCostUSD(profile: PricingProfile): CostMeasure {\n return defineCostMeasure(profile, \"total\");\n}\n/** @internal Revalidates a local or external CostMeasure data descriptor. */\nexport function costMeasureState(value: unknown): CostMeasureDescriptorValue | undefined {\n if (!isPlainObject(value) || !isDeeplyFrozen(value))\n return undefined;\n const descriptor = dataDescriptorValue<CostMeasureDescriptorValue>(value, CostMeasureDescriptor);\n if (descriptor === undefined || !isDeeplyFrozen(descriptor))\n return undefined;\n if (!hasExactOwnKeys(descriptor, [\"version\", \"mode\", \"profile\", \"profileIdentity\"]))\n return undefined;\n if (descriptor.version !== 1 || (descriptor.mode !== \"mean\" && descriptor.mode !== \"total\"))\n return undefined;\n if (!isPricingProfile(descriptor.profile) || descriptor.profile.contentIdentity !== descriptor.profileIdentity)\n return undefined;\n if (value.kind !== \"measure\" || typeof value.id !== \"string\")\n return undefined;\n const expectedId = descriptor.mode === \"mean\"\n ? `niceeval.cost-usd:${descriptor.profileIdentity}`\n : `niceeval.total-cost-usd:${descriptor.profileIdentity}`;\n if (value.id !== expectedId)\n return undefined;\n return descriptor;\n}\n/** @internal A structural cross-instance guard; it never infers a Profile from `id`. */\nexport function isCostMeasure(value: unknown): value is CostMeasure {\n return costMeasureState(value) !== undefined;\n}\n/** @internal Closes only immutable profile data for renderer consumption. */\nexport function closeCostProjectionProfile(profile: PricingProfile): CostProjectionProfile {\n assertPricingProfile(profile);\n return Object.freeze({\n contentIdentity: profile.contentIdentity,\n currency: profile.currency as CurrencyCode,\n display: profile.display,\n provenance: profile.provenance,\n coverage: profile.coverage,\n });\n}\n/** @internal Tests immutable Attempt-origin Core facts against a Profile coverage. */\nexport function pricingCoverageMatches(coverage: PricingCoverage, input: {\n readonly provider: SafeIdentifier;\n readonly origin: {\n readonly startedAt: UtcMillis;\n readonly executionIdentityDigest: ExecutionIdentityDigest;\n readonly execution: {\n readonly agentId: string;\n readonly model: string | null;\n readonly reasoningEffort: string | null;\n };\n };\n}): boolean {\n const selector = coverage.selector;\n return (selector.provider === undefined || selector.provider === input.provider)\n && selector.model === input.origin.execution.model\n && (selector.agentId === undefined || selector.agentId === input.origin.execution.agentId)\n && (selector.reasoningEffort === undefined || selector.reasoningEffort === input.origin.execution.reasoningEffort)\n && (selector.executionIdentityDigest === undefined || selector.executionIdentityDigest === input.origin.executionIdentityDigest)\n && input.origin.startedAt >= coverage.effective.startsAt\n && (coverage.effective.endsAt === null || input.origin.startedAt < coverage.effective.endsAt);\n}\nfunction defineCostMeasure(profile: PricingProfile, mode: CostMeasureMode): CostMeasure {\n assertPricingProfile(profile);\n const base = createOpaqueMeasure<LogicalSlot, number>({\n id: mode === \"mean\"\n ? `niceeval.cost-usd:${profile.contentIdentity}`\n : `niceeval.total-cost-usd:${profile.contentIdentity}`,\n population: logicalSlots,\n format: \"currency-usd\",\n better: \"lower\",\n });\n const descriptor = Object.freeze({\n version: 1 as const,\n mode,\n profile,\n profileIdentity: profile.contentIdentity,\n });\n const measure = { ...base } as CostMeasure;\n Object.defineProperty(measure, CostMeasureDescriptor, {\n value: descriptor,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n Object.freeze(measure);\n return measure;\n}\nfunction assertPricingProfile(value: unknown): asserts value is PricingProfile {\n if (!isPricingProfile(value))\n throw pricingError(\"cost measures require a validated PricingProfile\");\n}\nfunction normalizeProfileContent(input: unknown): PricingProfileCanonicalContent {\n requireExactObject(input, [\"currency\", \"display\", \"provenance\", \"coverage\"], \"PricingProfile\");\n if (input.currency !== \"USD\" || !isCurrencyCode(input.currency)) {\n throw pricingError(\"currency must be USD in v1\");\n }\n const coverageInput = dataArrayValues(input.coverage, \"PricingProfile coverage\");\n if (coverageInput.length === 0) {\n throw pricingError(\"coverage must be a non-empty array\");\n }\n const coverage = coverageInput.map((value, index) => normalizeCoverage(value, index));\n const coverageIds = new Set<string>();\n for (const value of coverage) {\n if (coverageIds.has(value.coverageId))\n throw pricingError(`coverageId ${value.coverageId} is duplicated`);\n coverageIds.add(value.coverageId);\n }\n rejectOverlappingCoverage(coverage);\n return Object.freeze({\n version: 1 as const,\n currency: \"USD\" as const,\n display: normalizeDisplay(input.display),\n provenance: normalizeProvenance(input.provenance),\n coverage: Object.freeze([...coverage].sort(compareCoverage)),\n });\n}\nfunction normalizeDisplay(value: unknown): PricingDisplay {\n requireExactObject(value, [\"decimalPlaces\", \"rounding\"], \"PricingProfile display\");\n if (typeof value.decimalPlaces !== \"number\" || !Number.isSafeInteger(value.decimalPlaces) || value.decimalPlaces < 0 || value.decimalPlaces > 9) {\n throw pricingError(\"display decimalPlaces must be an integer from 0 through 9\");\n }\n if (value.rounding !== \"half-away-from-zero\") {\n throw pricingError(\"display rounding must be half-away-from-zero\");\n }\n return Object.freeze({\n decimalPlaces: value.decimalPlaces as PricingDisplay[\"decimalPlaces\"],\n rounding: value.rounding,\n });\n}\nfunction normalizeProvenance(value: unknown): PricingProvenance {\n requireExactObject(value, [\"kind\", \"source\", \"asOf\"], \"PricingProfile provenance\");\n if (value.kind !== \"declared-rate-card\") {\n throw pricingError(\"provenance kind must be declared-rate-card\");\n }\n return Object.freeze({\n kind: \"declared-rate-card\" as const,\n source: normalizeText(value.source, \"provenance source\"),\n asOf: normalizeUtcMillis(value.asOf, \"provenance asOf\"),\n });\n}\nfunction normalizeCoverage(value: unknown, index: number): PricingCoverage {\n if (!isPlainObject(value))\n throw pricingError(`coverage ${index} must be a plain object`);\n const state = ownDataValue(value, \"state\", `coverage ${index}`);\n if (state === \"priced\") {\n requireExactObject(value, [\"coverageId\", \"state\", \"selector\", \"effective\", \"charges\"], `coverage ${index}`);\n const chargesInput = dataArrayValues(value.charges, `coverage ${index} priced charges`);\n if (chargesInput.length === 0) {\n throw pricingError(`coverage ${index} priced charges must be non-empty`);\n }\n const charges = chargesInput.map((charge, chargeIndex) => normalizeCharge(charge, index, chargeIndex));\n const chargeKeys = new Set<string>();\n for (const charge of charges) {\n const key = charge.kind === \"token\" ? `token:${charge.bucket}` : `request:${charge.requestKind}`;\n if (chargeKeys.has(key))\n throw pricingError(`coverage ${index} has duplicate ${key} charge`);\n chargeKeys.add(key);\n }\n return Object.freeze({\n coverageId: normalizeCoverageId(value.coverageId, index),\n state: \"priced\" as const,\n selector: normalizeSelector(value.selector, index),\n effective: normalizeEffective(value.effective, index),\n charges: Object.freeze([...charges].sort(compareCharge)) as readonly [\n PricingCharge,\n ...PricingCharge[]\n ],\n });\n }\n if (state === \"unpriced\") {\n requireExactObject(value, [\"coverageId\", \"state\", \"selector\", \"effective\", \"reason\"], `coverage ${index}`);\n if (value.reason !== \"provider-not-priced\" && value.reason !== \"billing-mode-not-priced\" && value.reason !== \"rate-not-published\") {\n throw pricingError(`coverage ${index} has an unrecognized unpriced reason`);\n }\n return Object.freeze({\n coverageId: normalizeCoverageId(value.coverageId, index),\n state: \"unpriced\" as const,\n selector: normalizeSelector(value.selector, index),\n effective: normalizeEffective(value.effective, index),\n reason: value.reason,\n });\n }\n throw pricingError(`coverage ${index} state must be priced or unpriced`);\n}\nfunction normalizeCoverageId(value: unknown, index: number): PricingCoverageId {\n return normalizeText(value, `coverage ${index} coverageId`) as PricingCoverageId;\n}\nfunction normalizeSelector(value: unknown, index: number): PricingSelector {\n requireExactObject(value, [\"provider\", \"model\", \"agentId\", \"reasoningEffort\", \"executionIdentityDigest\"], `coverage ${index} selector`, [\"provider\", \"agentId\", \"reasoningEffort\", \"executionIdentityDigest\"]);\n if (value.provider !== undefined && (typeof value.provider !== \"string\" || !isSafeIdentifier(value.provider))) {\n throw pricingError(`coverage ${index} selector provider must be a SafeIdentifier`);\n }\n return Object.freeze({\n ...(value.provider === undefined ? {} : { provider: value.provider }),\n model: normalizeText(value.model, `coverage ${index} selector model`),\n ...(value.agentId === undefined\n ? {}\n : { agentId: normalizeText(value.agentId, `coverage ${index} selector agentId`) }),\n ...(value.reasoningEffort === undefined\n ? {}\n : value.reasoningEffort === null\n ? { reasoningEffort: null }\n : { reasoningEffort: normalizeText(value.reasoningEffort, `coverage ${index} selector reasoningEffort`) }),\n ...(value.executionIdentityDigest === undefined\n ? {}\n : { executionIdentityDigest: normalizeExecutionIdentityDigest(value.executionIdentityDigest, index) }),\n });\n}\nfunction normalizeExecutionIdentityDigest(value: unknown, index: number): ExecutionIdentityDigest {\n if (typeof value !== \"string\" || !isSha256Digest(value)) {\n throw pricingError(`coverage ${index} selector executionIdentityDigest must be SHA-256 hex`);\n }\n return value as ExecutionIdentityDigest;\n}\nfunction normalizeEffective(value: unknown, index: number): PricingEffectiveCondition {\n requireExactObject(value, [\"startsAt\", \"endsAt\"], `coverage ${index} effective`);\n const startsAt = normalizeUtcMillis(value.startsAt, `coverage ${index} effective startsAt`);\n const endsAt = value.endsAt === null ? null : normalizeUtcMillis(value.endsAt, `coverage ${index} effective endsAt`);\n if (endsAt !== null && endsAt <= startsAt) {\n throw pricingError(`coverage ${index} effective endsAt must be after startsAt`);\n }\n return Object.freeze({ startsAt, endsAt });\n}\nfunction normalizeCharge(value: unknown, coverageIndex: number, chargeIndex: number): PricingCharge {\n if (!isPlainObject(value))\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} must be a plain object`);\n const kind = ownDataValue(value, \"kind\", `coverage ${coverageIndex} charge ${chargeIndex}`);\n if (kind === \"token\") {\n requireExactObject(value, [\"kind\", \"bucket\", \"perMillionTokens\"], `coverage ${coverageIndex} charge ${chargeIndex}`);\n if (typeof value.bucket !== \"string\" || !isIndependentlyBillableTokenBucket(value.bucket)) {\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} token bucket must be one of ${INDEPENDENTLY_BILLABLE_TOKEN_BUCKETS.join(\", \")}`);\n }\n return Object.freeze({\n kind: \"token\" as const,\n bucket: value.bucket,\n perMillionTokens: normalizeDecimal(value.perMillionTokens, coverageIndex, chargeIndex, \"perMillionTokens\"),\n });\n }\n if (kind === \"request\") {\n requireExactObject(value, [\"kind\", \"requestKind\", \"ratePerRequest\"], `coverage ${coverageIndex} charge ${chargeIndex}`);\n if (value.requestKind !== \"model\" && value.requestKind !== \"tool\") {\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} requestKind must be model or tool`);\n }\n return Object.freeze({\n kind: \"request\" as const,\n requestKind: value.requestKind,\n ratePerRequest: normalizeDecimal(value.ratePerRequest, coverageIndex, chargeIndex, \"ratePerRequest\"),\n });\n }\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} kind must be token or request`);\n}\nfunction normalizeDecimal(value: unknown, coverageIndex: number, chargeIndex: number, field: string): CanonicalDecimal {\n if (typeof value !== \"string\" || !isCanonicalDecimal(value)) {\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} ${field} must be canonical decimal`);\n }\n return value as CanonicalDecimal;\n}\nfunction normalizeUtcMillis(value: unknown, name: string): UtcMillis {\n if (typeof value !== \"number\" || !isUtcMillis(value))\n throw pricingError(`${name} must be UTC milliseconds`);\n return value as UtcMillis;\n}\nfunction normalizeText(value: unknown, name: string): string {\n if (typeof value !== \"string\" || value.length === 0 || value.trim() !== value || !isStrictUnicodeText(value) || utf8ByteLength(value) > 8192) {\n throw pricingError(`${name} must be non-empty, trimmed, bounded Unicode text`);\n }\n return value;\n}\nfunction rejectOverlappingCoverage(coverage: readonly PricingCoverage[]): void {\n const byModel = new Map<string, PricingCoverage[]>();\n for (const entry of coverage) {\n const entries = byModel.get(entry.selector.model);\n if (entries === undefined)\n byModel.set(entry.selector.model, [entry]);\n else\n entries.push(entry);\n }\n for (const entries of byModel.values()) {\n for (let left = 0; left < entries.length; left += 1) {\n for (let right = left + 1; right < entries.length; right += 1) {\n const first = entries[left]!;\n const second = entries[right]!;\n if (selectorsCanMatchSameOrigin(first.selector, second.selector) && effectiveIntervalsOverlap(first.effective, second.effective)) {\n throw pricingError(`coverage ${first.coverageId} overlaps ${second.coverageId} for a selector that can match the same origin`);\n }\n }\n }\n }\n}\nfunction selectorsCanMatchSameOrigin(left: PricingSelector, right: PricingSelector): boolean {\n return optionalSelectorDimensionOverlaps(left.provider, right.provider)\n && left.model === right.model\n && optionalSelectorDimensionOverlaps(left.agentId, right.agentId)\n && optionalSelectorDimensionOverlaps(left.reasoningEffort, right.reasoningEffort)\n && optionalSelectorDimensionOverlaps(left.executionIdentityDigest, right.executionIdentityDigest);\n}\nfunction optionalSelectorDimensionOverlaps<Value>(left: Value | undefined, right: Value | undefined): boolean {\n return left === undefined || right === undefined || left === right;\n}\nfunction effectiveIntervalsOverlap(left: PricingEffectiveCondition, right: PricingEffectiveCondition): boolean {\n const latestStart = left.startsAt > right.startsAt ? left.startsAt : right.startsAt;\n const earliestEnd = left.endsAt === null\n ? right.endsAt\n : right.endsAt === null\n ? left.endsAt\n : left.endsAt < right.endsAt ? left.endsAt : right.endsAt;\n return earliestEnd === null || latestStart < earliestEnd;\n}\nfunction contentIdentityFor(content: PricingProfileCanonicalContent): PricingProfileContentIdentity {\n return `sha256:${createHash(\"sha256\").update(canonicalJson(content)).digest(\"hex\")}` as PricingProfileContentIdentity;\n}\nfunction compareCoverage(left: PricingCoverage, right: PricingCoverage): number {\n return compareUtf8(canonicalJson(left), canonicalJson(right));\n}\nfunction compareCharge(left: PricingCharge, right: PricingCharge): number {\n const leftKey = left.kind === \"token\" ? `token:${left.bucket}` : `request:${left.requestKind}`;\n const rightKey = right.kind === \"token\" ? `token:${right.bucket}` : `request:${right.requestKind}`;\n return compareUtf8(leftKey, rightKey);\n}\nfunction canonicalJson(value: unknown): string {\n if (value === null || typeof value === \"boolean\" || typeof value === \"number\" || typeof value === \"string\") {\n return JSON.stringify(value);\n }\n if (Array.isArray(value))\n return canonicalArrayJson(value);\n if (!isPlainObject(value))\n throw pricingError(\"canonical Profile content must be JSON data\");\n const keys = Reflect.ownKeys(value);\n if (keys.some((key) => typeof key !== \"string\")) {\n throw pricingError(\"canonical Profile content cannot contain Symbol fields\");\n }\n return `{${(keys as string[])\n .sort(compareUtf8)\n .map((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw pricingError(\"canonical Profile content must use enumerable data fields\");\n }\n return `${JSON.stringify(key)}:${canonicalJson(descriptor.value)}`;\n })\n .join(\",\")}}`;\n}\nfunction canonicalArrayJson(value: readonly unknown[]): string {\n return `[${dataArrayValues(value, \"canonical Profile array\").map(canonicalJson).join(\",\")}]`;\n}\nfunction dataArrayValues(value: unknown, name: string): readonly unknown[] {\n if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype) {\n throw pricingError(`${name} must be a normal array`);\n }\n const ownKeys = Reflect.ownKeys(value);\n // A canonical JSON array has exactly its dense integer data fields and the\n // built-in length field. A frozen array can otherwise still carry hidden\n // strings, Symbols, holes, or accessors that identity encoding would miss.\n if (ownKeys.length !== value.length + 1) {\n throw pricingError(`${name} has extra fields or holes`);\n }\n const lengthDescriptor = Object.getOwnPropertyDescriptor(value, \"length\");\n if (lengthDescriptor === undefined || !(\"value\" in lengthDescriptor) || lengthDescriptor.enumerable || lengthDescriptor.value !== value.length) {\n throw pricingError(`${name} has an invalid length field`);\n }\n const values: unknown[] = [];\n for (let index = 0; index < value.length; index += 1) {\n const descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n if (descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw pricingError(`${name} must be dense data`);\n }\n values.push(descriptor.value);\n }\n return Object.freeze(values);\n}\nfunction compareUtf8(left: string, right: string): number {\n if (left === right)\n return 0;\n const first = utf8.encode(left);\n const second = utf8.encode(right);\n const length = Math.min(first.length, second.length);\n for (let index = 0; index < length; index += 1) {\n const difference = first[index]! - second[index]!;\n if (difference !== 0)\n return difference;\n }\n return first.length - second.length;\n}\nfunction requireExactObject(value: unknown, keys: readonly string[], name: string, optional: readonly string[] = []): asserts value is Record<string, unknown> {\n if (!isPlainObject(value))\n throw pricingError(`${name} must be a plain object`);\n const allowed = new Set(keys);\n const symbols = Object.getOwnPropertySymbols(value);\n if (symbols.length > 0)\n throw pricingError(`${name} has an unknown Symbol field`);\n const actual = Object.getOwnPropertyNames(value);\n if (actual.some((key) => !allowed.has(key)))\n throw pricingError(`${name} has an unknown field`);\n for (const key of actual) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw pricingError(`${name} field ${key} must be an enumerable data property`);\n }\n }\n for (const key of keys) {\n if (!optional.includes(key) && !Object.hasOwn(value, key))\n throw pricingError(`${name} is missing ${key}`);\n }\n}\nfunction ownDataValue(value: Record<string, unknown>, key: string, name: string): unknown {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw pricingError(`${name} is missing enumerable data field ${key}`);\n }\n return descriptor.value;\n}\nfunction hasExactOwnKeys(value: object, stringKeys: readonly string[], symbolKeys: readonly symbol[] = []): boolean {\n const actualStrings = Object.getOwnPropertyNames(value).sort(compareUtf8);\n const expectedStrings = [...stringKeys].sort(compareUtf8);\n if (actualStrings.length !== expectedStrings.length || actualStrings.some((key, index) => key !== expectedStrings[index]))\n return false;\n if (stringKeys.some((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable;\n }))\n return false;\n const actualSymbols = Object.getOwnPropertySymbols(value);\n return actualSymbols.length === symbolKeys.length && symbolKeys.every((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return actualSymbols.includes(key) && descriptor !== undefined && \"value\" in descriptor && !descriptor.enumerable;\n });\n}\nfunction dataDescriptorValue<Value>(value: object, key: symbol): Value | undefined {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || descriptor.enumerable || descriptor.configurable || descriptor.writable)\n return undefined;\n return descriptor.value as Value;\n}\nfunction isDeeplyFrozen(value: unknown, seen = new Set<object>()): boolean {\n if (typeof value !== \"object\" || value === null)\n return true;\n if (seen.has(value))\n return true;\n if (!Object.isFrozen(value))\n return false;\n seen.add(value);\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor))\n return false;\n if (!isDeeplyFrozen(descriptor.value, seen))\n return false;\n }\n return true;\n}\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\nfunction pricingError(message: string): Error {\n return new TypeError(`PricingProfile invalid: ${message}`);\n}\n"]}
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["cost.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { createOpaqueMeasure, logicalSlots, type LogicalSlot, type Measure, } from \"./definitions.ts\";\nimport type { MetricBasis, MetricValue, } from \"./contracts.ts\";\nimport type { CanonicalDecimal, CurrencyCode, SafeIdentifier, } from \"../o11y/record/model.ts\";\nimport { isCanonicalDecimal, isCurrencyCode, isSafeIdentifier, isStrictUnicodeText, utf8ByteLength, } from \"../o11y/record/model.ts\";\nimport type { ExecutionIdentityDigest, UtcMillis, } from \"../record/model/identifiers.ts\";\nimport { isPortableSegment, isRecordDomainIdentity, isSha256Digest, isUtcMillis, } from \"../record/model/identifiers.ts\";\nimport { INDEPENDENTLY_BILLABLE_TOKEN_BUCKETS, isIndependentlyBillableTokenBucket, type IndependentlyBillableTokenBucket, } from \"./cost-decimal.ts\";\n/** Cross-ESM/CJS v1 Profile descriptor. Its value is a frozen data record. */\nconst PricingProfileDescriptor: unique symbol = Symbol.for(\"niceeval.report.pricing-profile/v1\") as never;\n/** Cross-ESM/CJS v1 profile-bound Measure descriptor. */\nconst CostMeasureDescriptor: unique symbol = Symbol.for(\"niceeval.analysis.cost-measure/v1\") as never;\nconst validatedPricingProfiles = new WeakSet<object>();\ndeclare const pricingProfileContentIdentityTypeId: unique symbol;\ndeclare const pricingCoverageIdTypeId: unique symbol;\nexport type PricingProfileContentIdentity = string & {\n readonly [pricingProfileContentIdentityTypeId]: true;\n};\nexport type PricingCoverageId = string & {\n readonly [pricingCoverageIdTypeId]: true;\n};\nexport interface PricingDisplay {\n readonly decimalPlaces: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n readonly rounding: \"half-away-from-zero\";\n}\nexport interface PricingDisplayInput {\n readonly decimalPlaces: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n readonly rounding: \"half-away-from-zero\";\n}\n/** The declaration that made this rate card auditable. */\nexport interface PricingProvenance {\n readonly kind: \"declared-rate-card\";\n readonly source: string;\n readonly asOf: UtcMillis;\n}\nexport interface PricingProvenanceInput {\n readonly kind: \"declared-rate-card\";\n readonly source: string;\n readonly asOf: number;\n}\n/**\n * Every selector predicate reads the origin Attempt's closed Core projection.\n * Optional dimensions are explicit wildcards; model is required and never\n * inferred from current Report source, the selected target Run, or a provider.\n */\nexport interface PricingSelector {\n /** Omitted only by a model catalog entry whose quote is provider-neutral. */\n readonly provider?: SafeIdentifier;\n readonly model: string;\n readonly agentId?: string;\n readonly reasoningEffort?: string | null;\n readonly executionIdentityDigest?: ExecutionIdentityDigest;\n}\nexport interface PricingSelectorInput {\n readonly provider?: string;\n readonly model: string;\n readonly agentId?: string;\n readonly reasoningEffort?: string | null;\n readonly executionIdentityDigest?: string;\n}\nexport interface PricingEffectiveCondition {\n readonly startsAt: UtcMillis;\n readonly endsAt: UtcMillis | null;\n}\nexport interface PricingEffectiveConditionInput {\n readonly startsAt: number;\n readonly endsAt: number | null;\n}\nexport interface TokenPricingCharge {\n readonly kind: \"token\";\n readonly bucket: IndependentlyBillableTokenBucket;\n readonly perMillionTokens: CanonicalDecimal;\n}\nexport interface TokenPricingChargeInput {\n readonly kind: \"token\";\n readonly bucket: string;\n readonly perMillionTokens: string;\n}\nexport interface RequestPricingCharge {\n readonly kind: \"request\";\n readonly requestKind: \"model\" | \"tool\";\n readonly ratePerRequest: CanonicalDecimal;\n}\nexport interface RequestPricingChargeInput {\n readonly kind: \"request\";\n readonly requestKind: \"model\" | \"tool\";\n readonly ratePerRequest: string;\n}\nexport type PricingCharge = TokenPricingCharge | RequestPricingCharge;\nexport type PricingChargeInput = TokenPricingChargeInput | RequestPricingChargeInput;\ninterface PricingCoverageBase {\n readonly coverageId: PricingCoverageId;\n readonly selector: PricingSelector;\n readonly effective: PricingEffectiveCondition;\n}\nexport interface PricedCoverage extends PricingCoverageBase {\n readonly state: \"priced\";\n readonly charges: readonly [\n PricingCharge,\n ...PricingCharge[]\n ];\n}\nexport interface UnpricedCoverage extends PricingCoverageBase {\n readonly state: \"unpriced\";\n readonly reason: \"provider-not-priced\" | \"billing-mode-not-priced\" | \"rate-not-published\";\n}\nexport type PricingCoverage = PricedCoverage | UnpricedCoverage;\nexport interface PricedCoverageInput {\n readonly coverageId: string;\n readonly state: \"priced\";\n readonly selector: PricingSelectorInput;\n readonly effective: PricingEffectiveConditionInput;\n readonly charges: readonly [\n PricingChargeInput,\n ...PricingChargeInput[]\n ];\n}\nexport interface UnpricedCoverageInput {\n readonly coverageId: string;\n readonly state: \"unpriced\";\n readonly selector: PricingSelectorInput;\n readonly effective: PricingEffectiveConditionInput;\n readonly reason: \"provider-not-priced\" | \"billing-mode-not-priced\" | \"rate-not-published\";\n}\nexport type PricingCoverageInput = PricedCoverageInput | UnpricedCoverageInput;\ninterface PricingProfileCanonicalContent {\n readonly version: 1;\n readonly currency: \"USD\";\n readonly display: PricingDisplay;\n readonly provenance: PricingProvenance;\n readonly coverage: readonly PricingCoverage[];\n}\ninterface PricingProfileDescriptorValue {\n readonly version: 1;\n readonly contentIdentity: PricingProfileContentIdentity;\n readonly content: PricingProfileCanonicalContent;\n}\n/**\n * v1 profile data is direct and data-only. The global Symbol descriptor lets\n * another ESM/CJS instance revalidate the exact same frozen canonical value.\n */\nexport interface PricingProfile {\n readonly contentIdentity: PricingProfileContentIdentity;\n readonly currency: \"USD\";\n readonly display: PricingDisplay;\n readonly provenance: PricingProvenance;\n readonly coverage: readonly PricingCoverage[];\n readonly [PricingProfileDescriptor]: PricingProfileDescriptorValue;\n}\nexport interface PricingProfileInput {\n readonly currency: \"USD\";\n readonly display: PricingDisplayInput;\n readonly provenance: PricingProvenanceInput;\n readonly coverage: readonly PricingCoverageInput[];\n}\nexport type CostProjectionState = \"available\" | \"partial\" | \"migration-required\" | \"unavailable\";\nexport type CostBasis = \"observed\" | \"estimated\" | \"mixed\" | \"unavailable\";\nexport interface ProjectedMoney {\n readonly amount: CanonicalDecimal;\n readonly currency: CurrencyCode;\n readonly decimalPlaces: number;\n}\n/** Closed, auditable profile facts without a source object or calculator. */\nexport interface CostProjectionProfile {\n readonly contentIdentity: PricingProfileContentIdentity;\n readonly currency: CurrencyCode;\n readonly display: PricingDisplay;\n readonly provenance: PricingProvenance;\n readonly coverage: readonly PricingCoverage[];\n}\nexport type CostCoverageReasonCode = \"member-not-recorded\" | \"core-invalid\" | \"origin-run-unavailable\" | \"execution-model-not-recorded\" | \"usage-not-recorded\" | \"usage-unavailable\" | \"usage-migration-required\" | \"usage-unsupported\" | \"usage-invalid\" | \"usage-collection-partial\" | \"pricing-coverage-not-found\" | \"pricing-coverage-unpriced\" | \"pricing-charge-not-found\" | \"observed-cost-other-currency\";\nexport interface CostCoverageReason {\n readonly slot: import(\"./contracts.ts\").AnalysisSlotRef;\n readonly provider: SafeIdentifier | null;\n readonly code: CostCoverageReasonCode;\n}\nexport interface ObservedCostComponent {\n readonly kind: \"provider-cost\";\n readonly provider: SafeIdentifier;\n readonly currency: CurrencyCode;\n readonly amount: CanonicalDecimal;\n}\nexport interface EstimatedTokenCostComponent {\n readonly kind: \"token\";\n readonly provider: SafeIdentifier;\n readonly bucket: IndependentlyBillableTokenBucket;\n readonly tokens: number;\n readonly ratePerMillionTokens: CanonicalDecimal;\n readonly amount: CanonicalDecimal;\n}\nexport interface EstimatedRequestCostComponent {\n readonly kind: \"request\";\n readonly provider: SafeIdentifier;\n readonly requestKind: \"model\" | \"tool\";\n readonly ratePerRequest: CanonicalDecimal;\n readonly amount: CanonicalDecimal;\n}\nexport type CostComponent = ObservedCostComponent | EstimatedTokenCostComponent | EstimatedRequestCostComponent;\nexport interface ObservedOtherCurrency {\n readonly provider: SafeIdentifier;\n readonly currency: CurrencyCode;\n readonly amount: CanonicalDecimal;\n}\n/** One Slot/provider branch; observed and estimated facts never mix in it. */\nexport type CostLedgerEntry = {\n readonly slot: import(\"./contracts.ts\").AnalysisSlotRef;\n readonly provider: SafeIdentifier | null;\n readonly branch: \"observed\";\n readonly components: readonly [\n ObservedCostComponent,\n ...ObservedCostComponent[]\n ];\n readonly estimated: null;\n} | {\n readonly slot: import(\"./contracts.ts\").AnalysisSlotRef;\n readonly provider: SafeIdentifier;\n readonly branch: \"estimated\";\n readonly components: readonly (EstimatedTokenCostComponent | EstimatedRequestCostComponent)[];\n readonly estimated: ProjectedMoney;\n} | {\n readonly slot: import(\"./contracts.ts\").AnalysisSlotRef;\n readonly provider: SafeIdentifier | null;\n readonly branch: \"unavailable\";\n readonly components: readonly [\n ];\n readonly estimated: null;\n};\n/** Exact aggregation before any display / Number conversion. */\nexport type CostProjectionAggregate = {\n readonly kind: \"mean\";\n /** Canonical USD subtotal before division or display rounding. */\n readonly numerator: CanonicalDecimal;\n /** Slots with a known quote-currency subtotal, never full denominator. */\n readonly denominator: number;\n} | {\n readonly kind: \"total\";\n /** Canonical USD subtotal before display rounding. */\n readonly total: CanonicalDecimal;\n};\ninterface CostProjectionCommon {\n readonly profile: CostProjectionProfile;\n readonly aggregate: CostProjectionAggregate;\n readonly observedOtherCurrencies: readonly ObservedOtherCurrency[];\n readonly reasons: readonly CostCoverageReason[];\n readonly ledger: readonly CostLedgerEntry[];\n}\nexport interface CostProjectionKnown extends CostProjectionCommon {\n readonly state: \"available\" | \"partial\";\n readonly basis: Exclude<CostBasis, \"unavailable\">;\n readonly observed: ProjectedMoney | null;\n readonly estimated: ProjectedMoney | null;\n readonly combined: ProjectedMoney;\n}\nexport interface CostProjectionUnavailable extends CostProjectionCommon {\n readonly state: \"unavailable\";\n readonly basis: \"unavailable\";\n readonly observed: null;\n readonly estimated: null;\n readonly combined: null;\n}\nexport interface CostProjectionMigrationRequired extends CostProjectionCommon {\n readonly state: \"migration-required\";\n readonly basis: \"unavailable\";\n readonly observed: null;\n readonly estimated: null;\n readonly combined: null;\n}\nexport type CostProjectionValue = CostProjectionKnown | CostProjectionMigrationRequired | CostProjectionUnavailable;\n/** A normal MetricValue with a closed cost domain value attached. */\nexport interface CostMetricValue extends MetricValue<number> {\n readonly state: CostProjectionState;\n readonly format: \"currency-usd\";\n readonly better: \"lower\";\n readonly projection: CostProjectionValue;\n}\ninterface CostMeasureDescriptorValue {\n readonly version: 1;\n readonly mode: \"mean\" | \"total\";\n readonly profile: PricingProfile;\n readonly profileIdentity: PricingProfileContentIdentity;\n}\n/** A Measure whose data descriptor binds it to exactly one validated Profile. */\nexport interface CostMeasure extends Measure<LogicalSlot, number> {\n readonly [CostMeasureDescriptor]: CostMeasureDescriptorValue;\n}\ntype CostMeasureMode = CostMeasureDescriptorValue[\"mode\"];\nconst utf8 = new TextEncoder();\n/** Defines, deeply freezes, canonically sorts, and content-addresses one USD Profile. */\nexport function definePricingProfile(input: PricingProfileInput): PricingProfile {\n const content = normalizeProfileContent(input);\n const identity = contentIdentityFor(content);\n const descriptor = Object.freeze({\n version: 1 as const,\n contentIdentity: identity,\n content,\n });\n const profile = Object.create(null) as PricingProfile;\n Object.assign(profile, {\n contentIdentity: identity,\n currency: content.currency,\n display: content.display,\n provenance: content.provenance,\n coverage: content.coverage,\n });\n Object.defineProperty(profile, PricingProfileDescriptor, {\n value: descriptor,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n Object.freeze(profile);\n validatedPricingProfiles.add(profile);\n return profile;\n}\ninterface BuiltInPriceEntry {\n readonly in: number;\n readonly out: number;\n readonly cacheRead?: number;\n readonly cacheWrite?: number;\n}\nconst builtInCatalog = loadBuiltInCatalog();\n/**\n * Identity-bearing Profile for NiceEval's complete vendored model catalog.\n * Resolution matches an exact model identifier and does not infer a billing\n * provider from an agent name. Missing models and buckets remain unpriced.\n */\nexport const builtInPricingProfile: PricingProfile = definePricingProfile({\n currency: \"USD\",\n display: { decimalPlaces: 6, rounding: \"half-away-from-zero\" },\n provenance: {\n kind: \"declared-rate-card\",\n source: `NiceEval vendored models.dev catalog ${builtInCatalog.digest}`,\n asOf: builtInCatalog.asOf,\n },\n coverage: [{\n coverageId: `niceeval-catalog-${builtInCatalog.digest.slice(\"sha256:\".length)}`,\n state: \"unpriced\",\n selector: { model: \"niceeval:built-in-catalog\" },\n effective: { startsAt: 0, endsAt: null },\n reason: \"rate-not-published\",\n }],\n});\n/** @internal Resolves one exact model from the catalog named by the built-in Profile. */\nexport function builtInPricingCoverage(model: string): PricedCoverage | undefined {\n const price = builtInCatalog.prices[model];\n if (price === undefined)\n return undefined;\n return normalizeCoverage({\n coverageId: `niceeval-catalog-model-${createHash(\"sha256\").update(model).digest(\"hex\")}`,\n state: \"priced\",\n selector: { model },\n effective: { startsAt: 0, endsAt: null },\n charges: catalogCharges(price, builtInCatalog.modelRequest),\n }, 0) as PricedCoverage;\n}\nfunction catalogCharges(price: BuiltInPriceEntry, modelRequest: number): readonly [\n PricingChargeInput,\n ...PricingChargeInput[]\n] {\n return [\n { kind: \"token\", bucket: \"input\", perMillionTokens: decimalFromPrice(price.in) },\n { kind: \"token\", bucket: \"output\", perMillionTokens: decimalFromPrice(price.out) },\n ...(price.cacheRead === undefined\n ? []\n : [{ kind: \"token\" as const, bucket: \"cache-read\", perMillionTokens: decimalFromPrice(price.cacheRead) }]),\n ...(price.cacheWrite === undefined\n ? []\n : [{ kind: \"token\" as const, bucket: \"cache-write\", perMillionTokens: decimalFromPrice(price.cacheWrite) }]),\n { kind: \"request\", requestKind: \"model\", ratePerRequest: decimalFromPrice(modelRequest) },\n ];\n}\nfunction loadBuiltInCatalog(): {\n readonly digest: string;\n readonly asOf: number;\n readonly modelRequest: number;\n readonly prices: Record<string, BuiltInPriceEntry>;\n} {\n const raw = readFileSync(fileURLToPath(new URL(\"../o11y/prices.json\", __niceevalImportMetaUrl)), \"utf8\");\n const parsed = JSON.parse(raw) as {\n readonly $asOf?: number;\n readonly $modelRequest?: number;\n readonly prices?: Record<string, BuiltInPriceEntry>;\n };\n if (parsed.prices === undefined || Object.keys(parsed.prices).length === 0 ||\n typeof parsed.$asOf !== \"number\" || !isUtcMillis(parsed.$asOf) ||\n typeof parsed.$modelRequest !== \"number\") {\n throw pricingError(\"built-in pricing catalog metadata is invalid\");\n }\n return Object.freeze({\n digest: `sha256:${createHash(\"sha256\").update(raw).digest(\"hex\")}`,\n asOf: parsed.$asOf,\n modelRequest: parsed.$modelRequest,\n prices: parsed.prices,\n });\n}\nfunction decimalFromPrice(value: number): string {\n if (!Number.isFinite(value) || value < 0)\n throw pricingError(\"built-in catalog price must be non-negative and finite\");\n const decimal = String(value);\n if (!isCanonicalDecimal(decimal))\n throw pricingError(`built-in catalog price ${decimal} is not canonical`);\n return decimal;\n}\n/** @internal\n * Locally created or already revalidated Profiles use a WeakSet fast path.\n * A value from another package graph must first pass the global Symbol data\n * descriptor, recursive freezing, canonical content, and SHA-256 checks.\n */\nexport function isPricingProfile(value: unknown): value is PricingProfile {\n if (typeof value === \"object\" && value !== null && validatedPricingProfiles.has(value))\n return true;\n if (!isPlainObject(value) || !isDeeplyFrozen(value))\n return false;\n if (!hasExactOwnKeys(value, [\"contentIdentity\", \"currency\", \"display\", \"provenance\", \"coverage\"], [PricingProfileDescriptor])) {\n return false;\n }\n const descriptor = dataDescriptorValue<PricingProfileDescriptorValue>(value, PricingProfileDescriptor);\n if (descriptor === undefined || !isDeeplyFrozen(descriptor))\n return false;\n if (!hasExactOwnKeys(descriptor, [\"version\", \"contentIdentity\", \"content\"]))\n return false;\n try {\n if (descriptor.version !== 1 || typeof value.contentIdentity !== \"string\")\n return false;\n if (value.contentIdentity !== descriptor.contentIdentity)\n return false;\n const content = normalizeProfileContent({\n currency: value.currency,\n display: value.display,\n provenance: value.provenance,\n coverage: value.coverage,\n });\n if (canonicalJson(content) !== canonicalJson(descriptor.content))\n return false;\n if (contentIdentityFor(content) !== value.contentIdentity)\n return false;\n validatedPricingProfiles.add(value);\n return true;\n }\n catch {\n return false;\n }\n}\n/**\n * @internal Validates one already-closed cost projection without rebuilding a\n * price, a ledger, or a numeric result. Report imports this internal guard so\n * every deep cost-domain rule remains owned by Analysis.\n */\nexport function isCostProjectionValue(value: unknown): value is CostProjectionValue {\n if (!isPlainObject(value) || !isDeeplyFrozen(value) || !hasExactOwnKeys(value, COST_PROJECTION_FIELDS)) {\n return false;\n }\n const projection = value as Readonly<Record<string, unknown>>;\n const profile = projection.profile;\n if (!isClosedCostProjectionProfile(profile) || !isCostProjectionAggregate(projection.aggregate) ||\n !isClosedDataArray(projection.observedOtherCurrencies) ||\n !projection.observedOtherCurrencies.every(isObservedOtherCurrency) ||\n !isClosedDataArray(projection.reasons) || !projection.reasons.every(isCostCoverageReason) ||\n !isClosedDataArray(projection.ledger) ||\n !projection.ledger.every((entry) => isCostLedgerEntry(entry, profile))) {\n return false;\n }\n if (projection.state === \"unavailable\" || projection.state === \"migration-required\") {\n if (projection.basis !== \"unavailable\" || projection.observed !== null ||\n projection.estimated !== null || projection.combined !== null)\n return false;\n if (projection.state === \"unavailable\")\n return true;\n const ledger = projection.ledger as readonly CostLedgerEntry[];\n const reasons = projection.reasons as readonly CostCoverageReason[];\n return ledger.length > 0 &&\n ledger.every((entry) => entry.branch === \"unavailable\" && reasons.some((reason) => reason.code === \"usage-migration-required\" &&\n reason.slot.runId === entry.slot.runId &&\n reason.slot.slotId === entry.slot.slotId));\n }\n if (projection.state !== \"available\" && projection.state !== \"partial\" ||\n !isNullableProjectedMoney(projection.observed, profile) ||\n !isNullableProjectedMoney(projection.estimated, profile) ||\n !isProjectedMoney(projection.combined, profile)) {\n return false;\n }\n return projection.observed !== null && projection.estimated !== null\n ? projection.basis === \"mixed\"\n : projection.observed !== null\n ? projection.basis === \"observed\"\n : projection.estimated !== null && projection.basis === \"estimated\";\n}\nconst COST_PROJECTION_FIELDS = Object.freeze([\n \"state\",\n \"basis\",\n \"profile\",\n \"aggregate\",\n \"observedOtherCurrencies\",\n \"reasons\",\n \"ledger\",\n \"observed\",\n \"estimated\",\n \"combined\",\n] as const);\nconst COST_COVERAGE_REASON_CODES = new Set<CostCoverageReason[\"code\"]>([\n \"member-not-recorded\",\n \"core-invalid\",\n \"origin-run-unavailable\",\n \"execution-model-not-recorded\",\n \"usage-not-recorded\",\n \"usage-unavailable\",\n \"usage-migration-required\",\n \"usage-unsupported\",\n \"usage-invalid\",\n \"usage-collection-partial\",\n \"pricing-coverage-not-found\",\n \"pricing-coverage-unpriced\",\n \"pricing-charge-not-found\",\n \"observed-cost-other-currency\",\n]);\n/** The projection profile is descriptor-free data, so canonicalize it here. */\nfunction isClosedCostProjectionProfile(value: unknown): value is CostProjectionProfile {\n if (!isPlainObject(value) || !hasExactOwnKeys(value, [\"contentIdentity\", \"currency\", \"display\", \"provenance\", \"coverage\"])) {\n return false;\n }\n const profile = value as Readonly<Record<string, unknown>>;\n if (typeof profile.contentIdentity !== \"string\")\n return false;\n try {\n const content = normalizeProfileContent({\n currency: profile.currency,\n display: profile.display,\n provenance: profile.provenance,\n coverage: profile.coverage,\n });\n const supplied = Object.freeze({\n version: 1,\n currency: profile.currency,\n display: profile.display,\n provenance: profile.provenance,\n coverage: profile.coverage,\n });\n return canonicalJson(content) === canonicalJson(supplied) &&\n contentIdentityFor(content) === profile.contentIdentity;\n }\n catch {\n return false;\n }\n}\nfunction isCostProjectionAggregate(value: unknown): boolean {\n if (!isPlainObject(value))\n return false;\n if (value.kind === \"mean\") {\n return hasExactOwnKeys(value, [\"kind\", \"numerator\", \"denominator\"]) &&\n isCanonicalDecimalValue(value.numerator) && isNonNegativeSafeInteger(value.denominator);\n }\n return value.kind === \"total\" && hasExactOwnKeys(value, [\"kind\", \"total\"]) &&\n isCanonicalDecimalValue(value.total);\n}\nfunction isNullableProjectedMoney(value: unknown, profile: CostProjectionProfile): boolean {\n return value === null || isProjectedMoney(value, profile);\n}\nfunction isProjectedMoney(value: unknown, profile: CostProjectionProfile): boolean {\n if (!isPlainObject(value) || !hasExactOwnKeys(value, [\"amount\", \"currency\", \"decimalPlaces\"]))\n return false;\n return isCanonicalDecimalValue(value.amount) && value.currency === profile.currency &&\n typeof value.currency === \"string\" && isCurrencyCode(value.currency) &&\n value.decimalPlaces === profile.display.decimalPlaces;\n}\nfunction isObservedOtherCurrency(value: unknown): boolean {\n return isPlainObject(value) && hasExactOwnKeys(value, [\"provider\", \"currency\", \"amount\"]) &&\n typeof value.provider === \"string\" && isSafeIdentifier(value.provider) &&\n typeof value.currency === \"string\" && isCurrencyCode(value.currency) && isCanonicalDecimalValue(value.amount);\n}\nfunction isCostCoverageReason(value: unknown): boolean {\n return isPlainObject(value) && hasExactOwnKeys(value, [\"slot\", \"provider\", \"code\"]) &&\n isAnalysisSlotRef(value.slot) &&\n (value.provider === null || (typeof value.provider === \"string\" && isSafeIdentifier(value.provider))) &&\n typeof value.code === \"string\" && COST_COVERAGE_REASON_CODES.has(value.code as CostCoverageReason[\"code\"]);\n}\nfunction isCostLedgerEntry(value: unknown, profile: CostProjectionProfile): boolean {\n if (!isPlainObject(value) || !hasExactOwnKeys(value, [\"slot\", \"provider\", \"branch\", \"components\", \"estimated\"]) ||\n !isAnalysisSlotRef(value.slot) || !isClosedDataArray(value.components)) {\n return false;\n }\n if (value.branch === \"observed\") {\n const provider = value.provider;\n if (typeof provider !== \"string\" || !isSafeIdentifier(provider) ||\n value.estimated !== null || value.components.length === 0)\n return false;\n return value.components.every((component) => isObservedCostComponent(component, provider));\n }\n if (value.branch === \"estimated\") {\n const provider = value.provider;\n if (typeof provider !== \"string\" || !isSafeIdentifier(provider) ||\n value.components.length === 0 || !isProjectedMoney(value.estimated, profile))\n return false;\n return value.components.every((component) => isEstimatedCostComponent(component, provider));\n }\n return value.branch === \"unavailable\" &&\n (value.provider === null || (typeof value.provider === \"string\" && isSafeIdentifier(value.provider))) &&\n value.components.length === 0 && value.estimated === null;\n}\nfunction isObservedCostComponent(value: unknown, provider: string): boolean {\n return isPlainObject(value) && hasExactOwnKeys(value, [\"kind\", \"provider\", \"currency\", \"amount\"]) &&\n value.kind === \"provider-cost\" && value.provider === provider &&\n typeof value.currency === \"string\" && isCurrencyCode(value.currency) && isCanonicalDecimalValue(value.amount);\n}\nfunction isEstimatedCostComponent(value: unknown, provider: string): boolean {\n if (!isPlainObject(value))\n return false;\n if (value.kind === \"token\") {\n return hasExactOwnKeys(value, [\"kind\", \"provider\", \"bucket\", \"tokens\", \"ratePerMillionTokens\", \"amount\"]) &&\n value.provider === provider && typeof value.bucket === \"string\" && isIndependentlyBillableTokenBucket(value.bucket) &&\n isNonNegativeSafeInteger(value.tokens) && isCanonicalDecimalValue(value.ratePerMillionTokens) &&\n isCanonicalDecimalValue(value.amount);\n }\n return value.kind === \"request\" &&\n hasExactOwnKeys(value, [\"kind\", \"provider\", \"requestKind\", \"ratePerRequest\", \"amount\"]) &&\n value.provider === provider && (value.requestKind === \"model\" || value.requestKind === \"tool\") &&\n isCanonicalDecimalValue(value.ratePerRequest) && isCanonicalDecimalValue(value.amount);\n}\nfunction isAnalysisSlotRef(value: unknown): boolean {\n if (!isPlainObject(value) || !hasExactOwnKeys(value, [\n \"runId\",\n \"slotId\",\n \"experimentId\",\n \"evalId\",\n \"attemptOrdinal\",\n \"executionIdentityDigest\",\n ]))\n return false;\n return typeof value.runId === \"string\" && isPortableSegment(value.runId) &&\n typeof value.slotId === \"string\" && isPortableSegment(value.slotId) &&\n typeof value.experimentId === \"string\" && isRecordDomainIdentity(value.experimentId) &&\n typeof value.evalId === \"string\" && isRecordDomainIdentity(value.evalId) &&\n isNonNegativeSafeInteger(value.attemptOrdinal) &&\n typeof value.executionIdentityDigest === \"string\" && isSha256Digest(value.executionIdentityDigest);\n}\nfunction isClosedDataArray(value: unknown): value is readonly unknown[] {\n try {\n dataArrayValues(value, \"CostProjection\");\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isCanonicalDecimalValue(value: unknown): value is CanonicalDecimal {\n return typeof value === \"string\" && isCanonicalDecimal(value);\n}\nfunction isNonNegativeSafeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n/** Mean known USD cost per logical Slot for exactly one Profile. */\nexport function costUSD(profile: PricingProfile): CostMeasure {\n return defineCostMeasure(profile, \"mean\");\n}\n/** Total known USD cost across logical Slots for exactly one Profile. */\nexport function totalCostUSD(profile: PricingProfile): CostMeasure {\n return defineCostMeasure(profile, \"total\");\n}\n/** @internal Revalidates a local or external CostMeasure data descriptor. */\nexport function costMeasureState(value: unknown): CostMeasureDescriptorValue | undefined {\n if (!isPlainObject(value) || !isDeeplyFrozen(value))\n return undefined;\n const descriptor = dataDescriptorValue<CostMeasureDescriptorValue>(value, CostMeasureDescriptor);\n if (descriptor === undefined || !isDeeplyFrozen(descriptor))\n return undefined;\n if (!hasExactOwnKeys(descriptor, [\"version\", \"mode\", \"profile\", \"profileIdentity\"]))\n return undefined;\n if (descriptor.version !== 1 || (descriptor.mode !== \"mean\" && descriptor.mode !== \"total\"))\n return undefined;\n if (!isPricingProfile(descriptor.profile) || descriptor.profile.contentIdentity !== descriptor.profileIdentity)\n return undefined;\n if (value.kind !== \"measure\" || typeof value.id !== \"string\")\n return undefined;\n const expectedId = descriptor.mode === \"mean\"\n ? `niceeval.cost-usd:${descriptor.profileIdentity}`\n : `niceeval.total-cost-usd:${descriptor.profileIdentity}`;\n if (value.id !== expectedId)\n return undefined;\n return descriptor;\n}\n/** @internal A structural cross-instance guard; it never infers a Profile from `id`. */\nexport function isCostMeasure(value: unknown): value is CostMeasure {\n return costMeasureState(value) !== undefined;\n}\n/** @internal Closes only immutable profile data for renderer consumption. */\nexport function closeCostProjectionProfile(profile: PricingProfile): CostProjectionProfile {\n assertPricingProfile(profile);\n return Object.freeze({\n contentIdentity: profile.contentIdentity,\n currency: profile.currency as CurrencyCode,\n display: profile.display,\n provenance: profile.provenance,\n coverage: profile.coverage,\n });\n}\n/** @internal Tests immutable Attempt-origin Core facts against a Profile coverage. */\nexport function pricingCoverageMatches(coverage: PricingCoverage, input: {\n readonly provider: SafeIdentifier;\n readonly origin: {\n readonly startedAt: UtcMillis;\n readonly executionIdentityDigest: ExecutionIdentityDigest;\n readonly execution: {\n readonly agentId: string;\n readonly model: string | null;\n readonly reasoningEffort: string | null;\n };\n };\n}): boolean {\n const selector = coverage.selector;\n return (selector.provider === undefined || selector.provider === input.provider)\n && selector.model === input.origin.execution.model\n && (selector.agentId === undefined || selector.agentId === input.origin.execution.agentId)\n && (selector.reasoningEffort === undefined || selector.reasoningEffort === input.origin.execution.reasoningEffort)\n && (selector.executionIdentityDigest === undefined || selector.executionIdentityDigest === input.origin.executionIdentityDigest)\n && input.origin.startedAt >= coverage.effective.startsAt\n && (coverage.effective.endsAt === null || input.origin.startedAt < coverage.effective.endsAt);\n}\nfunction defineCostMeasure(profile: PricingProfile, mode: CostMeasureMode): CostMeasure {\n assertPricingProfile(profile);\n const base = createOpaqueMeasure<LogicalSlot, number>({\n id: mode === \"mean\"\n ? `niceeval.cost-usd:${profile.contentIdentity}`\n : `niceeval.total-cost-usd:${profile.contentIdentity}`,\n population: logicalSlots,\n format: \"currency-usd\",\n better: \"lower\",\n });\n const descriptor = Object.freeze({\n version: 1 as const,\n mode,\n profile,\n profileIdentity: profile.contentIdentity,\n });\n const measure = { ...base } as CostMeasure;\n Object.defineProperty(measure, CostMeasureDescriptor, {\n value: descriptor,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n Object.freeze(measure);\n return measure;\n}\nfunction assertPricingProfile(value: unknown): asserts value is PricingProfile {\n if (!isPricingProfile(value))\n throw pricingError(\"cost measures require a validated PricingProfile\");\n}\nfunction normalizeProfileContent(input: unknown): PricingProfileCanonicalContent {\n requireExactObject(input, [\"currency\", \"display\", \"provenance\", \"coverage\"], \"PricingProfile\");\n if (input.currency !== \"USD\" || !isCurrencyCode(input.currency)) {\n throw pricingError(\"currency must be USD in v1\");\n }\n const coverageInput = dataArrayValues(input.coverage, \"PricingProfile coverage\");\n if (coverageInput.length === 0) {\n throw pricingError(\"coverage must be a non-empty array\");\n }\n const coverage = coverageInput.map((value, index) => normalizeCoverage(value, index));\n const coverageIds = new Set<string>();\n for (const value of coverage) {\n if (coverageIds.has(value.coverageId))\n throw pricingError(`coverageId ${value.coverageId} is duplicated`);\n coverageIds.add(value.coverageId);\n }\n rejectOverlappingCoverage(coverage);\n return Object.freeze({\n version: 1 as const,\n currency: \"USD\" as const,\n display: normalizeDisplay(input.display),\n provenance: normalizeProvenance(input.provenance),\n coverage: Object.freeze([...coverage].sort(compareCoverage)),\n });\n}\nfunction normalizeDisplay(value: unknown): PricingDisplay {\n requireExactObject(value, [\"decimalPlaces\", \"rounding\"], \"PricingProfile display\");\n if (typeof value.decimalPlaces !== \"number\" || !Number.isSafeInteger(value.decimalPlaces) || value.decimalPlaces < 0 || value.decimalPlaces > 9) {\n throw pricingError(\"display decimalPlaces must be an integer from 0 through 9\");\n }\n if (value.rounding !== \"half-away-from-zero\") {\n throw pricingError(\"display rounding must be half-away-from-zero\");\n }\n return Object.freeze({\n decimalPlaces: value.decimalPlaces as PricingDisplay[\"decimalPlaces\"],\n rounding: value.rounding,\n });\n}\nfunction normalizeProvenance(value: unknown): PricingProvenance {\n requireExactObject(value, [\"kind\", \"source\", \"asOf\"], \"PricingProfile provenance\");\n if (value.kind !== \"declared-rate-card\") {\n throw pricingError(\"provenance kind must be declared-rate-card\");\n }\n return Object.freeze({\n kind: \"declared-rate-card\" as const,\n source: normalizeText(value.source, \"provenance source\"),\n asOf: normalizeUtcMillis(value.asOf, \"provenance asOf\"),\n });\n}\nfunction normalizeCoverage(value: unknown, index: number): PricingCoverage {\n if (!isPlainObject(value))\n throw pricingError(`coverage ${index} must be a plain object`);\n const state = ownDataValue(value, \"state\", `coverage ${index}`);\n if (state === \"priced\") {\n requireExactObject(value, [\"coverageId\", \"state\", \"selector\", \"effective\", \"charges\"], `coverage ${index}`);\n const chargesInput = dataArrayValues(value.charges, `coverage ${index} priced charges`);\n if (chargesInput.length === 0) {\n throw pricingError(`coverage ${index} priced charges must be non-empty`);\n }\n const charges = chargesInput.map((charge, chargeIndex) => normalizeCharge(charge, index, chargeIndex));\n const chargeKeys = new Set<string>();\n for (const charge of charges) {\n const key = charge.kind === \"token\" ? `token:${charge.bucket}` : `request:${charge.requestKind}`;\n if (chargeKeys.has(key))\n throw pricingError(`coverage ${index} has duplicate ${key} charge`);\n chargeKeys.add(key);\n }\n return Object.freeze({\n coverageId: normalizeCoverageId(value.coverageId, index),\n state: \"priced\" as const,\n selector: normalizeSelector(value.selector, index),\n effective: normalizeEffective(value.effective, index),\n charges: Object.freeze([...charges].sort(compareCharge)) as readonly [\n PricingCharge,\n ...PricingCharge[]\n ],\n });\n }\n if (state === \"unpriced\") {\n requireExactObject(value, [\"coverageId\", \"state\", \"selector\", \"effective\", \"reason\"], `coverage ${index}`);\n if (value.reason !== \"provider-not-priced\" && value.reason !== \"billing-mode-not-priced\" && value.reason !== \"rate-not-published\") {\n throw pricingError(`coverage ${index} has an unrecognized unpriced reason`);\n }\n return Object.freeze({\n coverageId: normalizeCoverageId(value.coverageId, index),\n state: \"unpriced\" as const,\n selector: normalizeSelector(value.selector, index),\n effective: normalizeEffective(value.effective, index),\n reason: value.reason,\n });\n }\n throw pricingError(`coverage ${index} state must be priced or unpriced`);\n}\nfunction normalizeCoverageId(value: unknown, index: number): PricingCoverageId {\n return normalizeText(value, `coverage ${index} coverageId`) as PricingCoverageId;\n}\nfunction normalizeSelector(value: unknown, index: number): PricingSelector {\n requireExactObject(value, [\"provider\", \"model\", \"agentId\", \"reasoningEffort\", \"executionIdentityDigest\"], `coverage ${index} selector`, [\"provider\", \"agentId\", \"reasoningEffort\", \"executionIdentityDigest\"]);\n if (value.provider !== undefined && (typeof value.provider !== \"string\" || !isSafeIdentifier(value.provider))) {\n throw pricingError(`coverage ${index} selector provider must be a SafeIdentifier`);\n }\n return Object.freeze({\n ...(value.provider === undefined ? {} : { provider: value.provider }),\n model: normalizeText(value.model, `coverage ${index} selector model`),\n ...(value.agentId === undefined\n ? {}\n : { agentId: normalizeText(value.agentId, `coverage ${index} selector agentId`) }),\n ...(value.reasoningEffort === undefined\n ? {}\n : value.reasoningEffort === null\n ? { reasoningEffort: null }\n : { reasoningEffort: normalizeText(value.reasoningEffort, `coverage ${index} selector reasoningEffort`) }),\n ...(value.executionIdentityDigest === undefined\n ? {}\n : { executionIdentityDigest: normalizeExecutionIdentityDigest(value.executionIdentityDigest, index) }),\n });\n}\nfunction normalizeExecutionIdentityDigest(value: unknown, index: number): ExecutionIdentityDigest {\n if (typeof value !== \"string\" || !isSha256Digest(value)) {\n throw pricingError(`coverage ${index} selector executionIdentityDigest must be SHA-256 hex`);\n }\n return value as ExecutionIdentityDigest;\n}\nfunction normalizeEffective(value: unknown, index: number): PricingEffectiveCondition {\n requireExactObject(value, [\"startsAt\", \"endsAt\"], `coverage ${index} effective`);\n const startsAt = normalizeUtcMillis(value.startsAt, `coverage ${index} effective startsAt`);\n const endsAt = value.endsAt === null ? null : normalizeUtcMillis(value.endsAt, `coverage ${index} effective endsAt`);\n if (endsAt !== null && endsAt <= startsAt) {\n throw pricingError(`coverage ${index} effective endsAt must be after startsAt`);\n }\n return Object.freeze({ startsAt, endsAt });\n}\nfunction normalizeCharge(value: unknown, coverageIndex: number, chargeIndex: number): PricingCharge {\n if (!isPlainObject(value))\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} must be a plain object`);\n const kind = ownDataValue(value, \"kind\", `coverage ${coverageIndex} charge ${chargeIndex}`);\n if (kind === \"token\") {\n requireExactObject(value, [\"kind\", \"bucket\", \"perMillionTokens\"], `coverage ${coverageIndex} charge ${chargeIndex}`);\n if (typeof value.bucket !== \"string\" || !isIndependentlyBillableTokenBucket(value.bucket)) {\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} token bucket must be one of ${INDEPENDENTLY_BILLABLE_TOKEN_BUCKETS.join(\", \")}`);\n }\n return Object.freeze({\n kind: \"token\" as const,\n bucket: value.bucket,\n perMillionTokens: normalizeDecimal(value.perMillionTokens, coverageIndex, chargeIndex, \"perMillionTokens\"),\n });\n }\n if (kind === \"request\") {\n requireExactObject(value, [\"kind\", \"requestKind\", \"ratePerRequest\"], `coverage ${coverageIndex} charge ${chargeIndex}`);\n if (value.requestKind !== \"model\" && value.requestKind !== \"tool\") {\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} requestKind must be model or tool`);\n }\n return Object.freeze({\n kind: \"request\" as const,\n requestKind: value.requestKind,\n ratePerRequest: normalizeDecimal(value.ratePerRequest, coverageIndex, chargeIndex, \"ratePerRequest\"),\n });\n }\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} kind must be token or request`);\n}\nfunction normalizeDecimal(value: unknown, coverageIndex: number, chargeIndex: number, field: string): CanonicalDecimal {\n if (typeof value !== \"string\" || !isCanonicalDecimal(value)) {\n throw pricingError(`coverage ${coverageIndex} charge ${chargeIndex} ${field} must be canonical decimal`);\n }\n return value as CanonicalDecimal;\n}\nfunction normalizeUtcMillis(value: unknown, name: string): UtcMillis {\n if (typeof value !== \"number\" || !isUtcMillis(value))\n throw pricingError(`${name} must be UTC milliseconds`);\n return value as UtcMillis;\n}\nfunction normalizeText(value: unknown, name: string): string {\n if (typeof value !== \"string\" || value.length === 0 || value.trim() !== value || !isStrictUnicodeText(value) || utf8ByteLength(value) > 8192) {\n throw pricingError(`${name} must be non-empty, trimmed, bounded Unicode text`);\n }\n return value;\n}\nfunction rejectOverlappingCoverage(coverage: readonly PricingCoverage[]): void {\n const byModel = new Map<string, PricingCoverage[]>();\n for (const entry of coverage) {\n const entries = byModel.get(entry.selector.model);\n if (entries === undefined)\n byModel.set(entry.selector.model, [entry]);\n else\n entries.push(entry);\n }\n for (const entries of byModel.values()) {\n for (let left = 0; left < entries.length; left += 1) {\n for (let right = left + 1; right < entries.length; right += 1) {\n const first = entries[left]!;\n const second = entries[right]!;\n if (selectorsCanMatchSameOrigin(first.selector, second.selector) && effectiveIntervalsOverlap(first.effective, second.effective)) {\n throw pricingError(`coverage ${first.coverageId} overlaps ${second.coverageId} for a selector that can match the same origin`);\n }\n }\n }\n }\n}\nfunction selectorsCanMatchSameOrigin(left: PricingSelector, right: PricingSelector): boolean {\n return optionalSelectorDimensionOverlaps(left.provider, right.provider)\n && left.model === right.model\n && optionalSelectorDimensionOverlaps(left.agentId, right.agentId)\n && optionalSelectorDimensionOverlaps(left.reasoningEffort, right.reasoningEffort)\n && optionalSelectorDimensionOverlaps(left.executionIdentityDigest, right.executionIdentityDigest);\n}\nfunction optionalSelectorDimensionOverlaps<Value>(left: Value | undefined, right: Value | undefined): boolean {\n return left === undefined || right === undefined || left === right;\n}\nfunction effectiveIntervalsOverlap(left: PricingEffectiveCondition, right: PricingEffectiveCondition): boolean {\n const latestStart = left.startsAt > right.startsAt ? left.startsAt : right.startsAt;\n const earliestEnd = left.endsAt === null\n ? right.endsAt\n : right.endsAt === null\n ? left.endsAt\n : left.endsAt < right.endsAt ? left.endsAt : right.endsAt;\n return earliestEnd === null || latestStart < earliestEnd;\n}\nfunction contentIdentityFor(content: PricingProfileCanonicalContent): PricingProfileContentIdentity {\n return `sha256:${createHash(\"sha256\").update(canonicalJson(content)).digest(\"hex\")}` as PricingProfileContentIdentity;\n}\nfunction compareCoverage(left: PricingCoverage, right: PricingCoverage): number {\n return compareUtf8(canonicalJson(left), canonicalJson(right));\n}\nfunction compareCharge(left: PricingCharge, right: PricingCharge): number {\n const leftKey = left.kind === \"token\" ? `token:${left.bucket}` : `request:${left.requestKind}`;\n const rightKey = right.kind === \"token\" ? `token:${right.bucket}` : `request:${right.requestKind}`;\n return compareUtf8(leftKey, rightKey);\n}\nfunction canonicalJson(value: unknown): string {\n if (value === null || typeof value === \"boolean\" || typeof value === \"number\" || typeof value === \"string\") {\n return JSON.stringify(value);\n }\n if (Array.isArray(value))\n return canonicalArrayJson(value);\n if (!isPlainObject(value))\n throw pricingError(\"canonical Profile content must be JSON data\");\n const keys = Reflect.ownKeys(value);\n if (keys.some((key) => typeof key !== \"string\")) {\n throw pricingError(\"canonical Profile content cannot contain Symbol fields\");\n }\n return `{${(keys as string[])\n .sort(compareUtf8)\n .map((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw pricingError(\"canonical Profile content must use enumerable data fields\");\n }\n return `${JSON.stringify(key)}:${canonicalJson(descriptor.value)}`;\n })\n .join(\",\")}}`;\n}\nfunction canonicalArrayJson(value: readonly unknown[]): string {\n return `[${dataArrayValues(value, \"canonical Profile array\").map(canonicalJson).join(\",\")}]`;\n}\nfunction dataArrayValues(value: unknown, name: string): readonly unknown[] {\n if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype) {\n throw pricingError(`${name} must be a normal array`);\n }\n const ownKeys = Reflect.ownKeys(value);\n // A canonical JSON array has exactly its dense integer data fields and the\n // built-in length field. A frozen array can otherwise still carry hidden\n // strings, Symbols, holes, or accessors that identity encoding would miss.\n if (ownKeys.length !== value.length + 1) {\n throw pricingError(`${name} has extra fields or holes`);\n }\n const lengthDescriptor = Object.getOwnPropertyDescriptor(value, \"length\");\n if (lengthDescriptor === undefined || !(\"value\" in lengthDescriptor) || lengthDescriptor.enumerable || lengthDescriptor.value !== value.length) {\n throw pricingError(`${name} has an invalid length field`);\n }\n const values: unknown[] = [];\n for (let index = 0; index < value.length; index += 1) {\n const descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n if (descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw pricingError(`${name} must be dense data`);\n }\n values.push(descriptor.value);\n }\n return Object.freeze(values);\n}\nfunction compareUtf8(left: string, right: string): number {\n if (left === right)\n return 0;\n const first = utf8.encode(left);\n const second = utf8.encode(right);\n const length = Math.min(first.length, second.length);\n for (let index = 0; index < length; index += 1) {\n const difference = first[index]! - second[index]!;\n if (difference !== 0)\n return difference;\n }\n return first.length - second.length;\n}\nfunction requireExactObject(value: unknown, keys: readonly string[], name: string, optional: readonly string[] = []): asserts value is Record<string, unknown> {\n if (!isPlainObject(value))\n throw pricingError(`${name} must be a plain object`);\n const allowed = new Set(keys);\n const symbols = Object.getOwnPropertySymbols(value);\n if (symbols.length > 0)\n throw pricingError(`${name} has an unknown Symbol field`);\n const actual = Object.getOwnPropertyNames(value);\n if (actual.some((key) => !allowed.has(key)))\n throw pricingError(`${name} has an unknown field`);\n for (const key of actual) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw pricingError(`${name} field ${key} must be an enumerable data property`);\n }\n }\n for (const key of keys) {\n if (!optional.includes(key) && !Object.hasOwn(value, key))\n throw pricingError(`${name} is missing ${key}`);\n }\n}\nfunction ownDataValue(value: Record<string, unknown>, key: string, name: string): unknown {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable) {\n throw pricingError(`${name} is missing enumerable data field ${key}`);\n }\n return descriptor.value;\n}\nfunction hasExactOwnKeys(value: object, stringKeys: readonly string[], symbolKeys: readonly symbol[] = []): boolean {\n const actualStrings = Object.getOwnPropertyNames(value).sort(compareUtf8);\n const expectedStrings = [...stringKeys].sort(compareUtf8);\n if (actualStrings.length !== expectedStrings.length || actualStrings.some((key, index) => key !== expectedStrings[index]))\n return false;\n if (stringKeys.some((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return descriptor === undefined || !(\"value\" in descriptor) || !descriptor.enumerable;\n }))\n return false;\n const actualSymbols = Object.getOwnPropertySymbols(value);\n return actualSymbols.length === symbolKeys.length && symbolKeys.every((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return actualSymbols.includes(key) && descriptor !== undefined && \"value\" in descriptor && !descriptor.enumerable;\n });\n}\nfunction dataDescriptorValue<Value>(value: object, key: symbol): Value | undefined {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || descriptor.enumerable || descriptor.configurable || descriptor.writable)\n return undefined;\n return descriptor.value as Value;\n}\nfunction isDeeplyFrozen(value: unknown, seen = new Set<object>()): boolean {\n if (typeof value !== \"object\" || value === null)\n return true;\n if (seen.has(value))\n return true;\n if (!Object.isFrozen(value))\n return false;\n seen.add(value);\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor))\n return false;\n if (!isDeeplyFrozen(descriptor.value, seen))\n return false;\n }\n return true;\n}\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\nfunction pricingError(message: string): Error {\n return new TypeError(`PricingProfile invalid: ${message}`);\n}\n"]}
@@ -143,7 +143,7 @@ export interface PricingProfileInput {
143
143
  readonly provenance: PricingProvenanceInput;
144
144
  readonly coverage: readonly PricingCoverageInput[];
145
145
  }
146
- export type CostProjectionState = "available" | "partial" | "unavailable";
146
+ export type CostProjectionState = "available" | "partial" | "migration-required" | "unavailable";
147
147
  export type CostBasis = "observed" | "estimated" | "mixed" | "unavailable";
148
148
  export interface ProjectedMoney {
149
149
  readonly amount: CanonicalDecimal;
@@ -158,7 +158,7 @@ export interface CostProjectionProfile {
158
158
  readonly provenance: PricingProvenance;
159
159
  readonly coverage: readonly PricingCoverage[];
160
160
  }
161
- export type CostCoverageReasonCode = "member-not-recorded" | "core-invalid" | "origin-run-unavailable" | "execution-model-not-recorded" | "usage-not-recorded" | "usage-unavailable" | "usage-unsupported" | "usage-invalid" | "usage-collection-partial" | "pricing-coverage-not-found" | "pricing-coverage-unpriced" | "pricing-charge-not-found" | "observed-cost-other-currency";
161
+ export type CostCoverageReasonCode = "member-not-recorded" | "core-invalid" | "origin-run-unavailable" | "execution-model-not-recorded" | "usage-not-recorded" | "usage-unavailable" | "usage-migration-required" | "usage-unsupported" | "usage-invalid" | "usage-collection-partial" | "pricing-coverage-not-found" | "pricing-coverage-unpriced" | "pricing-charge-not-found" | "observed-cost-other-currency";
162
162
  export interface CostCoverageReason {
163
163
  readonly slot: import("./contracts.cjs").AnalysisSlotRef;
164
164
  readonly provider: SafeIdentifier | null;
@@ -244,7 +244,14 @@ export interface CostProjectionUnavailable extends CostProjectionCommon {
244
244
  readonly estimated: null;
245
245
  readonly combined: null;
246
246
  }
247
- export type CostProjectionValue = CostProjectionKnown | CostProjectionUnavailable;
247
+ export interface CostProjectionMigrationRequired extends CostProjectionCommon {
248
+ readonly state: "migration-required";
249
+ readonly basis: "unavailable";
250
+ readonly observed: null;
251
+ readonly estimated: null;
252
+ readonly combined: null;
253
+ }
254
+ export type CostProjectionValue = CostProjectionKnown | CostProjectionMigrationRequired | CostProjectionUnavailable;
248
255
  /** A normal MetricValue with a closed cost domain value attached. */
249
256
  export interface CostMetricValue extends MetricValue<number> {
250
257
  readonly state: CostProjectionState;
@@ -143,7 +143,7 @@ export interface PricingProfileInput {
143
143
  readonly provenance: PricingProvenanceInput;
144
144
  readonly coverage: readonly PricingCoverageInput[];
145
145
  }
146
- export type CostProjectionState = "available" | "partial" | "unavailable";
146
+ export type CostProjectionState = "available" | "partial" | "migration-required" | "unavailable";
147
147
  export type CostBasis = "observed" | "estimated" | "mixed" | "unavailable";
148
148
  export interface ProjectedMoney {
149
149
  readonly amount: CanonicalDecimal;
@@ -158,7 +158,7 @@ export interface CostProjectionProfile {
158
158
  readonly provenance: PricingProvenance;
159
159
  readonly coverage: readonly PricingCoverage[];
160
160
  }
161
- export type CostCoverageReasonCode = "member-not-recorded" | "core-invalid" | "origin-run-unavailable" | "execution-model-not-recorded" | "usage-not-recorded" | "usage-unavailable" | "usage-unsupported" | "usage-invalid" | "usage-collection-partial" | "pricing-coverage-not-found" | "pricing-coverage-unpriced" | "pricing-charge-not-found" | "observed-cost-other-currency";
161
+ export type CostCoverageReasonCode = "member-not-recorded" | "core-invalid" | "origin-run-unavailable" | "execution-model-not-recorded" | "usage-not-recorded" | "usage-unavailable" | "usage-migration-required" | "usage-unsupported" | "usage-invalid" | "usage-collection-partial" | "pricing-coverage-not-found" | "pricing-coverage-unpriced" | "pricing-charge-not-found" | "observed-cost-other-currency";
162
162
  export interface CostCoverageReason {
163
163
  readonly slot: import("./contracts.mjs").AnalysisSlotRef;
164
164
  readonly provider: SafeIdentifier | null;
@@ -244,7 +244,14 @@ export interface CostProjectionUnavailable extends CostProjectionCommon {
244
244
  readonly estimated: null;
245
245
  readonly combined: null;
246
246
  }
247
- export type CostProjectionValue = CostProjectionKnown | CostProjectionUnavailable;
247
+ export interface CostProjectionMigrationRequired extends CostProjectionCommon {
248
+ readonly state: "migration-required";
249
+ readonly basis: "unavailable";
250
+ readonly observed: null;
251
+ readonly estimated: null;
252
+ readonly combined: null;
253
+ }
254
+ export type CostProjectionValue = CostProjectionKnown | CostProjectionMigrationRequired | CostProjectionUnavailable;
248
255
  /** A normal MetricValue with a closed cost domain value attached. */
249
256
  export interface CostMetricValue extends MetricValue<number> {
250
257
  readonly state: CostProjectionState;
@@ -143,7 +143,7 @@ export interface PricingProfileInput {
143
143
  readonly provenance: PricingProvenanceInput;
144
144
  readonly coverage: readonly PricingCoverageInput[];
145
145
  }
146
- export type CostProjectionState = "available" | "partial" | "unavailable";
146
+ export type CostProjectionState = "available" | "partial" | "migration-required" | "unavailable";
147
147
  export type CostBasis = "observed" | "estimated" | "mixed" | "unavailable";
148
148
  export interface ProjectedMoney {
149
149
  readonly amount: CanonicalDecimal;
@@ -158,7 +158,7 @@ export interface CostProjectionProfile {
158
158
  readonly provenance: PricingProvenance;
159
159
  readonly coverage: readonly PricingCoverage[];
160
160
  }
161
- export type CostCoverageReasonCode = "member-not-recorded" | "core-invalid" | "origin-run-unavailable" | "execution-model-not-recorded" | "usage-not-recorded" | "usage-unavailable" | "usage-unsupported" | "usage-invalid" | "usage-collection-partial" | "pricing-coverage-not-found" | "pricing-coverage-unpriced" | "pricing-charge-not-found" | "observed-cost-other-currency";
161
+ export type CostCoverageReasonCode = "member-not-recorded" | "core-invalid" | "origin-run-unavailable" | "execution-model-not-recorded" | "usage-not-recorded" | "usage-unavailable" | "usage-migration-required" | "usage-unsupported" | "usage-invalid" | "usage-collection-partial" | "pricing-coverage-not-found" | "pricing-coverage-unpriced" | "pricing-charge-not-found" | "observed-cost-other-currency";
162
162
  export interface CostCoverageReason {
163
163
  readonly slot: import("./contracts.js").AnalysisSlotRef;
164
164
  readonly provider: SafeIdentifier | null;
@@ -244,7 +244,14 @@ export interface CostProjectionUnavailable extends CostProjectionCommon {
244
244
  readonly estimated: null;
245
245
  readonly combined: null;
246
246
  }
247
- export type CostProjectionValue = CostProjectionKnown | CostProjectionUnavailable;
247
+ export interface CostProjectionMigrationRequired extends CostProjectionCommon {
248
+ readonly state: "migration-required";
249
+ readonly basis: "unavailable";
250
+ readonly observed: null;
251
+ readonly estimated: null;
252
+ readonly combined: null;
253
+ }
254
+ export type CostProjectionValue = CostProjectionKnown | CostProjectionMigrationRequired | CostProjectionUnavailable;
248
255
  /** A normal MetricValue with a closed cost domain value attached. */
249
256
  export interface CostMetricValue extends MetricValue<number> {
250
257
  readonly state: CostProjectionState;