@iowarp/clio-coder 0.3.8 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/NOTICE +33 -0
  3. package/README.md +12 -3
  4. package/dist/{acp-U67UHUK2.js → acp-G5WJBNCT.js} +13 -12
  5. package/dist/{agents-YU6SGALZ.js → agents-FMV2Q5G4.js} +41 -36
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-5ZPJOIVG.js → auth-3IDSJEIK.js} +18 -18
  8. package/dist/{builtins-C6JMZVV6.js → builtins-XCZWXSC7.js} +5 -5
  9. package/dist/{chunk-IFBNV6H6.js → chunk-2ANTL7MR.js} +3 -3
  10. package/dist/{chunk-5FR74PWO.js → chunk-2JDWVJND.js} +2 -2
  11. package/dist/{chunk-XWSF374K.js → chunk-2OQE55CK.js} +3 -3
  12. package/dist/{chunk-5H3GB5BO.js → chunk-32KWKNSF.js} +8 -384
  13. package/dist/{chunk-KTYTFRMB.js → chunk-36EJLSQQ.js} +34 -36
  14. package/dist/{chunk-FHJEP5SW.js → chunk-3BT2XMV4.js} +19 -13
  15. package/dist/chunk-3DPEIQKN.js +113 -0
  16. package/dist/{chunk-GU2UIAFZ.js → chunk-3URVFKWK.js} +7 -7
  17. package/dist/{chunk-WEH5XRJQ.js → chunk-3XML7CDN.js} +3 -3
  18. package/dist/chunk-42FMPA75.js +101 -0
  19. package/dist/{chunk-A2NJGIB3.js → chunk-5LXZXPKX.js} +2 -2
  20. package/dist/{chunk-VCBR6CU7.js → chunk-5PSMVOLM.js} +2 -2
  21. package/dist/{chunk-NMPKI6XL.js → chunk-6DB53AJS.js} +203 -25
  22. package/dist/{chunk-3BINW3FP.js → chunk-76ONBSIA.js} +2 -2
  23. package/dist/{chunk-26LEYJZH.js → chunk-7MCTRUCE.js} +2 -2
  24. package/dist/{chunk-TYPGUK6W.js → chunk-AB44T6BB.js} +111 -5
  25. package/dist/{chunk-K4XHGFR5.js → chunk-B7OBL7PK.js} +317 -721
  26. package/dist/{chunk-B5CSFE7B.js → chunk-BBVJUZHB.js} +2 -2
  27. package/dist/{chunk-EQ63NRB7.js → chunk-BBVYXMFO.js} +2 -2
  28. package/dist/{chunk-ZVJ5BLO2.js → chunk-BKFJHQCA.js} +154 -16
  29. package/dist/chunk-BKFM6EJV.js +462 -0
  30. package/dist/chunk-BMS5RKQY.js +27 -0
  31. package/dist/{chunk-ZNLWCMVZ.js → chunk-BPKCPIL7.js} +2 -2
  32. package/dist/{chunk-TLQJPP24.js → chunk-BUMFYQFY.js} +1394 -1349
  33. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  34. package/dist/chunk-C2LTL2W6.js +2447 -0
  35. package/dist/{chunk-ME6CCNFO.js → chunk-CODPRO7Q.js} +8 -8
  36. package/dist/{chunk-E77JEWSD.js → chunk-CTJ4RNAA.js} +7 -37
  37. package/dist/{chunk-ODFEOB4F.js → chunk-CY6FY24N.js} +26 -8
  38. package/dist/{chunk-7RFXX52T.js → chunk-DQITNCXG.js} +642 -172
  39. package/dist/{chunk-TTHACPOM.js → chunk-DYJP44XW.js} +578 -117
  40. package/dist/{chunk-2HFZQUHL.js → chunk-F4CKPOEQ.js} +18 -8
  41. package/dist/{chunk-DGSYXYMX.js → chunk-FEFIFZTL.js} +3 -3
  42. package/dist/{chunk-GWS3VEIW.js → chunk-FWDFM5ZU.js} +24 -3
  43. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  44. package/dist/chunk-GKF55TAZ.js +391 -0
  45. package/dist/{chunk-VWZOAB7K.js → chunk-GR5G2PVF.js} +9 -8
  46. package/dist/{chunk-4DGYLA73.js → chunk-GXNLGKAB.js} +80 -9
  47. package/dist/chunk-HHV2GANA.js +88 -0
  48. package/dist/{chunk-IIZWH4XA.js → chunk-HI63TFOG.js} +5 -4
  49. package/dist/{chunk-WLFILSD5.js → chunk-HJJTYUHX.js} +113 -83
  50. package/dist/{chunk-TT36MB5S.js → chunk-HLW2MRKE.js} +3 -1
  51. package/dist/{chunk-PMDBGQSJ.js → chunk-HWHKMHUA.js} +7 -7
  52. package/dist/chunk-HZHHCK24.js +1631 -0
  53. package/dist/{chunk-WSB3FPX7.js → chunk-I5VEOC6I.js} +39 -143
  54. package/dist/chunk-IBEBSCYA.js +564 -0
  55. package/dist/chunk-IQ7KR472.js +362 -0
  56. package/dist/{chunk-A3WNZD3P.js → chunk-J4W7KFM7.js} +949 -972
  57. package/dist/{chunk-TB5666IT.js → chunk-JDG2WCRO.js} +5 -5
  58. package/dist/{chunk-N22QMJKY.js → chunk-K5C3NCBD.js} +4 -4
  59. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  60. package/dist/{chunk-5C3AQNDW.js → chunk-KFZI4NIL.js} +216 -38
  61. package/dist/chunk-KMVISBZR.js +132 -0
  62. package/dist/{chunk-WXY7KU3G.js → chunk-LDQ2ZF2M.js} +2 -2
  63. package/dist/{chunk-XN3L4EYL.js → chunk-LQ3DZAMX.js} +3 -3
  64. package/dist/{chunk-U6MBIEMB.js → chunk-LY4S7GJC.js} +173 -144
  65. package/dist/{chunk-4SPRNWDE.js → chunk-MLKNTWH2.js} +19 -19
  66. package/dist/{chunk-MVVUPGPW.js → chunk-MXHC5QYU.js} +6 -6
  67. package/dist/chunk-NEKRRTYW.js +56 -0
  68. package/dist/{chunk-SPULKLCF.js → chunk-NHCZP4K7.js} +3 -3
  69. package/dist/chunk-NHLBIGRH.js +1506 -0
  70. package/dist/chunk-NQQH3YT7.js +302 -0
  71. package/dist/chunk-NYS75XW5.js +15 -0
  72. package/dist/{chunk-GN57SG4G.js → chunk-O4XIVISU.js} +10 -8
  73. package/dist/{chunk-EMYUUSFG.js → chunk-O6TL7WWY.js} +6 -6
  74. package/dist/chunk-OQBA45DZ.js +97 -0
  75. package/dist/{chunk-LU7P4LHA.js → chunk-P3FOHJT4.js} +2 -2
  76. package/dist/chunk-PMZCIOCJ.js +25 -0
  77. package/dist/{chunk-I4HZDVNP.js → chunk-PQEFIJ36.js} +2 -2
  78. package/dist/{chunk-J3YUBZWY.js → chunk-QBJA7R7N.js} +62 -6
  79. package/dist/chunk-QDC3K2U3.js +262 -0
  80. package/dist/{chunk-2HEJ2F35.js → chunk-QLFS5GO2.js} +22 -10
  81. package/dist/{chunk-7RGZWPB6.js → chunk-QLL7ILRG.js} +95 -32
  82. package/dist/{chunk-YS5VLNH5.js → chunk-QREDIESB.js} +6 -6
  83. package/dist/chunk-QSNYB6ZV.js +195 -0
  84. package/dist/{chunk-GOXNB3AO.js → chunk-RAPCMZL4.js} +75 -4
  85. package/dist/chunk-RKKLTLYB.js +45 -0
  86. package/dist/{chunk-P43ETTHK.js → chunk-SJ5ZKQ4S.js} +2 -2
  87. package/dist/{chunk-GPIEI3LY.js → chunk-SP2RXXYO.js} +6 -54
  88. package/dist/chunk-SUCTJL45.js +45 -0
  89. package/dist/{chunk-DYIM5TJT.js → chunk-SUW5DORT.js} +263 -7
  90. package/dist/chunk-T56WDKA5.js +183 -0
  91. package/dist/chunk-TVHHYFHE.js +255 -0
  92. package/dist/{chunk-FJ3H4MN5.js → chunk-TZ3SGWZZ.js} +3 -3
  93. package/dist/{chunk-MXKJU4JB.js → chunk-U77AMWDL.js} +91 -10
  94. package/dist/{chunk-5DHKRSMQ.js → chunk-ULC6OTWO.js} +11 -7
  95. package/dist/{chunk-RWSI4YD7.js → chunk-UM7N4G5A.js} +33 -12
  96. package/dist/{chunk-FCSXB6T2.js → chunk-UOSL25KY.js} +14 -2
  97. package/dist/{chunk-IGWKHNIQ.js → chunk-UXMFQ54G.js} +44 -37
  98. package/dist/{chunk-HFSBBKSQ.js → chunk-V5DHCITQ.js} +171 -3
  99. package/dist/{chunk-5WIGXA4T.js → chunk-VAZSBTKF.js} +111 -4
  100. package/dist/{chunk-VHN4MY6O.js → chunk-VEO4AP2K.js} +2 -2
  101. package/dist/{chunk-IJ7RPIYJ.js → chunk-VFA6GDY5.js} +65 -4
  102. package/dist/{chunk-PT7HYKEM.js → chunk-VO2LKSTM.js} +2 -2
  103. package/dist/chunk-VO67MWHC.js +75 -0
  104. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  105. package/dist/{chunk-TANS5ZJS.js → chunk-VYMXRQI6.js} +36 -22
  106. package/dist/{chunk-WWCZ5F23.js → chunk-W5VSYASO.js} +77 -16
  107. package/dist/{chunk-WNIJTQQK.js → chunk-WZR7K7ZX.js} +72 -116
  108. package/dist/{chunk-5Q2VVUKB.js → chunk-X3YGUTOB.js} +4 -4
  109. package/dist/chunk-X75E3D2N.js +686 -0
  110. package/dist/{chunk-VAWNZU7Z.js → chunk-YDFRH54B.js} +4 -4
  111. package/dist/chunk-YJX4SHTD.js +40 -0
  112. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  113. package/dist/chunk-Z2RR6MAK.js +127 -0
  114. package/dist/{chunk-FBVTI2TJ.js → chunk-Z4TXYIEG.js} +12 -131
  115. package/dist/cli/index.js +47 -36
  116. package/dist/{clio-QVTYJ57A.js → clio-2JXHBBY5.js} +7 -7
  117. package/dist/{code-nav-FGGFIE7L.js → code-nav-3YYRMYNF.js} +8 -8
  118. package/dist/{compile-cache-CVJMMODC.js → compile-cache-7FPE6PS3.js} +3 -3
  119. package/dist/{components-ZFA3SAER.js → components-RYZV4JGP.js} +5 -5
  120. package/dist/{config-LW5IJFQN.js → config-QZPCMYSO.js} +99 -63
  121. package/dist/{configure-7XIZCOU4.js → configure-TEGEBYCA.js} +23 -22
  122. package/dist/{context-Y6Y7QPR6.js → context-AV7OEZ4D.js} +12 -12
  123. package/dist/{context-L3WL3X7K.js → context-E6H5RNMC.js} +56 -47
  124. package/dist/{context-N52ZA626.js → context-GSXUE4CT.js} +29 -27
  125. package/dist/{context-clear-MBQRLSDQ.js → context-clear-SHIBYK6T.js} +55 -46
  126. package/dist/{context-index-HVMFQHK3.js → context-index-HNG3MOME.js} +2 -2
  127. package/dist/{context-working-set-GS6DSO7F.js → context-working-set-5ZGKPGZQ.js} +13 -13
  128. package/dist/{dispatch-runner-22ZCNOM3.js → dispatch-runner-EFMJT4LD.js} +93 -64
  129. package/dist/{docs-7LQ23DLM.js → docs-23KQS3XK.js} +5 -5
  130. package/dist/doctor-QOA5FNY5.js +313 -0
  131. package/dist/{eval-BEC2WHDA.js → eval-TFBYQH4H.js} +2032 -156
  132. package/dist/eval-inventory-SXH7PDKX.js +316 -0
  133. package/dist/{evidence-REJUMSKM.js → evidence-ERGESKGN.js} +203 -48
  134. package/dist/{evolve-PY5ZBA5K.js → evolve-VDXTSYCJ.js} +52 -43
  135. package/dist/{extensions-HVKU65YU.js → extensions-7BGBHN57.js} +13 -7
  136. package/dist/{fleet-7WZEWRFA.js → fleet-2RRVDF2V.js} +228 -108
  137. package/dist/{fleet-commands-UVHWM76J.js → fleet-commands-VJ726XIA.js} +11 -11
  138. package/dist/fleet-decisions-EPAPM3XJ.js +157 -0
  139. package/dist/{fleet-graph-6ULH7PES.js → fleet-graph-JF5QOATM.js} +18 -15
  140. package/dist/fleet-inspect-VLY4S7QM.js +442 -0
  141. package/dist/{fleet-preflight-J53T6CCE.js → fleet-preflight-AIZUEJOY.js} +5 -5
  142. package/dist/{fleet-validate-72PC4SLA.js → fleet-validate-AJRPDMDV.js} +22 -19
  143. package/dist/fleet-verify-JFEL2L3H.js +175 -0
  144. package/dist/fleet-view-ZCON35AG.js +102 -0
  145. package/dist/{init-OG3TPGQG.js → init-DN2WWLFE.js} +72 -62
  146. package/dist/install-XGLBQY5E.js +13 -0
  147. package/dist/interop-OZBKXAYL.js +114 -0
  148. package/dist/{library-CNTMPLRF.js → library-YWZG7IMW.js} +21 -18
  149. package/dist/{memory-6IS7F275.js → memory-I4C4HMLW.js} +54 -45
  150. package/dist/{models-ENRJDA5W.js → models-CEYXJBO6.js} +33 -30
  151. package/dist/{monitor-XLDVO7TN.js → monitor-NZ6GCI3P.js} +59 -52
  152. package/dist/{orchestrator-6KSPYRHA.js → orchestrator-GCGQ4N5I.js} +7827 -7328
  153. package/dist/panes-HMABYVO4.js +58 -0
  154. package/dist/panes-KY6W3V2E.js +103 -0
  155. package/dist/{paths-DBXMZMDU.js → paths-II4K7DNR.js} +5 -5
  156. package/dist/{reset-RZ4ER727.js → reset-DQ6FGCSH.js} +13 -11
  157. package/dist/resources-BB3MVJMD.js +111 -0
  158. package/dist/{run-Y2CNK5RU.js → run-H2GQDUER.js} +119 -87
  159. package/dist/{share-A55GYP6Z.js → share-GTJN6A5O.js} +20 -17
  160. package/dist/{skills-ALC5J6AT.js → skills-L55TEW6R.js} +33 -24
  161. package/dist/{skills-eval-JPBEBYQU.js → skills-eval-XVXPH2JI.js} +67 -56
  162. package/dist/skills-inventory-S4MXPJFV.js +126 -0
  163. package/dist/slash-commands-ZSGASKJC.js +77 -0
  164. package/dist/{steer-GGWFUJUD.js → steer-RZGSCY4R.js} +4 -4
  165. package/dist/{support-MIETYA5E.js → support-PKEUNNQL.js} +6 -6
  166. package/dist/{targets-VGNXIR3S.js → targets-NCPZ644J.js} +68 -40
  167. package/dist/{terminal-lease-WOBR64YA.js → terminal-lease-44SV3YCN.js} +6 -4
  168. package/dist/tools-DAF3DI3C.js +27 -0
  169. package/dist/{trace-PNCASAXC.js → trace-FYVW2MQA.js} +207 -10
  170. package/dist/tui-primitives-2AKXQNZK.js +13 -0
  171. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-DW2PNOIC.js} +5 -5
  172. package/dist/{upgrade-FUSUAGHR.js → upgrade-3XPP6OQL.js} +27 -24
  173. package/dist/{usage-N4MKVHKD.js → usage-3NLHGTU2.js} +114 -62
  174. package/dist/{verifiers-YAWOJ3H2.js → verifiers-SSQONKRT.js} +172 -13
  175. package/dist/{verify-LTDHYBGY.js → verify-3U6J7FZI.js} +10 -10
  176. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-S7RR6GZ7.js} +3 -3
  177. package/dist/{wiki-generate-6M7GHTBJ.js → wiki-generate-CEHYGPGQ.js} +75 -65
  178. package/dist/with-panes-MKB46MPQ.js +782 -0
  179. package/dist/worker/entry.js +106 -75
  180. package/docs/README.md +3 -2
  181. package/docs/acp.md +24 -3
  182. package/docs/alcf-provider.md +1 -1
  183. package/docs/architecture.md +2 -2
  184. package/docs/artifact-versions.md +9 -1
  185. package/docs/built-in-agents.md +1 -1
  186. package/docs/capacity-and-scheduling.md +62 -3
  187. package/docs/commands-and-modes.md +31 -2
  188. package/docs/configuration-and-targets.md +69 -12
  189. package/docs/context-engine.md +63 -4
  190. package/docs/development-pipeline.md +19 -0
  191. package/docs/dispatch-typed-intent.md +385 -0
  192. package/docs/documentation-coverage.md +5 -5
  193. package/docs/documentation-guide.md +1 -1
  194. package/docs/environment-variables.md +3 -0
  195. package/docs/eval-runner.md +262 -11
  196. package/docs/evals-internal.md +72 -2
  197. package/docs/evidence-and-memory.md +12 -11
  198. package/docs/evolution.md +1 -1
  199. package/docs/exit-codes-and-output.md +1 -1
  200. package/docs/extensions-and-sharing.md +27 -1
  201. package/docs/fleet-dispatch.md +25 -4
  202. package/docs/installation-and-lifecycle.md +15 -2
  203. package/docs/middleware-and-components.md +1 -1
  204. package/docs/model-catalog.md +10 -1
  205. package/docs/observability.md +55 -4
  206. package/docs/proactive-memory.md +127 -14
  207. package/docs/prompt-envelope-and-tools.md +19 -1
  208. package/docs/provider-adapter-cookbook.md +1 -1
  209. package/docs/release-cut-checklist.md +19 -3
  210. package/docs/safety-model.md +2 -2
  211. package/docs/scientific-validation.md +3 -3
  212. package/docs/session-lifecycle.md +1 -1
  213. package/docs/skills-marketplace.md +1 -1
  214. package/docs/tool-usage.md +18 -8
  215. package/docs/trace-store.md +1 -1
  216. package/docs/troubleshooting.md +88 -1
  217. package/docs/tui-design.md +1 -1
  218. package/docs/worker-dispatch-mechanics.md +1 -1
  219. package/package.json +5 -2
  220. package/src/cli/acp.ts +6 -2
  221. package/src/cli/agents.ts +1 -1
  222. package/src/cli/argv.ts +25 -0
  223. package/src/cli/config-inspect.ts +33 -6
  224. package/src/cli/config.ts +1 -1
  225. package/src/cli/configure.ts +23 -21
  226. package/src/cli/doctor-panes.ts +124 -0
  227. package/src/cli/doctor-state-size.ts +82 -0
  228. package/src/cli/doctor-toolchain.ts +57 -0
  229. package/src/cli/doctor.ts +22 -1
  230. package/src/cli/eval-inventory.ts +436 -0
  231. package/src/cli/eval.ts +93 -16
  232. package/src/cli/evidence-detail.ts +88 -0
  233. package/src/cli/evidence-inventory.ts +183 -0
  234. package/src/cli/evidence.ts +30 -5
  235. package/src/cli/extensions.ts +5 -1
  236. package/src/cli/fleet-decisions.ts +69 -0
  237. package/src/cli/fleet-inspect.ts +334 -0
  238. package/src/cli/fleet-verify.ts +133 -0
  239. package/src/cli/fleet-view.ts +810 -0
  240. package/src/cli/fleet.ts +179 -39
  241. package/src/cli/index.ts +14 -2
  242. package/src/cli/interop-inspect.ts +128 -0
  243. package/src/cli/interop.ts +34 -0
  244. package/src/cli/panes.ts +35 -0
  245. package/src/cli/reset.ts +5 -2
  246. package/src/cli/run.ts +58 -0
  247. package/src/cli/skills-inventory.ts +185 -0
  248. package/src/cli/skills.ts +16 -13
  249. package/src/cli/targets.ts +44 -13
  250. package/src/cli/tools.ts +321 -0
  251. package/src/cli/trace-inspect.ts +252 -0
  252. package/src/cli/trace.ts +85 -5
  253. package/src/cli/usage.ts +63 -14
  254. package/src/cli/verifiers-inspect.ts +347 -0
  255. package/src/cli/verifiers.ts +9 -0
  256. package/src/core/bus-events.ts +33 -1
  257. package/src/core/cache-telemetry.ts +42 -0
  258. package/src/core/config.ts +67 -0
  259. package/src/core/defaults.ts +124 -8
  260. package/src/core/endpoint-key.ts +27 -0
  261. package/src/core/residency-target-key.ts +25 -0
  262. package/src/core/response-schema.ts +80 -6
  263. package/src/core/theme-token-hex.ts +43 -0
  264. package/src/core/tool-names.ts +2 -1
  265. package/src/core/xdg.ts +1 -1
  266. package/src/domains/agents/fleets/build-review.md +0 -3
  267. package/src/domains/agents/fleets/build-test.md +0 -3
  268. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  269. package/src/domains/agents/result-contract.ts +164 -35
  270. package/src/domains/config/classify.ts +6 -0
  271. package/src/domains/context/codewiki/coordinator.ts +12 -4
  272. package/src/domains/dispatch/admission-error.ts +9 -0
  273. package/src/domains/dispatch/admission.ts +52 -14
  274. package/src/domains/dispatch/capacity-lease.ts +118 -9
  275. package/src/domains/dispatch/contract.ts +11 -0
  276. package/src/domains/dispatch/council-topology.ts +398 -0
  277. package/src/domains/dispatch/execution-plan.ts +44 -4
  278. package/src/domains/dispatch/extension.ts +378 -82
  279. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  280. package/src/domains/dispatch/fleet-plan.ts +7 -2
  281. package/src/domains/dispatch/fleet-run.ts +87 -4
  282. package/src/domains/dispatch/gate-decisions.ts +11 -1
  283. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  284. package/src/domains/dispatch/gate-topology.ts +289 -0
  285. package/src/domains/dispatch/heartbeat.ts +32 -8
  286. package/src/domains/dispatch/index.ts +22 -0
  287. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  288. package/src/domains/dispatch/intent.ts +85 -1
  289. package/src/domains/dispatch/orphan-recovery.ts +5 -0
  290. package/src/domains/dispatch/reservation-store.ts +139 -11
  291. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  292. package/src/domains/dispatch/run-event-journal.ts +598 -0
  293. package/src/domains/dispatch/state.ts +49 -1
  294. package/src/domains/dispatch/types.ts +13 -0
  295. package/src/domains/dispatch/validation.ts +33 -8
  296. package/src/domains/dispatch/worker-spawn.ts +25 -11
  297. package/src/domains/dispatch/write-boundary-enforcer.ts +20 -3
  298. package/src/domains/dispatch/write-boundary.ts +62 -1
  299. package/src/domains/eval/artifacts/store.ts +62 -0
  300. package/src/domains/eval/compare/behavioral.ts +224 -0
  301. package/src/domains/eval/compare/compare.ts +342 -2
  302. package/src/domains/eval/compare/envelope.ts +128 -0
  303. package/src/domains/eval/compare/gates.ts +24 -6
  304. package/src/domains/eval/compare/thresholds.ts +30 -3
  305. package/src/domains/eval/execution-provenance.ts +240 -0
  306. package/src/domains/eval/inventory.ts +113 -0
  307. package/src/domains/eval/metrics/aggregate.ts +136 -0
  308. package/src/domains/eval/metrics/call-ledger-stream.ts +112 -0
  309. package/src/domains/eval/metrics/tracked.ts +413 -0
  310. package/src/domains/eval/provenance.ts +117 -0
  311. package/src/domains/eval/reports/comparison.ts +128 -0
  312. package/src/domains/eval/reports/junit.ts +17 -3
  313. package/src/domains/eval/reports/markdown.ts +3 -3
  314. package/src/domains/eval/reports/text.ts +14 -0
  315. package/src/domains/eval/run-compare.ts +20 -0
  316. package/src/domains/eval/runners/clio-run.ts +127 -0
  317. package/src/domains/eval/runners/external-command.ts +28 -3
  318. package/src/domains/eval/schema/adapter.ts +111 -0
  319. package/src/domains/eval/schema/artifact.ts +20 -0
  320. package/src/domains/eval/schema/behavioral-metrics.ts +204 -0
  321. package/src/domains/eval/schema/behavioral.ts +520 -0
  322. package/src/domains/eval/schema/execution-envelope.ts +194 -0
  323. package/src/domains/eval/schema/serving.ts +105 -0
  324. package/src/domains/eval/schema/suite.ts +38 -8
  325. package/src/domains/eval/schema/validate.ts +58 -3
  326. package/src/domains/eval/schema/verdict.ts +237 -0
  327. package/src/domains/eval/suites/resolve.ts +2 -0
  328. package/src/domains/eval/suites/run.ts +264 -33
  329. package/src/domains/eval/verifiers/command.ts +2 -1
  330. package/src/domains/eval/workspaces/temp-copy.ts +145 -13
  331. package/src/domains/evidence/build.ts +2 -13
  332. package/src/domains/evidence/eval.ts +2 -12
  333. package/src/domains/evidence/findings-markdown.ts +33 -0
  334. package/src/domains/evidence/run-trust.ts +7 -113
  335. package/src/domains/evidence/store.ts +6 -0
  336. package/src/domains/evidence/trust-projection.ts +2 -2
  337. package/src/domains/extensions/compatibility.ts +285 -0
  338. package/src/domains/extensions/discovery.ts +38 -3
  339. package/src/domains/extensions/resources.ts +1 -1
  340. package/src/domains/extensions/state.ts +12 -3
  341. package/src/domains/extensions/types.ts +2 -0
  342. package/src/domains/lifecycle/doctor.ts +69 -1
  343. package/src/domains/memory/index.ts +14 -1
  344. package/src/domains/memory/task-bank-promotion.ts +64 -0
  345. package/src/domains/memory/task-memory-policy.ts +82 -17
  346. package/src/domains/memory/task-memory-spend.ts +131 -0
  347. package/src/domains/memory/task-memory-status.ts +7 -0
  348. package/src/domains/memory/task-memory-telemetry.ts +3 -0
  349. package/src/domains/middleware/index.ts +1 -0
  350. package/src/domains/middleware/memory-intervention.ts +97 -21
  351. package/src/domains/middleware/memory-step-endpoint.ts +71 -0
  352. package/src/domains/mux/contract.ts +434 -0
  353. package/src/domains/mux/detect.ts +158 -0
  354. package/src/domains/mux/extension.ts +47 -0
  355. package/src/domains/mux/index.ts +96 -0
  356. package/src/domains/mux/manifest.ts +6 -0
  357. package/src/domains/mux/operations.ts +164 -0
  358. package/src/domains/mux/pane-registry.ts +90 -0
  359. package/src/domains/mux/protocol.ts +49 -0
  360. package/src/domains/mux/socket-client.ts +816 -0
  361. package/src/domains/mux/types.ts +222 -0
  362. package/src/domains/mux/viewer-command.ts +59 -0
  363. package/src/domains/mux/yazi/assets/init.lua +2 -0
  364. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  365. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  366. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  367. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  368. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  369. package/src/domains/mux/yazi/event-stream.ts +180 -0
  370. package/src/domains/mux/yazi/profile.ts +299 -0
  371. package/src/domains/mux/yazi/session.ts +228 -0
  372. package/src/domains/mux/yazi/theme.ts +30 -0
  373. package/src/domains/observability/background-memory-usage.ts +140 -0
  374. package/src/domains/observability/cost.ts +22 -1
  375. package/src/domains/observability/index.ts +9 -0
  376. package/src/domains/observability/out-of-turn-usage.ts +51 -2
  377. package/src/domains/observability/trace-store.ts +234 -2
  378. package/src/domains/prompts/compiler.ts +100 -13
  379. package/src/domains/providers/endpoint-capacity.ts +228 -0
  380. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  381. package/src/domains/providers/extension.ts +20 -3
  382. package/src/domains/providers/index.ts +32 -0
  383. package/src/domains/providers/model-runtime-capabilities.ts +32 -0
  384. package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +243 -1
  385. package/src/domains/providers/runtime-resolution.ts +8 -1
  386. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  387. package/src/domains/providers/runtimes/builtins.ts +2 -0
  388. package/src/domains/providers/runtimes/common/probe-helpers.ts +31 -9
  389. package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +1 -1
  390. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  391. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +1 -1
  392. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +1 -1
  393. package/src/domains/providers/runtimes/local-native/llamacpp.ts +4 -1
  394. package/src/domains/providers/runtimes/local-native/lmstudio.ts +4 -1
  395. package/src/domains/providers/runtimes/local-native/ollama-native.ts +6 -1
  396. package/src/domains/providers/runtimes/protocol/litellm.ts +375 -0
  397. package/src/domains/providers/support.ts +1 -0
  398. package/src/domains/providers/target-model-cache.ts +124 -0
  399. package/src/domains/providers/types/capability-flags.ts +2 -0
  400. package/src/domains/providers/types/target-descriptor.ts +2 -0
  401. package/src/domains/resources/index.ts +3 -0
  402. package/src/domains/resources/prompts/loader.ts +95 -33
  403. package/src/domains/resources/skills/loader.ts +33 -0
  404. package/src/domains/safety/action-classifier.ts +6 -0
  405. package/src/domains/safety/call-target.ts +52 -0
  406. package/src/domains/safety/run-effects.ts +35 -4
  407. package/src/domains/session/context-accounting.ts +52 -1
  408. package/src/domains/session/context-ledger.ts +37 -13
  409. package/src/domains/session/index.ts +6 -0
  410. package/src/domains/session/prompt-cache.ts +140 -0
  411. package/src/domains/session/prompt-manifest.ts +42 -0
  412. package/src/domains/toolchain/archive.ts +175 -0
  413. package/src/domains/toolchain/contract.ts +28 -0
  414. package/src/domains/toolchain/extension.ts +47 -0
  415. package/src/domains/toolchain/index.ts +39 -0
  416. package/src/domains/toolchain/install.ts +327 -0
  417. package/src/domains/toolchain/manifest.ts +8 -0
  418. package/src/domains/toolchain/paths.ts +34 -0
  419. package/src/domains/toolchain/registry.ts +265 -0
  420. package/src/domains/toolchain/remove.ts +218 -0
  421. package/src/domains/toolchain/resolve.ts +182 -0
  422. package/src/domains/toolchain/types.ts +113 -0
  423. package/src/domains/toolchain/version.ts +88 -0
  424. package/src/engine/acp/adapter.ts +18 -3
  425. package/src/engine/acp/server.ts +413 -70
  426. package/src/engine/acp/types.ts +19 -1
  427. package/src/engine/ai.ts +35 -0
  428. package/src/engine/apis/llamacpp-residency.ts +55 -3
  429. package/src/engine/apis/lmstudio.ts +25 -5
  430. package/src/engine/apis/ollama-native.ts +2 -1
  431. package/src/engine/apis/openai-completions.ts +80 -17
  432. package/src/engine/apis/residency-lock.ts +3 -1
  433. package/src/engine/apis/residency.ts +34 -1
  434. package/src/engine/claude/sdk-module.ts +98 -0
  435. package/src/engine/claude/sdk-runtime.ts +19 -11
  436. package/src/engine/provider-payload.ts +29 -1
  437. package/src/engine/tui-primitives.ts +21 -0
  438. package/src/engine/tui.ts +1 -0
  439. package/src/engine/worker-runtime.ts +2 -13
  440. package/src/entry/boot-options.ts +2 -0
  441. package/src/entry/orchestrator.ts +279 -35
  442. package/src/entry/panes-activation.ts +31 -0
  443. package/src/entry/with-panes.ts +20 -0
  444. package/src/interactive/chat-loop-messages.ts +26 -7
  445. package/src/interactive/chat-loop.ts +318 -41
  446. package/src/interactive/chat-panel.ts +62 -8
  447. package/src/interactive/clio-editor.ts +45 -8
  448. package/src/interactive/context-activity.ts +5 -1
  449. package/src/interactive/context-meter.ts +1 -1
  450. package/src/interactive/context-overlay.ts +41 -10
  451. package/src/interactive/cost-overlay.ts +66 -6
  452. package/src/interactive/council-grid.ts +1 -3
  453. package/src/interactive/council.ts +11 -0
  454. package/src/interactive/dispatch-board.ts +102 -20
  455. package/src/interactive/fleet-run-preview.ts +41 -15
  456. package/src/interactive/handoff-round.ts +41 -2
  457. package/src/interactive/interactive-application.ts +177 -7
  458. package/src/interactive/interactive-input-runtime.ts +15 -0
  459. package/src/interactive/interactive-presentation.ts +4 -0
  460. package/src/interactive/interactive-shell.ts +20 -17
  461. package/src/interactive/interactive-slash-runtime.ts +63 -10
  462. package/src/interactive/memory-overlay.ts +9 -0
  463. package/src/interactive/modal-marker.ts +170 -0
  464. package/src/interactive/mutation-preview.ts +295 -0
  465. package/src/interactive/mux-bridge.ts +214 -0
  466. package/src/interactive/overlay-frame.ts +58 -2
  467. package/src/interactive/overlay-general-openers.ts +17 -0
  468. package/src/interactive/overlay-key-routing.ts +52 -3
  469. package/src/interactive/overlay-lifecycle.ts +56 -7
  470. package/src/interactive/overlay-model-selectors.ts +40 -3
  471. package/src/interactive/overlay-permission-lifecycle.ts +112 -24
  472. package/src/interactive/overlay-session-lifecycle.ts +73 -9
  473. package/src/interactive/overlay-transitions.ts +18 -4
  474. package/src/interactive/overlays/agents.ts +1 -0
  475. package/src/interactive/overlays/ask-user.ts +227 -49
  476. package/src/interactive/overlays/auth-dialog.ts +1 -0
  477. package/src/interactive/overlays/context-reset.ts +1 -0
  478. package/src/interactive/overlays/cwd-fallback.ts +1 -0
  479. package/src/interactive/overlays/decisions.ts +11 -11
  480. package/src/interactive/overlays/extensions.ts +1 -0
  481. package/src/interactive/overlays/fleet-run-approval.ts +1 -0
  482. package/src/interactive/overlays/handoff-review.ts +1 -0
  483. package/src/interactive/overlays/help-reference.ts +6 -0
  484. package/src/interactive/overlays/interop.ts +1 -0
  485. package/src/interactive/overlays/library-install-confirm.ts +1 -0
  486. package/src/interactive/overlays/library-tabs.ts +28 -0
  487. package/src/interactive/overlays/list-overlay.ts +10 -1
  488. package/src/interactive/overlays/message-picker.ts +1 -0
  489. package/src/interactive/overlays/model-scope.ts +86 -0
  490. package/src/interactive/overlays/model-selector.ts +1 -0
  491. package/src/interactive/overlays/prompts.ts +12 -1
  492. package/src/interactive/overlays/session-selector.ts +1 -0
  493. package/src/interactive/overlays/settings-sections.ts +30 -0
  494. package/src/interactive/overlays/settings.ts +614 -45
  495. package/src/interactive/overlays/side-question.ts +1 -0
  496. package/src/interactive/overlays/skills-hub.ts +3 -11
  497. package/src/interactive/overlays/tree-selector.ts +1 -0
  498. package/src/interactive/pane-policy.ts +46 -0
  499. package/src/interactive/panes-runtime.ts +292 -0
  500. package/src/interactive/permission-hint.ts +34 -2
  501. package/src/interactive/permission-overlay.ts +159 -9
  502. package/src/interactive/prewarm.ts +197 -0
  503. package/src/interactive/render-trace.ts +162 -15
  504. package/src/interactive/renderers/compaction-summary.ts +29 -0
  505. package/src/interactive/renderers/tool-execution.ts +4 -0
  506. package/src/interactive/renderers/worker-entry.ts +122 -14
  507. package/src/interactive/side-question.ts +58 -1
  508. package/src/interactive/slash-commands.ts +251 -15
  509. package/src/interactive/status/controller.ts +11 -0
  510. package/src/interactive/status/state-machine.ts +54 -2
  511. package/src/interactive/status/types.ts +7 -0
  512. package/src/interactive/tasks-overlay.ts +1 -0
  513. package/src/interactive/terminal-lease.ts +2 -0
  514. package/src/interactive/theme/tokens.ts +3 -14
  515. package/src/interactive/turn-context.ts +346 -33
  516. package/src/interactive/turn-persistence.ts +14 -4
  517. package/src/interactive/turn-prewarm.ts +364 -0
  518. package/src/interactive/turn-queues.ts +7 -4
  519. package/src/interactive/turn-runtime.ts +8 -1
  520. package/src/interactive/turn-state.ts +23 -0
  521. package/src/interactive/view/artifacts.ts +109 -1
  522. package/src/interactive/view/view-overlay.ts +29 -3
  523. package/src/interactive/watch-pane.ts +152 -0
  524. package/src/interactive/worker-progress.ts +7 -1
  525. package/src/interactive/worker-receipts.ts +19 -1
  526. package/src/interactive/worker-stream.ts +5 -0
  527. package/src/interactive/yazi-bridge.ts +444 -0
  528. package/src/tools/ask-user.ts +43 -2
  529. package/src/tools/bootstrap.ts +26 -2
  530. package/src/tools/builtin-tool-catalog.ts +15 -0
  531. package/src/tools/compete-worktrees.ts +83 -2
  532. package/src/tools/core-bootstrap.ts +2 -1
  533. package/src/tools/dispatch-admission.ts +14 -3
  534. package/src/tools/dispatch-arguments.ts +20 -20
  535. package/src/tools/dispatch-plan.ts +17 -9
  536. package/src/tools/dispatch-run-events.ts +134 -19
  537. package/src/tools/dispatch-runner.ts +29 -7
  538. package/src/tools/dispatch-scout.ts +1 -1
  539. package/src/tools/dispatch-types.ts +15 -3
  540. package/src/tools/dispatch.ts +1 -1
  541. package/src/tools/executables.ts +17 -14
  542. package/src/tools/observation.ts +54 -4
  543. package/src/tools/panes-surface.ts +38 -0
  544. package/src/tools/panes.ts +112 -0
  545. package/src/tools/policy.ts +10 -1
  546. package/src/tools/presentation.ts +1 -0
  547. package/src/tools/registry.ts +16 -0
  548. package/dist/chunk-AOCYTWAV.js +0 -449
  549. package/dist/chunk-HLE42MG7.js +0 -37
  550. package/dist/chunk-HWUFFB6L.js +0 -83
  551. package/dist/chunk-JOZYP4GM.js +0 -279
  552. package/dist/doctor-M7YEDGAE.js +0 -91
@@ -3,13 +3,13 @@ import {
3
3
  ROUTE_POLICY_VERSION,
4
4
  isRouteDecisionAgentSelection,
5
5
  isRoutingIntent
6
- } from "./chunk-P43ETTHK.js";
6
+ } from "./chunk-SJ5ZKQ4S.js";
7
7
  import {
8
8
  isExecutionRole
9
9
  } from "./chunk-H7IXIC72.js";
10
10
  import {
11
- assertSafeId
12
- } from "./chunk-R346GLFC.js";
11
+ readSettings
12
+ } from "./chunk-VFA6GDY5.js";
13
13
  import {
14
14
  readClioVersion,
15
15
  resolvePackageRoot
@@ -17,9 +17,6 @@ import {
17
17
  import {
18
18
  require_dist
19
19
  } from "./chunk-APJ265NV.js";
20
- import {
21
- safeResourceWrite
22
- } from "./chunk-WEPFGWHJ.js";
23
20
  import {
24
21
  __toESM,
25
22
  init_esm_shims
@@ -339,537 +336,6 @@ function verifyReceiptIntegrity(receipt, envelope) {
339
336
  return { ok: true };
340
337
  }
341
338
 
342
- // src/domains/eval/harness-metrics.ts
343
- init_esm_shims();
344
- var ZERO_EVAL_HARNESS_METRICS = {
345
- receiptCount: 0,
346
- toolCalls: 0,
347
- retries: 0,
348
- safetyBlocks: 0,
349
- correctionLatencyMs: 0,
350
- validationEvidence: 0
351
- };
352
- function evalHarnessMetricsFromCommands(commands) {
353
- return {
354
- ...ZERO_EVAL_HARNESS_METRICS,
355
- validationEvidence: commands.filter(
356
- (command) => command.phase === "verifier" && command.exitCode === 0 && !command.timedOut
357
- ).length
358
- };
359
- }
360
- function sumEvalHarnessMetrics(records) {
361
- return records.reduce((total, record) => addEvalHarnessMetrics(total, record.harness), {
362
- ...ZERO_EVAL_HARNESS_METRICS
363
- });
364
- }
365
- function addEvalHarnessMetrics(left, right) {
366
- return {
367
- receiptCount: left.receiptCount + right.receiptCount,
368
- toolCalls: left.toolCalls + right.toolCalls,
369
- retries: left.retries + right.retries,
370
- safetyBlocks: left.safetyBlocks + right.safetyBlocks,
371
- correctionLatencyMs: left.correctionLatencyMs + right.correctionLatencyMs,
372
- validationEvidence: left.validationEvidence + right.validationEvidence
373
- };
374
- }
375
-
376
- // src/domains/eval/store.ts
377
- init_esm_shims();
378
- import { createHash as createHash2, randomBytes } from "node:crypto";
379
- import { readFile } from "node:fs/promises";
380
- import { join } from "node:path";
381
-
382
- // src/domains/eval/artifacts/redact.ts
383
- init_esm_shims();
384
- var SENSITIVE_KEY = /(?:^|[_-])(api[_-]?key|authorization|cookie|password|secret|token)(?:$|[_-])/i;
385
- var CREDENTIAL_PATTERNS = [
386
- [/\b(authorization\s*[:=]\s*)(?:bearer|basic)\s+[A-Za-z0-9._~+/=-]+/gi, "$1[redacted]"],
387
- [/\b(bearer\s+)[A-Za-z0-9._~+/=-]{12,}/gi, "$1[redacted]"],
388
- [/\b(sk-[A-Za-z0-9_-]{16,})\b/g, "[redacted]"],
389
- [/\b(gh[pousr]_[A-Za-z0-9_]{16,})\b/g, "[redacted]"],
390
- [/\b(AKIA[0-9A-Z]{16})\b/g, "[redacted]"],
391
- [/\b((?:api[_-]?key|access[_-]?token|refresh[_-]?token|password|secret)\s*[:=]\s*)[^\s"',}]+/gi, "$1[redacted]"]
392
- ];
393
- function redactArtifactForStorage(value, env = process.env) {
394
- return redactValue(value, env);
395
- }
396
- function redactValue(value, env) {
397
- if (typeof value === "string") return redactString(value, env);
398
- if (Array.isArray(value)) return value.map((entry) => redactValue(entry, env));
399
- if (value !== null && typeof value === "object") {
400
- const out = {};
401
- for (const [key, entry] of Object.entries(value)) {
402
- out[key] = SENSITIVE_KEY.test(key) ? "[redacted]" : redactValue(entry, env);
403
- }
404
- return out;
405
- }
406
- return value;
407
- }
408
- function redactString(value, env) {
409
- let out = stripHomePrefix(value, env.HOME);
410
- for (const [pattern, replacement] of CREDENTIAL_PATTERNS) {
411
- out = out.replace(pattern, replacement);
412
- }
413
- return out;
414
- }
415
- function stripHomePrefix(value, home) {
416
- if (home === void 0 || home.length === 0) return value;
417
- const normalized = home.replace(/\/+$/g, "");
418
- if (normalized.length === 0) return value;
419
- return value.split(normalized).join("$HOME");
420
- }
421
-
422
- // src/domains/eval/store.ts
423
- var NODE_SIGNALS = /* @__PURE__ */ new Set([
424
- "SIGHUP",
425
- "SIGINT",
426
- "SIGQUIT",
427
- "SIGILL",
428
- "SIGTRAP",
429
- "SIGABRT",
430
- "SIGIOT",
431
- "SIGBUS",
432
- "SIGFPE",
433
- "SIGKILL",
434
- "SIGUSR1",
435
- "SIGSEGV",
436
- "SIGUSR2",
437
- "SIGPIPE",
438
- "SIGALRM",
439
- "SIGTERM",
440
- "SIGCHLD",
441
- "SIGSTKFLT",
442
- "SIGCONT",
443
- "SIGSTOP",
444
- "SIGTSTP",
445
- "SIGTTIN",
446
- "SIGTTOU",
447
- "SIGURG",
448
- "SIGXCPU",
449
- "SIGXFSZ",
450
- "SIGVTALRM",
451
- "SIGPROF",
452
- "SIGWINCH",
453
- "SIGIO",
454
- "SIGPOLL",
455
- "SIGPWR",
456
- "SIGSYS",
457
- "SIGUNUSED"
458
- ]);
459
- function evalRoot(dataDir) {
460
- return join(dataDir, "evals");
461
- }
462
- function evalArtifactPath(dataDir, evalId) {
463
- assertSafeId(evalId, "eval");
464
- return join(evalRoot(dataDir), `${evalId}.json`);
465
- }
466
- function createEvalId(startedAt, taskFileHash) {
467
- const stamp = startedAt.toISOString().replace(/[-:.]/g, "");
468
- return `eval-${stamp}-${taskFileHash.slice(0, 8)}-${randomBytes(6).toString("hex")}`;
469
- }
470
- async function writeEvalArtifact(dataDir, artifact) {
471
- const path = evalArtifactPath(dataDir, artifact.evalId);
472
- const redacted = redactArtifactForStorage({
473
- ...artifact,
474
- paths: { ...artifact.paths, artifact: path }
475
- });
476
- safeResourceWrite(path, `${JSON.stringify(redacted, null, 2)}
477
- `, { encoding: "utf8" });
478
- return path;
479
- }
480
- async function loadEvalArtifact(dataDir, evalId) {
481
- let raw;
482
- try {
483
- raw = await readFile(evalArtifactPath(dataDir, evalId), "utf8");
484
- } catch (error) {
485
- if (isErrorWithCode(error) && error.code === "ENOENT") throw new Error(`eval artifact not found: ${evalId}`);
486
- throw error;
487
- }
488
- const source = evalArtifactPath(dataDir, evalId);
489
- const parsed = parseJson(raw, source);
490
- return parseArtifact(parsed, source);
491
- }
492
- function parseArtifact(value, source) {
493
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
494
- if (value.version !== 1) throw new Error(`${source}.version: expected 1`);
495
- const results = readArray(value, source, "results").map(
496
- (entry, index) => parseRecord(entry, `${source}.results[${index}]`)
497
- );
498
- return {
499
- version: 1,
500
- evalId: readString(value, source, "evalId"),
501
- taskFile: readString(value, source, "taskFile"),
502
- taskFileHash: readString(value, source, "taskFileHash"),
503
- clio: parseClioProvenance(readRequiredArtifactField(value, source, "clio"), `${source}.clio`),
504
- environment: parseEnvironmentProvenance(
505
- readRequiredArtifactField(value, source, "environment"),
506
- `${source}.environment`
507
- ),
508
- target: readOptionalNullableString(value, source, "target"),
509
- model: readOptionalNullableString(value, source, "model"),
510
- thinking: readOptionalNullableString(value, source, "thinking"),
511
- paths: parseArtifactPaths(readRequiredArtifactField(value, source, "paths"), `${source}.paths`),
512
- repeat: readNumber(value, source, "repeat"),
513
- startedAt: readString(value, source, "startedAt"),
514
- endedAt: readString(value, source, "endedAt"),
515
- summary: parseSummary(value.summary, `${source}.summary`),
516
- results
517
- };
518
- }
519
- function parseSummary(value, source) {
520
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
521
- return {
522
- runs: readNumber(value, source, "runs"),
523
- passed: readNumber(value, source, "passed"),
524
- failed: readNumber(value, source, "failed"),
525
- passRate: readNumber(value, source, "passRate"),
526
- tokens: readNumber(value, source, "tokens"),
527
- costUsd: readNumber(value, source, "costUsd"),
528
- wallTimeMs: readNumber(value, source, "wallTimeMs"),
529
- harness: value.harness === void 0 ? { ...ZERO_EVAL_HARNESS_METRICS } : parseHarnessMetrics(value.harness, `${source}.harness`),
530
- failureClasses: readArray(value, source, "failureClasses").map(
531
- (entry, index) => parseFailureClassCount(entry, `${source}.failureClasses[${index}]`)
532
- )
533
- };
534
- }
535
- function parseRecord(value, source) {
536
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
537
- const failureClass = readOptionalFailureClass(value, source, "failureClass");
538
- const commands = readArray(value, source, "commands").map(
539
- (entry, index) => parseCommand(entry, `${source}.commands[${index}]`)
540
- );
541
- const record = {
542
- taskId: readString(value, source, "taskId"),
543
- runId: readString(value, source, "runId"),
544
- repeatIndex: readNumber(value, source, "repeatIndex"),
545
- cwd: readString(value, source, "cwd"),
546
- prompt: readString(value, source, "prompt"),
547
- tags: readStringArray(value, source, "tags"),
548
- pass: readBoolean(value, source, "pass"),
549
- exitCode: readNumber(value, source, "exitCode"),
550
- tokens: readNumber(value, source, "tokens"),
551
- costUsd: readNumber(value, source, "costUsd"),
552
- wallTimeMs: readNumber(value, source, "wallTimeMs"),
553
- harness: value.harness === void 0 ? evalHarnessMetricsFromCommands(commands) : parseHarnessMetrics(value.harness, `${source}.harness`),
554
- commands
555
- };
556
- if (failureClass !== void 0) record.failureClass = failureClass;
557
- const receiptPath = readOptionalString(value, source, "receiptPath");
558
- if (receiptPath !== void 0) record.receiptPath = receiptPath;
559
- const evidenceId = readOptionalString(value, source, "evidenceId");
560
- if (evidenceId !== void 0) record.evidenceId = evidenceId;
561
- const paths = value.paths === void 0 ? void 0 : parseRunPaths(value.paths, `${source}.paths`);
562
- if (paths !== void 0) record.paths = paths;
563
- return record;
564
- }
565
- function parseClioProvenance(value, source) {
566
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
567
- return {
568
- version: readString(value, source, "version"),
569
- commit: readNullableString(value, source, "commit"),
570
- entry: readString(value, source, "entry")
571
- };
572
- }
573
- function parseEnvironmentProvenance(value, source) {
574
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
575
- return {
576
- platform: readString(value, source, "platform"),
577
- node: readString(value, source, "node")
578
- };
579
- }
580
- function parseArtifactPaths(value, source) {
581
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
582
- const out = {
583
- taskFile: readString(value, source, "taskFile"),
584
- receipts: readStringArray(value, source, "receipts"),
585
- sessionLedgers: readStringArray(value, source, "sessionLedgers")
586
- };
587
- const artifact = readOptionalString(value, source, "artifact");
588
- if (artifact !== void 0) out.artifact = artifact;
589
- const evidence = readOptionalString(value, source, "evidence");
590
- if (evidence !== void 0) out.evidence = evidence;
591
- return out;
592
- }
593
- function parseRunPaths(value, source) {
594
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
595
- const out = {};
596
- const receipt = readOptionalString(value, source, "receipt");
597
- if (receipt !== void 0) out.receipt = receipt;
598
- const sessionLedger = readOptionalString(value, source, "sessionLedger");
599
- if (sessionLedger !== void 0) out.sessionLedger = sessionLedger;
600
- const evidence = readOptionalString(value, source, "evidence");
601
- if (evidence !== void 0) out.evidence = evidence;
602
- return out;
603
- }
604
- function readRequiredArtifactField(record, source, field) {
605
- const value = record[field];
606
- if (value === void 0) {
607
- throw new Error(
608
- `eval artifact has an invalid schema: missing required field '${field}' in ${source}. Re-run the evaluation suite to generate a complete artifact.`
609
- );
610
- }
611
- return value;
612
- }
613
- function parseHarnessMetrics(value, source) {
614
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
615
- return {
616
- receiptCount: readNumber(value, source, "receiptCount"),
617
- toolCalls: readNumber(value, source, "toolCalls"),
618
- retries: readNumber(value, source, "retries"),
619
- safetyBlocks: readNumber(value, source, "safetyBlocks"),
620
- correctionLatencyMs: readNumber(value, source, "correctionLatencyMs"),
621
- validationEvidence: readNumber(value, source, "validationEvidence")
622
- };
623
- }
624
- function parseCommand(value, source) {
625
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
626
- const phase = readString(value, source, "phase");
627
- if (phase !== "setup" && phase !== "verifier") throw new Error(`${source}.phase: expected setup or verifier`);
628
- return {
629
- phase,
630
- index: readNumber(value, source, "index"),
631
- command: readString(value, source, "command"),
632
- exitCode: readNumber(value, source, "exitCode"),
633
- signal: readSignal(value.signal, `${source}.signal`),
634
- timedOut: readBoolean(value, source, "timedOut"),
635
- wallTimeMs: readNumber(value, source, "wallTimeMs"),
636
- stdout: readStringAllowEmpty(value, source, "stdout"),
637
- stderr: readStringAllowEmpty(value, source, "stderr")
638
- };
639
- }
640
- function readSignal(value, source) {
641
- if (value === null) return null;
642
- if (typeof value === "string" && NODE_SIGNALS.has(value)) return value;
643
- throw new Error(`${source}: expected signal or null`);
644
- }
645
- function parseFailureClassCount(value, source) {
646
- if (!isRecord(value)) throw new Error(`${source}: expected object`);
647
- return {
648
- failureClass: readFailureClass(value, source, "failureClass"),
649
- count: readNumber(value, source, "count")
650
- };
651
- }
652
- function readFailureClass(record, source, field) {
653
- const value = record[field];
654
- if (value === "setup_failed" || value === "verifier_failed" || value === "timeout" || value === "cwd_missing" || value === "command_error") {
655
- return value;
656
- }
657
- throw new Error(`${source}.${field}: expected failure class`);
658
- }
659
- function readOptionalFailureClass(record, source, field) {
660
- if (record[field] === void 0) return void 0;
661
- return readFailureClass(record, source, field);
662
- }
663
- function readString(record, source, field) {
664
- const value = record[field];
665
- if (typeof value !== "string" || value.length === 0) throw new Error(`${source}.${field}: expected string`);
666
- return value;
667
- }
668
- function readStringAllowEmpty(record, source, field) {
669
- const value = record[field];
670
- if (typeof value !== "string") throw new Error(`${source}.${field}: expected string`);
671
- return value;
672
- }
673
- function readOptionalString(record, source, field) {
674
- const value = record[field];
675
- if (value === void 0) return void 0;
676
- if (typeof value !== "string" || value.length === 0) throw new Error(`${source}.${field}: expected string`);
677
- return value;
678
- }
679
- function readNullableString(record, source, field) {
680
- const value = record[field];
681
- if (value === null) return null;
682
- if (typeof value !== "string" || value.length === 0) throw new Error(`${source}.${field}: expected string or null`);
683
- return value;
684
- }
685
- function readOptionalNullableString(record, source, field) {
686
- const value = record[field];
687
- if (value === void 0 || value === null) return null;
688
- if (typeof value !== "string" || value.length === 0) throw new Error(`${source}.${field}: expected string or null`);
689
- return value;
690
- }
691
- function readStringArray(record, source, field) {
692
- const value = readArray(record, source, field);
693
- const out = [];
694
- for (let index = 0; index < value.length; index += 1) {
695
- const entry = value[index];
696
- if (typeof entry !== "string") throw new Error(`${source}.${field}[${index}]: expected string`);
697
- out.push(entry);
698
- }
699
- return out;
700
- }
701
- function readNumber(record, source, field) {
702
- const value = record[field];
703
- if (typeof value !== "number" || !Number.isFinite(value)) throw new Error(`${source}.${field}: expected number`);
704
- return value;
705
- }
706
- function readBoolean(record, source, field) {
707
- const value = record[field];
708
- if (typeof value !== "boolean") throw new Error(`${source}.${field}: expected boolean`);
709
- return value;
710
- }
711
- function readArray(record, source, field) {
712
- const value = record[field];
713
- if (!Array.isArray(value)) throw new Error(`${source}.${field}: expected array`);
714
- return value;
715
- }
716
- function parseJson(raw, source) {
717
- try {
718
- return JSON.parse(raw);
719
- } catch (error) {
720
- const message = error instanceof Error ? error.message : String(error);
721
- throw new Error(`${source}: invalid JSON: ${message}`);
722
- }
723
- }
724
- function isRecord(value) {
725
- return typeof value === "object" && value !== null && !Array.isArray(value);
726
- }
727
- function isErrorWithCode(error) {
728
- return error instanceof Error && "code" in error && typeof error.code === "string";
729
- }
730
-
731
- // src/domains/eval/artifacts/store.ts
732
- init_esm_shims();
733
- import { readFile as readFile2 } from "node:fs/promises";
734
- import { join as join2 } from "node:path";
735
- function evalArtifactPathV4(dataDir, evalId) {
736
- assertSafeId(evalId, "eval");
737
- return join2(evalRoot(dataDir), `${evalId}.json`);
738
- }
739
- async function writeEvalArtifactV4(dataDir, artifact, out) {
740
- const path = out === void 0 ? evalArtifactPathV4(dataDir, artifact.evalId) : out.endsWith(".json") ? out : join2(out, `${artifact.evalId}.json`);
741
- safeResourceWrite(path, `${JSON.stringify(redactArtifactForStorage(artifact), null, 2)}
742
- `, { encoding: "utf8" });
743
- return path;
744
- }
745
- async function loadEvalArtifactV4(dataDir, evalId) {
746
- let raw;
747
- try {
748
- raw = await readFile2(evalArtifactPathV4(dataDir, evalId), "utf8");
749
- } catch (error) {
750
- if (error.code === "ENOENT") throw new Error(`eval artifact not found: ${evalId}`);
751
- throw error;
752
- }
753
- return parseEvalArtifactV4(JSON.parse(raw), evalId);
754
- }
755
- function parseEvalArtifactV4(value, source) {
756
- if (!isRecord2(value)) throw new Error(`${source}: expected object`);
757
- if (value.version !== 4) throw new Error(`${source}.version: expected current version 4`);
758
- const summary = asRecord(value.summary, `${source}.summary`);
759
- const matrix = asRecord(value.matrix, `${source}.matrix`);
760
- const suite = asRecord(value.suite, `${source}.suite`);
761
- return {
762
- version: 4,
763
- evalId: readString2(value, source, "evalId"),
764
- suite: { id: readString2(suite, `${source}.suite`, "id"), hash: readString2(suite, `${source}.suite`, "hash") },
765
- clio: {
766
- version: readString2(asRecord(value.clio, `${source}.clio`), `${source}.clio`, "version"),
767
- commit: readNullableString2(asRecord(value.clio, `${source}.clio`), `${source}.clio`, "commit"),
768
- entry: readString2(asRecord(value.clio, `${source}.clio`), `${source}.clio`, "entry")
769
- },
770
- environment: {
771
- platform: readString2(asRecord(value.environment, `${source}.environment`), `${source}.environment`, "platform"),
772
- node: readString2(asRecord(value.environment, `${source}.environment`), `${source}.environment`, "node")
773
- },
774
- matrix: {
775
- target: readString2(matrix, `${source}.matrix`, "target"),
776
- model: readNullableString2(matrix, `${source}.matrix`, "model"),
777
- thinking: readNullableString2(matrix, `${source}.matrix`, "thinking")
778
- },
779
- summary: {
780
- runs: readNumber2(summary, `${source}.summary`, "runs"),
781
- passed: readNumber2(summary, `${source}.summary`, "passed"),
782
- failed: readNumber2(summary, `${source}.summary`, "failed"),
783
- passRate: readNumber2(summary, `${source}.summary`, "passRate"),
784
- tokens: parseTokenAccounting(summary.tokens, `${source}.summary.tokens`),
785
- wallTimeMs: readNumber2(summary, `${source}.summary`, "wallTimeMs")
786
- },
787
- results: readArray2(value, source, "results").map((entry, index) => parseResult(entry, `${source}.results[${index}]`))
788
- };
789
- }
790
- function parseTokenAccounting(value, source) {
791
- const record = asRecord(value, source);
792
- const measured = readBoolean2(record, source, "measured");
793
- const runs = readNumber2(record, source, "runs");
794
- const measuredRuns = readNumber2(record, source, "measuredRuns");
795
- const countFields = ["input", "output", "total", "cacheRead", "cacheWrite"];
796
- if (!measured) {
797
- if (measuredRuns !== 0) throw new Error(`${source}.measuredRuns: expected 0 when unmeasured`);
798
- const present = countFields.filter((field) => field in record);
799
- if (present.length > 0) throw new Error(`${source}: unmeasured accounting carries no counts (${present.join(", ")})`);
800
- return { measured: false, runs, measuredRuns: 0 };
801
- }
802
- if (measuredRuns <= 0) throw new Error(`${source}.measuredRuns: expected a positive count when measured`);
803
- return {
804
- measured: true,
805
- runs,
806
- measuredRuns,
807
- input: readNumber2(record, source, "input"),
808
- output: readNumber2(record, source, "output"),
809
- total: readNumber2(record, source, "total"),
810
- cacheRead: readNumber2(record, source, "cacheRead"),
811
- cacheWrite: readNumber2(record, source, "cacheWrite")
812
- };
813
- }
814
- function parseResult(value, source) {
815
- const record = asRecord(value, source);
816
- const target = asRecord(record.target, `${source}.target`);
817
- return {
818
- assignmentId: readNullableString2(record, source, "assignmentId"),
819
- terminalReceiptDigest: readNullableDigest(record, source, "terminalReceiptDigest"),
820
- taskId: readString2(record, source, "taskId"),
821
- repeatIndex: readNumber2(record, source, "repeatIndex"),
822
- target: {
823
- id: readString2(target, `${source}.target`, "id"),
824
- model: readNullableString2(target, `${source}.target`, "model"),
825
- thinking: readNullableString2(target, `${source}.target`, "thinking")
826
- },
827
- pass: readBoolean2(record, source, "pass"),
828
- failureClass: readNullableString2(record, source, "failureClass"),
829
- metrics: asRecord(record.metrics, `${source}.metrics`),
830
- artifacts: asRecord(record.artifacts, `${source}.artifacts`)
831
- };
832
- }
833
- function asRecord(value, source) {
834
- if (isRecord2(value)) return value;
835
- throw new Error(`${source}: expected object`);
836
- }
837
- function isRecord2(value) {
838
- return typeof value === "object" && value !== null && !Array.isArray(value);
839
- }
840
- function readString2(record, source, field) {
841
- const value = record[field];
842
- if (typeof value !== "string" || value.length === 0) throw new Error(`${source}.${field}: expected string`);
843
- return value;
844
- }
845
- function readNullableString2(record, source, field) {
846
- const value = record[field];
847
- if (value === null) return null;
848
- if (typeof value !== "string" || value.length === 0) throw new Error(`${source}.${field}: expected string or null`);
849
- return value;
850
- }
851
- function readNullableDigest(record, source, field) {
852
- const value = readNullableString2(record, source, field);
853
- if (value !== null && !/^[0-9a-f]{64}$/u.test(value))
854
- throw new Error(`${source}.${field}: expected sha256 digest or null`);
855
- return value;
856
- }
857
- function readNumber2(record, source, field) {
858
- const value = record[field];
859
- if (typeof value !== "number" || !Number.isFinite(value)) throw new Error(`${source}.${field}: expected number`);
860
- return value;
861
- }
862
- function readBoolean2(record, source, field) {
863
- const value = record[field];
864
- if (typeof value !== "boolean") throw new Error(`${source}.${field}: expected boolean`);
865
- return value;
866
- }
867
- function readArray2(record, source, field) {
868
- const value = record[field];
869
- if (!Array.isArray(value)) throw new Error(`${source}.${field}: expected array`);
870
- return value;
871
- }
872
-
873
339
  // src/domains/evidence/trust-status.ts
874
340
  init_esm_shims();
875
341
  var TRUST_STATUS_VERSION = 1;
@@ -953,7 +419,7 @@ var ARTIFACT_KINDS = /* @__PURE__ */ new Set([
953
419
  "evidence_bundle",
954
420
  "session_entry"
955
421
  ]);
956
- function isRecord3(value) {
422
+ function isRecord(value) {
957
423
  return typeof value === "object" && value !== null && !Array.isArray(value);
958
424
  }
959
425
  function hasExactKeys(value, keys) {
@@ -976,7 +442,7 @@ function compareArtifactReferences(left, right) {
976
442
  return leftKey < rightKey ? -1 : leftKey > rightKey ? 1 : 0;
977
443
  }
978
444
  function normalizeArtifactReference(value, path) {
979
- if (!isRecord3(value)) throw new Error(`${path} must be an object`);
445
+ if (!isRecord(value)) throw new Error(`${path} must be an object`);
980
446
  if (!hasExactKeys(value, value.digest === void 0 ? ["kind", "id"] : ["kind", "id", "digest"])) {
981
447
  throw new Error(`${path} has unknown or missing fields`);
982
448
  }
@@ -986,7 +452,7 @@ function normalizeArtifactReference(value, path) {
986
452
  if (!isTrustStatusIdentifier(value.id)) throw new Error(`${path}.id is invalid`);
987
453
  const reference = { kind: value.kind, id: value.id };
988
454
  if (value.digest !== void 0) {
989
- if (!isRecord3(value.digest) || !hasExactKeys(value.digest, ["algorithm", "value"]) || value.digest.algorithm !== "sha256" || typeof value.digest.value !== "string" || !/^[a-f0-9]{64}$/u.test(value.digest.value)) {
455
+ if (!isRecord(value.digest) || !hasExactKeys(value.digest, ["algorithm", "value"]) || value.digest.algorithm !== "sha256" || typeof value.digest.value !== "string" || !/^[a-f0-9]{64}$/u.test(value.digest.value)) {
990
456
  throw new Error(`${path}.digest is invalid`);
991
457
  }
992
458
  reference.digest = { algorithm: "sha256", value: value.digest.value };
@@ -997,13 +463,13 @@ function normalizeAttributedStatus(axis, value) {
997
463
  if (!hasExactKeys(value, ["state", "source", "authority", "artifacts"])) {
998
464
  throw new Error(`${axis} has unknown or missing fields`);
999
465
  }
1000
- if (!isRecord3(value.source) || !hasExactKeys(value.source, ["kind", "id"])) {
466
+ if (!isRecord(value.source) || !hasExactKeys(value.source, ["kind", "id"])) {
1001
467
  throw new Error(`${axis}.source is invalid`);
1002
468
  }
1003
469
  if (typeof value.source.kind !== "string" || !SOURCE_KINDS.has(value.source.kind) || !AXIS_SOURCES[axis].has(value.source.kind) || !isTrustStatusIdentifier(value.source.id)) {
1004
470
  throw new Error(`${axis}.source is invalid`);
1005
471
  }
1006
- if (!isRecord3(value.authority) || !hasExactKeys(value.authority, ["kind", "id"])) {
472
+ if (!isRecord(value.authority) || !hasExactKeys(value.authority, ["kind", "id"])) {
1007
473
  throw new Error(`${axis}.authority is invalid`);
1008
474
  }
1009
475
  if (typeof value.authority.kind !== "string" || !AUTHORITY_KINDS.has(value.authority.kind) || !SOURCE_AUTHORITIES[value.source.kind].has(
@@ -1037,7 +503,7 @@ function normalizeAttributedStatus(axis, value) {
1037
503
  };
1038
504
  }
1039
505
  function normalizeAxis(axis, value) {
1040
- if (!isRecord3(value) || typeof value.state !== "string" || !AXIS_STATES[axis].has(value.state)) {
506
+ if (!isRecord(value) || typeof value.state !== "string" || !AXIS_STATES[axis].has(value.state)) {
1041
507
  throw new Error(`${axis}.state is invalid`);
1042
508
  }
1043
509
  if (value.state === "absent") {
@@ -1049,7 +515,7 @@ function normalizeAxis(axis, value) {
1049
515
  return normalizeAttributedStatus(axis, value);
1050
516
  }
1051
517
  function normalizeTrustStatus(value) {
1052
- if (!isRecord3(value) || !hasExactKeys(value, ["version", ...TRUST_STATUS_AXES])) {
518
+ if (!isRecord(value) || !hasExactKeys(value, ["version", ...TRUST_STATUS_AXES])) {
1053
519
  throw new Error("trust status has unknown or missing fields");
1054
520
  }
1055
521
  if (value.version !== TRUST_STATUS_VERSION) throw new Error("trust status version is invalid");
@@ -1107,7 +573,7 @@ function compatibilitySource(receipt, field) {
1107
573
  var DISPATCH_AUTHORITY = { kind: "clio", id: "dispatch" };
1108
574
  var COMPATIBILITY_AUTHORITY = { kind: "unknown", id: "historical-persisted-format" };
1109
575
  function retiredReceiptIntegrity(integrity) {
1110
- if (!isRecord3(integrity)) return null;
576
+ if (!isRecord(integrity)) return null;
1111
577
  const version = integrity.version;
1112
578
  if (typeof version !== "number" || !Number.isInteger(version) || version < 1) return null;
1113
579
  if (version >= RUN_RECEIPT_INTEGRITY_VERSION) return null;
@@ -1416,20 +882,6 @@ function adaptGroundedEvidenceValidationStatus(input) {
1416
882
  uniqueBoundedReferences([{ kind: "evidence_bundle", id: input.evidenceId }, ...observed])
1417
883
  );
1418
884
  }
1419
- function adaptFinishContractCompletionStatus(assessment, options = {}) {
1420
- const artifacts = uniqueBoundedReferences(
1421
- options.artifacts ?? assessment.evidence.map((evidence, index) => ({
1422
- kind: evidence.turnId === void 0 ? "finish_contract_evidence" : "session_entry",
1423
- id: evidence.turnId ?? `${evidence.kind}:${index + 1}`
1424
- }))
1425
- );
1426
- const source = { kind: "finish_contract", id: options.sourceId ?? assessment.reason };
1427
- const authority = { kind: "clio", id: "finish-contract" };
1428
- if (assessment.reason === "no_mutation") return attributed("not_applicable", source, authority, artifacts);
1429
- if (assessment.reason === "validation_evidence") return attributed("evidenced", source, authority, artifacts);
1430
- if (assessment.reason === "explicit_limitation") return attributed("limited", source, authority, artifacts);
1431
- return attributed("incomplete", source, authority, artifacts);
1432
- }
1433
885
  function uniqueBoundedReferences(references) {
1434
886
  const sorted = [...references].sort(compareArtifactReferences);
1435
887
  const unique = sorted.filter(
@@ -1438,6 +890,151 @@ function uniqueBoundedReferences(references) {
1438
890
  return unique.slice(0, TRUST_STATUS_MAX_ARTIFACT_REFERENCES);
1439
891
  }
1440
892
 
893
+ // src/domains/evidence/trust-projection.ts
894
+ init_esm_shims();
895
+ var TRUST_SUMMARY_VERSION = 1;
896
+ var TRUST_SUMMARY_MAX_REFS = 8;
897
+ var TRUST_STATE_WORDS = {
898
+ artifactIntegrity: {
899
+ verified: "sealed",
900
+ failed: "seal broken",
901
+ absent: "no receipt",
902
+ unknown: "seal unchecked",
903
+ not_applicable: "seal not applicable"
904
+ },
905
+ validationGrounding: {
906
+ validated: "grounded",
907
+ failed: "validation failed",
908
+ ungrounded: "inferred: validation claimed, none observed",
909
+ absent: "no validation observed",
910
+ unknown: "validation unknown",
911
+ not_applicable: "validation not applicable"
912
+ },
913
+ independentReview: {
914
+ passed: "independently reviewed: pass",
915
+ failed: "independently reviewed: fail",
916
+ inconclusive: "independent review inconclusive",
917
+ not_independent: "review not independent",
918
+ absent: "not independently reviewed",
919
+ unknown: "independent review unknown",
920
+ not_applicable: "independent review not applicable"
921
+ },
922
+ contextProvenance: {
923
+ recorded: "context recorded",
924
+ invalid: "context record invalid",
925
+ absent: "context not recorded",
926
+ unknown: "context unknown",
927
+ not_applicable: "context not applicable"
928
+ },
929
+ autonomyEnforcement: {
930
+ enforced: "mediated",
931
+ approximated: "approximated",
932
+ bypassed: "bypassed",
933
+ absent: "autonomy not recorded",
934
+ unknown: "autonomy unknown",
935
+ not_applicable: "autonomy not applicable"
936
+ },
937
+ completionEvidence: {
938
+ evidenced: "completion evidenced",
939
+ incomplete: "completion unevidenced",
940
+ limited: "completion limited",
941
+ absent: "completion not recorded",
942
+ unknown: "completion unknown",
943
+ not_applicable: "completion not applicable"
944
+ }
945
+ };
946
+ function trustStateWord(axis, state) {
947
+ const words = TRUST_STATE_WORDS[axis];
948
+ return words[state] ?? words.unknown ?? "unknown";
949
+ }
950
+ function authorityOf(status, axis) {
951
+ const entry = status[axis];
952
+ return entry.state === "absent" ? null : `${entry.authority.kind}:${entry.authority.id}`;
953
+ }
954
+ function integrityClause(status) {
955
+ const retired = retiredIntegrityVersionOf(status.artifactIntegrity);
956
+ if (retired !== null) return `seal v${retired} retired (this build verifies v${RUN_RECEIPT_INTEGRITY_VERSION})`;
957
+ return trustStateWord("artifactIntegrity", status.artifactIntegrity.state);
958
+ }
959
+ function validationClause(status) {
960
+ const entry = status.validationGrounding;
961
+ const word = trustStateWord("validationGrounding", entry.state);
962
+ if (entry.state === "absent") return word;
963
+ if (entry.state === "validated" || entry.state === "failed") return `${word} by ${entry.authority.id}`;
964
+ if (entry.state === "unknown" && entry.authority.kind !== "unknown") return `${word} (${entry.authority.id})`;
965
+ return word;
966
+ }
967
+ function autonomyClause(status) {
968
+ const entry = status.autonomyEnforcement;
969
+ const word = trustStateWord("autonomyEnforcement", entry.state);
970
+ if (entry.state !== "approximated" && entry.state !== "bypassed") return word;
971
+ return `${word} (${entry.authority.id})`;
972
+ }
973
+ function formatTrustSummary(status) {
974
+ return [
975
+ integrityClause(status),
976
+ validationClause(status),
977
+ trustStateWord("independentReview", status.independentReview.state),
978
+ autonomyClause(status),
979
+ trustStateWord("contextProvenance", status.contextProvenance.state),
980
+ trustStateWord("completionEvidence", status.completionEvidence.state)
981
+ ].join("; ");
982
+ }
983
+ function formatTrustSummaryLine(status) {
984
+ return `trust v${TRUST_SUMMARY_VERSION}: ${trustVerdict(status)}; ${formatTrustSummary(status)}`;
985
+ }
986
+ function formatTrustAxes(status) {
987
+ return [`trust_status=v${status.version}`, ...TRUST_STATUS_AXES.map((axis) => `${axis}:${status[axis].state}`)].join(
988
+ " "
989
+ );
990
+ }
991
+ function isUnanswered(status, axis) {
992
+ const state = status[axis].state;
993
+ return state === "absent" || state === "unknown";
994
+ }
995
+ function trustVerdict(status) {
996
+ const integrity = status.artifactIntegrity.state;
997
+ const validation = status.validationGrounding.state;
998
+ const review = status.independentReview.state;
999
+ const autonomy = status.autonomyEnforcement.state;
1000
+ if (integrity === "failed" || autonomy === "bypassed" || validation === "failed" || validation === "ungrounded" || review === "failed" || review === "not_independent" || status.contextProvenance.state === "invalid") {
1001
+ return "compromised";
1002
+ }
1003
+ if (integrity !== "verified") return "unknown";
1004
+ if (review === "passed") return "reviewed";
1005
+ if (validation === "validated") return "grounded";
1006
+ return "unverified";
1007
+ }
1008
+ function claimantOf(status) {
1009
+ const state = status.validationGrounding.state;
1010
+ if (state === "absent" || state === "ungrounded") return "worker";
1011
+ return authorityOf(status, "validationGrounding") ?? "worker";
1012
+ }
1013
+ function referenceKey(reference) {
1014
+ return `${reference.kind}:${reference.id}`;
1015
+ }
1016
+ function trustSummaryReferences(status) {
1017
+ const keys = /* @__PURE__ */ new Set();
1018
+ for (const axis of TRUST_STATUS_AXES) {
1019
+ const entry = status[axis];
1020
+ if (entry.state === "absent") continue;
1021
+ for (const reference of entry.artifacts) keys.add(referenceKey(reference));
1022
+ }
1023
+ return [...keys].sort().slice(0, TRUST_SUMMARY_MAX_REFS);
1024
+ }
1025
+ function summarizeTrustStatus(status) {
1026
+ const axes = Object.fromEntries(TRUST_STATUS_AXES.map((axis) => [axis, status[axis].state]));
1027
+ return {
1028
+ version: TRUST_SUMMARY_VERSION,
1029
+ verdict: trustVerdict(status),
1030
+ text: formatTrustSummary(status),
1031
+ axes,
1032
+ claimant: claimantOf(status),
1033
+ unknown: TRUST_STATUS_AXES.filter((axis) => isUnanswered(status, axis)),
1034
+ refs: trustSummaryReferences(status)
1035
+ };
1036
+ }
1037
+
1441
1038
  // src/domains/eval/provenance.ts
1442
1039
  init_esm_shims();
1443
1040
  import { spawnSync } from "node:child_process";
@@ -1454,6 +1051,33 @@ function evalEnvironmentProvenance() {
1454
1051
  node: process.version
1455
1052
  };
1456
1053
  }
1054
+ async function evalServingConfiguration(targets, observations) {
1055
+ const targetId = targets.length === 1 ? targets[0]?.id ?? "unknown" : "multiple";
1056
+ const configured = configuredTarget(targetId);
1057
+ const target = targets.length === 1 ? targets[0] : void 0;
1058
+ const runtimeId = consensus(observations.map((entry) => entry.runtimeId)) ?? configured?.runtime ?? null;
1059
+ const modelId = consensus(observations.map((entry) => entry.modelId)) ?? target?.model ?? configured?.defaultModel ?? null;
1060
+ const props = configured?.url === void 0 ? null : await readServingProps(configured.url, modelId);
1061
+ return {
1062
+ targetId,
1063
+ runtimeId,
1064
+ modelId,
1065
+ serverBuild: props?.serverBuild ?? null,
1066
+ total_slots: props?.totalSlots ?? null,
1067
+ thinkingLevel: consensus(observations.map((entry) => entry.thinkingLevel)) ?? target?.thinking ?? null,
1068
+ compiledPromptHash: consensus(observations.map((entry) => entry.compiledPromptHash))
1069
+ };
1070
+ }
1071
+ function evalServingObservationFrom(target, receipt, compiledPromptHashes) {
1072
+ const compiledPromptHash = receipt?.staticCompositionHash ?? receipt?.compiledPromptHash ?? consensus(compiledPromptHashes);
1073
+ return {
1074
+ targetId: receipt?.targetId ?? target.id,
1075
+ runtimeId: receipt?.runtimeId ?? null,
1076
+ modelId: receipt?.wireModelId ?? target.model ?? null,
1077
+ thinkingLevel: receipt?.runtimeResolution?.effectiveThinkingLevel ?? target.thinking ?? null,
1078
+ compiledPromptHash
1079
+ };
1080
+ }
1457
1081
  function currentClioCommit() {
1458
1082
  const result = spawnSync("git", ["rev-parse", "HEAD"], {
1459
1083
  cwd: resolvePackageRoot(),
@@ -1465,12 +1089,63 @@ function currentClioCommit() {
1465
1089
  const value = result.stdout.trim();
1466
1090
  return value.length > 0 ? value : null;
1467
1091
  }
1092
+ function configuredTarget(targetId) {
1093
+ try {
1094
+ const target = readSettings().targets.find((entry) => entry.id === targetId);
1095
+ if (target === void 0) return null;
1096
+ return {
1097
+ runtime: target.runtime,
1098
+ ...target.url === void 0 ? {} : { url: target.url },
1099
+ ...target.defaultModel === void 0 ? {} : { defaultModel: target.defaultModel }
1100
+ };
1101
+ } catch {
1102
+ return null;
1103
+ }
1104
+ }
1105
+ async function readServingProps(targetUrl, modelId) {
1106
+ const root = targetUrl.replace(/\/+$/u, "").replace(/\/v1$/u, "");
1107
+ try {
1108
+ const response = await fetch(`${root}/props`, { signal: AbortSignal.timeout(5e3) });
1109
+ if (!response.ok) return null;
1110
+ const value = await response.json();
1111
+ if (!isRecord2(value)) return null;
1112
+ const totalSlots = positiveInteger(value.total_slots) ?? await readServingSlots(root, modelId);
1113
+ return {
1114
+ serverBuild: typeof value.build_info === "string" && value.build_info.length > 0 ? value.build_info : null,
1115
+ totalSlots
1116
+ };
1117
+ } catch {
1118
+ return null;
1119
+ }
1120
+ }
1121
+ async function readServingSlots(root, modelId) {
1122
+ if (modelId === null) return null;
1123
+ try {
1124
+ const query = new URLSearchParams({ model: modelId });
1125
+ const response = await fetch(`${root}/slots?${query}`, { signal: AbortSignal.timeout(5e3) });
1126
+ if (!response.ok) return null;
1127
+ const value = await response.json();
1128
+ return Array.isArray(value) && value.length > 0 ? value.length : null;
1129
+ } catch {
1130
+ return null;
1131
+ }
1132
+ }
1133
+ function consensus(values) {
1134
+ const known = [...new Set(values.filter((value) => typeof value === "string" && value.length > 0))];
1135
+ return known.length === 1 ? known[0] ?? null : null;
1136
+ }
1137
+ function positiveInteger(value) {
1138
+ return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : null;
1139
+ }
1140
+ function isRecord2(value) {
1141
+ return typeof value === "object" && value !== null && !Array.isArray(value);
1142
+ }
1468
1143
 
1469
1144
  // src/domains/eval/task-file.ts
1470
1145
  init_esm_shims();
1471
1146
  var import_yaml = __toESM(require_dist(), 1);
1472
- import { createHash as createHash3 } from "node:crypto";
1473
- import { readFile as readFile3 } from "node:fs/promises";
1147
+ import { createHash as createHash2 } from "node:crypto";
1148
+ import { readFile } from "node:fs/promises";
1474
1149
  import { dirname, isAbsolute, relative, resolve } from "node:path";
1475
1150
 
1476
1151
  // src/domains/eval/types.ts
@@ -1481,7 +1156,7 @@ var EVAL_TASK_FILE_VERSION = 1;
1481
1156
  var TASK_KEYS = /* @__PURE__ */ new Set(["id", "prompt", "cwd", "setup", "verifier", "timeoutMs", "tags"]);
1482
1157
  async function loadEvalTaskFile(path) {
1483
1158
  const resolved = resolve(path);
1484
- const raw = await readFile3(resolved, "utf8");
1159
+ const raw = await readFile(resolved, "utf8");
1485
1160
  const result = parseEvalTaskFileYaml(raw);
1486
1161
  if (!result.valid) {
1487
1162
  throw new EvalTaskFileError(result.issues);
@@ -1508,7 +1183,7 @@ function parseEvalTaskFileYaml(raw) {
1508
1183
  }
1509
1184
  function validateEvalTaskFile(value) {
1510
1185
  const issues = [];
1511
- if (!isRecord4(value)) {
1186
+ if (!isRecord3(value)) {
1512
1187
  return { valid: false, issues: [{ path: "$", message: "expected object" }] };
1513
1188
  }
1514
1189
  if (value.version !== EVAL_TASK_FILE_VERSION) {
@@ -1544,7 +1219,7 @@ var EvalTaskFileError = class extends Error {
1544
1219
  }
1545
1220
  };
1546
1221
  function parseTask(value, path, issues) {
1547
- if (!isRecord4(value)) {
1222
+ if (!isRecord3(value)) {
1548
1223
  issues.push({ path, message: "expected object" });
1549
1224
  return null;
1550
1225
  }
@@ -1560,13 +1235,13 @@ function parseTask(value, path, issues) {
1560
1235
  if (cwd !== null && isAbsolute(cwd)) {
1561
1236
  issues.push({ path: `${path}.cwd`, message: "expected repo-local relative path" });
1562
1237
  }
1563
- const setup = readStringArray2(value, path, "setup", issues, true);
1564
- const verifier = readStringArray2(value, path, "verifier", issues, false);
1238
+ const setup = readStringArray(value, path, "setup", issues, true);
1239
+ const verifier = readStringArray(value, path, "verifier", issues, false);
1565
1240
  if (verifier !== null && verifier.length === 0) {
1566
1241
  issues.push({ path: `${path}.verifier`, message: "expected at least one command" });
1567
1242
  }
1568
1243
  const timeoutMs = readPositiveInteger(value, path, "timeoutMs", issues);
1569
- const tags = readStringArray2(value, path, "tags", issues, true);
1244
+ const tags = readStringArray(value, path, "tags", issues, true);
1570
1245
  if (id === null || prompt === null || cwd === null || setup === null || verifier === null || timeoutMs === null) {
1571
1246
  return null;
1572
1247
  }
@@ -1592,7 +1267,7 @@ function readNonEmptyString(record, path, field, issues) {
1592
1267
  }
1593
1268
  return value;
1594
1269
  }
1595
- function readStringArray2(record, path, field, issues, allowMissing) {
1270
+ function readStringArray(record, path, field, issues, allowMissing) {
1596
1271
  const value = record[field];
1597
1272
  if (value === void 0 && allowMissing) return [];
1598
1273
  if (!Array.isArray(value)) {
@@ -1618,173 +1293,90 @@ function readPositiveInteger(record, path, field, issues) {
1618
1293
  }
1619
1294
  return value;
1620
1295
  }
1621
- function isRecord4(value) {
1296
+ function isRecord3(value) {
1622
1297
  return typeof value === "object" && value !== null && !Array.isArray(value);
1623
1298
  }
1624
1299
  function sha256Hex(content) {
1625
- return createHash3("sha256").update(content, "utf8").digest("hex");
1300
+ return createHash2("sha256").update(content, "utf8").digest("hex");
1626
1301
  }
1627
1302
 
1628
- // src/domains/evidence/trust-projection.ts
1303
+ // src/domains/eval/run-compare.ts
1629
1304
  init_esm_shims();
1630
- var TRUST_SUMMARY_VERSION = 1;
1631
- var TRUST_SUMMARY_MAX_REFS = 8;
1632
- var TRUST_STATE_WORDS = {
1633
- artifactIntegrity: {
1634
- verified: "sealed",
1635
- failed: "seal broken",
1636
- absent: "no receipt",
1637
- unknown: "seal unchecked",
1638
- not_applicable: "seal not applicable"
1639
- },
1640
- validationGrounding: {
1641
- validated: "grounded",
1642
- failed: "validation failed",
1643
- ungrounded: "inferred: validation claimed, none observed",
1644
- absent: "no validation observed",
1645
- unknown: "validation unknown",
1646
- not_applicable: "validation not applicable"
1647
- },
1648
- independentReview: {
1649
- passed: "independently reviewed: pass",
1650
- failed: "independently reviewed: fail",
1651
- inconclusive: "independent review inconclusive",
1652
- not_independent: "review not independent",
1653
- absent: "not independently reviewed",
1654
- unknown: "independent review unknown",
1655
- not_applicable: "independent review not applicable"
1656
- },
1657
- contextProvenance: {
1658
- recorded: "context recorded",
1659
- invalid: "context record invalid",
1660
- absent: "context not recorded",
1661
- unknown: "context unknown",
1662
- not_applicable: "context not applicable"
1663
- },
1664
- autonomyEnforcement: {
1665
- enforced: "mediated",
1666
- approximated: "approximated",
1667
- bypassed: "bypassed",
1668
- absent: "autonomy not recorded",
1669
- unknown: "autonomy unknown",
1670
- not_applicable: "autonomy not applicable"
1671
- },
1672
- completionEvidence: {
1673
- evidenced: "completion evidenced",
1674
- incomplete: "completion unevidenced",
1675
- limited: "completion limited",
1676
- absent: "completion not recorded",
1677
- unknown: "completion unknown",
1678
- not_applicable: "completion not applicable"
1305
+ var EvalTrackedMetricSourceMismatchError = class extends Error {
1306
+ constructor(metric, baseline, candidate) {
1307
+ super(
1308
+ `tracked metric ${metric} cannot compare estimated and measured values (baseline=${baseline.join(",") || "none"}, candidate=${candidate.join(",") || "none"})`
1309
+ );
1310
+ this.name = "EvalTrackedMetricSourceMismatchError";
1679
1311
  }
1680
1312
  };
1681
- function trustStateWord(axis, state) {
1682
- const words = TRUST_STATE_WORDS[axis];
1683
- return words[state] ?? words.unknown ?? "unknown";
1684
- }
1685
- function authorityOf(status, axis) {
1686
- const entry = status[axis];
1687
- return entry.state === "absent" ? null : `${entry.authority.kind}:${entry.authority.id}`;
1688
- }
1689
- function integrityClause(status) {
1690
- const retired = retiredIntegrityVersionOf(status.artifactIntegrity);
1691
- if (retired !== null) return `seal v${retired} retired (this build verifies v${RUN_RECEIPT_INTEGRITY_VERSION})`;
1692
- return trustStateWord("artifactIntegrity", status.artifactIntegrity.state);
1693
- }
1694
- function validationClause(status) {
1695
- const entry = status.validationGrounding;
1696
- const word = trustStateWord("validationGrounding", entry.state);
1697
- if (entry.state === "absent") return word;
1698
- if (entry.state === "validated" || entry.state === "failed") return `${word} by ${entry.authority.id}`;
1699
- if (entry.state === "unknown" && entry.authority.kind !== "unknown") return `${word} (${entry.authority.id})`;
1700
- return word;
1701
- }
1702
- function autonomyClause(status) {
1703
- const entry = status.autonomyEnforcement;
1704
- const word = trustStateWord("autonomyEnforcement", entry.state);
1705
- if (entry.state !== "approximated" && entry.state !== "bypassed") return word;
1706
- return `${word} (${entry.authority.id})`;
1313
+ function assertComparableTrackedMetricSources(metric, baseline, candidate) {
1314
+ if (baseline.includes("estimated") === candidate.includes("estimated")) return;
1315
+ throw new EvalTrackedMetricSourceMismatchError(metric, baseline, candidate);
1707
1316
  }
1708
- function formatTrustSummary(status) {
1709
- return [
1710
- integrityClause(status),
1711
- validationClause(status),
1712
- trustStateWord("independentReview", status.independentReview.state),
1713
- autonomyClause(status),
1714
- trustStateWord("contextProvenance", status.contextProvenance.state),
1715
- trustStateWord("completionEvidence", status.completionEvidence.state)
1716
- ].join("; ");
1717
- }
1718
- function formatTrustSummaryLine(status) {
1719
- return `trust v${TRUST_SUMMARY_VERSION}: ${formatTrustSummary(status)}`;
1317
+
1318
+ // src/domains/prompts/hash.ts
1319
+ init_esm_shims();
1320
+ import { createHash as createHash3 } from "node:crypto";
1321
+ function sha2562(input) {
1322
+ return createHash3("sha256").update(input, "utf8").digest("hex");
1720
1323
  }
1721
- function formatTrustAxes(status) {
1722
- return [`trust_status=v${status.version}`, ...TRUST_STATUS_AXES.map((axis) => `${axis}:${status[axis].state}`)].join(
1723
- " "
1724
- );
1324
+ function canonicalJson2(value) {
1325
+ return serialize(value);
1725
1326
  }
1726
- function isUnanswered(status, axis) {
1727
- const state = status[axis].state;
1728
- return state === "absent" || state === "unknown";
1729
- }
1730
- function trustVerdict(status) {
1731
- const integrity = status.artifactIntegrity.state;
1732
- const validation = status.validationGrounding.state;
1733
- const review = status.independentReview.state;
1734
- const autonomy = status.autonomyEnforcement.state;
1735
- if (integrity === "failed" || autonomy === "bypassed" || validation === "failed" || validation === "ungrounded" || review === "failed" || review === "not_independent" || status.contextProvenance.state === "invalid") {
1736
- return "compromised";
1327
+ function serialize(value) {
1328
+ if (value === null) return "null";
1329
+ if (typeof value === "number") {
1330
+ if (!Number.isFinite(value)) {
1331
+ throw new Error(`canonicalJson: non-finite number ${String(value)} is not representable`);
1332
+ }
1333
+ return JSON.stringify(value);
1737
1334
  }
1738
- if (integrity !== "verified") return "unknown";
1739
- if (review === "passed") return "reviewed";
1740
- if (validation === "validated") return "grounded";
1741
- return "unverified";
1742
- }
1743
- function claimantOf(status) {
1744
- const state = status.validationGrounding.state;
1745
- if (state === "absent" || state === "ungrounded") return "worker";
1746
- return authorityOf(status, "validationGrounding") ?? "worker";
1747
- }
1748
- function referenceKey(reference) {
1749
- return `${reference.kind}:${reference.id}`;
1750
- }
1751
- function trustSummaryReferences(status) {
1752
- const keys = /* @__PURE__ */ new Set();
1753
- for (const axis of TRUST_STATUS_AXES) {
1754
- const entry = status[axis];
1755
- if (entry.state === "absent") continue;
1756
- for (const reference of entry.artifacts) keys.add(referenceKey(reference));
1335
+ if (typeof value === "string" || typeof value === "boolean") {
1336
+ return JSON.stringify(value);
1757
1337
  }
1758
- return [...keys].sort().slice(0, TRUST_SUMMARY_MAX_REFS);
1759
- }
1760
- function summarizeTrustStatus(status) {
1761
- const axes = Object.fromEntries(TRUST_STATUS_AXES.map((axis) => [axis, status[axis].state]));
1762
- return {
1763
- version: TRUST_SUMMARY_VERSION,
1764
- verdict: trustVerdict(status),
1765
- text: formatTrustSummary(status),
1766
- axes,
1767
- claimant: claimantOf(status),
1768
- unknown: TRUST_STATUS_AXES.filter((axis) => isUnanswered(status, axis)),
1769
- refs: trustSummaryReferences(status)
1770
- };
1338
+ if (typeof value === "bigint") {
1339
+ throw new Error("canonicalJson: bigint is not representable");
1340
+ }
1341
+ if (typeof value === "symbol" || typeof value === "function") {
1342
+ throw new Error(`canonicalJson: ${typeof value} is not representable`);
1343
+ }
1344
+ if (value === void 0) {
1345
+ throw new Error("canonicalJson: undefined is not representable at root");
1346
+ }
1347
+ if (Array.isArray(value)) {
1348
+ const parts = [];
1349
+ for (let i = 0; i < value.length; i++) {
1350
+ if (!(i in value) || value[i] === void 0) {
1351
+ parts.push("null");
1352
+ continue;
1353
+ }
1354
+ parts.push(serialize(value[i]));
1355
+ }
1356
+ return `[${parts.join(",")}]`;
1357
+ }
1358
+ if (typeof value === "object") {
1359
+ const obj = value;
1360
+ const keys = Object.keys(obj).sort();
1361
+ const parts = [];
1362
+ for (const key of keys) {
1363
+ const child = obj[key];
1364
+ if (child === void 0) continue;
1365
+ parts.push(`${JSON.stringify(key)}:${serialize(child)}`);
1366
+ }
1367
+ return `{${parts.join(",")}}`;
1368
+ }
1369
+ throw new Error(`canonicalJson: unsupported value of type ${typeof value}`);
1771
1370
  }
1772
1371
 
1773
1372
  export {
1373
+ sha2562 as sha256,
1374
+ canonicalJson2 as canonicalJson,
1774
1375
  RUN_RECEIPT_INTEGRITY_VERSION,
1775
1376
  RUN_RECEIPT_INTEGRITY_ALGORITHM,
1776
1377
  withReceiptIntegrity,
1777
1378
  isReceiptIntegrity,
1778
1379
  verifyReceiptIntegrity,
1779
- redactArtifactForStorage,
1780
- ZERO_EVAL_HARNESS_METRICS,
1781
- sumEvalHarnessMetrics,
1782
- createEvalId,
1783
- writeEvalArtifact,
1784
- loadEvalArtifact,
1785
- writeEvalArtifactV4,
1786
- loadEvalArtifactV4,
1787
- parseEvalArtifactV4,
1788
1380
  TRUST_STATUS_AXES,
1789
1381
  isTrustStatusIdentifier,
1790
1382
  normalizeTrustStatus,
@@ -1796,14 +1388,18 @@ export {
1796
1388
  inspectRunReceiptTrustStatus,
1797
1389
  adaptGateDecisionReviewStatus,
1798
1390
  adaptGroundedEvidenceValidationStatus,
1799
- adaptFinishContractCompletionStatus,
1800
- evalClioProvenance,
1801
- evalEnvironmentProvenance,
1802
- loadEvalTaskFile,
1803
- EvalTaskFileError,
1391
+ trustStateWord,
1804
1392
  formatTrustSummary,
1805
1393
  formatTrustSummaryLine,
1806
1394
  formatTrustAxes,
1807
- summarizeTrustStatus
1395
+ trustVerdict,
1396
+ summarizeTrustStatus,
1397
+ evalClioProvenance,
1398
+ evalEnvironmentProvenance,
1399
+ evalServingConfiguration,
1400
+ evalServingObservationFrom,
1401
+ assertComparableTrackedMetricSources,
1402
+ loadEvalTaskFile,
1403
+ EvalTaskFileError
1808
1404
  };
1809
- //# sourceMappingURL=chunk-K4XHGFR5.js.map
1405
+ //# sourceMappingURL=chunk-B7OBL7PK.js.map