niceeval 0.13.2 → 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 (494) 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/claude-code-native.cjs +213 -0
  7. package/dist/agents/claude-code-native.cjs.map +1 -0
  8. package/dist/agents/claude-code-native.d.cts +5 -0
  9. package/dist/agents/claude-code-native.d.mts +5 -0
  10. package/dist/agents/claude-code-native.d.ts +5 -0
  11. package/dist/agents/claude-code-native.js +6 -0
  12. package/dist/agents/claude-code-native.js.map +1 -0
  13. package/dist/agents/claude-code.cjs +26 -80
  14. package/dist/agents/claude-code.cjs.map +1 -1
  15. package/dist/agents/codex-app-server.cjs +314 -0
  16. package/dist/agents/codex-app-server.cjs.map +1 -0
  17. package/dist/agents/codex-app-server.d.cts +9 -0
  18. package/dist/agents/codex-app-server.d.mts +9 -0
  19. package/dist/agents/codex-app-server.d.ts +9 -0
  20. package/dist/agents/codex-app-server.js +6 -0
  21. package/dist/agents/codex-app-server.js.map +1 -0
  22. package/dist/agents/codex.cjs +19 -68
  23. package/dist/agents/codex.cjs.map +1 -1
  24. package/dist/agents/codex.d.cts +3 -3
  25. package/dist/agents/codex.d.mts +3 -3
  26. package/dist/agents/codex.d.ts +3 -3
  27. package/dist/agents/index.cjs +3 -1
  28. package/dist/agents/index.cjs.map +1 -1
  29. package/dist/agents/index.d.cts +1 -0
  30. package/dist/agents/index.d.mts +1 -0
  31. package/dist/agents/index.d.ts +1 -0
  32. package/dist/agents/index.js +84 -82
  33. package/dist/agents/index.mjs +84 -82
  34. package/dist/agents/managed-jsonl.cjs +207 -0
  35. package/dist/agents/managed-jsonl.cjs.map +1 -0
  36. package/dist/agents/managed-jsonl.d.cts +39 -0
  37. package/dist/agents/managed-jsonl.d.mts +39 -0
  38. package/dist/agents/managed-jsonl.d.ts +39 -0
  39. package/dist/agents/managed-jsonl.js +6 -0
  40. package/dist/agents/managed-jsonl.js.map +1 -0
  41. package/dist/agents/managed-process.cjs +31 -0
  42. package/dist/agents/managed-process.cjs.map +1 -0
  43. package/dist/agents/managed-process.d.cts +3 -0
  44. package/dist/agents/managed-process.d.mts +3 -0
  45. package/dist/agents/managed-process.d.ts +3 -0
  46. package/dist/agents/managed-process.js +6 -0
  47. package/dist/agents/managed-process.js.map +1 -0
  48. package/dist/agents/omp.cjs +18 -1
  49. package/dist/agents/omp.cjs.map +1 -1
  50. package/dist/agents/sdk-streams.cjs +11 -4
  51. package/dist/agents/sdk-streams.cjs.map +1 -1
  52. package/dist/agents/types.cjs.map +1 -1
  53. package/dist/agents/types.d.cts +8 -0
  54. package/dist/agents/types.d.mts +8 -0
  55. package/dist/agents/types.d.ts +8 -0
  56. package/dist/analysis/bindings.cjs +74 -19
  57. package/dist/analysis/bindings.cjs.map +1 -1
  58. package/dist/analysis/bindings.d.cts +534 -156
  59. package/dist/analysis/bindings.d.mts +534 -156
  60. package/dist/analysis/bindings.d.ts +534 -156
  61. package/dist/analysis/domain-view.cjs.map +1 -1
  62. package/dist/analysis/domain-view.d.cts +137 -8
  63. package/dist/analysis/domain-view.d.mts +137 -8
  64. package/dist/analysis/domain-view.d.ts +137 -8
  65. package/dist/analysis/index.cjs.map +1 -1
  66. package/dist/analysis/index.d.cts +1 -1
  67. package/dist/analysis/index.d.mts +1 -1
  68. package/dist/analysis/index.d.ts +1 -1
  69. package/dist/assertions/api.cjs.map +1 -1
  70. package/dist/assertions/api.d.cts +62 -0
  71. package/dist/assertions/api.d.mts +62 -0
  72. package/dist/assertions/api.d.ts +62 -0
  73. package/dist/assertions/judge.cjs +56 -5
  74. package/dist/assertions/judge.cjs.map +1 -1
  75. package/dist/assertions/match.cjs +66 -42
  76. package/dist/assertions/match.cjs.map +1 -1
  77. package/dist/assertions/match.d.cts +13 -0
  78. package/dist/assertions/match.d.mts +13 -0
  79. package/dist/assertions/match.d.ts +13 -0
  80. package/dist/assertions/record/attachment.cjs +104 -33
  81. package/dist/assertions/record/attachment.cjs.map +1 -1
  82. package/dist/assertions/record/attachment.d.cts +294 -57
  83. package/dist/assertions/record/attachment.d.mts +294 -57
  84. package/dist/assertions/record/attachment.d.ts +294 -57
  85. package/dist/assertions/record/codec.cjs +91 -17
  86. package/dist/assertions/record/codec.cjs.map +1 -1
  87. package/dist/assertions/record/codec.d.cts +280 -52
  88. package/dist/assertions/record/codec.d.mts +280 -52
  89. package/dist/assertions/record/codec.d.ts +280 -52
  90. package/dist/assertions/record/index.js +2 -0
  91. package/dist/assertions/record/model.cjs +16 -0
  92. package/dist/assertions/record/model.cjs.map +1 -1
  93. package/dist/assertions/record/model.d.cts +120 -13
  94. package/dist/assertions/record/model.d.mts +120 -13
  95. package/dist/assertions/record/model.d.ts +120 -13
  96. package/dist/assertions/record/model.js +2 -0
  97. package/dist/assertions/record/producer.cjs +70 -50
  98. package/dist/assertions/record/producer.cjs.map +1 -1
  99. package/dist/assertions/record/producer.d.cts +8 -7
  100. package/dist/assertions/record/producer.d.mts +8 -7
  101. package/dist/assertions/record/producer.d.ts +8 -7
  102. package/dist/assertions/runtime.cjs +49 -7
  103. package/dist/assertions/runtime.cjs.map +1 -1
  104. package/dist/cli/application.cjs +40 -0
  105. package/dist/cli/application.cjs.map +1 -0
  106. package/dist/cli/application.d.cts +129 -0
  107. package/dist/cli/application.d.mts +129 -0
  108. package/dist/cli/application.d.ts +129 -0
  109. package/dist/cli/application.js +24 -0
  110. package/dist/cli/application.js.map +1 -0
  111. package/dist/cli/bootstrap.cjs +10 -4
  112. package/dist/cli/bootstrap.cjs.map +1 -1
  113. package/dist/cli/node-application.cjs +123 -0
  114. package/dist/cli/node-application.cjs.map +1 -0
  115. package/dist/cli/node-application.d.cts +14 -0
  116. package/dist/cli/node-application.d.mts +14 -0
  117. package/dist/cli/node-application.d.ts +14 -0
  118. package/dist/cli/node-application.js +26 -0
  119. package/dist/cli/node-application.js.map +1 -0
  120. package/dist/cli/program.cjs +2807 -0
  121. package/dist/cli/program.cjs.map +1 -0
  122. package/dist/cli/program.d.cts +352 -0
  123. package/dist/cli/program.d.mts +352 -0
  124. package/dist/cli/program.d.ts +352 -0
  125. package/dist/cli/program.js +36 -0
  126. package/dist/cli/program.js.map +1 -0
  127. package/dist/cli/project-configuration.cjs +134 -0
  128. package/dist/cli/project-configuration.cjs.map +1 -0
  129. package/dist/cli/project-configuration.d.cts +64 -0
  130. package/dist/cli/project-configuration.d.mts +64 -0
  131. package/dist/cli/project-configuration.d.ts +64 -0
  132. package/dist/cli/project-configuration.js +22 -0
  133. package/dist/cli/project-configuration.js.map +1 -0
  134. package/dist/cli/record.cjs +20 -4
  135. package/dist/cli/record.cjs.map +1 -1
  136. package/dist/cli/record.d.cts +3 -3
  137. package/dist/cli/record.d.mts +3 -3
  138. package/dist/cli/record.d.ts +3 -3
  139. package/dist/cli.cjs +19 -3130
  140. package/dist/cli.cjs.map +1 -1
  141. package/dist/cli.d.cts +2 -148
  142. package/dist/cli.d.mts +2 -148
  143. package/dist/cli.d.ts +2 -148
  144. package/dist/cli.js +22 -30
  145. package/dist/context/assert-first.cjs +21 -15
  146. package/dist/context/assert-first.cjs.map +1 -1
  147. package/dist/context/assert-first.d.cts +1 -0
  148. package/dist/context/assert-first.d.mts +1 -0
  149. package/dist/context/assert-first.d.ts +1 -0
  150. package/dist/context/attempt-resources.cjs +13 -0
  151. package/dist/context/attempt-resources.cjs.map +1 -0
  152. package/dist/context/attempt-resources.d.cts +3 -0
  153. package/dist/context/attempt-resources.d.mts +3 -0
  154. package/dist/context/attempt-resources.d.ts +3 -0
  155. package/dist/context/attempt-resources.js +8 -0
  156. package/dist/context/attempt-resources.js.map +1 -0
  157. package/dist/context/session.cjs +4 -3
  158. package/dist/context/session.cjs.map +1 -1
  159. package/dist/context/session.d.cts +1 -0
  160. package/dist/context/session.d.mts +1 -0
  161. package/dist/context/session.d.ts +1 -0
  162. package/dist/eval/record/verdict.cjs +3 -2
  163. package/dist/eval/record/verdict.cjs.map +1 -1
  164. package/dist/experiment/host/index.cjs +1 -6
  165. package/dist/experiment/host/index.cjs.map +1 -1
  166. package/dist/experiment/host/index.d.cts +1 -0
  167. package/dist/experiment/host/index.d.mts +1 -0
  168. package/dist/experiment/host/index.d.ts +1 -0
  169. package/dist/load-config.cjs +13 -4
  170. package/dist/load-config.cjs.map +1 -1
  171. package/dist/load-config.d.cts +4 -3
  172. package/dist/load-config.d.mts +4 -3
  173. package/dist/load-config.d.ts +4 -3
  174. package/dist/load-config.js +4 -2
  175. package/dist/o11y/parsers/codex.cjs +29 -7
  176. package/dist/o11y/parsers/codex.cjs.map +1 -1
  177. package/dist/record/codec/core.d.cts +0 -2
  178. package/dist/record/codec/core.d.mts +0 -2
  179. package/dist/record/codec/core.d.ts +0 -2
  180. package/dist/record/codec/identifiers.cjs +2 -3
  181. package/dist/record/codec/identifiers.cjs.map +1 -1
  182. package/dist/record/codec/identifiers.d.cts +1 -2
  183. package/dist/record/codec/identifiers.d.mts +1 -2
  184. package/dist/record/codec/identifiers.d.ts +1 -2
  185. package/dist/record/codec/identifiers.js +10 -12
  186. package/dist/record/codec/index.js +42 -44
  187. package/dist/record/definition/attachment.cjs +1 -0
  188. package/dist/record/definition/attachment.cjs.map +1 -1
  189. package/dist/record/definition/attachment.d.cts +14 -0
  190. package/dist/record/definition/attachment.d.mts +14 -0
  191. package/dist/record/definition/attachment.d.ts +14 -0
  192. package/dist/record/family/assertions-v1.cjs +104 -0
  193. package/dist/record/family/assertions-v1.cjs.map +1 -0
  194. package/dist/record/family/assertions-v1.d.cts +2 -0
  195. package/dist/record/family/assertions-v1.d.mts +2 -0
  196. package/dist/record/family/assertions-v1.d.ts +2 -0
  197. package/dist/record/family/assertions-v1.js +6 -0
  198. package/dist/record/family/assertions-v1.js.map +1 -0
  199. package/dist/record/family/assertions.cjs +16 -5
  200. package/dist/record/family/assertions.cjs.map +1 -1
  201. package/dist/record/family/assertions.d.cts +510 -56
  202. package/dist/record/family/assertions.d.mts +510 -56
  203. package/dist/record/family/assertions.d.ts +510 -56
  204. package/dist/record/family/assertions.js +14 -10
  205. package/dist/record/family/catalog.cjs +17 -1
  206. package/dist/record/family/catalog.cjs.map +1 -1
  207. package/dist/record/family/catalog.d.cts +1292 -104
  208. package/dist/record/family/catalog.d.mts +1292 -104
  209. package/dist/record/family/catalog.d.ts +1292 -104
  210. package/dist/record/family/catalog.js +22 -20
  211. package/dist/record/family/index.js +144 -138
  212. package/dist/record/family/observability-v1.cjs +5 -0
  213. package/dist/record/family/observability-v1.cjs.map +1 -1
  214. package/dist/record/family/observability.cjs +1 -1
  215. package/dist/record/family/observability.cjs.map +1 -1
  216. package/dist/record/host/runtime.cjs +323 -173
  217. package/dist/record/host/runtime.cjs.map +1 -1
  218. package/dist/record/host/types.cjs.map +1 -1
  219. package/dist/record/host/types.d.cts +9 -7
  220. package/dist/record/host/types.d.mts +9 -7
  221. package/dist/record/host/types.d.ts +9 -7
  222. package/dist/record/model/core.cjs.map +1 -1
  223. package/dist/record/model/core.d.cts +1 -2
  224. package/dist/record/model/core.d.mts +1 -2
  225. package/dist/record/model/core.d.ts +1 -2
  226. package/dist/record/model/definition.cjs +1 -2
  227. package/dist/record/model/definition.cjs.map +1 -1
  228. package/dist/record/model/definition.d.cts +1 -7
  229. package/dist/record/model/definition.d.mts +1 -7
  230. package/dist/record/model/definition.d.ts +1 -7
  231. package/dist/record/model/identifiers.cjs +2 -3
  232. package/dist/record/model/identifiers.cjs.map +1 -1
  233. package/dist/record/model/identifiers.d.cts +1 -3
  234. package/dist/record/model/identifiers.d.mts +1 -3
  235. package/dist/record/model/identifiers.d.ts +1 -3
  236. package/dist/record/model/identifiers.js +36 -38
  237. package/dist/record/model/index.js +60 -62
  238. package/dist/record/platform/node.cjs +17 -7
  239. package/dist/record/platform/node.cjs.map +1 -1
  240. package/dist/record/platform/services.cjs.map +1 -1
  241. package/dist/record/platform/services.d.cts +8 -3
  242. package/dist/record/platform/services.d.mts +8 -3
  243. package/dist/record/platform/services.d.ts +8 -3
  244. package/dist/record/reader/format.cjs +16 -65
  245. package/dist/record/reader/format.cjs.map +1 -1
  246. package/dist/record/reader/format.d.cts +5 -9
  247. package/dist/record/reader/format.d.mts +5 -9
  248. package/dist/record/reader/format.d.ts +5 -9
  249. package/dist/record/reader/index.js +10 -8
  250. package/dist/record/reader/runtime.cjs +63 -32
  251. package/dist/record/reader/runtime.cjs.map +1 -1
  252. package/dist/record/reader/runtime.d.cts +40 -4
  253. package/dist/record/reader/runtime.d.mts +40 -4
  254. package/dist/record/reader/runtime.d.ts +40 -4
  255. package/dist/record/reader/runtime.js +6 -4
  256. package/dist/report/assets/enhance.js +5 -5
  257. package/dist/report/assets/styles.css +190 -24
  258. package/dist/report/built-in/result-components.cjs +8 -5
  259. package/dist/report/built-in/result-components.cjs.map +1 -1
  260. package/dist/report/built-in/standard.cjs +3 -0
  261. package/dist/report/built-in/standard.cjs.map +1 -1
  262. package/dist/report/built-in/standard.d.cts +2 -0
  263. package/dist/report/built-in/standard.d.mts +2 -0
  264. package/dist/report/built-in/standard.d.ts +2 -0
  265. package/dist/report/client-dist/app.js +53 -0
  266. package/dist/report/components/attempt-detail/compute.cjs +108 -231
  267. package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
  268. package/dist/report/components/attempt-detail/compute.d.cts +11 -45
  269. package/dist/report/components/attempt-detail/compute.d.mts +11 -45
  270. package/dist/report/components/attempt-detail/compute.d.ts +11 -45
  271. package/dist/report/components/attempt-detail/compute.js +2 -4
  272. package/dist/report/components/attempt-detail/content.cjs +4 -4
  273. package/dist/report/components/attempt-detail/content.cjs.map +1 -1
  274. package/dist/report/components/attempt-detail/validate.cjs +47 -4
  275. package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
  276. package/dist/report/components/entity-lists/compute.cjs +9 -15
  277. package/dist/report/components/entity-lists/compute.cjs.map +1 -1
  278. package/dist/report/components/entity-lists/content.cjs +53 -40
  279. package/dist/report/components/entity-lists/content.cjs.map +1 -1
  280. package/dist/report/components/entity-lists/index.cjs +1 -3
  281. package/dist/report/components/entity-lists/index.cjs.map +1 -1
  282. package/dist/report/components/experiment-detail/compute.cjs +4 -6
  283. package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
  284. package/dist/report/components/summaries/index.cjs +5 -1
  285. package/dist/report/components/summaries/index.cjs.map +1 -1
  286. package/dist/report/definition/cell.cjs +14 -7
  287. package/dist/report/definition/cell.cjs.map +1 -1
  288. package/dist/report/definition/cell.d.cts +4 -0
  289. package/dist/report/definition/cell.d.mts +4 -0
  290. package/dist/report/definition/cell.d.ts +4 -0
  291. package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
  292. package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
  293. package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
  294. package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
  295. package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
  296. package/dist/report/definition/primitives/assertion-evidence.js +6 -0
  297. package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
  298. package/dist/report/definition/primitives/conversation.cjs +7 -0
  299. package/dist/report/definition/primitives/conversation.cjs.map +1 -1
  300. package/dist/report/definition/primitives/conversation.d.cts +2 -0
  301. package/dist/report/definition/primitives/conversation.d.mts +2 -0
  302. package/dist/report/definition/primitives/conversation.d.ts +2 -0
  303. package/dist/report/definition/primitives/turn-trace.cjs +53 -3
  304. package/dist/report/definition/primitives/turn-trace.cjs.map +1 -1
  305. package/dist/report/definition/primitives.cjs +14 -1
  306. package/dist/report/definition/primitives.cjs.map +1 -1
  307. package/dist/report/definition/report.cjs +16 -8
  308. package/dist/report/definition/report.cjs.map +1 -1
  309. package/dist/report/definition/report.d.cts +6 -0
  310. package/dist/report/definition/report.d.mts +6 -0
  311. package/dist/report/definition/report.d.ts +6 -0
  312. package/dist/report/definition/table-text.cjs +12 -3
  313. package/dist/report/definition/table-text.cjs.map +1 -1
  314. package/dist/report/definition/table-text.d.cts +6 -1
  315. package/dist/report/definition/table-text.d.mts +6 -1
  316. package/dist/report/definition/table-text.d.ts +6 -1
  317. package/dist/report/execution/model.cjs +6 -14
  318. package/dist/report/execution/model.cjs.map +1 -1
  319. package/dist/report/execution/model.d.cts +5 -10
  320. package/dist/report/execution/model.d.mts +5 -10
  321. package/dist/report/execution/model.d.ts +5 -10
  322. package/dist/report/execution/model.js +6 -6
  323. package/dist/report/execution/paths.cjs +0 -11
  324. package/dist/report/execution/paths.cjs.map +1 -1
  325. package/dist/report/execution/paths.d.cts +0 -1
  326. package/dist/report/execution/paths.d.mts +0 -1
  327. package/dist/report/execution/paths.d.ts +0 -1
  328. package/dist/report/execution/paths.js +6 -8
  329. package/dist/report/host/execute.cjs +13 -22
  330. package/dist/report/host/execute.cjs.map +1 -1
  331. package/dist/report/host/execute.d.cts +1 -4
  332. package/dist/report/host/execute.d.mts +1 -4
  333. package/dist/report/host/execute.d.ts +1 -4
  334. package/dist/report/host/from-record.cjs +3 -0
  335. package/dist/report/host/from-record.cjs.map +1 -1
  336. package/dist/report/host/from-record.d.cts +4 -1
  337. package/dist/report/host/from-record.d.mts +4 -1
  338. package/dist/report/host/from-record.d.ts +4 -1
  339. package/dist/report/host/site-assets.cjs +1 -2
  340. package/dist/report/host/site-assets.cjs.map +1 -1
  341. package/dist/report/host/site-assets.d.cts +0 -1
  342. package/dist/report/host/site-assets.d.mts +0 -1
  343. package/dist/report/host/site-assets.d.ts +0 -1
  344. package/dist/report/host/site-assets.js +2 -4
  345. package/dist/report/host/static.cjs +71 -346
  346. package/dist/report/host/static.cjs.map +1 -1
  347. package/dist/report/host/static.d.cts +1 -3
  348. package/dist/report/host/static.d.mts +1 -3
  349. package/dist/report/host/static.d.ts +1 -3
  350. package/dist/report/host/static.js +2 -2
  351. package/dist/report/host/view-session.cjs.map +1 -1
  352. package/dist/report/host/view-session.d.cts +1 -1
  353. package/dist/report/host/view-session.d.mts +1 -1
  354. package/dist/report/host/view-session.d.ts +1 -1
  355. package/dist/report/model/locale.cjs +1 -1
  356. package/dist/report/model/locale.cjs.map +1 -1
  357. package/dist/report/model/locale.d.cts +1 -1
  358. package/dist/report/model/locale.d.mts +1 -1
  359. package/dist/report/model/locale.d.ts +1 -1
  360. package/dist/report/model/pricing.cjs +2 -2
  361. package/dist/report/model/pricing.cjs.map +1 -1
  362. package/dist/report/react/enhance.js +5 -5
  363. package/dist/report/react/styles.css +190 -24
  364. package/dist/runner/adoption.cjs +4 -7
  365. package/dist/runner/adoption.cjs.map +1 -1
  366. package/dist/runner/attempt-resources.cjs +60 -0
  367. package/dist/runner/attempt-resources.cjs.map +1 -0
  368. package/dist/runner/attempt-resources.d.cts +13 -0
  369. package/dist/runner/attempt-resources.d.mts +13 -0
  370. package/dist/runner/attempt-resources.d.ts +13 -0
  371. package/dist/runner/attempt-resources.js +6 -0
  372. package/dist/runner/attempt-resources.js.map +1 -0
  373. package/dist/runner/attempt.cjs +37 -3
  374. package/dist/runner/attempt.cjs.map +1 -1
  375. package/dist/runner/feedback/failure.cjs +77 -2
  376. package/dist/runner/feedback/failure.cjs.map +1 -1
  377. package/dist/runner/feedback/failure.d.cts +2 -1
  378. package/dist/runner/feedback/failure.d.mts +2 -1
  379. package/dist/runner/feedback/failure.d.ts +2 -1
  380. package/dist/runner/project-current.cjs +2 -13
  381. package/dist/runner/project-current.cjs.map +1 -1
  382. package/dist/runner/project-current.d.cts +4 -2
  383. package/dist/runner/project-current.d.mts +4 -2
  384. package/dist/runner/project-current.d.ts +4 -2
  385. package/dist/runner/reporters/braintrust.cjs +7 -7
  386. package/dist/runner/reporters/braintrust.cjs.map +1 -1
  387. package/dist/runner/reuse-readback.cjs +3 -4
  388. package/dist/runner/reuse-readback.cjs.map +1 -1
  389. package/dist/runner/run.cjs +5 -2
  390. package/dist/runner/run.cjs.map +1 -1
  391. package/dist/sandbox/backend.cjs +32 -2
  392. package/dist/sandbox/backend.cjs.map +1 -1
  393. package/dist/sandbox/backend.d.cts +12 -1
  394. package/dist/sandbox/backend.d.mts +12 -1
  395. package/dist/sandbox/backend.d.ts +12 -1
  396. package/dist/sandbox/backend.js +28 -22
  397. package/dist/sandbox/docker.cjs +140 -0
  398. package/dist/sandbox/docker.cjs.map +1 -1
  399. package/dist/sandbox/docker.d.cts +3 -1
  400. package/dist/sandbox/docker.d.mts +3 -1
  401. package/dist/sandbox/docker.d.ts +3 -1
  402. package/dist/sandbox/e2b.cjs +42 -0
  403. package/dist/sandbox/e2b.cjs.map +1 -1
  404. package/dist/sandbox/e2b.d.cts +2 -0
  405. package/dist/sandbox/e2b.d.mts +2 -0
  406. package/dist/sandbox/e2b.d.ts +2 -0
  407. package/dist/sandbox/local.cjs +64 -0
  408. package/dist/sandbox/local.cjs.map +1 -1
  409. package/dist/sandbox/local.d.cts +3 -1
  410. package/dist/sandbox/local.d.mts +3 -1
  411. package/dist/sandbox/local.d.ts +3 -1
  412. package/dist/sandbox/managed-process.cjs +49 -0
  413. package/dist/sandbox/managed-process.cjs.map +1 -0
  414. package/dist/sandbox/managed-process.d.cts +11 -0
  415. package/dist/sandbox/managed-process.d.mts +11 -0
  416. package/dist/sandbox/managed-process.d.ts +11 -0
  417. package/dist/sandbox/managed-process.js +6 -0
  418. package/dist/sandbox/managed-process.js.map +1 -0
  419. package/dist/sandbox/types.cjs.map +1 -1
  420. package/dist/sandbox/types.d.cts +24 -0
  421. package/dist/sandbox/types.d.mts +24 -0
  422. package/dist/sandbox/types.d.ts +24 -0
  423. package/dist/sandbox/vercel.cjs +1 -0
  424. package/dist/sandbox/vercel.cjs.map +1 -1
  425. package/dist/sandbox/vercel.d.cts +1 -0
  426. package/dist/sandbox/vercel.d.mts +1 -0
  427. package/dist/sandbox/vercel.d.ts +1 -0
  428. package/dist/view/server.cjs +2 -37
  429. package/dist/view/server.cjs.map +1 -1
  430. package/dist/view/server.d.cts +0 -3
  431. package/dist/view/server.d.mts +0 -3
  432. package/dist/view/server.d.ts +0 -3
  433. package/docs-site/zh/reference/builtin-agents.mdx +7 -7
  434. package/docs-site/zh/reference/official-adapters.mdx +4 -4
  435. package/docs-site/zh/reference/report-components.mdx +2 -2
  436. package/docs-site/zh/tutorials/configuration.mdx +2 -2
  437. package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
  438. package/docs-site/zh/tutorials/publish-report.mdx +4 -4
  439. package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
  440. package/docs-site/zh/tutorials/theming.mdx +2 -2
  441. package/package.json +4 -6
  442. package/dist/record/migration/index.cjs +0 -5
  443. package/dist/record/migration/index.cjs.map +0 -1
  444. package/dist/record/migration/index.d.cts +0 -11
  445. package/dist/record/migration/index.d.mts +0 -11
  446. package/dist/record/migration/index.d.ts +0 -11
  447. package/dist/record/migration/index.js +0 -6
  448. package/dist/record/migration/index.js.map +0 -1
  449. package/dist/report/host/site-runtime.cjs +0 -92
  450. package/dist/report/host/site-runtime.cjs.map +0 -1
  451. package/dist/report/host/site-runtime.d.cts +0 -9
  452. package/dist/report/host/site-runtime.d.mts +0 -9
  453. package/dist/report/host/site-runtime.d.ts +0 -9
  454. package/dist/report/host/site-runtime.js +0 -10
  455. package/dist/report/host/site-runtime.js.map +0 -1
  456. package/dist/view/client-dist/app.css +0 -2
  457. package/dist/view/client-dist/app.js +0 -49
  458. package/dist/view/data.cjs +0 -3
  459. package/dist/view/data.cjs.map +0 -1
  460. package/dist/view/data.d.cts +0 -9
  461. package/dist/view/data.d.mts +0 -9
  462. package/dist/view/data.d.ts +0 -9
  463. package/dist/view/data.js +0 -4
  464. package/dist/view/data.js.map +0 -1
  465. package/dist/view/index.cjs +0 -24
  466. package/dist/view/index.cjs.map +0 -1
  467. package/dist/view/index.d.cts +0 -9
  468. package/dist/view/index.d.mts +0 -9
  469. package/dist/view/index.d.ts +0 -9
  470. package/dist/view/index.js +0 -28
  471. package/dist/view/index.js.map +0 -1
  472. package/dist/view/report-view-cache.cjs +0 -200
  473. package/dist/view/report-view-cache.cjs.map +0 -1
  474. package/dist/view/report-view-cache.d.cts +0 -67
  475. package/dist/view/report-view-cache.d.mts +0 -67
  476. package/dist/view/report-view-cache.d.ts +0 -67
  477. package/dist/view/report-view-cache.js +0 -8
  478. package/dist/view/report-view-cache.js.map +0 -1
  479. package/dist/view/shared/types.cjs +0 -3
  480. package/dist/view/shared/types.cjs.map +0 -1
  481. package/dist/view/shared/types.d.cts +0 -51
  482. package/dist/view/shared/types.d.mts +0 -51
  483. package/dist/view/shared/types.d.ts +0 -51
  484. package/dist/view/shared/types.js +0 -4
  485. package/dist/view/shared/types.js.map +0 -1
  486. package/dist/view/site.cjs +0 -32
  487. package/dist/view/site.cjs.map +0 -1
  488. package/dist/view/site.d.cts +0 -24
  489. package/dist/view/site.d.mts +0 -24
  490. package/dist/view/site.d.ts +0 -24
  491. package/dist/view/site.js +0 -8
  492. package/dist/view/site.js.map +0 -1
  493. package/dist/view/styles.css +0 -170
  494. package/dist/view/template.html +0 -17
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { Cause, Deferred, Effect } from \"effect\";\nimport type { SourceLoc } from \"../shared/types.ts\";\nimport { assertionHandleBrand, AssertionAuthoringClosedError, type AssertionCoverage, type AssertionCriterion, type AssertionDisplay, type AssertionEvaluationKind, type AssertionLimitation, type AssertionMaterial, type AssertionResult, type AssertionScoreContribution, type AssertionSealError, type AssertionSealOptions, type AssertionSnapshotObject, type AssertionSnapshotValue, type AssertionStopError, type AssertionStopExecutor, type AssertionsContext, type AssertionsRuntime, type BooleanAssertionHandle, type BooleanAssertionEvaluation, type BooleanAssertionRegistration, type CapturedAssertionSnapshot, type MeasurementAssertionEvaluation, type MeasurementAssertionRegistration, type PassBooleanAssertionHandle, type PostRunBooleanAssertionHandle, type ScoreBooleanAssertionHandle, type SealedAssertionEntry, type SealedAssertionEvaluation, type SealedAssertionsRuntime, } from \"./api.ts\";\nimport { assertManagedValueMatch, evaluateBooleanMatch, evaluateScoreMatch, isManagedThresholdedScoreMatch, looksLikeThresholdedScoreMatch, thresholdedScoreMatchValue, type BooleanMatch, type MatchDiagnostic, type ScoreMatch, type ThresholdedScoreMatch, } from \"./match.ts\";\nimport { assertionRuntimeLimits } from \"./limits.ts\";\nconst UTF8 = new TextEncoder();\nconst assertionHandleRegistry = new WeakSet<object>();\ntype EntryKind = \"boolean\" | \"measurement\" | \"direct-score\";\ninterface SettlementDiagnostic {\n readonly diagnostic?: MatchDiagnostic;\n}\ntype AvailableResult = ({\n readonly state: \"matched\";\n readonly value: unknown;\n} & SettlementDiagnostic) | ({\n readonly state: \"mismatched\";\n} & SettlementDiagnostic) | ({\n readonly state: \"measured\";\n readonly value: number;\n} & SettlementDiagnostic);\ntype EntrySettlement = AvailableResult | ({\n readonly state: \"unavailable\";\n readonly reason: \"evidence-unavailable\" | \"source-unavailable\" | \"redacted\";\n} & SettlementDiagnostic) | ({\n readonly state: \"not-applicable\";\n} & SettlementDiagnostic) | ({\n readonly state: \"errored\";\n} & SettlementDiagnostic) | ({\n readonly state: \"interrupted\";\n} & SettlementDiagnostic);\ninterface AssertionEntry {\n readonly index: number;\n readonly kind: EntryKind;\n readonly criterion: AssertionCriterion;\n readonly subject: AssertionMaterial;\n readonly evidence: readonly AssertionMaterial[];\n readonly initialCoverage: AssertionCoverage;\n readonly initialLimitations: readonly AssertionLimitation[];\n readonly evaluate: () => Effect.Effect<EntrySettlement, unknown, never>;\n readonly display: {\n key: string | undefined;\n label: string | undefined;\n groupPath: string[];\n };\n readonly directScorePoints: number | undefined;\n optionalConfigured: boolean;\n gateConfigured: boolean;\n threshold: number | undefined;\n scorePoints: number | undefined;\n settled: EntrySettlement | undefined;\n pending: Deferred.Deferred<EntrySettlement> | undefined;\n}\n/**\n * Source navigation remains a Runner-owned observation. These types are\n * intentionally package-internal: neither the author-facing handle nor the\n * sealed Assertion value acquires a source field or durable identity.\n */\nexport type AssertionRuntimeSourceRole = \"declaration\" | \"threshold\" | \"score\" | \"gate\" | \"optional\" | \"stop\";\nexport interface AssertionRuntimeSourceSite {\n readonly location: SourceLoc;\n readonly sourceOrder: number;\n}\nexport interface AssertionRuntimeSourceOccurrence {\n readonly role: AssertionRuntimeSourceRole;\n readonly site?: AssertionRuntimeSourceSite;\n readonly outcome?: \"continued\" | \"stopped\" | \"interrupted\";\n}\nexport interface AssertionsRuntimeSourceCaptureSnapshot {\n readonly entries: readonly {\n readonly occurrences: readonly AssertionRuntimeSourceOccurrence[];\n }[];\n}\ninterface MutableAssertionRuntimeSourceOccurrence {\n readonly role: AssertionRuntimeSourceRole;\n readonly site?: AssertionRuntimeSourceSite;\n outcome?: \"continued\" | \"stopped\" | \"interrupted\";\n}\ninterface AssertionRuntimeSourceEntry {\n readonly occurrences: MutableAssertionRuntimeSourceOccurrence[];\n}\ninterface AssertionsRuntimeSourceCapture {\n readonly capture: () => AssertionRuntimeSourceSite | undefined;\n readonly entries: AssertionRuntimeSourceEntry[];\n readonly byEntry: WeakMap<AssertionEntry, AssertionRuntimeSourceEntry>;\n}\nconst sourceCaptureByRuntime = new WeakMap<AssertionsRuntimeImplementation, AssertionsRuntimeSourceCapture>();\ninterface SnapshotState {\n truncated: boolean;\n omittedBytes: number;\n readonly seen: WeakSet<object>;\n}\ntype AvailableScoreContribution = Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"earned\";\n}>;\ntype IncompleteScoreContribution = Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"unavailable\";\n}>;\nfunction isRecord(value: unknown): value is globalThis.Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction isAssertionStop(value: unknown): value is AssertionStopError {\n return isRecord(value) && value._tag === \"AssertionStopError\";\n}\nfunction isInterruptedAuthoringClosure(value: unknown): boolean {\n return value instanceof AssertionAuthoringClosedError && value.reason === \"attempt-interrupted\";\n}\nfunction assertFiniteNonNegative(value: unknown, owner: string): asserts value is number {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n throw new TypeError(`${owner} must be a finite non-negative number`);\n }\n}\nfunction assertUnitInterval(value: unknown, owner: string): asserts value is number {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0 || value > 1) {\n throw new TypeError(`${owner} must be a finite number in [0, 1]`);\n }\n}\nfunction assertDisplayText(value: unknown, owner: string): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${owner} must be a non-empty string`);\n }\n if (/\\p{Cc}/u.test(value)) {\n throw new TypeError(`${owner} must not contain control characters`);\n }\n if (Array.from(value).length > assertionRuntimeLimits.displayCodePoints) {\n throw new TypeError(`${owner} must be at most ${assertionRuntimeLimits.displayCodePoints} code points`);\n }\n}\nfunction marker(value: string): AssertionSnapshotObject {\n return Object.freeze({ $niceeval: value });\n}\nfunction omittedBytes(value: string): number {\n return UTF8.encode(value).byteLength;\n}\nfunction markTruncated(state: SnapshotState, bytes = 1): void {\n state.truncated = true;\n state.omittedBytes += Math.max(1, bytes);\n}\nfunction boundedSnapshotString(value: string, state: SnapshotState): string {\n const bytes = omittedBytes(value);\n if (bytes <= assertionRuntimeLimits.stringBytes)\n return value;\n let retainedBytes = 0;\n let retainedEnd = 0;\n for (const point of value) {\n const pointBytes = omittedBytes(point);\n if (retainedBytes + pointBytes > assertionRuntimeLimits.stringBytes)\n break;\n retainedBytes += pointBytes;\n retainedEnd += point.length;\n }\n markTruncated(state, bytes - retainedBytes);\n return value.slice(0, retainedEnd);\n}\nfunction boundedSnapshotKey(key: string, index: number, existing: ReadonlySet<string>, state: SnapshotState): string {\n if (omittedBytes(key) <= assertionRuntimeLimits.stringBytes)\n return key;\n markTruncated(state, omittedBytes(key));\n let replacement = `$niceeval:truncated-key:${index}`;\n let suffix = 0;\n while (existing.has(replacement)) {\n suffix += 1;\n replacement = `$niceeval:truncated-key:${index}:${suffix}`;\n }\n return replacement;\n}\n/**\n * Produces a bounded, safe-to-persist view without changing the actual value\n * consumed by a Match. Non-JSON runtime objects remain visible only as a\n * tagged placeholder and make the entry's material explicitly partial.\n */\nfunction boundedSnapshotValue(value: unknown, depth: number, state: SnapshotState): AssertionSnapshotValue {\n if (value === null || typeof value === \"boolean\")\n return value;\n if (typeof value === \"number\") {\n if (Number.isFinite(value))\n return value;\n markTruncated(state, String(value).length);\n return marker(\"non-finite-number\");\n }\n if (typeof value === \"string\") {\n return boundedSnapshotString(value, state);\n }\n if (typeof value === \"undefined\") {\n markTruncated(state);\n return marker(\"undefined\");\n }\n if (typeof value === \"bigint\" || typeof value === \"symbol\" || typeof value === \"function\") {\n markTruncated(state, String(value).length);\n return marker(typeof value);\n }\n if (depth >= assertionRuntimeLimits.jsonDepth) {\n markTruncated(state);\n return marker(\"depth-truncated\");\n }\n if (state.seen.has(value)) {\n markTruncated(state);\n return marker(\"cyclic-or-shared-reference\");\n }\n state.seen.add(value);\n if (Array.isArray(value)) {\n const length = Math.min(value.length, assertionRuntimeLimits.jsonArrayItems);\n if (length < value.length)\n markTruncated(state, value.length - length);\n const entries: AssertionSnapshotValue[] = [];\n for (let index = 0; index < length; index += 1) {\n try {\n const descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n if (descriptor === undefined) {\n markTruncated(state);\n entries.push(marker(\"array-hole\"));\n }\n else if (!(\"value\" in descriptor)) {\n markTruncated(state);\n entries.push(marker(\"accessor-element\"));\n }\n else {\n entries.push(boundedSnapshotValue(descriptor.value, depth + 1, state));\n }\n }\n catch {\n markTruncated(state);\n entries.push(marker(\"unreadable-element\"));\n }\n }\n return Object.freeze(entries);\n }\n if (value instanceof Date) {\n const time = value.getTime();\n if (!Number.isFinite(time)) {\n markTruncated(state);\n return marker(\"invalid-date\");\n }\n markTruncated(state);\n return Object.freeze({ $niceeval: \"date\", value: value.toISOString() });\n }\n let keys: readonly string[];\n try {\n keys = Object.keys(value);\n }\n catch {\n markTruncated(state);\n return marker(\"uninspectable-object\");\n }\n const length = Math.min(keys.length, assertionRuntimeLimits.jsonObjectKeys);\n if (length < keys.length)\n markTruncated(state, keys.length - length);\n const entries: Array<readonly [\n string,\n AssertionSnapshotValue\n ]> = [];\n const reservedKeys = new Set(keys);\n for (let index = 0; index < length; index += 1) {\n const key = keys[index];\n if (key === undefined)\n continue;\n const capturedKey = boundedSnapshotKey(key, index, reservedKeys, state);\n reservedKeys.add(capturedKey);\n try {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor)) {\n markTruncated(state);\n entries.push([capturedKey, marker(\"accessor-property\")]);\n }\n else {\n entries.push([\n capturedKey,\n boundedSnapshotValue(descriptor.value, depth + 1, state),\n ]);\n }\n }\n catch {\n markTruncated(state);\n entries.push([capturedKey, marker(\"unreadable-property\")]);\n }\n }\n return Object.freeze(Object.fromEntries(entries));\n}\nexport function captureAssertionSnapshot(value: unknown): CapturedAssertionSnapshot {\n const state: SnapshotState = {\n truncated: false,\n omittedBytes: 0,\n seen: new WeakSet<object>(),\n };\n const snapshot = boundedSnapshotValue(value, 0, state);\n const material: Extract<AssertionMaterial, {\n readonly kind: \"snapshot\";\n }> = Object.freeze({\n kind: \"snapshot\",\n value: snapshot,\n });\n if (!state.truncated) {\n return Object.freeze({\n material,\n coverage: Object.freeze({ state: \"complete\" as const }),\n limitations: Object.freeze([]),\n });\n }\n return Object.freeze({\n material,\n coverage: Object.freeze({ state: \"partial\" as const, reason: \"truncated\" as const }),\n limitations: Object.freeze([\n Object.freeze({\n kind: \"truncated\" as const,\n omittedBytes: Math.max(1, state.omittedBytes),\n }),\n ]),\n });\n}\n/**\n * Matcher diagnostics are runtime objects, but sealed Assertions need a\n * bounded JSON copy that keeps their tree (field children and locators) for\n * show/view without granting those readers evaluator authority.\n */\nfunction captureMatchDiagnostic(value: MatchDiagnostic | undefined, depth = 0, seen = new WeakSet<object>(), budget = { remainingNodes: assertionRuntimeLimits.diagnosticNodes }): AssertionSnapshotObject | undefined {\n if (value === undefined)\n return undefined;\n if (budget.remainingNodes <= 0) {\n return Object.freeze({\n code: \"diagnostic-truncated\",\n message: \"matcher diagnostic exceeded the persisted node limit\",\n path: Object.freeze([]),\n });\n }\n budget.remainingNodes -= 1;\n if (depth >= assertionRuntimeLimits.diagnosticDepth || seen.has(value)) {\n return Object.freeze({\n code: \"diagnostic-truncated\",\n message: depth >= assertionRuntimeLimits.diagnosticDepth\n ? \"matcher diagnostic exceeded the persisted depth limit\"\n : \"matcher diagnostic contained a cycle\",\n path: Object.freeze([]),\n });\n }\n seen.add(value);\n try {\n const text = (input: string): string => {\n const state: SnapshotState = { truncated: false, omittedBytes: 0, seen: new WeakSet<object>() };\n return boundedSnapshotString(input, state);\n };\n const output: globalThis.Record<string, AssertionSnapshotValue> = {\n code: text(value.code),\n message: text(value.message),\n path: Object.freeze(value.path.map((segment) => typeof segment === \"string\" ? text(segment) : segment)),\n };\n if (value.expected !== undefined)\n output.expected = text(value.expected);\n if (value.received !== undefined)\n output.received = text(value.received);\n if (value.reason !== undefined)\n output.reason = text(value.reason);\n if (value.locator !== undefined) {\n output.locator = value.locator.kind === \"json-pointer\"\n ? Object.freeze({ kind: \"json-pointer\", pointer: text(value.locator.pointer) })\n : Object.freeze({ kind: \"tool-occurrence\", id: text(value.locator.id) });\n }\n if (value.truncation !== undefined) {\n output.truncation = Object.freeze({ ...value.truncation });\n }\n if (value.children !== undefined) {\n const children: AssertionSnapshotValue[] = [];\n for (const child of value.children.slice(0, assertionRuntimeLimits.jsonArrayItems)) {\n if (budget.remainingNodes <= 0)\n break;\n const entry: globalThis.Record<string, AssertionSnapshotValue> = {\n index: child.index,\n state: child.state,\n };\n if (child.label !== undefined)\n entry.label = text(child.label);\n const diagnostic = captureMatchDiagnostic(child.diagnostic, depth + 1, seen, budget);\n if (diagnostic !== undefined)\n entry.diagnostic = diagnostic;\n children.push(Object.freeze(entry));\n }\n output.children = Object.freeze(children);\n if (children.length < value.children.length && output.truncation === undefined) {\n output.truncation = Object.freeze({\n code: \"diagnostic-truncated\",\n reason: \"sampled\",\n captured: children.length,\n knownTotal: value.children.length,\n });\n }\n }\n const captured = Object.freeze(output);\n const serialized = JSON.stringify(captured);\n const originalBytes = UTF8.encode(serialized).byteLength;\n if (originalBytes <= assertionRuntimeLimits.diagnosticBytes)\n return captured;\n return Object.freeze({\n code: output.code,\n message: output.message,\n path: output.path,\n ...(output.expected === undefined ? {} : { expected: output.expected }),\n ...(output.received === undefined ? {} : { received: output.received }),\n ...(output.reason === undefined ? {} : { reason: output.reason }),\n ...(output.locator === undefined ? {} : { locator: output.locator }),\n truncation: Object.freeze({\n code: \"diagnostic-truncated\",\n reason: \"byte-limit\",\n limitBytes: assertionRuntimeLimits.diagnosticBytes,\n originalBytes,\n }),\n });\n }\n finally {\n seen.delete(value);\n }\n}\nfunction freezeAssertionMaterial(material: AssertionMaterial): AssertionMaterial {\n if (material.kind === \"snapshot\") {\n return Object.freeze({ kind: \"snapshot\", value: material.value });\n }\n if (typeof material.preview !== \"string\" || material.preview.trim() === \"\") {\n throw new TypeError(\"record-attachment material requires a non-empty preview\");\n }\n return Object.freeze({\n kind: \"record-attachment\",\n preview: material.preview,\n });\n}\nfunction cloneCoverage(coverage: AssertionCoverage): AssertionCoverage {\n return Object.freeze({ ...coverage });\n}\nfunction cloneLimitations(limitations: readonly AssertionLimitation[]): readonly AssertionLimitation[] {\n return Object.freeze(limitations.map((limitation) => Object.freeze({ ...limitation })));\n}\nfunction noScore(): Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\";\n}> {\n return Object.freeze({ state: \"not-scored\" as const });\n}\nfunction earnedScore(points: number, earned: number): Extract<AssertionScoreContribution, {\n readonly state: \"earned\";\n}> {\n return Object.freeze({ state: \"earned\" as const, points, earned });\n}\nfunction unavailableScore(points: number, reason: Extract<AssertionScoreContribution, {\n readonly state: \"unavailable\";\n}>[\"reason\"]): Extract<AssertionScoreContribution, {\n readonly state: \"unavailable\";\n}> {\n return Object.freeze({ state: \"unavailable\" as const, points, reason });\n}\nclass HandleBase {\n readonly [assertionHandleBrand] = true as const;\n constructor(protected readonly runtime: AssertionsRuntimeImplementation, protected readonly entry: AssertionEntry) {\n assertionHandleRegistry.add(this);\n }\n key(value: string): this {\n this.runtime.configureKey(this.entry, value);\n return this;\n }\n label(value: string): this {\n this.runtime.configureLabel(this.entry, value);\n return this;\n }\n group(title: string): this {\n this.runtime.configureGroup(this.entry, title);\n return this;\n }\n}\nclass BooleanHandle extends HandleBase {\n readonly kind = \"boolean\" as const;\n optional(): this {\n this.runtime.configureOptional(this.entry);\n return this;\n }\n gate(value?: number): this {\n this.runtime.configureGate(this.entry, value);\n return this;\n }\n score(points: number): this {\n this.runtime.configureScore(this.entry, points);\n return this;\n }\n orStop(): Promise<unknown> {\n return this.runtime.requestStopBoolean(this.entry);\n }\n}\nfunction isScoreBooleanAssertionHandle<Refined>(handle: PassBooleanAssertionHandle<Refined> | ScoreBooleanAssertionHandle<Refined>): handle is ScoreBooleanAssertionHandle<Refined> {\n return \"score\" in handle && typeof handle.score === \"function\";\n}\n/**\n * Gives a post-run producer a configuration-only view of an ordinary Boolean\n * entry. Keeping this as a distinct, null-prototype object matters at the\n * JavaScript boundary too: a cast must not recover `orStop()` and force a\n * deferred producer to evaluate before its Attempt has frozen its evidence.\n */\nexport function postRunBooleanAssertionHandle<Kind extends AssertionEvaluationKind, Refined>(handle: BooleanAssertionHandle<Kind, Refined>, evaluationKind: Kind): PostRunBooleanAssertionHandle<Kind, Refined> {\n const view = Object.create(null) as object;\n const descriptor = (value: unknown): PropertyDescriptor => ({\n value,\n enumerable: true,\n writable: false,\n configurable: false,\n });\n Object.defineProperties(view, {\n [assertionHandleBrand]: {\n value: true,\n enumerable: false,\n writable: false,\n configurable: false,\n },\n kind: descriptor(\"boolean\"),\n key: descriptor((value: string) => {\n handle.key(value);\n return view;\n }),\n label: descriptor((value: string) => {\n handle.label(value);\n return view;\n }),\n group: descriptor((title: string) => {\n handle.group(title);\n return view;\n }),\n ...(evaluationKind === \"pass\"\n ? (() => {\n const passHandle = handle as PassBooleanAssertionHandle<Refined>;\n return {\n optional: descriptor(() => {\n passHandle.optional();\n return view;\n }),\n gate: descriptor(() => {\n passHandle.gate();\n return view;\n }),\n };\n })()\n : {}),\n ...(evaluationKind === \"score\"\n ? (() => {\n if (!isScoreBooleanAssertionHandle(handle)) {\n throw new Error(\"Score post-run Boolean Assertion received a non-score handle\");\n }\n return {\n score: descriptor((points: number) => {\n handle.score(points);\n return view;\n }),\n };\n })()\n : {}),\n });\n assertionHandleRegistry.add(view);\n return Object.freeze(view) as PostRunBooleanAssertionHandle<Kind, Refined>;\n}\nclass MeasurementHandle extends HandleBase {\n readonly kind = \"measurement\" as const;\n optional(): this {\n this.runtime.configureOptional(this.entry);\n return this;\n }\n atLeast(value: number): this {\n this.runtime.configureThreshold(this.entry, value);\n return this;\n }\n gate(value: number): this {\n this.runtime.configureGate(this.entry, value);\n return this;\n }\n score(points: number): this {\n this.runtime.configureScore(this.entry, points);\n return this;\n }\n orStop(): Promise<number> {\n return this.runtime.requestStopMeasurement(this.entry);\n }\n}\nclass DirectScoreHandle extends HandleBase {\n readonly kind = \"direct-score\" as const;\n}\nclass AssertionsRuntimeImplementation {\n readonly t: AssertionsContext<AssertionEvaluationKind>;\n private readonly entries: AssertionEntry[] = [];\n private readonly groupStack: string[] = [];\n private stopped: AssertionStopError | undefined;\n private closing = false;\n private sealed: SealedAssertionsRuntime | undefined;\n constructor(readonly evaluationKind: AssertionEvaluationKind, private readonly executeStop: AssertionStopExecutor) {\n const base = {\n evaluationKind,\n check: this.check.bind(this),\n group: this.withGroup.bind(this),\n };\n this.t = Object.freeze(evaluationKind === \"score\"\n ? { ...base, score: this.directScore.bind(this) }\n : base) as AssertionsContext<AssertionEvaluationKind>;\n }\n private recordSourceOccurrence(entry: AssertionEntry, role: AssertionRuntimeSourceRole): MutableAssertionRuntimeSourceOccurrence | undefined {\n const capture = sourceCaptureByRuntime.get(this);\n const capturedEntry = capture?.byEntry.get(entry);\n if (capturedEntry === undefined || capture === undefined)\n return undefined;\n let site: AssertionRuntimeSourceSite | undefined;\n try {\n site = capture.capture();\n }\n catch {\n // Source navigation must never change authoring or assertion behavior.\n }\n const occurrence: MutableAssertionRuntimeSourceOccurrence = {\n role,\n ...(site === undefined ? {} : { site }),\n };\n capturedEntry.occurrences.push(occurrence);\n return occurrence;\n }\n check<Value, Refined extends Value>(value: Value, match: BooleanMatch<NoInfer<Value>, Refined, \"value\">): BooleanHandle;\n check<Value>(value: Value, match: ScoreMatch<NoInfer<Value>>): MeasurementHandle;\n check<Value>(value: Value, match: ThresholdedScoreMatch<NoInfer<Value>>): MeasurementHandle;\n check(value: unknown, match: unknown, ...extra: readonly unknown[]): BooleanHandle | MeasurementHandle {\n if (extra.length > 0) {\n throw new TypeError(\"t.check() accepts exactly (value, match)\");\n }\n this.assertCanRegister();\n if (typeof value === \"object\" && value !== null && assertionHandleRegistry.has(value)) {\n throw new TypeError(\"t.check() cannot use an AssertionHandle as a subject\");\n }\n const thresholded = isManagedThresholdedScoreMatch(match)\n ? thresholdedScoreMatchValue(match)\n : undefined;\n if (thresholded === undefined && looksLikeThresholdedScoreMatch(match)) {\n throw new TypeError(\"t.check() match must be a threshold view created by ScoreMatch.atLeast()\");\n }\n const managed = thresholded?.match ?? assertManagedValueMatch(match, \"t.check() match\");\n const captured = captureAssertionSnapshot(value);\n if (managed.kind === \"boolean\") {\n const entry = this.createEntry({\n kind: \"boolean\",\n criterion: Object.freeze({ kind: \"value-match\" as const, subject: \"explicit-value\" as const }),\n subject: captured.material,\n evidence: Object.freeze([]),\n coverage: captured.coverage,\n limitations: captured.limitations,\n evaluate: () => this.evaluateBooleanMatch(managed, value),\n });\n return new BooleanHandle(this, entry);\n }\n const entry = this.createEntry({\n kind: \"measurement\",\n criterion: Object.freeze({ kind: \"value-match\" as const, subject: \"explicit-value\" as const }),\n subject: captured.material,\n evidence: Object.freeze([]),\n coverage: captured.coverage,\n limitations: captured.limitations,\n evaluate: () => this.evaluateScoreMatch(managed, value),\n });\n if (thresholded !== undefined)\n this.configureThreshold(entry, thresholded.threshold);\n return new MeasurementHandle(this, entry);\n }\n registerBoolean<Refined>(definition: BooleanAssertionRegistration<Refined>): BooleanHandle {\n this.assertCanRegister();\n this.assertRegistration(definition, \"registerBoolean()\");\n const entry = this.createEntry({\n kind: \"boolean\",\n criterion: definition.criterion,\n subject: freezeAssertionMaterial(definition.subject),\n evidence: Object.freeze((definition.evidence ?? []).map(freezeAssertionMaterial)),\n coverage: cloneCoverage(definition.coverage ?? { state: \"complete\" }),\n limitations: cloneLimitations(definition.limitations ?? []),\n evaluate: () => Effect.suspend(definition.evaluate).pipe(Effect.map((evaluation): EntrySettlement => this.booleanSettlement(evaluation))),\n });\n return new BooleanHandle(this, entry);\n }\n registerMeasurement(definition: MeasurementAssertionRegistration): MeasurementHandle {\n this.assertCanRegister();\n this.assertRegistration(definition, \"registerMeasurement()\");\n const entry = this.createEntry({\n kind: \"measurement\",\n criterion: definition.criterion,\n subject: freezeAssertionMaterial(definition.subject),\n evidence: Object.freeze((definition.evidence ?? []).map(freezeAssertionMaterial)),\n coverage: cloneCoverage(definition.coverage ?? { state: \"complete\" }),\n limitations: cloneLimitations(definition.limitations ?? []),\n evaluate: () => Effect.suspend(definition.evaluate).pipe(Effect.map((evaluation): EntrySettlement => this.measurementSettlement(evaluation))),\n });\n return new MeasurementHandle(this, entry);\n }\n directScore(points: number): DirectScoreHandle {\n this.assertCanRegister();\n if (this.evaluationKind !== \"score\") {\n throw new TypeError(\"t.score() is available only in a Score Eval\");\n }\n assertFiniteNonNegative(points, \"t.score() points\");\n const captured = captureAssertionSnapshot(points);\n const entry = this.createEntry({\n kind: \"direct-score\",\n criterion: Object.freeze({ kind: \"direct-score\" as const, source: \"author\" as const }),\n subject: captured.material,\n evidence: Object.freeze([]),\n coverage: captured.coverage,\n limitations: captured.limitations,\n directScorePoints: points,\n evaluate: () => Effect.succeed({ state: \"matched\", value: points }),\n });\n return new DirectScoreHandle(this, entry);\n }\n async withGroup<Value>(title: string, body: () => Value | PromiseLike<Value>): Promise<Awaited<Value>> {\n this.assertCanRegister();\n assertDisplayText(title, \"t.group() title\");\n if (this.groupStack.length >= assertionRuntimeLimits.groupDepth) {\n throw new Error(`Assertion group depth cannot exceed ${assertionRuntimeLimits.groupDepth}`);\n }\n this.groupStack.push(title);\n try {\n return await body() as Awaited<Value>;\n }\n finally {\n const popped = this.groupStack.pop();\n if (popped !== title) {\n throw new Error(\"Assertion group stack lost nesting order\");\n }\n }\n }\n configureKey(entry: AssertionEntry, value: string): void {\n this.assertMutable(entry, \"key()\");\n assertDisplayText(value, \"key() value\");\n if (entry.display.key !== undefined)\n throw new Error(\"An Assertion key is already configured\");\n entry.display.key = value;\n }\n configureLabel(entry: AssertionEntry, value: string): void {\n this.assertMutable(entry, \"label()\");\n assertDisplayText(value, \"label() value\");\n if (entry.display.label !== undefined)\n throw new Error(\"An Assertion label is already configured\");\n entry.display.label = value;\n }\n configureGroup(entry: AssertionEntry, title: string): void {\n this.assertMutable(entry, \"group()\");\n assertDisplayText(title, \"group() title\");\n if (entry.display.groupPath.length !== this.groupStack.length) {\n throw new Error(\"An Assertion group is already configured\");\n }\n if (entry.display.groupPath.length >= assertionRuntimeLimits.groupDepth) {\n throw new Error(`Assertion group depth cannot exceed ${assertionRuntimeLimits.groupDepth}`);\n }\n entry.display.groupPath.push(title);\n }\n configureOptional(entry: AssertionEntry): void {\n this.assertMutable(entry, \"optional()\");\n if (this.evaluationKind === \"score\") {\n throw new TypeError(\"optional() is not available in a Score Eval; every score contribution must be comparable\");\n }\n if (entry.optionalConfigured)\n throw new Error(\"An Assertion optional policy is already configured\");\n entry.optionalConfigured = true;\n this.recordSourceOccurrence(entry, \"optional\");\n }\n configureGate(entry: AssertionEntry, threshold?: number): void {\n this.assertMutable(entry, \"gate()\");\n if (this.evaluationKind === \"score\") {\n throw new TypeError(\"gate() is not available in a Score Eval; normal scoring always passes\");\n }\n if (entry.kind === \"direct-score\")\n throw new TypeError(\"A direct-score Assertion cannot be a gate\");\n if (entry.kind === \"measurement\") {\n if (threshold === undefined) {\n throw new TypeError(\"A measurement Assertion requires gate(threshold)\");\n }\n assertUnitInterval(threshold, \"gate() threshold\");\n if (entry.threshold !== undefined)\n throw new Error(\"An Assertion threshold is already configured\");\n entry.threshold = threshold;\n }\n if (entry.gateConfigured)\n throw new Error(\"An Assertion gate policy is already configured\");\n entry.gateConfigured = true;\n this.recordSourceOccurrence(entry, \"gate\");\n }\n configureThreshold(entry: AssertionEntry, value: number): void {\n this.assertMutable(entry, \"atLeast()\");\n if (entry.kind !== \"measurement\")\n throw new TypeError(\"atLeast() is available only on a measurement Assertion\");\n assertUnitInterval(value, \"atLeast() threshold\");\n if (entry.threshold !== undefined)\n throw new Error(\"An Assertion threshold is already configured\");\n entry.threshold = value;\n this.recordSourceOccurrence(entry, \"threshold\");\n }\n configureScore(entry: AssertionEntry, points: number): void {\n this.assertMutable(entry, \"score()\");\n if (this.evaluationKind !== \"score\") {\n throw new TypeError(\"handle.score() is available only in a Score Eval\");\n }\n if (entry.kind === \"direct-score\")\n throw new TypeError(\"A direct-score Assertion already has its score contribution\");\n assertFiniteNonNegative(points, \"score() points\");\n if (entry.scorePoints !== undefined)\n throw new Error(\"An Assertion score contribution is already configured\");\n entry.scorePoints = points;\n this.recordSourceOccurrence(entry, \"score\");\n }\n requestStopBoolean(entry: AssertionEntry): Promise<unknown> {\n return this.observeStop(entry, this.requestStop(this.stopBoolean(entry)));\n }\n requestStopMeasurement(entry: AssertionEntry): Promise<number> {\n return this.observeStop(entry, this.requestStop(this.stopMeasurement(entry)));\n }\n private observeStop<Value>(entry: AssertionEntry, result: Promise<Value>): Promise<Value> {\n const occurrence = this.recordSourceOccurrence(entry, \"stop\");\n return result.then((value) => {\n if (occurrence !== undefined && occurrence.outcome === undefined) {\n occurrence.outcome = \"continued\";\n }\n return value;\n }, (error: unknown) => {\n if (occurrence !== undefined && occurrence.outcome === undefined) {\n if (isAssertionStop(error))\n occurrence.outcome = \"stopped\";\n else if (isInterruptedAuthoringClosure(error))\n occurrence.outcome = \"interrupted\";\n }\n throw error;\n });\n }\n private requestStop<Value>(effect: Effect.Effect<Value, AssertionStopError, never>): Promise<Value> {\n if (this.stopped !== undefined)\n return Promise.reject(this.stopped);\n if (this.sealed !== undefined) {\n return Promise.reject(new AssertionAuthoringClosedError(\"attempt-sealed\"));\n }\n if (this.closing) {\n return Promise.reject(new AssertionAuthoringClosedError(\"attempt-sealing\"));\n }\n try {\n return this.executeStop(effect);\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n private stopBoolean(entry: AssertionEntry): Effect.Effect<unknown, AssertionStopError> {\n return this.settleThrough(entry).pipe(Effect.flatMap((settlement) => {\n if (settlement.state === \"matched\")\n return Effect.succeed(settlement.value);\n return Effect.fail(this.latchStop(entry, settlement));\n }));\n }\n private stopMeasurement(entry: AssertionEntry): Effect.Effect<number, AssertionStopError> {\n return this.settleThrough(entry).pipe(Effect.flatMap((settlement) => {\n if (settlement.state === \"measured\"\n && entry.threshold !== undefined\n && settlement.value >= entry.threshold) {\n return Effect.succeed(settlement.value);\n }\n return Effect.fail(this.latchStop(entry, settlement));\n }));\n }\n seal(options: AssertionSealOptions = {}): Effect.Effect<SealedAssertionsRuntime, AssertionSealError, never> {\n return Effect.suspend(() => {\n if (this.sealed !== undefined)\n return Effect.succeed(this.sealed);\n if (options.interrupted) {\n this.closing = true;\n for (const entry of this.entries) {\n if (entry.settled === undefined) {\n entry.settled = Object.freeze({ state: \"interrupted\" as const });\n }\n }\n return Effect.sync(() => this.finishSeal({\n ...options,\n execution: \"errored\",\n }));\n }\n const missingThreshold = this.entries.find((entry) => this.evaluationKind === \"pass\" && entry.kind === \"measurement\" && entry.threshold === undefined);\n if (missingThreshold !== undefined) {\n return Effect.fail(Object.freeze({\n _tag: \"AssertionSealError\" as const,\n code: \"pass-measurement-threshold-missing\" as const,\n entryIndex: missingThreshold.index,\n }));\n }\n if (this.closing)\n throw new Error(\"Assertions are already sealing\");\n this.closing = true;\n return Effect.forEach(this.entries, (entry) => this.settle(entry)).pipe(Effect.zipRight(Effect.sync(() => this.finishSeal(options))), Effect.onInterrupt(() => Effect.sync(() => {\n this.closing = false;\n })));\n });\n }\n private createEntry(input: {\n readonly kind: EntryKind;\n readonly criterion: AssertionCriterion;\n readonly subject: AssertionMaterial;\n readonly evidence: readonly AssertionMaterial[];\n readonly coverage: AssertionCoverage;\n readonly limitations: readonly AssertionLimitation[];\n readonly evaluate: () => Effect.Effect<EntrySettlement, unknown, never>;\n readonly directScorePoints?: number;\n }): AssertionEntry {\n if (this.entries.length >= assertionRuntimeLimits.entries) {\n throw new Error(`An Assertions Attachment cannot contain more than ${assertionRuntimeLimits.entries} entries`);\n }\n const entry: AssertionEntry = {\n index: this.entries.length,\n kind: input.kind,\n criterion: input.criterion,\n subject: input.subject,\n evidence: input.evidence,\n initialCoverage: input.coverage,\n initialLimitations: input.limitations,\n evaluate: input.evaluate,\n display: { key: undefined, label: undefined, groupPath: [...this.groupStack] },\n directScorePoints: input.directScorePoints,\n optionalConfigured: false,\n gateConfigured: false,\n threshold: undefined,\n scorePoints: input.directScorePoints,\n settled: undefined,\n pending: undefined,\n };\n this.entries.push(entry);\n const capture = sourceCaptureByRuntime.get(this);\n if (capture !== undefined) {\n const capturedEntry: AssertionRuntimeSourceEntry = { occurrences: [] };\n capture.entries.push(capturedEntry);\n capture.byEntry.set(entry, capturedEntry);\n this.recordSourceOccurrence(entry, \"declaration\");\n }\n return entry;\n }\n private assertRegistration(definition: unknown, owner: string): asserts definition is BooleanAssertionRegistration<unknown> | MeasurementAssertionRegistration {\n if (!isRecord(definition) || typeof definition.evaluate !== \"function\") {\n throw new TypeError(`${owner} requires an Effect evaluation function`);\n }\n if (!isRecord(definition.subject)\n || (definition.subject.kind !== \"snapshot\" && definition.subject.kind !== \"record-attachment\")) {\n throw new TypeError(`${owner} requires snapshot or same-owner record-attachment subject material`);\n }\n if (definition.subject.kind === \"record-attachment\"\n && typeof definition.subject.preview !== \"string\") {\n throw new TypeError(`${owner} requires a record-attachment preview`);\n }\n if (definition.evidence !== undefined\n && (!Array.isArray(definition.evidence)\n || definition.evidence.some((material) => !isRecord(material)\n || (material.kind !== \"snapshot\" && material.kind !== \"record-attachment\")\n || (material.kind === \"record-attachment\"\n && typeof material.preview !== \"string\")))) {\n throw new TypeError(`${owner} evidence must use snapshot or record-attachment material`);\n }\n }\n private evaluateBooleanMatch(match: BooleanMatch<unknown, unknown, \"value\">, value: unknown): Effect.Effect<EntrySettlement> {\n return Effect.tryPromise({\n try: () => evaluateBooleanMatch(match, value),\n catch: () => undefined,\n }).pipe(Effect.map((evaluation): EntrySettlement => evaluation.state === \"unavailable\"\n ? Object.freeze({\n state: \"unavailable\" as const,\n reason: \"source-unavailable\" as const,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n })\n : this.booleanSettlement(evaluation)), this.captureEvaluationFailure());\n }\n private evaluateScoreMatch(match: ScoreMatch<unknown>, value: unknown): Effect.Effect<EntrySettlement> {\n return Effect.tryPromise({\n try: () => evaluateScoreMatch(match, value),\n catch: () => undefined,\n }).pipe(Effect.map((value): EntrySettlement => {\n assertUnitInterval(value, \"measurement Match result\");\n return Object.freeze({ state: \"measured\" as const, value });\n }), this.captureEvaluationFailure());\n }\n private captureEvaluationFailure(): <Value>(effect: Effect.Effect<Value, unknown, never>) => Effect.Effect<Value | EntrySettlement, never, never> {\n return (effect) => effect.pipe(Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause)\n ? Effect.interrupt\n : Effect.succeed(Object.freeze({ state: \"errored\" as const }))));\n }\n private booleanSettlement(evaluation: BooleanAssertionEvaluation<unknown>): EntrySettlement {\n switch (evaluation.state) {\n case \"matched\":\n return Object.freeze({\n state: \"matched\" as const,\n value: evaluation.value,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n });\n case \"mismatched\":\n return Object.freeze({\n state: \"mismatched\" as const,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n });\n case \"unavailable\":\n return Object.freeze({\n state: \"unavailable\" as const,\n reason: evaluation.reason,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n });\n case \"not-applicable\":\n return Object.freeze({\n state: \"not-applicable\" as const,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n });\n }\n }\n private measurementSettlement(evaluation: MeasurementAssertionEvaluation): EntrySettlement {\n switch (evaluation.state) {\n case \"measured\":\n assertUnitInterval(evaluation.value, \"measurement Assertion result\");\n return Object.freeze({ state: \"measured\" as const, value: evaluation.value });\n case \"unavailable\":\n return Object.freeze({ state: \"unavailable\" as const, reason: evaluation.reason });\n case \"not-applicable\":\n return Object.freeze({ state: \"not-applicable\" as const });\n case \"errored\":\n return Object.freeze({ state: \"errored\" as const });\n }\n }\n /** Evaluates an entry at most once even when multiple Effect fibers await it. */\n private settle(entry: AssertionEntry): Effect.Effect<EntrySettlement> {\n return Effect.suspend(() => {\n if (entry.settled !== undefined)\n return Effect.succeed(entry.settled);\n if (entry.pending !== undefined)\n return entry.pending;\n return Effect.uninterruptibleMask((restore) => Effect.gen(function* () {\n if (entry.settled !== undefined)\n return entry.settled;\n if (entry.pending !== undefined)\n return yield* entry.pending;\n const deferred = yield* Deferred.make<EntrySettlement>();\n entry.pending = deferred;\n const settled = yield* restore(Effect.suspend(entry.evaluate).pipe(Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause)\n ? Effect.interrupt\n : Effect.succeed(Object.freeze({ state: \"errored\" as const }))))).pipe(Effect.onInterrupt(() => Deferred.interrupt(deferred).pipe(Effect.zipRight(Effect.sync(() => {\n if (entry.pending === deferred)\n entry.pending = undefined;\n })))));\n // An enclosing Attempt interruption may have synchronously sealed\n // this entry while its evaluator was unwinding. Preserve that\n // producer-interrupted terminal fact rather than resurrecting a\n // late evaluator result.\n const terminal = entry.settled ?? settled;\n entry.settled = terminal;\n yield* Deferred.succeed(deferred, terminal);\n return terminal;\n }));\n });\n }\n /**\n * A control barrier may force evaluation early, but it must not let a later\n * Judge entry leapfrog an earlier declaration. `settle()` still memoizes the\n * individual work, so the normal seal only observes these same results.\n */\n private settleThrough(entry: AssertionEntry): Effect.Effect<EntrySettlement> {\n return Effect.forEach(this.entries.slice(0, entry.index + 1), (candidate) => this.settle(candidate)).pipe(Effect.map((settlements) => {\n const settlement = settlements.at(-1);\n if (settlement === undefined)\n throw new Error(\"Assertion stop entry was not registered\");\n return settlement;\n }));\n }\n private latchStop(entry: AssertionEntry, settlement: EntrySettlement): AssertionStopError {\n if (this.stopped !== undefined)\n return this.stopped;\n const reason = settlement.state === \"mismatched\" || settlement.state === \"measured\"\n ? \"condition-not-met\" as const\n : settlement.state === \"unavailable\"\n ? \"source-unavailable\" as const\n : settlement.state === \"not-applicable\"\n ? \"not-applicable\" as const\n : \"evaluator-failed\" as const;\n this.stopped = Object.freeze({\n _tag: \"AssertionStopError\" as const,\n entryIndex: entry.index,\n reason,\n });\n return this.stopped;\n }\n private finishSeal(options: AssertionSealOptions): SealedAssertionsRuntime {\n if (this.sealed !== undefined)\n return this.sealed;\n const entries: SealedAssertionEntry[] = [];\n const assertions: SealedAssertionEvaluation[\"assertions\"][number][] = [];\n for (const entry of this.entries) {\n const sealedEntry = this.toSealedEntry(entry);\n entries.push(sealedEntry);\n assertions.push(Object.freeze({\n required: !entry.optionalConfigured,\n result: sealedEntry.result,\n }));\n }\n const evaluation: SealedAssertionEvaluation = Object.freeze({\n execution: options.execution ?? \"completed\",\n explicitlySkipped: options.explicitlySkipped ?? false,\n assertions: Object.freeze(assertions),\n });\n this.sealed = Object.freeze({\n entries: Object.freeze(entries),\n evaluation,\n });\n return this.sealed;\n }\n private toSealedEntry(entry: AssertionEntry): SealedAssertionEntry {\n const settlement = entry.settled;\n if (settlement === undefined)\n throw new Error(\"Attempted to seal an unsettled Assertion entry\");\n const display: AssertionDisplay = Object.freeze({\n ...(entry.display.key === undefined ? {} : { key: entry.display.key }),\n ...(entry.display.label === undefined ? {} : { label: entry.display.label }),\n groupPath: Object.freeze([...entry.display.groupPath]),\n });\n const material = this.materialFor(entry, settlement);\n return Object.freeze({\n display,\n criterion: entry.criterion,\n subject: entry.subject,\n evidence: entry.evidence,\n coverage: material.coverage,\n limitations: material.limitations,\n result: this.resultFor(entry, settlement),\n });\n }\n private materialFor(entry: AssertionEntry, settlement: EntrySettlement): {\n readonly coverage: AssertionCoverage;\n readonly limitations: readonly AssertionLimitation[];\n } {\n if (settlement.state === \"unavailable\") {\n return Object.freeze({\n coverage: Object.freeze({ state: \"unavailable\" as const, reason: \"source-unavailable\" as const }),\n limitations: Object.freeze([]),\n });\n }\n if (settlement.state === \"not-applicable\") {\n return Object.freeze({\n coverage: Object.freeze({ state: \"not-applicable\" as const, reason: \"optional-material\" as const }),\n limitations: Object.freeze([]),\n });\n }\n return Object.freeze({\n coverage: entry.initialCoverage,\n limitations: entry.initialLimitations,\n });\n }\n private resultFor(entry: AssertionEntry, settlement: EntrySettlement): AssertionResult {\n const capturedDiagnostic = captureMatchDiagnostic(settlement.diagnostic);\n const diagnostic = capturedDiagnostic === undefined ? {} : { diagnostic: capturedDiagnostic };\n switch (settlement.state) {\n case \"matched\":\n return Object.freeze({\n state: \"matched\" as const,\n gate: this.gateForMatched(entry),\n score: this.availableScoreFor(entry, 1),\n ...diagnostic,\n });\n case \"mismatched\":\n return Object.freeze({\n state: \"mismatched\" as const,\n reason: \"condition-not-met\" as const,\n gate: this.gateForMismatched(entry),\n score: this.availableScoreFor(entry, 0),\n ...diagnostic,\n });\n case \"measured\": {\n const matched = entry.threshold === undefined || settlement.value >= entry.threshold;\n return matched\n ? Object.freeze({\n state: \"matched\" as const,\n gate: this.gateForMatched(entry),\n score: this.availableScoreFor(entry, settlement.value),\n ...diagnostic,\n })\n : Object.freeze({\n state: \"mismatched\" as const,\n reason: \"condition-not-met\" as const,\n gate: this.gateForMismatched(entry),\n score: this.availableScoreFor(entry, settlement.value),\n ...diagnostic,\n });\n }\n case \"unavailable\":\n return Object.freeze({\n state: \"unavailable\" as const,\n reason: settlement.reason,\n gate: this.gateForUnavailable(entry),\n score: this.incompleteScoreFor(entry, \"source-unavailable\"),\n ...diagnostic,\n });\n case \"not-applicable\":\n return Object.freeze({\n state: \"not-applicable\" as const,\n reason: \"coverage-not-applicable\" as const,\n gate: this.gateForNotApplicable(entry),\n score: this.incompleteScoreFor(entry, \"not-applicable\"),\n ...diagnostic,\n });\n case \"errored\":\n return Object.freeze({\n state: \"errored\" as const,\n reason: \"evaluator-failed\" as const,\n gate: this.gateForUnavailable(entry),\n score: this.incompleteScoreFor(entry, \"evaluation-errored\"),\n ...diagnostic,\n });\n case \"interrupted\":\n return Object.freeze({\n state: \"errored\" as const,\n reason: \"producer-interrupted\" as const,\n gate: this.gateForUnavailable(entry),\n score: this.incompleteScoreFor(entry, \"evaluation-errored\"),\n ...diagnostic,\n });\n }\n }\n private isGate(entry: AssertionEntry): boolean {\n if (entry.gateConfigured)\n return true;\n return this.evaluationKind === \"pass\" && entry.kind === \"boolean\";\n }\n private gateForMatched(entry: AssertionEntry): \"not-gate\" | \"satisfied\" {\n return this.isGate(entry) ? \"satisfied\" : \"not-gate\";\n }\n private gateForMismatched(entry: AssertionEntry): \"not-gate\" | \"failed\" {\n return this.isGate(entry) ? \"failed\" : \"not-gate\";\n }\n private gateForUnavailable(entry: AssertionEntry): \"not-gate\" | \"unavailable\" {\n return this.isGate(entry) ? \"unavailable\" : \"not-gate\";\n }\n private gateForNotApplicable(entry: AssertionEntry): \"not-gate\" | \"not-applicable\" {\n return this.isGate(entry) ? \"not-applicable\" : \"not-gate\";\n }\n private availableScoreFor(entry: AssertionEntry, normalized: number): AvailableScoreContribution {\n const points = entry.scorePoints;\n if (points === undefined)\n return noScore();\n return earnedScore(points, points * normalized);\n }\n private incompleteScoreFor(entry: AssertionEntry, reason: Extract<AssertionScoreContribution, {\n readonly state: \"unavailable\";\n }>[\"reason\"]): IncompleteScoreContribution {\n const points = entry.scorePoints;\n return points === undefined ? noScore() : unavailableScore(points, reason);\n }\n private assertCanRegister(): void {\n if (this.stopped !== undefined) {\n throw new AssertionAuthoringClosedError(\"stop-latched\");\n }\n if (this.sealed !== undefined) {\n throw new AssertionAuthoringClosedError(\"attempt-sealed\");\n }\n if (this.closing) {\n throw new AssertionAuthoringClosedError(\"attempt-sealing\");\n }\n }\n private assertMutable(entry: AssertionEntry, method: string): void {\n this.assertCanRegister();\n if (entry.settled !== undefined || entry.pending !== undefined) {\n throw new Error(`Cannot configure an Assertion after ${method} has begun evaluation`);\n }\n }\n}\nfunction sourceCaptureRuntime(runtime: AssertionsRuntime<\"pass\" | \"score\">): AssertionsRuntimeImplementation | undefined {\n return runtime instanceof AssertionsRuntimeImplementation ? runtime : undefined;\n}\n/** @internal Runner-only source observation hook; it never changes the public runtime value. */\nexport function attachAssertionsRuntimeSourceCapture(runtime: AssertionsRuntime<\"pass\" | \"score\">, capture: () => AssertionRuntimeSourceSite | undefined): void {\n const implementation = sourceCaptureRuntime(runtime);\n if (implementation === undefined) {\n throw new TypeError(\"Assertions source capture requires a NiceEval AssertionsRuntime\");\n }\n if (sourceCaptureByRuntime.has(implementation)) {\n throw new Error(\"Assertions source capture is already attached to this runtime\");\n }\n sourceCaptureByRuntime.set(implementation, {\n capture,\n entries: [],\n byEntry: new WeakMap<AssertionEntry, AssertionRuntimeSourceEntry>(),\n });\n}\n/** @internal Detached immutable journal for the Runner source producer. */\nexport function assertionsRuntimeSourceCaptureSnapshot(runtime: AssertionsRuntime<\"pass\" | \"score\">): AssertionsRuntimeSourceCaptureSnapshot | undefined {\n const implementation = sourceCaptureRuntime(runtime);\n const capture = implementation === undefined ? undefined : sourceCaptureByRuntime.get(implementation);\n if (capture === undefined)\n return undefined;\n return Object.freeze({\n entries: Object.freeze(capture.entries.map((entry) => Object.freeze({\n occurrences: Object.freeze(entry.occurrences.map((occurrence) => Object.freeze({\n role: occurrence.role,\n ...(occurrence.site === undefined ? {} : { site: occurrence.site }),\n ...(occurrence.outcome === undefined ? {} : { outcome: occurrence.outcome }),\n }))),\n }))),\n });\n}\n/** @internal Attempt interruption gives pending real stop calls their terminal disposition. */\nexport function markAssertionsRuntimeSourceCaptureInterrupted(runtime: AssertionsRuntime<\"pass\" | \"score\">): void {\n const implementation = sourceCaptureRuntime(runtime);\n const capture = implementation === undefined ? undefined : sourceCaptureByRuntime.get(implementation);\n if (capture === undefined)\n return;\n for (const entry of capture.entries) {\n for (const occurrence of entry.occurrences) {\n if (occurrence.role === \"stop\" && occurrence.outcome === undefined) {\n occurrence.outcome = \"interrupted\";\n }\n }\n }\n}\n/** Creates one Attempt-local assert-first authoring runtime. */\nexport function createAssertionsRuntime(input: {\n readonly evaluationKind: \"pass\";\n readonly executeStop?: AssertionStopExecutor;\n}): AssertionsRuntime<\"pass\">;\nexport function createAssertionsRuntime(input: {\n readonly evaluationKind: \"score\";\n readonly executeStop?: AssertionStopExecutor;\n}): AssertionsRuntime<\"score\">;\nexport function createAssertionsRuntime(input: {\n readonly evaluationKind: AssertionEvaluationKind;\n readonly executeStop?: AssertionStopExecutor;\n}): AssertionsRuntime<AssertionEvaluationKind> {\n if (input.evaluationKind !== \"pass\" && input.evaluationKind !== \"score\") {\n throw new TypeError(\"Assertions runtime evaluationKind must be \\\"pass\\\" or \\\"score\\\"\");\n }\n const executeStop = input.executeStop ?? (() => Promise.reject(new AssertionAuthoringClosedError(\"runtime-unattached\")));\n const runtime = new AssertionsRuntimeImplementation(input.evaluationKind, executeStop);\n return runtime as AssertionsRuntime<AssertionEvaluationKind>;\n}\n"]}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { Cause, Deferred, Effect } from \"effect\";\nimport type { SourceLoc } from \"../shared/types.ts\";\nimport { assertionHandleBrand, AssertionAuthoringClosedError, type AssertionCoverage, type AssertionCollectionReceipt, type AssertionCriterion, type AssertionDisplay, type AssertionEvaluationKind, type AssertionLimitation, type AssertionMaterial, type AssertionResult, type AssertionScoreContribution, type AssertionSealError, type AssertionSealOptions, type AssertionSnapshotObject, type AssertionSnapshotValue, type AssertionStopError, type AssertionStopExecutor, type AssertionsContext, type AssertionsRuntime, type BooleanAssertionHandle, type BooleanAssertionEvaluation, type BooleanAssertionRegistration, type CapturedAssertionSnapshot, type MeasurementAssertionEvaluation, type MeasurementAssertionRegistration, type PassBooleanAssertionHandle, type PostRunBooleanAssertionHandle, type ScoreBooleanAssertionHandle, type SealedAssertionEntry, type SealedAssertionEvaluation, type SealedAssertionsRuntime, } from \"./api.ts\";\nimport { assertManagedValueMatch, evaluateBooleanMatch, evaluateScoreMatch, isManagedThresholdedScoreMatch, looksLikeThresholdedScoreMatch, thresholdedScoreMatchValue, type BooleanMatch, type MatchDiagnostic, type ScoreMatch, type ThresholdedScoreMatch, } from \"./match.ts\";\nimport { assertionRuntimeLimits } from \"./limits.ts\";\nconst UTF8 = new TextEncoder();\nconst assertionHandleRegistry = new WeakSet<object>();\ntype EntryKind = \"boolean\" | \"measurement\" | \"direct-score\";\ninterface SettlementDiagnostic {\n readonly diagnostic?: MatchDiagnostic;\n readonly explanation?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n}\ntype AvailableResult = ({\n readonly state: \"matched\";\n readonly value: unknown;\n} & SettlementDiagnostic) | ({\n readonly state: \"mismatched\";\n} & SettlementDiagnostic) | ({\n readonly state: \"measured\";\n readonly value: number;\n} & SettlementDiagnostic);\ntype EntrySettlement = AvailableResult | ({\n readonly state: \"unavailable\";\n readonly reason: \"evidence-unavailable\" | \"source-unavailable\" | \"redacted\";\n} & SettlementDiagnostic) | ({\n readonly state: \"not-applicable\";\n} & SettlementDiagnostic) | ({\n readonly state: \"errored\";\n} & SettlementDiagnostic) | ({\n readonly state: \"interrupted\";\n} & SettlementDiagnostic);\ninterface AssertionEntry {\n readonly index: number;\n readonly kind: EntryKind;\n readonly criterion: AssertionCriterion;\n readonly subject: AssertionMaterial;\n readonly evidence: readonly AssertionMaterial[];\n readonly initialCoverage: AssertionCoverage;\n readonly initialLimitations: readonly AssertionLimitation[];\n readonly evaluate: () => Effect.Effect<EntrySettlement, unknown, never>;\n readonly display: {\n key: string | undefined;\n label: string | undefined;\n groupPath: string[];\n };\n readonly directScorePoints: number | undefined;\n optionalConfigured: boolean;\n gateConfigured: boolean;\n threshold: number | undefined;\n scorePoints: number | undefined;\n settled: EntrySettlement | undefined;\n pending: Deferred.Deferred<EntrySettlement> | undefined;\n}\n/**\n * Source navigation remains a Runner-owned observation. These types are\n * intentionally package-internal: neither the author-facing handle nor the\n * sealed Assertion value acquires a source field or durable identity.\n */\nexport type AssertionRuntimeSourceRole = \"declaration\" | \"threshold\" | \"score\" | \"gate\" | \"optional\" | \"stop\";\nexport interface AssertionRuntimeSourceSite {\n readonly location: SourceLoc;\n readonly sourceOrder: number;\n}\nexport interface AssertionRuntimeSourceOccurrence {\n readonly role: AssertionRuntimeSourceRole;\n readonly site?: AssertionRuntimeSourceSite;\n readonly outcome?: \"continued\" | \"stopped\" | \"interrupted\";\n}\nexport interface AssertionsRuntimeSourceCaptureSnapshot {\n readonly entries: readonly {\n readonly occurrences: readonly AssertionRuntimeSourceOccurrence[];\n }[];\n}\ninterface MutableAssertionRuntimeSourceOccurrence {\n readonly role: AssertionRuntimeSourceRole;\n readonly site?: AssertionRuntimeSourceSite;\n outcome?: \"continued\" | \"stopped\" | \"interrupted\";\n}\ninterface AssertionRuntimeSourceEntry {\n readonly occurrences: MutableAssertionRuntimeSourceOccurrence[];\n}\ninterface AssertionsRuntimeSourceCapture {\n readonly capture: () => AssertionRuntimeSourceSite | undefined;\n readonly entries: AssertionRuntimeSourceEntry[];\n readonly byEntry: WeakMap<AssertionEntry, AssertionRuntimeSourceEntry>;\n}\nconst sourceCaptureByRuntime = new WeakMap<AssertionsRuntimeImplementation, AssertionsRuntimeSourceCapture>();\ninterface SnapshotState {\n truncated: boolean;\n omittedBytes: number;\n readonly seen: WeakSet<object>;\n}\ntype AvailableScoreContribution = Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"earned\";\n}>;\ntype IncompleteScoreContribution = Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"unavailable\";\n}>;\nfunction isRecord(value: unknown): value is globalThis.Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction isAssertionStop(value: unknown): value is AssertionStopError {\n return isRecord(value) && value._tag === \"AssertionStopError\";\n}\nfunction isInterruptedAuthoringClosure(value: unknown): boolean {\n return value instanceof AssertionAuthoringClosedError && value.reason === \"attempt-interrupted\";\n}\nfunction assertFiniteNonNegative(value: unknown, owner: string): asserts value is number {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n throw new TypeError(`${owner} must be a finite non-negative number`);\n }\n}\nfunction assertUnitInterval(value: unknown, owner: string): asserts value is number {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0 || value > 1) {\n throw new TypeError(`${owner} must be a finite number in [0, 1]`);\n }\n}\nfunction assertDisplayText(value: unknown, owner: string): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${owner} must be a non-empty string`);\n }\n if (/\\p{Cc}/u.test(value)) {\n throw new TypeError(`${owner} must not contain control characters`);\n }\n if (Array.from(value).length > assertionRuntimeLimits.displayCodePoints) {\n throw new TypeError(`${owner} must be at most ${assertionRuntimeLimits.displayCodePoints} code points`);\n }\n}\nfunction marker(value: string): AssertionSnapshotObject {\n return Object.freeze({ $niceeval: value });\n}\nfunction omittedBytes(value: string): number {\n return UTF8.encode(value).byteLength;\n}\nfunction markTruncated(state: SnapshotState, bytes = 1): void {\n state.truncated = true;\n state.omittedBytes += Math.max(1, bytes);\n}\nfunction boundedSnapshotString(value: string, state: SnapshotState): string {\n const bytes = omittedBytes(value);\n if (bytes <= assertionRuntimeLimits.stringBytes)\n return value;\n let retainedBytes = 0;\n let retainedEnd = 0;\n for (const point of value) {\n const pointBytes = omittedBytes(point);\n if (retainedBytes + pointBytes > assertionRuntimeLimits.stringBytes)\n break;\n retainedBytes += pointBytes;\n retainedEnd += point.length;\n }\n markTruncated(state, bytes - retainedBytes);\n return value.slice(0, retainedEnd);\n}\nfunction boundedSnapshotKey(key: string, index: number, existing: ReadonlySet<string>, state: SnapshotState): string {\n if (omittedBytes(key) <= assertionRuntimeLimits.stringBytes)\n return key;\n markTruncated(state, omittedBytes(key));\n let replacement = `$niceeval:truncated-key:${index}`;\n let suffix = 0;\n while (existing.has(replacement)) {\n suffix += 1;\n replacement = `$niceeval:truncated-key:${index}:${suffix}`;\n }\n return replacement;\n}\n/**\n * Produces a bounded, safe-to-persist view without changing the actual value\n * consumed by a Match. Non-JSON runtime objects remain visible only as a\n * tagged placeholder and make the entry's material explicitly partial.\n */\nfunction boundedSnapshotValue(value: unknown, depth: number, state: SnapshotState): AssertionSnapshotValue {\n if (value === null || typeof value === \"boolean\")\n return value;\n if (typeof value === \"number\") {\n if (Number.isFinite(value))\n return value;\n markTruncated(state, String(value).length);\n return marker(\"non-finite-number\");\n }\n if (typeof value === \"string\") {\n return boundedSnapshotString(value, state);\n }\n if (typeof value === \"undefined\") {\n markTruncated(state);\n return marker(\"undefined\");\n }\n if (typeof value === \"bigint\" || typeof value === \"symbol\" || typeof value === \"function\") {\n markTruncated(state, String(value).length);\n return marker(typeof value);\n }\n if (depth >= assertionRuntimeLimits.jsonDepth) {\n markTruncated(state);\n return marker(\"depth-truncated\");\n }\n if (state.seen.has(value)) {\n markTruncated(state);\n return marker(\"cyclic-or-shared-reference\");\n }\n state.seen.add(value);\n if (Array.isArray(value)) {\n const length = Math.min(value.length, assertionRuntimeLimits.jsonArrayItems);\n if (length < value.length)\n markTruncated(state, value.length - length);\n const entries: AssertionSnapshotValue[] = [];\n for (let index = 0; index < length; index += 1) {\n try {\n const descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n if (descriptor === undefined) {\n markTruncated(state);\n entries.push(marker(\"array-hole\"));\n }\n else if (!(\"value\" in descriptor)) {\n markTruncated(state);\n entries.push(marker(\"accessor-element\"));\n }\n else {\n entries.push(boundedSnapshotValue(descriptor.value, depth + 1, state));\n }\n }\n catch {\n markTruncated(state);\n entries.push(marker(\"unreadable-element\"));\n }\n }\n return Object.freeze(entries);\n }\n if (value instanceof Date) {\n const time = value.getTime();\n if (!Number.isFinite(time)) {\n markTruncated(state);\n return marker(\"invalid-date\");\n }\n markTruncated(state);\n return Object.freeze({ $niceeval: \"date\", value: value.toISOString() });\n }\n let keys: readonly string[];\n try {\n keys = Object.keys(value);\n }\n catch {\n markTruncated(state);\n return marker(\"uninspectable-object\");\n }\n const length = Math.min(keys.length, assertionRuntimeLimits.jsonObjectKeys);\n if (length < keys.length)\n markTruncated(state, keys.length - length);\n const entries: Array<readonly [\n string,\n AssertionSnapshotValue\n ]> = [];\n const reservedKeys = new Set(keys);\n for (let index = 0; index < length; index += 1) {\n const key = keys[index];\n if (key === undefined)\n continue;\n const capturedKey = boundedSnapshotKey(key, index, reservedKeys, state);\n reservedKeys.add(capturedKey);\n try {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor)) {\n markTruncated(state);\n entries.push([capturedKey, marker(\"accessor-property\")]);\n }\n else {\n entries.push([\n capturedKey,\n boundedSnapshotValue(descriptor.value, depth + 1, state),\n ]);\n }\n }\n catch {\n markTruncated(state);\n entries.push([capturedKey, marker(\"unreadable-property\")]);\n }\n }\n return Object.freeze(Object.fromEntries(entries));\n}\nexport function captureAssertionSnapshot(value: unknown): CapturedAssertionSnapshot {\n const state: SnapshotState = {\n truncated: false,\n omittedBytes: 0,\n seen: new WeakSet<object>(),\n };\n const snapshot = boundedSnapshotValue(value, 0, state);\n const material: Extract<AssertionMaterial, {\n readonly kind: \"snapshot\";\n }> = Object.freeze({\n kind: \"snapshot\",\n value: snapshot,\n });\n if (!state.truncated) {\n return Object.freeze({\n material,\n coverage: Object.freeze({ state: \"complete\" as const }),\n limitations: Object.freeze([]),\n });\n }\n return Object.freeze({\n material,\n coverage: Object.freeze({ state: \"partial\" as const, reason: \"truncated\" as const }),\n limitations: Object.freeze([\n Object.freeze({\n kind: \"truncated\" as const,\n omittedBytes: Math.max(1, state.omittedBytes),\n }),\n ]),\n });\n}\n/**\n * Matcher diagnostics are runtime objects, but sealed Assertions need a\n * bounded JSON copy that keeps their tree (field children and locators) for\n * show/view without granting those readers evaluator authority.\n */\nfunction captureMatchDiagnostic(value: MatchDiagnostic | undefined, depth = 0, seen = new WeakSet<object>(), budget = { remainingNodes: assertionRuntimeLimits.diagnosticNodes }): AssertionSnapshotObject | undefined {\n if (value === undefined)\n return undefined;\n if (budget.remainingNodes <= 0) {\n return Object.freeze({\n code: \"diagnostic-truncated\",\n message: \"matcher diagnostic exceeded the persisted node limit\",\n path: Object.freeze([]),\n });\n }\n budget.remainingNodes -= 1;\n if (depth >= assertionRuntimeLimits.diagnosticDepth || seen.has(value)) {\n return Object.freeze({\n code: \"diagnostic-truncated\",\n message: depth >= assertionRuntimeLimits.diagnosticDepth\n ? \"matcher diagnostic exceeded the persisted depth limit\"\n : \"matcher diagnostic contained a cycle\",\n path: Object.freeze([]),\n });\n }\n seen.add(value);\n try {\n const text = (input: string): string => {\n const state: SnapshotState = { truncated: false, omittedBytes: 0, seen: new WeakSet<object>() };\n return boundedSnapshotString(input, state);\n };\n const output: globalThis.Record<string, AssertionSnapshotValue> = {\n code: text(value.code),\n message: text(value.message),\n path: Object.freeze(value.path.map((segment) => typeof segment === \"string\" ? text(segment) : segment)),\n };\n if (value.expected !== undefined)\n output.expected = text(value.expected);\n if (value.received !== undefined)\n output.received = text(value.received);\n if (value.reason !== undefined)\n output.reason = text(value.reason);\n if (value.locator !== undefined) {\n output.locator = value.locator.kind === \"json-pointer\"\n ? Object.freeze({ kind: \"json-pointer\", pointer: text(value.locator.pointer) })\n : Object.freeze({ kind: \"tool-occurrence\", id: text(value.locator.id) });\n }\n if (value.truncation !== undefined) {\n output.truncation = Object.freeze({ ...value.truncation });\n }\n if (value.children !== undefined) {\n const children: AssertionSnapshotValue[] = [];\n for (const child of value.children.slice(0, assertionRuntimeLimits.jsonArrayItems)) {\n if (budget.remainingNodes <= 0)\n break;\n const entry: globalThis.Record<string, AssertionSnapshotValue> = {\n index: child.index,\n state: child.state,\n };\n if (child.label !== undefined)\n entry.label = text(child.label);\n const diagnostic = captureMatchDiagnostic(child.diagnostic, depth + 1, seen, budget);\n if (diagnostic !== undefined)\n entry.diagnostic = diagnostic;\n children.push(Object.freeze(entry));\n }\n output.children = Object.freeze(children);\n if (children.length < value.children.length && output.truncation === undefined) {\n output.truncation = Object.freeze({\n code: \"diagnostic-truncated\",\n reason: \"sampled\",\n captured: children.length,\n knownTotal: value.children.length,\n });\n }\n }\n const captured = Object.freeze(output);\n const serialized = JSON.stringify(captured);\n const originalBytes = UTF8.encode(serialized).byteLength;\n if (originalBytes <= assertionRuntimeLimits.diagnosticBytes)\n return captured;\n return Object.freeze({\n code: output.code,\n message: output.message,\n path: output.path,\n ...(output.expected === undefined ? {} : { expected: output.expected }),\n ...(output.received === undefined ? {} : { received: output.received }),\n ...(output.reason === undefined ? {} : { reason: output.reason }),\n ...(output.locator === undefined ? {} : { locator: output.locator }),\n truncation: Object.freeze({\n code: \"diagnostic-truncated\",\n reason: \"byte-limit\",\n limitBytes: assertionRuntimeLimits.diagnosticBytes,\n originalBytes,\n }),\n });\n }\n finally {\n seen.delete(value);\n }\n}\nfunction freezeAssertionMaterial(material: AssertionMaterial): AssertionMaterial {\n if (material.kind === \"snapshot\") {\n return Object.freeze({ kind: \"snapshot\", value: material.value });\n }\n if (typeof material.preview !== \"string\" || material.preview.trim() === \"\") {\n throw new TypeError(\"record-attachment material requires a non-empty preview\");\n }\n return Object.freeze({\n kind: \"record-attachment\",\n preview: material.preview,\n });\n}\nfunction cloneCoverage(coverage: AssertionCoverage): AssertionCoverage {\n return Object.freeze({ ...coverage });\n}\nfunction cloneLimitations(limitations: readonly AssertionLimitation[]): readonly AssertionLimitation[] {\n return Object.freeze(limitations.map((limitation) => Object.freeze({ ...limitation })));\n}\nfunction noScore(): Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\";\n}> {\n return Object.freeze({ state: \"not-scored\" as const });\n}\nfunction earnedScore(points: number, earned: number): Extract<AssertionScoreContribution, {\n readonly state: \"earned\";\n}> {\n return Object.freeze({ state: \"earned\" as const, points, earned });\n}\nfunction unavailableScore(points: number, reason: Extract<AssertionScoreContribution, {\n readonly state: \"unavailable\";\n}>[\"reason\"]): Extract<AssertionScoreContribution, {\n readonly state: \"unavailable\";\n}> {\n return Object.freeze({ state: \"unavailable\" as const, points, reason });\n}\nclass HandleBase {\n readonly [assertionHandleBrand] = true as const;\n constructor(protected readonly runtime: AssertionsRuntimeImplementation, protected readonly entry: AssertionEntry) {\n assertionHandleRegistry.add(this);\n }\n key(value: string): this {\n this.runtime.configureKey(this.entry, value);\n return this;\n }\n label(value: string): this {\n this.runtime.configureLabel(this.entry, value);\n return this;\n }\n group(title: string): this {\n this.runtime.configureGroup(this.entry, title);\n return this;\n }\n}\nclass BooleanHandle extends HandleBase {\n readonly kind = \"boolean\" as const;\n optional(): this {\n this.runtime.configureOptional(this.entry);\n return this;\n }\n gate(value?: number): this {\n this.runtime.configureGate(this.entry, value);\n return this;\n }\n score(points: number): this {\n this.runtime.configureScore(this.entry, points);\n return this;\n }\n orStop(): Promise<unknown> {\n return this.runtime.requestStopBoolean(this.entry);\n }\n}\nfunction isScoreBooleanAssertionHandle<Refined>(handle: PassBooleanAssertionHandle<Refined> | ScoreBooleanAssertionHandle<Refined>): handle is ScoreBooleanAssertionHandle<Refined> {\n return \"score\" in handle && typeof handle.score === \"function\";\n}\n/**\n * Gives a post-run producer a configuration-only view of an ordinary Boolean\n * entry. Keeping this as a distinct, null-prototype object matters at the\n * JavaScript boundary too: a cast must not recover `orStop()` and force a\n * deferred producer to evaluate before its Attempt has frozen its evidence.\n */\nexport function postRunBooleanAssertionHandle<Kind extends AssertionEvaluationKind, Refined>(handle: BooleanAssertionHandle<Kind, Refined>, evaluationKind: Kind): PostRunBooleanAssertionHandle<Kind, Refined> {\n const view = Object.create(null) as object;\n const descriptor = (value: unknown): PropertyDescriptor => ({\n value,\n enumerable: true,\n writable: false,\n configurable: false,\n });\n Object.defineProperties(view, {\n [assertionHandleBrand]: {\n value: true,\n enumerable: false,\n writable: false,\n configurable: false,\n },\n kind: descriptor(\"boolean\"),\n key: descriptor((value: string) => {\n handle.key(value);\n return view;\n }),\n label: descriptor((value: string) => {\n handle.label(value);\n return view;\n }),\n group: descriptor((title: string) => {\n handle.group(title);\n return view;\n }),\n ...(evaluationKind === \"pass\"\n ? (() => {\n const passHandle = handle as PassBooleanAssertionHandle<Refined>;\n return {\n optional: descriptor(() => {\n passHandle.optional();\n return view;\n }),\n gate: descriptor(() => {\n passHandle.gate();\n return view;\n }),\n };\n })()\n : {}),\n ...(evaluationKind === \"score\"\n ? (() => {\n if (!isScoreBooleanAssertionHandle(handle)) {\n throw new Error(\"Score post-run Boolean Assertion received a non-score handle\");\n }\n return {\n score: descriptor((points: number) => {\n handle.score(points);\n return view;\n }),\n };\n })()\n : {}),\n });\n assertionHandleRegistry.add(view);\n return Object.freeze(view) as PostRunBooleanAssertionHandle<Kind, Refined>;\n}\nclass MeasurementHandle extends HandleBase {\n readonly kind = \"measurement\" as const;\n optional(): this {\n this.runtime.configureOptional(this.entry);\n return this;\n }\n atLeast(value: number): this {\n this.runtime.configureThreshold(this.entry, value);\n return this;\n }\n gate(value: number): this {\n this.runtime.configureGate(this.entry, value);\n return this;\n }\n score(points: number): this {\n this.runtime.configureScore(this.entry, points);\n return this;\n }\n orStop(): Promise<number> {\n return this.runtime.requestStopMeasurement(this.entry);\n }\n}\nclass DirectScoreHandle extends HandleBase {\n readonly kind = \"direct-score\" as const;\n}\nclass AssertionsRuntimeImplementation {\n readonly t: AssertionsContext<AssertionEvaluationKind>;\n private readonly entries: AssertionEntry[] = [];\n private readonly groupStack: string[] = [];\n private stopped: AssertionStopError | undefined;\n private closing = false;\n private sealed: SealedAssertionsRuntime | undefined;\n constructor(readonly evaluationKind: AssertionEvaluationKind, private readonly executeStop: AssertionStopExecutor) {\n const base = {\n evaluationKind,\n check: this.check.bind(this),\n group: this.withGroup.bind(this),\n };\n this.t = Object.freeze(evaluationKind === \"score\"\n ? { ...base, score: this.directScore.bind(this) }\n : base) as AssertionsContext<AssertionEvaluationKind>;\n }\n private recordSourceOccurrence(entry: AssertionEntry, role: AssertionRuntimeSourceRole): MutableAssertionRuntimeSourceOccurrence | undefined {\n const capture = sourceCaptureByRuntime.get(this);\n const capturedEntry = capture?.byEntry.get(entry);\n if (capturedEntry === undefined || capture === undefined)\n return undefined;\n let site: AssertionRuntimeSourceSite | undefined;\n try {\n site = capture.capture();\n }\n catch {\n // Source navigation must never change authoring or assertion behavior.\n }\n const occurrence: MutableAssertionRuntimeSourceOccurrence = {\n role,\n ...(site === undefined ? {} : { site }),\n };\n capturedEntry.occurrences.push(occurrence);\n return occurrence;\n }\n check<Value, Refined extends Value>(value: Value, match: BooleanMatch<NoInfer<Value>, Refined, \"value\">): BooleanHandle;\n check<Value>(value: Value, match: ScoreMatch<NoInfer<Value>>): MeasurementHandle;\n check<Value>(value: Value, match: ThresholdedScoreMatch<NoInfer<Value>>): MeasurementHandle;\n check(value: unknown, match: unknown, ...extra: readonly unknown[]): BooleanHandle | MeasurementHandle {\n if (extra.length > 0) {\n throw new TypeError(\"t.check() accepts exactly (value, match)\");\n }\n this.assertCanRegister();\n if (typeof value === \"object\" && value !== null && assertionHandleRegistry.has(value)) {\n throw new TypeError(\"t.check() cannot use an AssertionHandle as a subject\");\n }\n const thresholded = isManagedThresholdedScoreMatch(match)\n ? thresholdedScoreMatchValue(match)\n : undefined;\n if (thresholded === undefined && looksLikeThresholdedScoreMatch(match)) {\n throw new TypeError(\"t.check() match must be a threshold view created by ScoreMatch.atLeast()\");\n }\n const managed = thresholded?.match ?? assertManagedValueMatch(match, \"t.check() match\");\n const captured = captureAssertionSnapshot(value);\n if (managed.kind === \"boolean\") {\n const entry = this.createEntry({\n kind: \"boolean\",\n criterion: Object.freeze({ kind: \"value-match\" as const, subject: \"explicit-value\" as const, matcher: Object.freeze({ state: \"declared\" as const, name: managed.name }) }),\n subject: captured.material,\n evidence: Object.freeze([]),\n coverage: captured.coverage,\n limitations: captured.limitations,\n evaluate: () => this.evaluateBooleanMatch(managed, value),\n });\n return new BooleanHandle(this, entry);\n }\n const entry = this.createEntry({\n kind: \"measurement\",\n criterion: Object.freeze({ kind: \"value-match\" as const, subject: \"explicit-value\" as const, matcher: Object.freeze({ state: \"declared\" as const, name: managed.name }) }),\n subject: captured.material,\n evidence: Object.freeze([]),\n coverage: captured.coverage,\n limitations: captured.limitations,\n evaluate: () => this.evaluateScoreMatch(managed, value),\n });\n if (thresholded !== undefined)\n this.configureThreshold(entry, thresholded.threshold);\n return new MeasurementHandle(this, entry);\n }\n registerBoolean<Refined>(definition: BooleanAssertionRegistration<Refined>): BooleanHandle {\n this.assertCanRegister();\n this.assertRegistration(definition, \"registerBoolean()\");\n const entry = this.createEntry({\n kind: \"boolean\",\n criterion: definition.criterion,\n subject: freezeAssertionMaterial(definition.subject),\n evidence: Object.freeze((definition.evidence ?? []).map(freezeAssertionMaterial)),\n coverage: cloneCoverage(definition.coverage ?? { state: \"complete\" }),\n limitations: cloneLimitations(definition.limitations ?? []),\n evaluate: () => Effect.suspend(definition.evaluate).pipe(Effect.map((evaluation): EntrySettlement => this.booleanSettlement(evaluation))),\n });\n return new BooleanHandle(this, entry);\n }\n registerMeasurement(definition: MeasurementAssertionRegistration): MeasurementHandle {\n this.assertCanRegister();\n this.assertRegistration(definition, \"registerMeasurement()\");\n const entry = this.createEntry({\n kind: \"measurement\",\n criterion: definition.criterion,\n subject: freezeAssertionMaterial(definition.subject),\n evidence: Object.freeze((definition.evidence ?? []).map(freezeAssertionMaterial)),\n coverage: cloneCoverage(definition.coverage ?? { state: \"complete\" }),\n limitations: cloneLimitations(definition.limitations ?? []),\n evaluate: () => Effect.suspend(definition.evaluate).pipe(Effect.map((evaluation): EntrySettlement => this.measurementSettlement(evaluation))),\n });\n return new MeasurementHandle(this, entry);\n }\n directScore(points: number): DirectScoreHandle {\n this.assertCanRegister();\n if (this.evaluationKind !== \"score\") {\n throw new TypeError(\"t.score() is available only in a Score Eval\");\n }\n assertFiniteNonNegative(points, \"t.score() points\");\n const captured = captureAssertionSnapshot(points);\n const entry = this.createEntry({\n kind: \"direct-score\",\n criterion: Object.freeze({ kind: \"direct-score\" as const, source: \"author\" as const }),\n subject: captured.material,\n evidence: Object.freeze([]),\n coverage: captured.coverage,\n limitations: captured.limitations,\n directScorePoints: points,\n evaluate: () => Effect.succeed({ state: \"matched\", value: points }),\n });\n return new DirectScoreHandle(this, entry);\n }\n async withGroup<Value>(title: string, body: () => Value | PromiseLike<Value>): Promise<Awaited<Value>> {\n this.assertCanRegister();\n assertDisplayText(title, \"t.group() title\");\n if (this.groupStack.length >= assertionRuntimeLimits.groupDepth) {\n throw new Error(`Assertion group depth cannot exceed ${assertionRuntimeLimits.groupDepth}`);\n }\n this.groupStack.push(title);\n try {\n return await body() as Awaited<Value>;\n }\n finally {\n const popped = this.groupStack.pop();\n if (popped !== title) {\n throw new Error(\"Assertion group stack lost nesting order\");\n }\n }\n }\n configureKey(entry: AssertionEntry, value: string): void {\n this.assertMutable(entry, \"key()\");\n assertDisplayText(value, \"key() value\");\n if (entry.display.key !== undefined)\n throw new Error(\"An Assertion key is already configured\");\n entry.display.key = value;\n }\n configureLabel(entry: AssertionEntry, value: string): void {\n this.assertMutable(entry, \"label()\");\n assertDisplayText(value, \"label() value\");\n if (entry.display.label !== undefined)\n throw new Error(\"An Assertion label is already configured\");\n entry.display.label = value;\n }\n configureGroup(entry: AssertionEntry, title: string): void {\n this.assertMutable(entry, \"group()\");\n assertDisplayText(title, \"group() title\");\n if (entry.display.groupPath.length !== this.groupStack.length) {\n throw new Error(\"An Assertion group is already configured\");\n }\n if (entry.display.groupPath.length >= assertionRuntimeLimits.groupDepth) {\n throw new Error(`Assertion group depth cannot exceed ${assertionRuntimeLimits.groupDepth}`);\n }\n entry.display.groupPath.push(title);\n }\n configureOptional(entry: AssertionEntry): void {\n this.assertMutable(entry, \"optional()\");\n if (this.evaluationKind === \"score\") {\n throw new TypeError(\"optional() is not available in a Score Eval; every score contribution must be comparable\");\n }\n if (entry.optionalConfigured)\n throw new Error(\"An Assertion optional policy is already configured\");\n entry.optionalConfigured = true;\n this.recordSourceOccurrence(entry, \"optional\");\n }\n configureGate(entry: AssertionEntry, threshold?: number): void {\n this.assertMutable(entry, \"gate()\");\n if (this.evaluationKind === \"score\") {\n throw new TypeError(\"gate() is not available in a Score Eval; normal scoring always passes\");\n }\n if (entry.kind === \"direct-score\")\n throw new TypeError(\"A direct-score Assertion cannot be a gate\");\n if (entry.kind === \"measurement\") {\n if (threshold === undefined) {\n throw new TypeError(\"A measurement Assertion requires gate(threshold)\");\n }\n assertUnitInterval(threshold, \"gate() threshold\");\n if (entry.threshold !== undefined)\n throw new Error(\"An Assertion threshold is already configured\");\n entry.threshold = threshold;\n }\n if (entry.gateConfigured)\n throw new Error(\"An Assertion gate policy is already configured\");\n entry.gateConfigured = true;\n this.recordSourceOccurrence(entry, \"gate\");\n }\n configureThreshold(entry: AssertionEntry, value: number): void {\n this.assertMutable(entry, \"atLeast()\");\n if (entry.kind !== \"measurement\")\n throw new TypeError(\"atLeast() is available only on a measurement Assertion\");\n assertUnitInterval(value, \"atLeast() threshold\");\n if (entry.threshold !== undefined)\n throw new Error(\"An Assertion threshold is already configured\");\n entry.threshold = value;\n this.recordSourceOccurrence(entry, \"threshold\");\n }\n configureScore(entry: AssertionEntry, points: number): void {\n this.assertMutable(entry, \"score()\");\n if (this.evaluationKind !== \"score\") {\n throw new TypeError(\"handle.score() is available only in a Score Eval\");\n }\n if (entry.kind === \"direct-score\")\n throw new TypeError(\"A direct-score Assertion already has its score contribution\");\n assertFiniteNonNegative(points, \"score() points\");\n if (entry.scorePoints !== undefined)\n throw new Error(\"An Assertion score contribution is already configured\");\n entry.scorePoints = points;\n this.recordSourceOccurrence(entry, \"score\");\n }\n requestStopBoolean(entry: AssertionEntry): Promise<unknown> {\n return this.observeStop(entry, this.requestStop(this.stopBoolean(entry)));\n }\n requestStopMeasurement(entry: AssertionEntry): Promise<number> {\n return this.observeStop(entry, this.requestStop(this.stopMeasurement(entry)));\n }\n private observeStop<Value>(entry: AssertionEntry, result: Promise<Value>): Promise<Value> {\n const occurrence = this.recordSourceOccurrence(entry, \"stop\");\n return result.then((value) => {\n if (occurrence !== undefined && occurrence.outcome === undefined) {\n occurrence.outcome = \"continued\";\n }\n return value;\n }, (error: unknown) => {\n if (occurrence !== undefined && occurrence.outcome === undefined) {\n if (isAssertionStop(error))\n occurrence.outcome = \"stopped\";\n else if (isInterruptedAuthoringClosure(error))\n occurrence.outcome = \"interrupted\";\n }\n throw error;\n });\n }\n private requestStop<Value>(effect: Effect.Effect<Value, AssertionStopError, never>): Promise<Value> {\n if (this.stopped !== undefined)\n return Promise.reject(this.stopped);\n if (this.sealed !== undefined) {\n return Promise.reject(new AssertionAuthoringClosedError(\"attempt-sealed\"));\n }\n if (this.closing) {\n return Promise.reject(new AssertionAuthoringClosedError(\"attempt-sealing\"));\n }\n try {\n return this.executeStop(effect);\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n private stopBoolean(entry: AssertionEntry): Effect.Effect<unknown, AssertionStopError> {\n return this.settleThrough(entry).pipe(Effect.flatMap((settlement) => {\n if (settlement.state === \"matched\")\n return Effect.succeed(settlement.value);\n return Effect.fail(this.latchStop(entry, settlement));\n }));\n }\n private stopMeasurement(entry: AssertionEntry): Effect.Effect<number, AssertionStopError> {\n return this.settleThrough(entry).pipe(Effect.flatMap((settlement) => {\n if (settlement.state === \"measured\"\n && entry.threshold !== undefined\n && settlement.value >= entry.threshold) {\n return Effect.succeed(settlement.value);\n }\n return Effect.fail(this.latchStop(entry, settlement));\n }));\n }\n seal(options: AssertionSealOptions = {}): Effect.Effect<SealedAssertionsRuntime, AssertionSealError, never> {\n return Effect.suspend(() => {\n if (this.sealed !== undefined)\n return Effect.succeed(this.sealed);\n if (options.interrupted) {\n this.closing = true;\n for (const entry of this.entries) {\n if (entry.settled === undefined) {\n entry.settled = Object.freeze({ state: \"interrupted\" as const });\n }\n }\n return Effect.sync(() => this.finishSeal({\n ...options,\n execution: \"errored\",\n }));\n }\n const missingThreshold = this.entries.find((entry) => this.evaluationKind === \"pass\" && entry.kind === \"measurement\" && entry.threshold === undefined);\n if (missingThreshold !== undefined) {\n return Effect.fail(Object.freeze({\n _tag: \"AssertionSealError\" as const,\n code: \"pass-measurement-threshold-missing\" as const,\n entryIndex: missingThreshold.index,\n }));\n }\n if (this.closing)\n throw new Error(\"Assertions are already sealing\");\n this.closing = true;\n return Effect.forEach(this.entries, (entry) => this.settle(entry)).pipe(Effect.zipRight(Effect.sync(() => this.finishSeal(options))), Effect.onInterrupt(() => Effect.sync(() => {\n this.closing = false;\n })));\n });\n }\n private createEntry(input: {\n readonly kind: EntryKind;\n readonly criterion: AssertionCriterion;\n readonly subject: AssertionMaterial;\n readonly evidence: readonly AssertionMaterial[];\n readonly coverage: AssertionCoverage;\n readonly limitations: readonly AssertionLimitation[];\n readonly evaluate: () => Effect.Effect<EntrySettlement, unknown, never>;\n readonly directScorePoints?: number;\n }): AssertionEntry {\n if (this.entries.length >= assertionRuntimeLimits.entries) {\n throw new Error(`An Assertions Attachment cannot contain more than ${assertionRuntimeLimits.entries} entries`);\n }\n const entry: AssertionEntry = {\n index: this.entries.length,\n kind: input.kind,\n criterion: input.criterion,\n subject: input.subject,\n evidence: input.evidence,\n initialCoverage: input.coverage,\n initialLimitations: input.limitations,\n evaluate: input.evaluate,\n display: { key: undefined, label: undefined, groupPath: [...this.groupStack] },\n directScorePoints: input.directScorePoints,\n optionalConfigured: false,\n gateConfigured: false,\n threshold: undefined,\n scorePoints: input.directScorePoints,\n settled: undefined,\n pending: undefined,\n };\n this.entries.push(entry);\n const capture = sourceCaptureByRuntime.get(this);\n if (capture !== undefined) {\n const capturedEntry: AssertionRuntimeSourceEntry = { occurrences: [] };\n capture.entries.push(capturedEntry);\n capture.byEntry.set(entry, capturedEntry);\n this.recordSourceOccurrence(entry, \"declaration\");\n }\n return entry;\n }\n private assertRegistration(definition: unknown, owner: string): asserts definition is BooleanAssertionRegistration<unknown> | MeasurementAssertionRegistration {\n if (!isRecord(definition) || typeof definition.evaluate !== \"function\") {\n throw new TypeError(`${owner} requires an Effect evaluation function`);\n }\n if (!isRecord(definition.subject)\n || (definition.subject.kind !== \"snapshot\" && definition.subject.kind !== \"record-attachment\")) {\n throw new TypeError(`${owner} requires snapshot or same-owner record-attachment subject material`);\n }\n if (definition.subject.kind === \"record-attachment\"\n && typeof definition.subject.preview !== \"string\") {\n throw new TypeError(`${owner} requires a record-attachment preview`);\n }\n if (definition.evidence !== undefined\n && (!Array.isArray(definition.evidence)\n || definition.evidence.some((material) => !isRecord(material)\n || (material.kind !== \"snapshot\" && material.kind !== \"record-attachment\")\n || (material.kind === \"record-attachment\"\n && typeof material.preview !== \"string\")))) {\n throw new TypeError(`${owner} evidence must use snapshot or record-attachment material`);\n }\n }\n private evaluateBooleanMatch(match: BooleanMatch<unknown, unknown, \"value\">, value: unknown): Effect.Effect<EntrySettlement> {\n return Effect.tryPromise({\n try: () => evaluateBooleanMatch(match, value),\n catch: () => undefined,\n }).pipe(Effect.map((evaluation): EntrySettlement => evaluation.state === \"unavailable\"\n ? Object.freeze({\n state: \"unavailable\" as const,\n reason: \"source-unavailable\" as const,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n })\n : this.booleanSettlement(evaluation)), this.captureEvaluationFailure());\n }\n private evaluateScoreMatch(match: ScoreMatch<unknown>, value: unknown): Effect.Effect<EntrySettlement> {\n return Effect.tryPromise({\n try: () => evaluateScoreMatch(match, value),\n catch: () => undefined,\n }).pipe(Effect.map((value): EntrySettlement => {\n assertUnitInterval(value, \"measurement Match result\");\n return Object.freeze({ state: \"measured\" as const, value });\n }), this.captureEvaluationFailure());\n }\n private captureEvaluationFailure(): <Value>(effect: Effect.Effect<Value, unknown, never>) => Effect.Effect<Value | EntrySettlement, never, never> {\n return (effect) => effect.pipe(Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause)\n ? Effect.interrupt\n : Effect.succeed(Object.freeze({ state: \"errored\" as const }))));\n }\n private booleanSettlement(evaluation: BooleanAssertionEvaluation<unknown>): EntrySettlement {\n switch (evaluation.state) {\n case \"matched\":\n return Object.freeze({\n state: \"matched\" as const,\n value: evaluation.value,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n ...(evaluation.receipt === undefined ? {} : { receipt: evaluation.receipt }),\n });\n case \"mismatched\":\n return Object.freeze({\n state: \"mismatched\" as const,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n ...(evaluation.receipt === undefined ? {} : { receipt: evaluation.receipt }),\n });\n case \"unavailable\":\n return Object.freeze({\n state: \"unavailable\" as const,\n reason: evaluation.reason,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n ...(evaluation.receipt === undefined ? {} : { receipt: evaluation.receipt }),\n });\n case \"not-applicable\":\n return Object.freeze({\n state: \"not-applicable\" as const,\n ...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),\n });\n }\n }\n private measurementSettlement(evaluation: MeasurementAssertionEvaluation): EntrySettlement {\n switch (evaluation.state) {\n case \"measured\":\n assertUnitInterval(evaluation.value, \"measurement Assertion result\");\n return Object.freeze({\n state: \"measured\" as const,\n value: evaluation.value,\n ...(evaluation.detail === undefined ? {} : { explanation: evaluation.detail }),\n });\n case \"unavailable\":\n return Object.freeze({\n state: \"unavailable\" as const,\n reason: evaluation.reason,\n ...(evaluation.detail === undefined ? {} : { explanation: evaluation.detail }),\n });\n case \"not-applicable\":\n return Object.freeze({ state: \"not-applicable\" as const, ...(evaluation.detail === undefined ? {} : { explanation: evaluation.detail }) });\n case \"errored\":\n return Object.freeze({ state: \"errored\" as const, ...(evaluation.detail === undefined ? {} : { explanation: evaluation.detail }) });\n }\n }\n /** Evaluates an entry at most once even when multiple Effect fibers await it. */\n private settle(entry: AssertionEntry): Effect.Effect<EntrySettlement> {\n return Effect.suspend(() => {\n if (entry.settled !== undefined)\n return Effect.succeed(entry.settled);\n if (entry.pending !== undefined)\n return entry.pending;\n return Effect.uninterruptibleMask((restore) => Effect.gen(function* () {\n if (entry.settled !== undefined)\n return entry.settled;\n if (entry.pending !== undefined)\n return yield* entry.pending;\n const deferred = yield* Deferred.make<EntrySettlement>();\n entry.pending = deferred;\n const settled = yield* restore(Effect.suspend(entry.evaluate).pipe(Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause)\n ? Effect.interrupt\n : Effect.succeed(Object.freeze({ state: \"errored\" as const }))))).pipe(Effect.onInterrupt(() => Deferred.interrupt(deferred).pipe(Effect.zipRight(Effect.sync(() => {\n if (entry.pending === deferred)\n entry.pending = undefined;\n })))));\n // An enclosing Attempt interruption may have synchronously sealed\n // this entry while its evaluator was unwinding. Preserve that\n // producer-interrupted terminal fact rather than resurrecting a\n // late evaluator result.\n const terminal = entry.settled ?? settled;\n entry.settled = terminal;\n yield* Deferred.succeed(deferred, terminal);\n return terminal;\n }));\n });\n }\n /**\n * A control barrier may force evaluation early, but it must not let a later\n * Judge entry leapfrog an earlier declaration. `settle()` still memoizes the\n * individual work, so the normal seal only observes these same results.\n */\n private settleThrough(entry: AssertionEntry): Effect.Effect<EntrySettlement> {\n return Effect.forEach(this.entries.slice(0, entry.index + 1), (candidate) => this.settle(candidate)).pipe(Effect.map((settlements) => {\n const settlement = settlements.at(-1);\n if (settlement === undefined)\n throw new Error(\"Assertion stop entry was not registered\");\n return settlement;\n }));\n }\n private latchStop(entry: AssertionEntry, settlement: EntrySettlement): AssertionStopError {\n if (this.stopped !== undefined)\n return this.stopped;\n const reason = settlement.state === \"mismatched\" || settlement.state === \"measured\"\n ? \"condition-not-met\" as const\n : settlement.state === \"unavailable\"\n ? \"source-unavailable\" as const\n : settlement.state === \"not-applicable\"\n ? \"not-applicable\" as const\n : \"evaluator-failed\" as const;\n this.stopped = Object.freeze({\n _tag: \"AssertionStopError\" as const,\n entryIndex: entry.index,\n reason,\n });\n return this.stopped;\n }\n private finishSeal(options: AssertionSealOptions): SealedAssertionsRuntime {\n if (this.sealed !== undefined)\n return this.sealed;\n const entries: SealedAssertionEntry[] = [];\n const assertions: SealedAssertionEvaluation[\"assertions\"][number][] = [];\n for (const entry of this.entries) {\n const sealedEntry = this.toSealedEntry(entry);\n entries.push(sealedEntry);\n assertions.push(Object.freeze({\n required: !entry.optionalConfigured,\n result: sealedEntry.result,\n }));\n }\n const evaluation: SealedAssertionEvaluation = Object.freeze({\n execution: options.execution ?? \"completed\",\n explicitlySkipped: options.explicitlySkipped ?? false,\n assertions: Object.freeze(assertions),\n });\n this.sealed = Object.freeze({\n entries: Object.freeze(entries),\n evaluation,\n });\n return this.sealed;\n }\n private toSealedEntry(entry: AssertionEntry): SealedAssertionEntry {\n const settlement = entry.settled;\n if (settlement === undefined)\n throw new Error(\"Attempted to seal an unsettled Assertion entry\");\n const display: AssertionDisplay = Object.freeze({\n ...(entry.display.key === undefined ? {} : { key: entry.display.key }),\n ...(entry.display.label === undefined ? {} : { label: entry.display.label }),\n groupPath: Object.freeze([...entry.display.groupPath]),\n });\n const material = this.materialFor(entry, settlement);\n return Object.freeze({\n display,\n criterion: entry.criterion,\n subject: entry.subject,\n evidence: entry.evidence,\n coverage: material.coverage,\n limitations: material.limitations,\n result: this.resultFor(entry, settlement),\n policy: Object.freeze({\n requirement: entry.optionalConfigured ? \"optional\" as const : \"required\" as const,\n condition: entry.kind === \"measurement\" && entry.threshold !== undefined\n ? Object.freeze({ kind: \"at-least\" as const, threshold: entry.threshold })\n : entry.kind === \"boolean\"\n ? Object.freeze({ kind: \"boolean\" as const, expected: true as const })\n : Object.freeze({ kind: \"record-only\" as const }),\n }),\n observed: entry.kind === \"boolean\"\n ? Object.freeze({\n kind: \"boolean\" as const,\n outcome: settlement.state === \"measured\" || settlement.state === \"interrupted\"\n ? \"errored\" as const\n : settlement.state,\n })\n : entry.kind === \"measurement\"\n ? settlement.state === \"measured\"\n ? Object.freeze({ kind: \"measurement\" as const, state: \"available\" as const, value: settlement.value })\n : Object.freeze({ kind: \"measurement\" as const, state: \"unavailable\" as const })\n : settlement.state === \"measured\"\n ? Object.freeze({ kind: \"direct-score\" as const, state: \"available\" as const, value: settlement.value })\n : Object.freeze({ kind: \"direct-score\" as const, state: \"unavailable\" as const }),\n });\n }\n private materialFor(entry: AssertionEntry, settlement: EntrySettlement): {\n readonly coverage: AssertionCoverage;\n readonly limitations: readonly AssertionLimitation[];\n } {\n if (settlement.state === \"unavailable\") {\n return Object.freeze({\n coverage: Object.freeze({ state: \"unavailable\" as const, reason: \"source-unavailable\" as const }),\n limitations: Object.freeze([]),\n });\n }\n if (settlement.state === \"not-applicable\") {\n return Object.freeze({\n coverage: Object.freeze({ state: \"not-applicable\" as const, reason: \"optional-material\" as const }),\n limitations: Object.freeze([]),\n });\n }\n return Object.freeze({\n coverage: entry.initialCoverage,\n limitations: entry.initialLimitations,\n });\n }\n private resultFor(entry: AssertionEntry, settlement: EntrySettlement): AssertionResult {\n const capturedDiagnostic = settlement.explanation ?? captureMatchDiagnostic(settlement.diagnostic);\n const diagnostic = capturedDiagnostic === undefined ? {} : { diagnostic: capturedDiagnostic };\n const receipt = settlement.receipt === undefined ? {} : { receipt: settlement.receipt };\n switch (settlement.state) {\n case \"matched\":\n return Object.freeze({\n state: \"matched\" as const,\n gate: this.gateForMatched(entry),\n score: this.availableScoreFor(entry, 1),\n ...diagnostic,\n ...receipt,\n });\n case \"mismatched\":\n return Object.freeze({\n state: \"mismatched\" as const,\n reason: \"condition-not-met\" as const,\n gate: this.gateForMismatched(entry),\n score: this.availableScoreFor(entry, 0),\n ...diagnostic,\n ...receipt,\n });\n case \"measured\": {\n const matched = entry.threshold === undefined || settlement.value >= entry.threshold;\n return matched\n ? Object.freeze({\n state: \"matched\" as const,\n gate: this.gateForMatched(entry),\n score: this.availableScoreFor(entry, settlement.value),\n ...diagnostic,\n ...receipt,\n })\n : Object.freeze({\n state: \"mismatched\" as const,\n reason: \"condition-not-met\" as const,\n gate: this.gateForMismatched(entry),\n score: this.availableScoreFor(entry, settlement.value),\n ...diagnostic,\n ...receipt,\n });\n }\n case \"unavailable\":\n return Object.freeze({\n state: \"unavailable\" as const,\n reason: settlement.reason,\n gate: this.gateForUnavailable(entry),\n score: this.incompleteScoreFor(entry, \"source-unavailable\"),\n ...diagnostic,\n ...receipt,\n });\n case \"not-applicable\":\n return Object.freeze({\n state: \"not-applicable\" as const,\n reason: \"coverage-not-applicable\" as const,\n gate: this.gateForNotApplicable(entry),\n score: this.incompleteScoreFor(entry, \"not-applicable\"),\n ...diagnostic,\n ...receipt,\n });\n case \"errored\":\n return Object.freeze({\n state: \"errored\" as const,\n reason: \"evaluator-failed\" as const,\n gate: this.gateForUnavailable(entry),\n score: this.incompleteScoreFor(entry, \"evaluation-errored\"),\n ...diagnostic,\n ...receipt,\n });\n case \"interrupted\":\n return Object.freeze({\n state: \"errored\" as const,\n reason: \"producer-interrupted\" as const,\n gate: this.gateForUnavailable(entry),\n score: this.incompleteScoreFor(entry, \"evaluation-errored\"),\n ...diagnostic,\n ...receipt,\n });\n }\n }\n private isGate(entry: AssertionEntry): boolean {\n if (entry.gateConfigured)\n return true;\n return this.evaluationKind === \"pass\" && entry.kind === \"boolean\";\n }\n private gateForMatched(entry: AssertionEntry): \"not-gate\" | \"satisfied\" {\n return this.isGate(entry) ? \"satisfied\" : \"not-gate\";\n }\n private gateForMismatched(entry: AssertionEntry): \"not-gate\" | \"failed\" {\n return this.isGate(entry) ? \"failed\" : \"not-gate\";\n }\n private gateForUnavailable(entry: AssertionEntry): \"not-gate\" | \"unavailable\" {\n return this.isGate(entry) ? \"unavailable\" : \"not-gate\";\n }\n private gateForNotApplicable(entry: AssertionEntry): \"not-gate\" | \"not-applicable\" {\n return this.isGate(entry) ? \"not-applicable\" : \"not-gate\";\n }\n private availableScoreFor(entry: AssertionEntry, normalized: number): AvailableScoreContribution {\n const points = entry.scorePoints;\n if (points === undefined)\n return noScore();\n return earnedScore(points, points * normalized);\n }\n private incompleteScoreFor(entry: AssertionEntry, reason: Extract<AssertionScoreContribution, {\n readonly state: \"unavailable\";\n }>[\"reason\"]): IncompleteScoreContribution {\n const points = entry.scorePoints;\n return points === undefined ? noScore() : unavailableScore(points, reason);\n }\n private assertCanRegister(): void {\n if (this.stopped !== undefined) {\n throw new AssertionAuthoringClosedError(\"stop-latched\");\n }\n if (this.sealed !== undefined) {\n throw new AssertionAuthoringClosedError(\"attempt-sealed\");\n }\n if (this.closing) {\n throw new AssertionAuthoringClosedError(\"attempt-sealing\");\n }\n }\n private assertMutable(entry: AssertionEntry, method: string): void {\n this.assertCanRegister();\n if (entry.settled !== undefined || entry.pending !== undefined) {\n throw new Error(`Cannot configure an Assertion after ${method} has begun evaluation`);\n }\n }\n}\nfunction sourceCaptureRuntime(runtime: AssertionsRuntime<\"pass\" | \"score\">): AssertionsRuntimeImplementation | undefined {\n return runtime instanceof AssertionsRuntimeImplementation ? runtime : undefined;\n}\n/** @internal Runner-only source observation hook; it never changes the public runtime value. */\nexport function attachAssertionsRuntimeSourceCapture(runtime: AssertionsRuntime<\"pass\" | \"score\">, capture: () => AssertionRuntimeSourceSite | undefined): void {\n const implementation = sourceCaptureRuntime(runtime);\n if (implementation === undefined) {\n throw new TypeError(\"Assertions source capture requires a NiceEval AssertionsRuntime\");\n }\n if (sourceCaptureByRuntime.has(implementation)) {\n throw new Error(\"Assertions source capture is already attached to this runtime\");\n }\n sourceCaptureByRuntime.set(implementation, {\n capture,\n entries: [],\n byEntry: new WeakMap<AssertionEntry, AssertionRuntimeSourceEntry>(),\n });\n}\n/** @internal Detached immutable journal for the Runner source producer. */\nexport function assertionsRuntimeSourceCaptureSnapshot(runtime: AssertionsRuntime<\"pass\" | \"score\">): AssertionsRuntimeSourceCaptureSnapshot | undefined {\n const implementation = sourceCaptureRuntime(runtime);\n const capture = implementation === undefined ? undefined : sourceCaptureByRuntime.get(implementation);\n if (capture === undefined)\n return undefined;\n return Object.freeze({\n entries: Object.freeze(capture.entries.map((entry) => Object.freeze({\n occurrences: Object.freeze(entry.occurrences.map((occurrence) => Object.freeze({\n role: occurrence.role,\n ...(occurrence.site === undefined ? {} : { site: occurrence.site }),\n ...(occurrence.outcome === undefined ? {} : { outcome: occurrence.outcome }),\n }))),\n }))),\n });\n}\n/** @internal Attempt interruption gives pending real stop calls their terminal disposition. */\nexport function markAssertionsRuntimeSourceCaptureInterrupted(runtime: AssertionsRuntime<\"pass\" | \"score\">): void {\n const implementation = sourceCaptureRuntime(runtime);\n const capture = implementation === undefined ? undefined : sourceCaptureByRuntime.get(implementation);\n if (capture === undefined)\n return;\n for (const entry of capture.entries) {\n for (const occurrence of entry.occurrences) {\n if (occurrence.role === \"stop\" && occurrence.outcome === undefined) {\n occurrence.outcome = \"interrupted\";\n }\n }\n }\n}\n/** Creates one Attempt-local assert-first authoring runtime. */\nexport function createAssertionsRuntime(input: {\n readonly evaluationKind: \"pass\";\n readonly executeStop?: AssertionStopExecutor;\n}): AssertionsRuntime<\"pass\">;\nexport function createAssertionsRuntime(input: {\n readonly evaluationKind: \"score\";\n readonly executeStop?: AssertionStopExecutor;\n}): AssertionsRuntime<\"score\">;\nexport function createAssertionsRuntime(input: {\n readonly evaluationKind: AssertionEvaluationKind;\n readonly executeStop?: AssertionStopExecutor;\n}): AssertionsRuntime<AssertionEvaluationKind> {\n if (input.evaluationKind !== \"pass\" && input.evaluationKind !== \"score\") {\n throw new TypeError(\"Assertions runtime evaluationKind must be \\\"pass\\\" or \\\"score\\\"\");\n }\n const executeStop = input.executeStop ?? (() => Promise.reject(new AssertionAuthoringClosedError(\"runtime-unattached\")));\n const runtime = new AssertionsRuntimeImplementation(input.evaluationKind, executeStop);\n return runtime as AssertionsRuntime<AssertionEvaluationKind>;\n}\n"]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CliReportPlatform = exports.CliTerminal = exports.CliPath = exports.BrowserLauncher = exports.PackageMetadata = exports.ProjectInitializer = exports.CliOutput = exports.CliInvocationFacts = exports.CliInvocationError = exports.CliArguments = void 0;
4
+ /**
5
+ * Platform-neutral CLI application contract. Command parsing, selection and
6
+ * presentation consume these capabilities; Node wiring lives only in the
7
+ * bootstrap adapter.
8
+ */
9
+ const effect_1 = require("effect");
10
+ class CliArguments extends effect_1.Context.Tag("niceeval/cli/CliArguments")() {
11
+ }
12
+ exports.CliArguments = CliArguments;
13
+ class CliInvocationError extends effect_1.Data.TaggedError("CliInvocationError") {
14
+ }
15
+ exports.CliInvocationError = CliInvocationError;
16
+ class CliInvocationFacts extends effect_1.Context.Tag("niceeval/cli/CliInvocationFacts")() {
17
+ }
18
+ exports.CliInvocationFacts = CliInvocationFacts;
19
+ class CliOutput extends effect_1.Context.Tag("niceeval/cli/CliOutput")() {
20
+ }
21
+ exports.CliOutput = CliOutput;
22
+ class ProjectInitializer extends effect_1.Context.Tag("niceeval/cli/ProjectInitializer")() {
23
+ }
24
+ exports.ProjectInitializer = ProjectInitializer;
25
+ class PackageMetadata extends effect_1.Context.Tag("niceeval/cli/PackageMetadata")() {
26
+ }
27
+ exports.PackageMetadata = PackageMetadata;
28
+ class BrowserLauncher extends effect_1.Context.Tag("niceeval/cli/BrowserLauncher")() {
29
+ }
30
+ exports.BrowserLauncher = BrowserLauncher;
31
+ class CliPath extends effect_1.Context.Tag("niceeval/cli/CliPath")() {
32
+ }
33
+ exports.CliPath = CliPath;
34
+ class CliTerminal extends effect_1.Context.Tag("niceeval/cli/CliTerminal")() {
35
+ }
36
+ exports.CliTerminal = CliTerminal;
37
+ class CliReportPlatform extends effect_1.Context.Tag("niceeval/cli/CliReportPlatform")() {
38
+ }
39
+ exports.CliReportPlatform = CliReportPlatform;
40
+ //# sourceMappingURL=application.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["application.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,mCAA+C;AAsC/C,MAAa,YAAa,SAAQ,gBAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAqC;CAC9G;AADD,oCACC;AACD,MAAa,kBAAmB,SAAQ,aAAI,CAAC,WAAW,CAAC,oBAAoB,CAG3E;CACD;AAJD,gDAIC;AAID,MAAa,kBAAmB,SAAQ,gBAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAA4C;CACjI;AADD,gDACC;AAQD,MAAa,SAAU,SAAQ,gBAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAA+B;CAClG;AADD,8BACC;AAMD,MAAa,kBAAmB,SAAQ,gBAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAiD;CACtI;AADD,gDACC;AAID,MAAa,eAAgB,SAAQ,gBAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAA2C;CAC1H;AADD,0CACC;AAID,MAAa,eAAgB,SAAQ,gBAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAA2C;CAC1H;AADD,0CACC;AAKD,MAAa,OAAQ,SAAQ,gBAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAA2B;CAC1F;AADD,0BACC;AAKD,MAAa,WAAY,SAAQ,gBAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAmC;CAC1G;AADD,kCACC;AAiBD,MAAa,iBAAkB,SAAQ,gBAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAA+C;CAClI;AADD,8CACC","sourcesContent":["/**\n * Platform-neutral CLI application contract. Command parsing, selection and\n * presentation consume these capabilities; Node wiring lives only in the\n * bootstrap adapter.\n */\nimport { Context, Data, Effect } from \"effect\";\nimport type { Config } from \"../runner/types.ts\";\nimport type { FeedbackIO } from \"../runner/feedback/io.ts\";\nimport type { InputGuardStdin } from \"../runner/feedback/input-guard.ts\";\nimport type { ReportDefinition } from \"../report/definition/report.ts\";\nimport type { ThemeDefinition } from \"../report/theme.ts\";\nimport type { ConfigModuleLoadError, ProjectCredentialsFailure } from \"./project-configuration.ts\";\nexport interface CliInvocation {\n readonly cwd: string;\n readonly argv: readonly string[];\n readonly hostname: string;\n readonly noColor?: string;\n readonly platform: \"darwin\" | \"win32\" | \"linux\" | string;\n readonly stdout: {\n readonly isTTY: boolean;\n readonly columns?: number;\n };\n readonly stderr: {\n readonly isTTY: boolean;\n readonly columns?: number;\n };\n}\nexport type CliOptionDefinition = Readonly<{\n type: \"string\" | \"boolean\";\n multiple?: true;\n short?: string;\n}>;\nexport interface CliParsedTokens {\n readonly values: Record<string, string | boolean | string[] | undefined>;\n readonly positionals: string[];\n readonly tokens: readonly {\n readonly kind: string;\n readonly name?: string;\n }[];\n}\nexport interface CliArgumentsService {\n readonly parse: (argv: readonly string[], options: Readonly<Record<string, CliOptionDefinition>>) => CliParsedTokens;\n}\nexport class CliArguments extends Context.Tag(\"niceeval/cli/CliArguments\")<CliArguments, CliArgumentsService>() {\n}\nexport class CliInvocationError extends Data.TaggedError(\"CliInvocationError\")<{\n readonly operation: string;\n readonly cause: unknown;\n}> {\n}\nexport interface CliInvocationService {\n readonly facts: Effect.Effect<CliInvocation, CliInvocationError>;\n}\nexport class CliInvocationFacts extends Context.Tag(\"niceeval/cli/CliInvocationFacts\")<CliInvocationFacts, CliInvocationService>() {\n}\nexport interface CliOutputService {\n readonly writeStdout: (text: string) => Effect.Effect<void, CliInvocationError>;\n readonly writeStderr: (text: string) => Effect.Effect<void, CliInvocationError>;\n /** Callback bridge for Host observer contracts that cannot return Effect. */\n readonly writeStdoutSync: (text: string) => void;\n readonly writeStderrSync: (text: string) => void;\n}\nexport class CliOutput extends Context.Tag(\"niceeval/cli/CliOutput\")<CliOutput, CliOutputService>() {\n}\nexport interface ProjectInitializerService {\n readonly initialize: (cwd: string) => Effect.Effect<{\n readonly prefersEsm: boolean;\n }, CliInvocationError>;\n}\nexport class ProjectInitializer extends Context.Tag(\"niceeval/cli/ProjectInitializer\")<ProjectInitializer, ProjectInitializerService>() {\n}\nexport interface PackageMetadataService {\n readonly version: Effect.Effect<string, CliInvocationError>;\n}\nexport class PackageMetadata extends Context.Tag(\"niceeval/cli/PackageMetadata\")<PackageMetadata, PackageMetadataService>() {\n}\nexport interface BrowserLauncherService {\n readonly open: (url: string) => Effect.Effect<boolean, CliInvocationError>;\n}\nexport class BrowserLauncher extends Context.Tag(\"niceeval/cli/BrowserLauncher\")<BrowserLauncher, BrowserLauncherService>() {\n}\nexport interface CliPathService {\n readonly resolve: (...parts: readonly string[]) => string;\n readonly isAbsolute: (path: string) => boolean;\n}\nexport class CliPath extends Context.Tag(\"niceeval/cli/CliPath\")<CliPath, CliPathService>() {\n}\nexport interface CliTerminalService {\n readonly feedback: FeedbackIO;\n readonly stdin: InputGuardStdin;\n}\nexport class CliTerminal extends Context.Tag(\"niceeval/cli/CliTerminal\")<CliTerminal, CliTerminalService>() {\n}\nexport interface CliReportPlatformService {\n readonly loadConfig: (cwd: string) => Effect.Effect<{\n readonly report?: ReportDefinition;\n readonly theme?: ThemeDefinition;\n readonly watchInputs: readonly string[];\n }, CliInvocationError>;\n readonly loadReport: (path: string) => Effect.Effect<{\n readonly report: ReportDefinition;\n readonly watchInputs: readonly string[];\n }, CliInvocationError>;\n readonly loadTheme: (path: string) => Effect.Effect<{\n readonly theme: ThemeDefinition;\n readonly watchInputs: readonly string[];\n }, CliInvocationError>;\n readonly resolveModulePath: (cwd: string, value: string) => string;\n}\nexport class CliReportPlatform extends Context.Tag(\"niceeval/cli/CliReportPlatform\")<CliReportPlatform, CliReportPlatformService>() {\n}\n/** A narrow application facade; config always follows credential preparation. */\nexport interface ProjectConfigurationFacade {\n readonly load: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;\n readonly rebuild: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;\n}\n"]}