niceeval 0.13.3-canary.37 → 0.13.3

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 (383) hide show
  1. package/dist/agents/bub.cjs +4 -4
  2. package/dist/agents/bub.cjs.map +1 -1
  3. package/dist/agents/bub.d.cts +2 -2
  4. package/dist/agents/bub.d.mts +2 -2
  5. package/dist/agents/bub.d.ts +2 -2
  6. package/dist/agents/codex-app-server.cjs +2 -3
  7. package/dist/agents/codex-app-server.cjs.map +1 -1
  8. package/dist/agents/codex.cjs +4 -4
  9. package/dist/agents/codex.cjs.map +1 -1
  10. package/dist/agents/codex.d.cts +3 -3
  11. package/dist/agents/codex.d.mts +3 -3
  12. package/dist/agents/codex.d.ts +3 -3
  13. package/dist/agents/sdk-streams.cjs +11 -4
  14. package/dist/agents/sdk-streams.cjs.map +1 -1
  15. package/dist/analysis/bindings.cjs +74 -19
  16. package/dist/analysis/bindings.cjs.map +1 -1
  17. package/dist/analysis/bindings.d.cts +534 -156
  18. package/dist/analysis/bindings.d.mts +534 -156
  19. package/dist/analysis/bindings.d.ts +534 -156
  20. package/dist/analysis/domain-view.cjs.map +1 -1
  21. package/dist/analysis/domain-view.d.cts +137 -8
  22. package/dist/analysis/domain-view.d.mts +137 -8
  23. package/dist/analysis/domain-view.d.ts +137 -8
  24. package/dist/analysis/index.cjs.map +1 -1
  25. package/dist/analysis/index.d.cts +1 -1
  26. package/dist/analysis/index.d.mts +1 -1
  27. package/dist/analysis/index.d.ts +1 -1
  28. package/dist/assertions/api.cjs.map +1 -1
  29. package/dist/assertions/api.d.cts +62 -0
  30. package/dist/assertions/api.d.mts +62 -0
  31. package/dist/assertions/api.d.ts +62 -0
  32. package/dist/assertions/judge.cjs +56 -5
  33. package/dist/assertions/judge.cjs.map +1 -1
  34. package/dist/assertions/match.cjs +66 -42
  35. package/dist/assertions/match.cjs.map +1 -1
  36. package/dist/assertions/match.d.cts +13 -0
  37. package/dist/assertions/match.d.mts +13 -0
  38. package/dist/assertions/match.d.ts +13 -0
  39. package/dist/assertions/record/attachment.cjs +104 -33
  40. package/dist/assertions/record/attachment.cjs.map +1 -1
  41. package/dist/assertions/record/attachment.d.cts +294 -57
  42. package/dist/assertions/record/attachment.d.mts +294 -57
  43. package/dist/assertions/record/attachment.d.ts +294 -57
  44. package/dist/assertions/record/codec.cjs +91 -17
  45. package/dist/assertions/record/codec.cjs.map +1 -1
  46. package/dist/assertions/record/codec.d.cts +280 -52
  47. package/dist/assertions/record/codec.d.mts +280 -52
  48. package/dist/assertions/record/codec.d.ts +280 -52
  49. package/dist/assertions/record/index.js +2 -0
  50. package/dist/assertions/record/model.cjs +16 -0
  51. package/dist/assertions/record/model.cjs.map +1 -1
  52. package/dist/assertions/record/model.d.cts +120 -13
  53. package/dist/assertions/record/model.d.mts +120 -13
  54. package/dist/assertions/record/model.d.ts +120 -13
  55. package/dist/assertions/record/model.js +2 -0
  56. package/dist/assertions/record/producer.cjs +70 -50
  57. package/dist/assertions/record/producer.cjs.map +1 -1
  58. package/dist/assertions/record/producer.d.cts +8 -7
  59. package/dist/assertions/record/producer.d.mts +8 -7
  60. package/dist/assertions/record/producer.d.ts +8 -7
  61. package/dist/assertions/runtime.cjs +49 -7
  62. package/dist/assertions/runtime.cjs.map +1 -1
  63. package/dist/cli/application.cjs +40 -0
  64. package/dist/cli/application.cjs.map +1 -0
  65. package/dist/cli/application.d.cts +129 -0
  66. package/dist/cli/application.d.mts +129 -0
  67. package/dist/cli/application.d.ts +129 -0
  68. package/dist/cli/application.js +24 -0
  69. package/dist/cli/application.js.map +1 -0
  70. package/dist/cli/bootstrap.cjs +10 -4
  71. package/dist/cli/bootstrap.cjs.map +1 -1
  72. package/dist/cli/node-application.cjs +123 -0
  73. package/dist/cli/node-application.cjs.map +1 -0
  74. package/dist/cli/node-application.d.cts +14 -0
  75. package/dist/cli/node-application.d.mts +14 -0
  76. package/dist/cli/node-application.d.ts +14 -0
  77. package/dist/cli/node-application.js +26 -0
  78. package/dist/cli/node-application.js.map +1 -0
  79. package/dist/cli/program.cjs +2807 -0
  80. package/dist/cli/program.cjs.map +1 -0
  81. package/dist/cli/program.d.cts +352 -0
  82. package/dist/cli/program.d.mts +352 -0
  83. package/dist/cli/program.d.ts +352 -0
  84. package/dist/cli/program.js +36 -0
  85. package/dist/cli/program.js.map +1 -0
  86. package/dist/cli/project-configuration.cjs +134 -0
  87. package/dist/cli/project-configuration.cjs.map +1 -0
  88. package/dist/cli/project-configuration.d.cts +64 -0
  89. package/dist/cli/project-configuration.d.mts +64 -0
  90. package/dist/cli/project-configuration.d.ts +64 -0
  91. package/dist/cli/project-configuration.js +22 -0
  92. package/dist/cli/project-configuration.js.map +1 -0
  93. package/dist/cli/record.cjs +20 -4
  94. package/dist/cli/record.cjs.map +1 -1
  95. package/dist/cli/record.d.cts +3 -3
  96. package/dist/cli/record.d.mts +3 -3
  97. package/dist/cli/record.d.ts +3 -3
  98. package/dist/cli.cjs +19 -3130
  99. package/dist/cli.cjs.map +1 -1
  100. package/dist/cli.d.cts +2 -148
  101. package/dist/cli.d.mts +2 -148
  102. package/dist/cli.d.ts +2 -148
  103. package/dist/cli.js +22 -30
  104. package/dist/context/assert-first.cjs +20 -15
  105. package/dist/context/assert-first.cjs.map +1 -1
  106. package/dist/eval/record/verdict.cjs +3 -2
  107. package/dist/eval/record/verdict.cjs.map +1 -1
  108. package/dist/experiment/host/index.cjs +1 -6
  109. package/dist/experiment/host/index.cjs.map +1 -1
  110. package/dist/experiment/host/index.d.cts +1 -0
  111. package/dist/experiment/host/index.d.mts +1 -0
  112. package/dist/experiment/host/index.d.ts +1 -0
  113. package/dist/load-config.cjs +13 -4
  114. package/dist/load-config.cjs.map +1 -1
  115. package/dist/load-config.d.cts +4 -3
  116. package/dist/load-config.d.mts +4 -3
  117. package/dist/load-config.d.ts +4 -3
  118. package/dist/load-config.js +4 -2
  119. package/dist/o11y/parsers/codex.cjs +29 -7
  120. package/dist/o11y/parsers/codex.cjs.map +1 -1
  121. package/dist/record/codec/core.d.cts +0 -2
  122. package/dist/record/codec/core.d.mts +0 -2
  123. package/dist/record/codec/core.d.ts +0 -2
  124. package/dist/record/codec/identifiers.cjs +2 -3
  125. package/dist/record/codec/identifiers.cjs.map +1 -1
  126. package/dist/record/codec/identifiers.d.cts +1 -2
  127. package/dist/record/codec/identifiers.d.mts +1 -2
  128. package/dist/record/codec/identifiers.d.ts +1 -2
  129. package/dist/record/codec/identifiers.js +10 -12
  130. package/dist/record/codec/index.js +42 -44
  131. package/dist/record/definition/attachment.cjs +1 -0
  132. package/dist/record/definition/attachment.cjs.map +1 -1
  133. package/dist/record/definition/attachment.d.cts +14 -0
  134. package/dist/record/definition/attachment.d.mts +14 -0
  135. package/dist/record/definition/attachment.d.ts +14 -0
  136. package/dist/record/family/assertions-v1.cjs +104 -0
  137. package/dist/record/family/assertions-v1.cjs.map +1 -0
  138. package/dist/record/family/assertions-v1.d.cts +2 -0
  139. package/dist/record/family/assertions-v1.d.mts +2 -0
  140. package/dist/record/family/assertions-v1.d.ts +2 -0
  141. package/dist/record/family/assertions-v1.js +6 -0
  142. package/dist/record/family/assertions-v1.js.map +1 -0
  143. package/dist/record/family/assertions.cjs +16 -5
  144. package/dist/record/family/assertions.cjs.map +1 -1
  145. package/dist/record/family/assertions.d.cts +510 -56
  146. package/dist/record/family/assertions.d.mts +510 -56
  147. package/dist/record/family/assertions.d.ts +510 -56
  148. package/dist/record/family/assertions.js +14 -10
  149. package/dist/record/family/catalog.cjs +17 -1
  150. package/dist/record/family/catalog.cjs.map +1 -1
  151. package/dist/record/family/catalog.d.cts +1292 -104
  152. package/dist/record/family/catalog.d.mts +1292 -104
  153. package/dist/record/family/catalog.d.ts +1292 -104
  154. package/dist/record/family/catalog.js +22 -20
  155. package/dist/record/family/index.js +144 -138
  156. package/dist/record/family/observability-v1.cjs +5 -0
  157. package/dist/record/family/observability-v1.cjs.map +1 -1
  158. package/dist/record/family/observability.cjs +1 -1
  159. package/dist/record/family/observability.cjs.map +1 -1
  160. package/dist/record/host/runtime.cjs +323 -173
  161. package/dist/record/host/runtime.cjs.map +1 -1
  162. package/dist/record/host/types.cjs.map +1 -1
  163. package/dist/record/host/types.d.cts +9 -7
  164. package/dist/record/host/types.d.mts +9 -7
  165. package/dist/record/host/types.d.ts +9 -7
  166. package/dist/record/model/core.cjs.map +1 -1
  167. package/dist/record/model/core.d.cts +1 -2
  168. package/dist/record/model/core.d.mts +1 -2
  169. package/dist/record/model/core.d.ts +1 -2
  170. package/dist/record/model/definition.cjs +1 -2
  171. package/dist/record/model/definition.cjs.map +1 -1
  172. package/dist/record/model/definition.d.cts +1 -7
  173. package/dist/record/model/definition.d.mts +1 -7
  174. package/dist/record/model/definition.d.ts +1 -7
  175. package/dist/record/model/identifiers.cjs +2 -3
  176. package/dist/record/model/identifiers.cjs.map +1 -1
  177. package/dist/record/model/identifiers.d.cts +1 -3
  178. package/dist/record/model/identifiers.d.mts +1 -3
  179. package/dist/record/model/identifiers.d.ts +1 -3
  180. package/dist/record/model/identifiers.js +36 -38
  181. package/dist/record/model/index.js +60 -62
  182. package/dist/record/platform/node.cjs +17 -7
  183. package/dist/record/platform/node.cjs.map +1 -1
  184. package/dist/record/platform/services.cjs.map +1 -1
  185. package/dist/record/platform/services.d.cts +8 -3
  186. package/dist/record/platform/services.d.mts +8 -3
  187. package/dist/record/platform/services.d.ts +8 -3
  188. package/dist/record/reader/format.cjs +16 -65
  189. package/dist/record/reader/format.cjs.map +1 -1
  190. package/dist/record/reader/format.d.cts +5 -9
  191. package/dist/record/reader/format.d.mts +5 -9
  192. package/dist/record/reader/format.d.ts +5 -9
  193. package/dist/record/reader/index.js +10 -8
  194. package/dist/record/reader/runtime.cjs +63 -32
  195. package/dist/record/reader/runtime.cjs.map +1 -1
  196. package/dist/record/reader/runtime.d.cts +40 -4
  197. package/dist/record/reader/runtime.d.mts +40 -4
  198. package/dist/record/reader/runtime.d.ts +40 -4
  199. package/dist/record/reader/runtime.js +6 -4
  200. package/dist/report/assets/enhance.js +5 -5
  201. package/dist/report/assets/styles.css +186 -24
  202. package/dist/report/built-in/result-components.cjs +8 -5
  203. package/dist/report/built-in/result-components.cjs.map +1 -1
  204. package/dist/report/built-in/standard.cjs +3 -0
  205. package/dist/report/built-in/standard.cjs.map +1 -1
  206. package/dist/report/built-in/standard.d.cts +2 -0
  207. package/dist/report/built-in/standard.d.mts +2 -0
  208. package/dist/report/built-in/standard.d.ts +2 -0
  209. package/dist/report/client-dist/app.js +53 -0
  210. package/dist/report/components/attempt-detail/compute.cjs +106 -231
  211. package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
  212. package/dist/report/components/attempt-detail/compute.d.cts +9 -43
  213. package/dist/report/components/attempt-detail/compute.d.mts +9 -43
  214. package/dist/report/components/attempt-detail/compute.d.ts +9 -43
  215. package/dist/report/components/attempt-detail/compute.js +2 -4
  216. package/dist/report/components/attempt-detail/content.cjs +3 -4
  217. package/dist/report/components/attempt-detail/content.cjs.map +1 -1
  218. package/dist/report/components/attempt-detail/validate.cjs +44 -2
  219. package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
  220. package/dist/report/components/entity-lists/compute.cjs +9 -15
  221. package/dist/report/components/entity-lists/compute.cjs.map +1 -1
  222. package/dist/report/components/entity-lists/content.cjs +53 -40
  223. package/dist/report/components/entity-lists/content.cjs.map +1 -1
  224. package/dist/report/components/entity-lists/index.cjs +1 -3
  225. package/dist/report/components/entity-lists/index.cjs.map +1 -1
  226. package/dist/report/components/experiment-detail/compute.cjs +4 -6
  227. package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
  228. package/dist/report/definition/cell.cjs +14 -7
  229. package/dist/report/definition/cell.cjs.map +1 -1
  230. package/dist/report/definition/cell.d.cts +4 -0
  231. package/dist/report/definition/cell.d.mts +4 -0
  232. package/dist/report/definition/cell.d.ts +4 -0
  233. package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
  234. package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
  235. package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
  236. package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
  237. package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
  238. package/dist/report/definition/primitives/assertion-evidence.js +6 -0
  239. package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
  240. package/dist/report/definition/primitives.cjs +14 -1
  241. package/dist/report/definition/primitives.cjs.map +1 -1
  242. package/dist/report/definition/report.cjs +16 -8
  243. package/dist/report/definition/report.cjs.map +1 -1
  244. package/dist/report/definition/report.d.cts +6 -0
  245. package/dist/report/definition/report.d.mts +6 -0
  246. package/dist/report/definition/report.d.ts +6 -0
  247. package/dist/report/definition/table-text.cjs +12 -3
  248. package/dist/report/definition/table-text.cjs.map +1 -1
  249. package/dist/report/definition/table-text.d.cts +6 -1
  250. package/dist/report/definition/table-text.d.mts +6 -1
  251. package/dist/report/definition/table-text.d.ts +6 -1
  252. package/dist/report/execution/model.cjs +6 -14
  253. package/dist/report/execution/model.cjs.map +1 -1
  254. package/dist/report/execution/model.d.cts +5 -10
  255. package/dist/report/execution/model.d.mts +5 -10
  256. package/dist/report/execution/model.d.ts +5 -10
  257. package/dist/report/execution/model.js +6 -6
  258. package/dist/report/execution/paths.cjs +0 -11
  259. package/dist/report/execution/paths.cjs.map +1 -1
  260. package/dist/report/execution/paths.d.cts +0 -1
  261. package/dist/report/execution/paths.d.mts +0 -1
  262. package/dist/report/execution/paths.d.ts +0 -1
  263. package/dist/report/execution/paths.js +6 -8
  264. package/dist/report/host/execute.cjs +13 -22
  265. package/dist/report/host/execute.cjs.map +1 -1
  266. package/dist/report/host/execute.d.cts +1 -4
  267. package/dist/report/host/execute.d.mts +1 -4
  268. package/dist/report/host/execute.d.ts +1 -4
  269. package/dist/report/host/from-record.cjs +3 -0
  270. package/dist/report/host/from-record.cjs.map +1 -1
  271. package/dist/report/host/from-record.d.cts +4 -1
  272. package/dist/report/host/from-record.d.mts +4 -1
  273. package/dist/report/host/from-record.d.ts +4 -1
  274. package/dist/report/host/site-assets.cjs +1 -2
  275. package/dist/report/host/site-assets.cjs.map +1 -1
  276. package/dist/report/host/site-assets.d.cts +0 -1
  277. package/dist/report/host/site-assets.d.mts +0 -1
  278. package/dist/report/host/site-assets.d.ts +0 -1
  279. package/dist/report/host/site-assets.js +2 -4
  280. package/dist/report/host/static.cjs +71 -346
  281. package/dist/report/host/static.cjs.map +1 -1
  282. package/dist/report/host/static.d.cts +1 -3
  283. package/dist/report/host/static.d.mts +1 -3
  284. package/dist/report/host/static.d.ts +1 -3
  285. package/dist/report/host/static.js +2 -2
  286. package/dist/report/host/view-session.cjs.map +1 -1
  287. package/dist/report/host/view-session.d.cts +1 -1
  288. package/dist/report/host/view-session.d.mts +1 -1
  289. package/dist/report/host/view-session.d.ts +1 -1
  290. package/dist/report/model/locale.cjs +1 -1
  291. package/dist/report/model/locale.cjs.map +1 -1
  292. package/dist/report/model/locale.d.cts +1 -1
  293. package/dist/report/model/locale.d.mts +1 -1
  294. package/dist/report/model/locale.d.ts +1 -1
  295. package/dist/report/model/pricing.cjs +2 -2
  296. package/dist/report/model/pricing.cjs.map +1 -1
  297. package/dist/report/react/enhance.js +5 -5
  298. package/dist/report/react/styles.css +186 -24
  299. package/dist/runner/adoption.cjs +4 -7
  300. package/dist/runner/adoption.cjs.map +1 -1
  301. package/dist/runner/feedback/failure.cjs +77 -2
  302. package/dist/runner/feedback/failure.cjs.map +1 -1
  303. package/dist/runner/feedback/failure.d.cts +2 -1
  304. package/dist/runner/feedback/failure.d.mts +2 -1
  305. package/dist/runner/feedback/failure.d.ts +2 -1
  306. package/dist/runner/project-current.cjs +2 -13
  307. package/dist/runner/project-current.cjs.map +1 -1
  308. package/dist/runner/project-current.d.cts +4 -2
  309. package/dist/runner/project-current.d.mts +4 -2
  310. package/dist/runner/project-current.d.ts +4 -2
  311. package/dist/runner/reporters/braintrust.cjs +7 -7
  312. package/dist/runner/reporters/braintrust.cjs.map +1 -1
  313. package/dist/runner/reuse-readback.cjs +3 -4
  314. package/dist/runner/reuse-readback.cjs.map +1 -1
  315. package/dist/runner/run.cjs +5 -2
  316. package/dist/runner/run.cjs.map +1 -1
  317. package/dist/view/server.cjs +2 -37
  318. package/dist/view/server.cjs.map +1 -1
  319. package/dist/view/server.d.cts +0 -3
  320. package/dist/view/server.d.mts +0 -3
  321. package/dist/view/server.d.ts +0 -3
  322. package/docs-site/zh/reference/builtin-agents.mdx +7 -7
  323. package/docs-site/zh/reference/official-adapters.mdx +4 -4
  324. package/docs-site/zh/reference/report-components.mdx +2 -2
  325. package/docs-site/zh/tutorials/configuration.mdx +2 -2
  326. package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
  327. package/docs-site/zh/tutorials/publish-report.mdx +4 -4
  328. package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
  329. package/docs-site/zh/tutorials/theming.mdx +2 -2
  330. package/package.json +4 -6
  331. package/dist/record/migration/index.cjs +0 -5
  332. package/dist/record/migration/index.cjs.map +0 -1
  333. package/dist/record/migration/index.d.cts +0 -11
  334. package/dist/record/migration/index.d.mts +0 -11
  335. package/dist/record/migration/index.d.ts +0 -11
  336. package/dist/record/migration/index.js +0 -6
  337. package/dist/record/migration/index.js.map +0 -1
  338. package/dist/report/host/site-runtime.cjs +0 -92
  339. package/dist/report/host/site-runtime.cjs.map +0 -1
  340. package/dist/report/host/site-runtime.d.cts +0 -9
  341. package/dist/report/host/site-runtime.d.mts +0 -9
  342. package/dist/report/host/site-runtime.d.ts +0 -9
  343. package/dist/report/host/site-runtime.js +0 -10
  344. package/dist/report/host/site-runtime.js.map +0 -1
  345. package/dist/view/client-dist/app.css +0 -2
  346. package/dist/view/client-dist/app.js +0 -49
  347. package/dist/view/data.cjs +0 -3
  348. package/dist/view/data.cjs.map +0 -1
  349. package/dist/view/data.d.cts +0 -9
  350. package/dist/view/data.d.mts +0 -9
  351. package/dist/view/data.d.ts +0 -9
  352. package/dist/view/data.js +0 -4
  353. package/dist/view/data.js.map +0 -1
  354. package/dist/view/index.cjs +0 -24
  355. package/dist/view/index.cjs.map +0 -1
  356. package/dist/view/index.d.cts +0 -9
  357. package/dist/view/index.d.mts +0 -9
  358. package/dist/view/index.d.ts +0 -9
  359. package/dist/view/index.js +0 -28
  360. package/dist/view/index.js.map +0 -1
  361. package/dist/view/report-view-cache.cjs +0 -200
  362. package/dist/view/report-view-cache.cjs.map +0 -1
  363. package/dist/view/report-view-cache.d.cts +0 -67
  364. package/dist/view/report-view-cache.d.mts +0 -67
  365. package/dist/view/report-view-cache.d.ts +0 -67
  366. package/dist/view/report-view-cache.js +0 -8
  367. package/dist/view/report-view-cache.js.map +0 -1
  368. package/dist/view/shared/types.cjs +0 -3
  369. package/dist/view/shared/types.cjs.map +0 -1
  370. package/dist/view/shared/types.d.cts +0 -51
  371. package/dist/view/shared/types.d.mts +0 -51
  372. package/dist/view/shared/types.d.ts +0 -51
  373. package/dist/view/shared/types.js +0 -4
  374. package/dist/view/shared/types.js.map +0 -1
  375. package/dist/view/site.cjs +0 -32
  376. package/dist/view/site.cjs.map +0 -1
  377. package/dist/view/site.d.cts +0 -24
  378. package/dist/view/site.d.mts +0 -24
  379. package/dist/view/site.d.ts +0 -24
  380. package/dist/view/site.js +0 -8
  381. package/dist/view/site.js.map +0 -1
  382. package/dist/view/styles.css +0 -170
  383. package/dist/view/template.html +0 -17
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
+ const __niceevalDynamicImport = (specifier) => import(specifier);
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertionsRecordAttachment = exports.AssertionsAttachmentSchema = exports.AssertionSourceSitesSchema = exports.AssertionsEntriesSchema = exports.AssertionSourceSiteSchema = void 0;
4
+ exports.assertionsRecordAttachment = exports.AssertionsAttachmentV1Schema = exports.AssertionsAttachmentSchema = exports.AssertionSourceSitesSchema = exports.AssertionsEntriesV1Schema = exports.AssertionsEntriesSchema = exports.AssertionSourceSiteSchema = void 0;
4
5
  exports.assertionsBlobRefs = assertionsBlobRefs;
5
6
  exports.assertionsAttachmentIntegrityIssues = assertionsAttachmentIntegrityIssues;
6
7
  exports.assertionsSourceSiteIntegrityIssues = assertionsSourceSiteIntegrityIssues;
@@ -34,10 +35,11 @@ exports.AssertionSourceSiteSchema = effect_1.Schema.Struct({
34
35
  const assertionSchemas = (0, codec_ts_1.createAssertionsRecordSchemas)(blob_ref_ts_1.RecordBlobRefSchema);
35
36
  /** Reuse the existing v1 entry schema inside the one direct attachment schema. */
36
37
  exports.AssertionsEntriesSchema = assertionSchemas.entries;
38
+ exports.AssertionsEntriesV1Schema = assertionSchemas.historicalEntries;
37
39
  exports.AssertionSourceSitesSchema = effect_1.Schema.Array(exports.AssertionSourceSiteSchema);
38
40
  function hasNoLegacyAttachmentMaterial(document) {
39
41
  const materialIsAllowed = (material) => material.kind !== "record-attachment";
40
- return document.entries.every((entry) => materialIsAllowed(entry.subject) && entry.evidence.every(materialIsAllowed));
42
+ return document.entries.every((entry) => materialIsAllowed(entry.materials.source) && entry.materials.evidence.every(materialIsAllowed));
41
43
  }
42
44
  function hasCanonicalSourceSites(payload) {
43
45
  const entryIds = new Set(payload.entries.map((entry) => entry.entryId));
@@ -94,6 +96,11 @@ exports.AssertionsAttachmentSchema = effect_1.Schema.Struct({
94
96
  identifier: "AssertionsSourceSites",
95
97
  description: "source sites join local entries with unique canonical source order",
96
98
  }));
99
+ /** @internal Package-private historical wire codec, loaded only by maintenance. */
100
+ exports.AssertionsAttachmentV1Schema = effect_1.Schema.Struct({
101
+ entries: effect_1.Schema.propertySignature(exports.AssertionsEntriesV1Schema).pipe(effect_1.Schema.fromKey("entries-data")),
102
+ sourceSites: effect_1.Schema.propertySignature(exports.AssertionSourceSitesSchema).pipe(effect_1.Schema.fromKey("source-sites-data")),
103
+ });
97
104
  /** Complete closure projection for `niceeval.assertions`. */
98
105
  function assertionsBlobRefs(payload) {
99
106
  return (0, attachment_ts_1.assertionBlobRefs)(payload);
@@ -121,8 +128,8 @@ function assertionsAttachmentIntegrityIssues(payload, blobs) {
121
128
  }
122
129
  };
123
130
  for (const [index, entry] of payload.entries.entries()) {
124
- validateMaterial(entry.subject, ["entries", String(index), "subject"]);
125
- for (const [evidenceIndex, material] of entry.evidence.entries()) {
131
+ validateMaterial(entry.materials.source, ["entries", String(index), "materials", "source"]);
132
+ for (const [evidenceIndex, material] of entry.materials.evidence.entries()) {
126
133
  validateMaterial(material, ["entries", String(index), "evidence", String(evidenceIndex)]);
127
134
  }
128
135
  }
@@ -155,7 +162,7 @@ const AssertionsBlobBudget = Object.freeze({
155
162
  exports.assertionsRecordAttachment = (0, index_ts_1.defineRecordAttachment)({
156
163
  family: "niceeval.assertions",
157
164
  current: {
158
- schemaVersion: 1,
165
+ schemaVersion: 2,
159
166
  owners: {
160
167
  attempt: {
161
168
  schema: exports.AssertionsAttachmentSchema,
@@ -168,5 +175,9 @@ exports.assertionsRecordAttachment = (0, index_ts_1.defineRecordAttachment)({
168
175
  },
169
176
  },
170
177
  },
178
+ maintenance: () => __niceevalDynamicImport("./assertions-v1.cjs").then(({ assertionsV1Maintenance }) => assertionsV1Maintenance),
179
+ adjacentMigrationLinks: Object.freeze([
180
+ Object.freeze({ fromSchemaVersion: 1, toSchemaVersion: 2, rewritePayload: true }),
181
+ ]),
171
182
  });
172
183
  //# sourceMappingURL=assertions.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.js","sourceRoot":"","sources":["assertions.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { Schema } from \"effect\";\nimport { assertionBlobRefs } from \"../../assertions/record/attachment.ts\";\nimport { AssertionEntryIdSchema, MAX_ASSERTION_DOCUMENT_BYTES, createAssertionsRecordSchemas, } from \"../../assertions/record/codec.ts\";\nimport { RecordBlobRefSchema, type RecordBlobRef, } from \"../attachment/blob-ref.ts\";\nimport { recordAttachmentIssue, type RecordAttachmentIssue } from \"../attachment/errors.ts\";\nimport { defineRecordAttachment } from \"../definition/index.ts\";\nimport { Sha256DigestSchema, SourceItemIdSchema, } from \"../codec/identifiers.ts\";\nimport { FixedAttachmentValueLimits, PositiveSafeIntegerSchema, } from \"./common.ts\";\nimport type { SourcesAttachment } from \"./sources.ts\";\nconst AssertionSourceRoleSchema = Schema.Literal(\"declaration\", \"threshold\", \"score\", \"gate\", \"optional\", \"stop\");\nconst AssertionSourcePositionSchema = Schema.Struct({\n line: PositiveSafeIntegerSchema,\n column: PositiveSafeIntegerSchema,\n});\n/**\n * A source site is a semantic join only. It names an item in the exact origin\n * Run Sources payload and never gains that payload's blob capability.\n */\nexport const AssertionSourceSiteSchema = Schema.Struct({\n entryId: AssertionEntryIdSchema,\n sourceOrder: PositiveSafeIntegerSchema,\n role: AssertionSourceRoleSchema,\n sourceItemId: SourceItemIdSchema,\n sha256: Sha256DigestSchema,\n start: AssertionSourcePositionSchema,\n end: AssertionSourcePositionSchema,\n});\nexport type AssertionSourceSite = Schema.Schema.Type<typeof AssertionSourceSiteSchema>;\nconst assertionSchemas = createAssertionsRecordSchemas(RecordBlobRefSchema);\n/** Reuse the existing v1 entry schema inside the one direct attachment schema. */\nexport const AssertionsEntriesSchema = assertionSchemas.entries;\nexport const AssertionSourceSitesSchema = Schema.Array(AssertionSourceSiteSchema);\nfunction hasNoLegacyAttachmentMaterial(document: {\n readonly entries: readonly {\n readonly subject: {\n readonly kind: string;\n };\n readonly evidence: readonly {\n readonly kind: string;\n }[];\n }[];\n}): boolean {\n const materialIsAllowed = (material: {\n readonly kind: string;\n }): boolean => material.kind !== \"record-attachment\";\n return document.entries.every((entry) => materialIsAllowed(entry.subject) && entry.evidence.every(materialIsAllowed));\n}\nfunction hasCanonicalSourceSites(payload: {\n readonly entries: readonly {\n readonly entryId: string;\n }[];\n readonly sourceSites: readonly AssertionSourceSite[];\n}): boolean {\n const entryIds = new Set(payload.entries.map((entry) => entry.entryId));\n const seenOrders = new Set<number>();\n let previous: string | undefined;\n for (const site of payload.sourceSites) {\n if (!entryIds.has(site.entryId) || seenOrders.has(site.sourceOrder))\n return false;\n seenOrders.add(site.sourceOrder);\n const key = `${site.entryId}\\u0000${site.sourceOrder.toString().padStart(16, \"0\")}`;\n if (previous !== undefined && previous >= key)\n return false;\n previous = key;\n }\n return true;\n}\nfunction hasUniqueAssertionEntryIds(document: {\n readonly entries: readonly {\n readonly entryId: string;\n }[];\n}): boolean {\n const entryIds = new Set<string>();\n for (const entry of document.entries) {\n if (entryIds.has(entry.entryId))\n return false;\n entryIds.add(entry.entryId);\n }\n return true;\n}\nfunction isAssertionsDocumentWithinSizeLimit(value: unknown): boolean {\n try {\n const serialized = JSON.stringify(value);\n return typeof serialized === \"string\" &&\n new TextEncoder().encode(serialized).byteLength <= MAX_ASSERTION_DOCUMENT_BYTES;\n }\n catch {\n return false;\n }\n}\n/**\n * `sourceSites` is embedded in the fixed Assertions payload. The former\n * `niceeval.assertion-source-sites/v1` family is not part of Record v1.\n */\n/** One direct current schema: Type fields and durable keys share all v1 filters. */\nexport const AssertionsAttachmentSchema = Schema.Struct({\n entries: Schema.propertySignature(AssertionsEntriesSchema).pipe(Schema.fromKey(\"entries-data\")),\n sourceSites: Schema.propertySignature(AssertionSourceSitesSchema).pipe(Schema.fromKey(\"source-sites-data\")),\n}).pipe(Schema.filter(hasUniqueAssertionEntryIds, {\n identifier: \"AssertionsUniqueEntryIds\",\n description: \"unique attachment-local assertion entry IDs\",\n}), Schema.filter(isAssertionsDocumentWithinSizeLimit, {\n identifier: \"AssertionsDocumentSize\",\n description: \"a JSON document no larger than 4 MiB\",\n}), Schema.filter(hasNoLegacyAttachmentMaterial, {\n identifier: \"AssertionsNoLegacyAttachmentMaterial\",\n description: \"Assertions do not reference retired attachment families\",\n}), Schema.filter(hasCanonicalSourceSites, {\n identifier: \"AssertionsSourceSites\",\n description: \"source sites join local entries with unique canonical source order\",\n}));\nexport type AssertionsAttachment = Schema.Schema.Type<typeof AssertionsAttachmentSchema>;\n/** Complete closure projection for `niceeval.assertions`. */\nexport function assertionsBlobRefs(payload: AssertionsAttachment): readonly RecordBlobRef[] {\n return assertionBlobRefs(payload);\n}\n/** Binds every Assertions blob declaration to its exact materialized bytes. */\nexport function assertionsAttachmentIntegrityIssues(payload: AssertionsAttachment, blobs: readonly {\n readonly ref: RecordBlobRef;\n readonly bytes: Uint8Array;\n}[]): readonly RecordAttachmentIssue[] {\n const bytesByRef = new Map<RecordBlobRef, Uint8Array>(blobs.map((blob) => [blob.ref, blob.bytes] as const));\n const issues: RecordAttachmentIssue[] = [];\n const validateMaterial = (material: AssertionsAttachment[\"entries\"][number][\"subject\"], path: readonly string[]) => {\n if (material.kind !== \"blob\")\n return;\n const bytes = bytesByRef.get(material.ref);\n if (bytes === undefined || bytes.byteLength !== material.byteLength) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\n ...path,\n bytes === undefined ? \"ref\" : \"byteLength\",\n ]));\n return;\n }\n if (createHash(\"sha256\").update(bytes).digest(\"hex\") !== material.sha256) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\n ...path,\n \"sha256\",\n ]));\n }\n };\n for (const [index, entry] of payload.entries.entries()) {\n validateMaterial(entry.subject, [\"entries\", String(index), \"subject\"]);\n for (const [evidenceIndex, material] of entry.evidence.entries()) {\n validateMaterial(material, [\"entries\", String(index), \"evidence\", String(evidenceIndex)]);\n }\n }\n return Object.freeze(issues);\n}\n/**\n * Host-only semantic join to the exact origin Sources manifest. The row owns\n * neither source bytes nor a blob capability, so this check deliberately\n * compares only the explicit item identity, digest, and stored coordinates.\n */\nexport function assertionsSourceSiteIntegrityIssues(payload: AssertionsAttachment, sources: SourcesAttachment): readonly RecordAttachmentIssue[] {\n const sourceById = new Map(sources.items.map((item) => [item.sourceItemId, item] as const));\n const issues: RecordAttachmentIssue[] = [];\n for (const [index, site] of payload.sourceSites.entries()) {\n const source = sourceById.get(site.sourceItemId);\n const startsAfterEnd = site.start.line > site.end.line ||\n (site.start.line === site.end.line && site.start.column > site.end.column);\n if (source === undefined || source.sha256 !== site.sha256 || startsAfterEnd) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\"sourceSites\", String(index)]));\n }\n }\n return Object.freeze(issues);\n}\nconst AssertionsBlobBudget = Object.freeze({\n maximumBlobs: 20000,\n maximumBlobBytes: 16 * 1024 * 1024,\n maximumTotalBytes: 64 * 1024 * 1024,\n});\n/** The sole current declaration for the Attempt-owned Assertions family. */\nexport const assertionsRecordAttachment = defineRecordAttachment({\n family: \"niceeval.assertions\",\n current: {\n schemaVersion: 1,\n owners: {\n attempt: {\n schema: AssertionsAttachmentSchema,\n limits: FixedAttachmentValueLimits,\n blobs: {\n refs: assertionsBlobRefs,\n budget: AssertionsBlobBudget,\n verify: assertionsAttachmentIntegrityIssues,\n },\n },\n },\n },\n});\n"]}
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["assertions.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { Schema } from \"effect\";\nimport { assertionBlobRefs } from \"../../assertions/record/attachment.ts\";\nimport { AssertionEntryIdSchema, MAX_ASSERTION_DOCUMENT_BYTES, createAssertionsRecordSchemas, } from \"../../assertions/record/codec.ts\";\nimport { RecordBlobRefSchema, type RecordBlobRef, } from \"../attachment/blob-ref.ts\";\nimport { recordAttachmentIssue, type RecordAttachmentIssue } from \"../attachment/errors.ts\";\nimport { defineRecordAttachment } from \"../definition/index.ts\";\nimport { Sha256DigestSchema, SourceItemIdSchema, } from \"../codec/identifiers.ts\";\nimport { FixedAttachmentValueLimits, PositiveSafeIntegerSchema, } from \"./common.ts\";\nimport type { SourcesAttachment } from \"./sources.ts\";\nconst AssertionSourceRoleSchema = Schema.Literal(\"declaration\", \"threshold\", \"score\", \"gate\", \"optional\", \"stop\");\nconst AssertionSourcePositionSchema = Schema.Struct({\n line: PositiveSafeIntegerSchema,\n column: PositiveSafeIntegerSchema,\n});\n/**\n * A source site is a semantic join only. It names an item in the exact origin\n * Run Sources payload and never gains that payload's blob capability.\n */\nexport const AssertionSourceSiteSchema = Schema.Struct({\n entryId: AssertionEntryIdSchema,\n sourceOrder: PositiveSafeIntegerSchema,\n role: AssertionSourceRoleSchema,\n sourceItemId: SourceItemIdSchema,\n sha256: Sha256DigestSchema,\n start: AssertionSourcePositionSchema,\n end: AssertionSourcePositionSchema,\n});\nexport type AssertionSourceSite = Schema.Schema.Type<typeof AssertionSourceSiteSchema>;\nconst assertionSchemas = createAssertionsRecordSchemas(RecordBlobRefSchema);\n/** Reuse the existing v1 entry schema inside the one direct attachment schema. */\nexport const AssertionsEntriesSchema = assertionSchemas.entries;\nexport const AssertionsEntriesV1Schema = assertionSchemas.historicalEntries;\nexport const AssertionSourceSitesSchema = Schema.Array(AssertionSourceSiteSchema);\nfunction hasNoLegacyAttachmentMaterial(document: {\n readonly entries: readonly {\n readonly materials: {\n readonly source: {\n readonly kind: string;\n };\n readonly evidence: readonly {\n readonly kind: string;\n }[];\n };\n }[];\n}): boolean {\n const materialIsAllowed = (material: {\n readonly kind: string;\n }): boolean => material.kind !== \"record-attachment\";\n return document.entries.every((entry) => materialIsAllowed(entry.materials.source) && entry.materials.evidence.every(materialIsAllowed));\n}\nfunction hasCanonicalSourceSites(payload: {\n readonly entries: readonly {\n readonly entryId: string;\n }[];\n readonly sourceSites: readonly AssertionSourceSite[];\n}): boolean {\n const entryIds = new Set(payload.entries.map((entry) => entry.entryId));\n const seenOrders = new Set<number>();\n let previous: string | undefined;\n for (const site of payload.sourceSites) {\n if (!entryIds.has(site.entryId) || seenOrders.has(site.sourceOrder))\n return false;\n seenOrders.add(site.sourceOrder);\n const key = `${site.entryId}\\u0000${site.sourceOrder.toString().padStart(16, \"0\")}`;\n if (previous !== undefined && previous >= key)\n return false;\n previous = key;\n }\n return true;\n}\nfunction hasUniqueAssertionEntryIds(document: {\n readonly entries: readonly {\n readonly entryId: string;\n }[];\n}): boolean {\n const entryIds = new Set<string>();\n for (const entry of document.entries) {\n if (entryIds.has(entry.entryId))\n return false;\n entryIds.add(entry.entryId);\n }\n return true;\n}\nfunction isAssertionsDocumentWithinSizeLimit(value: unknown): boolean {\n try {\n const serialized = JSON.stringify(value);\n return typeof serialized === \"string\" &&\n new TextEncoder().encode(serialized).byteLength <= MAX_ASSERTION_DOCUMENT_BYTES;\n }\n catch {\n return false;\n }\n}\n/**\n * `sourceSites` is embedded in the fixed Assertions payload. The former\n * `niceeval.assertion-source-sites/v1` family is not part of Record v1.\n */\n/** One direct current schema: Type fields and durable keys share all v1 filters. */\nexport const AssertionsAttachmentSchema = Schema.Struct({\n entries: Schema.propertySignature(AssertionsEntriesSchema).pipe(Schema.fromKey(\"entries-data\")),\n sourceSites: Schema.propertySignature(AssertionSourceSitesSchema).pipe(Schema.fromKey(\"source-sites-data\")),\n}).pipe(Schema.filter(hasUniqueAssertionEntryIds, {\n identifier: \"AssertionsUniqueEntryIds\",\n description: \"unique attachment-local assertion entry IDs\",\n}), Schema.filter(isAssertionsDocumentWithinSizeLimit, {\n identifier: \"AssertionsDocumentSize\",\n description: \"a JSON document no larger than 4 MiB\",\n}), Schema.filter(hasNoLegacyAttachmentMaterial, {\n identifier: \"AssertionsNoLegacyAttachmentMaterial\",\n description: \"Assertions do not reference retired attachment families\",\n}), Schema.filter(hasCanonicalSourceSites, {\n identifier: \"AssertionsSourceSites\",\n description: \"source sites join local entries with unique canonical source order\",\n}));\n/** @internal Package-private historical wire codec, loaded only by maintenance. */\nexport const AssertionsAttachmentV1Schema = Schema.Struct({\n entries: Schema.propertySignature(AssertionsEntriesV1Schema).pipe(Schema.fromKey(\"entries-data\")),\n sourceSites: Schema.propertySignature(AssertionSourceSitesSchema).pipe(Schema.fromKey(\"source-sites-data\")),\n});\nexport type AssertionsAttachment = Schema.Schema.Type<typeof AssertionsAttachmentSchema>;\n/** Complete closure projection for `niceeval.assertions`. */\nexport function assertionsBlobRefs(payload: AssertionsAttachment): readonly RecordBlobRef[] {\n return assertionBlobRefs(payload);\n}\n/** Binds every Assertions blob declaration to its exact materialized bytes. */\nexport function assertionsAttachmentIntegrityIssues(payload: AssertionsAttachment, blobs: readonly {\n readonly ref: RecordBlobRef;\n readonly bytes: Uint8Array;\n}[]): readonly RecordAttachmentIssue[] {\n const bytesByRef = new Map<RecordBlobRef, Uint8Array>(blobs.map((blob) => [blob.ref, blob.bytes] as const));\n const issues: RecordAttachmentIssue[] = [];\n const validateMaterial = (material: AssertionsAttachment[\"entries\"][number][\"materials\"][\"source\"], path: readonly string[]) => {\n if (material.kind !== \"blob\")\n return;\n const bytes = bytesByRef.get(material.ref);\n if (bytes === undefined || bytes.byteLength !== material.byteLength) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\n ...path,\n bytes === undefined ? \"ref\" : \"byteLength\",\n ]));\n return;\n }\n if (createHash(\"sha256\").update(bytes).digest(\"hex\") !== material.sha256) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\n ...path,\n \"sha256\",\n ]));\n }\n };\n for (const [index, entry] of payload.entries.entries()) {\n validateMaterial(entry.materials.source, [\"entries\", String(index), \"materials\", \"source\"]);\n for (const [evidenceIndex, material] of entry.materials.evidence.entries()) {\n validateMaterial(material, [\"entries\", String(index), \"evidence\", String(evidenceIndex)]);\n }\n }\n return Object.freeze(issues);\n}\n/**\n * Host-only semantic join to the exact origin Sources manifest. The row owns\n * neither source bytes nor a blob capability, so this check deliberately\n * compares only the explicit item identity, digest, and stored coordinates.\n */\nexport function assertionsSourceSiteIntegrityIssues(payload: AssertionsAttachment, sources: SourcesAttachment): readonly RecordAttachmentIssue[] {\n const sourceById = new Map(sources.items.map((item) => [item.sourceItemId, item] as const));\n const issues: RecordAttachmentIssue[] = [];\n for (const [index, site] of payload.sourceSites.entries()) {\n const source = sourceById.get(site.sourceItemId);\n const startsAfterEnd = site.start.line > site.end.line ||\n (site.start.line === site.end.line && site.start.column > site.end.column);\n if (source === undefined || source.sha256 !== site.sha256 || startsAfterEnd) {\n issues.push(recordAttachmentIssue(\"record-attachment-materialized-invalid\", [\"sourceSites\", String(index)]));\n }\n }\n return Object.freeze(issues);\n}\nconst AssertionsBlobBudget = Object.freeze({\n maximumBlobs: 20000,\n maximumBlobBytes: 16 * 1024 * 1024,\n maximumTotalBytes: 64 * 1024 * 1024,\n});\n/** The sole current declaration for the Attempt-owned Assertions family. */\nexport const assertionsRecordAttachment = defineRecordAttachment({\n family: \"niceeval.assertions\",\n current: {\n schemaVersion: 2,\n owners: {\n attempt: {\n schema: AssertionsAttachmentSchema,\n limits: FixedAttachmentValueLimits,\n blobs: {\n refs: assertionsBlobRefs,\n budget: AssertionsBlobBudget,\n verify: assertionsAttachmentIntegrityIssues,\n },\n },\n },\n },\n maintenance: () => __niceevalDynamicImport(\"./assertions-v1.cjs\").then(({ assertionsV1Maintenance }) => assertionsV1Maintenance),\n adjacentMigrationLinks: Object.freeze([\n Object.freeze({ fromSchemaVersion: 1, toSchemaVersion: 2, rewritePayload: true }),\n ]),\n});\n"]}