@iowarp/clio-coder 0.4.9 → 0.5.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 (1172) hide show
  1. package/.claude-plugin/marketplace.json +11 -3
  2. package/CHANGELOG.md +153 -0
  3. package/CODE_OF_CONDUCT.md +10 -0
  4. package/CONTRIBUTING.md +208 -382
  5. package/NOTICE +8 -2
  6. package/README.md +199 -418
  7. package/ROADMAP.md +82 -0
  8. package/SECURITY.md +14 -11
  9. package/dist/acp-KS7ARGV6.js +132 -0
  10. package/dist/agents-YOGJ2YEJ.js +163 -0
  11. package/dist/assets/codewiki.json +1 -1
  12. package/dist/auth-CEDCO6O6.js +557 -0
  13. package/dist/background-YWTBPSQU.js +39 -0
  14. package/dist/builtins-GDYO4RTR.js +23 -0
  15. package/dist/chunk-27YTM2CV.js +175 -0
  16. package/dist/chunk-2AF6YC7Q.js +75 -0
  17. package/dist/chunk-2DTIWSAW.js +381 -0
  18. package/dist/chunk-2EMLKSCX.js +262 -0
  19. package/dist/chunk-2OJ3YZQP.js +665 -0
  20. package/dist/chunk-2VLYHHFT.js +35 -0
  21. package/dist/chunk-2WVPJF3Z.js +204 -0
  22. package/dist/chunk-33OASOS6.js +176 -0
  23. package/dist/chunk-3BD2LXYJ.js +19 -0
  24. package/dist/chunk-3JHUFKG7.js +30 -0
  25. package/dist/chunk-3JLTRPN7.js +711 -0
  26. package/dist/chunk-3LT34CAM.js +2796 -0
  27. package/dist/chunk-3O5JWP4L.js +1670 -0
  28. package/dist/chunk-3UW3KU4A.js +21 -0
  29. package/dist/chunk-4A6YRGV4.js +569 -0
  30. package/dist/chunk-4D2BRCZ3.js +67 -0
  31. package/dist/chunk-4SYHGVDE.js +668 -0
  32. package/dist/chunk-4VDHLCF5.js +66 -0
  33. package/dist/chunk-4WOOTKFD.js +637 -0
  34. package/dist/chunk-4WV4PI66.js +80 -0
  35. package/dist/chunk-53OXPRI6.js +195 -0
  36. package/dist/chunk-55RMDDFM.js +1347 -0
  37. package/dist/chunk-56XP4FJU.js +2025 -0
  38. package/dist/chunk-5B3RTYAK.js +123 -0
  39. package/dist/chunk-5CD243WE.js +45 -0
  40. package/dist/chunk-5JQR5B4D.js +709 -0
  41. package/dist/chunk-5KQEUIWM.js +597 -0
  42. package/dist/chunk-5LP5FNNR.js +915 -0
  43. package/dist/chunk-62UK7AGW.js +9344 -0
  44. package/dist/chunk-6CTHLZFB.js +563 -0
  45. package/dist/chunk-6EJYVCTN.js +23 -0
  46. package/dist/chunk-6OWUM2NC.js +12289 -0
  47. package/dist/chunk-6RJMYYIE.js +1023 -0
  48. package/dist/chunk-6W75D37F.js +643 -0
  49. package/dist/chunk-733ZBT5P.js +1721 -0
  50. package/dist/chunk-77DCC6JZ.js +3710 -0
  51. package/dist/chunk-7QXCO3AF.js +156 -0
  52. package/dist/chunk-7RET77VB.js +481 -0
  53. package/dist/chunk-A4MVRV4C.js +65 -0
  54. package/dist/chunk-ALJWT6O6.js +93 -0
  55. package/dist/chunk-AVSR2HKI.js +232 -0
  56. package/dist/chunk-B7GY6QER.js +42 -0
  57. package/dist/chunk-BFOSV5EZ.js +178 -0
  58. package/dist/chunk-BGOIM7NB.js +103 -0
  59. package/dist/chunk-BJH6WFIB.js +372 -0
  60. package/dist/chunk-BOBCCDJ6.js +1533 -0
  61. package/dist/chunk-BRCOSE7O.js +117 -0
  62. package/dist/chunk-BYFHHCFV.js +601 -0
  63. package/dist/chunk-C2CPOIH2.js +83 -0
  64. package/dist/chunk-C7AQTPCE.js +694 -0
  65. package/dist/chunk-CBAQPTDU.js +165 -0
  66. package/dist/chunk-CDQ2UC6W.js +125 -0
  67. package/dist/chunk-CN6SW5DC.js +177 -0
  68. package/dist/chunk-CRHPCPZP.js +132 -0
  69. package/dist/chunk-CTFPFW3H.js +44 -0
  70. package/dist/chunk-D3KWFOUT.js +103 -0
  71. package/dist/chunk-D65E25JG.js +185 -0
  72. package/dist/chunk-DCGHJQ2U.js +236 -0
  73. package/dist/chunk-DE2LU267.js +106 -0
  74. package/dist/chunk-DF6PI6GN.js +97 -0
  75. package/dist/chunk-DGC6X6XR.js +53 -0
  76. package/dist/chunk-DOUISWEE.js +526 -0
  77. package/dist/chunk-DR3TAEUA.js +188 -0
  78. package/dist/chunk-DVTBERFY.js +33 -0
  79. package/dist/chunk-DXSETN72.js +1051 -0
  80. package/dist/chunk-DZLR4UEH.js +128 -0
  81. package/dist/chunk-E6IPKW2E.js +77 -0
  82. package/dist/chunk-EG4ARXPC.js +139 -0
  83. package/dist/chunk-EKV4UBCM.js +652 -0
  84. package/dist/chunk-EOJPDNUP.js +1325 -0
  85. package/dist/chunk-EX57VVWW.js +4157 -0
  86. package/dist/chunk-EYTLV3W3.js +5937 -0
  87. package/dist/chunk-EZD2BXGP.js +475 -0
  88. package/dist/chunk-EZDCA34W.js +314 -0
  89. package/dist/chunk-FD2I4KBR.js +33 -0
  90. package/dist/chunk-FD3IAHQM.js +27 -0
  91. package/dist/chunk-FFYTC2KQ.js +416 -0
  92. package/dist/chunk-FGSQHUCK.js +110 -0
  93. package/dist/chunk-GCQFN7YI.js +32 -0
  94. package/dist/chunk-GGPF6LLE.js +38 -0
  95. package/dist/chunk-GGWI3OVM.js +215 -0
  96. package/dist/chunk-GLIQT7SU.js +172 -0
  97. package/dist/chunk-GN7QBEEI.js +95 -0
  98. package/dist/chunk-GRHOXDKB.js +1104 -0
  99. package/dist/chunk-HMN2C6YL.js +54 -0
  100. package/dist/chunk-HOEDA42N.js +310 -0
  101. package/dist/chunk-HOYZUKG7.js +192 -0
  102. package/dist/chunk-HQVN7G4F.js +1021 -0
  103. package/dist/chunk-HSQQFDB3.js +519 -0
  104. package/dist/chunk-I4ELN5BX.js +47 -0
  105. package/dist/chunk-I4Y4WKZR.js +386 -0
  106. package/dist/chunk-IFPDAD7R.js +797 -0
  107. package/dist/chunk-IN7DGBVS.js +582 -0
  108. package/dist/chunk-ISHUS7HC.js +396 -0
  109. package/dist/chunk-JPXLJSGR.js +191 -0
  110. package/dist/chunk-JQCLXSFI.js +69 -0
  111. package/dist/chunk-KBUTSJSR.js +61 -0
  112. package/dist/chunk-KW5HXKLJ.js +56 -0
  113. package/dist/chunk-L4APUGCT.js +139 -0
  114. package/dist/chunk-L7G7K4I2.js +505 -0
  115. package/dist/chunk-LAR7DX5E.js +1840 -0
  116. package/dist/chunk-LAVUQX3B.js +462 -0
  117. package/dist/chunk-LJRBX7QR.js +116 -0
  118. package/dist/chunk-LNOXCGN2.js +1864 -0
  119. package/dist/chunk-LTWH2ACR.js +23002 -0
  120. package/dist/chunk-LYJJ6546.js +661 -0
  121. package/dist/chunk-M2IPMWCN.js +457 -0
  122. package/dist/chunk-MGLRTOCK.js +101 -0
  123. package/dist/chunk-MZF5IKZT.js +160 -0
  124. package/dist/chunk-N24R6KWS.js +386 -0
  125. package/dist/chunk-NASYVWDB.js +604 -0
  126. package/dist/chunk-NBXFPI7U.js +195 -0
  127. package/dist/chunk-NDPF2N2L.js +400 -0
  128. package/dist/chunk-NFSK2VNU.js +446 -0
  129. package/dist/chunk-NG3QQSXY.js +43 -0
  130. package/dist/chunk-NOCSM22Y.js +63 -0
  131. package/dist/chunk-NVPXXW2H.js +1143 -0
  132. package/dist/chunk-O63U2I6I.js +30 -0
  133. package/dist/chunk-OJXOA6YU.js +98 -0
  134. package/dist/chunk-OPD7GL6F.js +1196 -0
  135. package/dist/chunk-OQ2EOAHA.js +14399 -0
  136. package/dist/chunk-OV62D6KO.js +688 -0
  137. package/dist/chunk-OZ76TLGU.js +740 -0
  138. package/dist/chunk-P4GNZPXO.js +1156 -0
  139. package/dist/chunk-PS6JAWJZ.js +78 -0
  140. package/dist/chunk-PXRCXGLK.js +1865 -0
  141. package/dist/chunk-QDUUOZ3S.js +108 -0
  142. package/dist/chunk-QG6I2T5E.js +1416 -0
  143. package/dist/chunk-QHSBROEW.js +308 -0
  144. package/dist/chunk-QNUQ7K7D.js +46 -0
  145. package/dist/chunk-QZTTRSJE.js +333 -0
  146. package/dist/chunk-R2UUNSNQ.js +1605 -0
  147. package/dist/chunk-R7FGRZNF.js +1794 -0
  148. package/dist/chunk-RNDCROSG.js +199 -0
  149. package/dist/chunk-S36CXHO2.js +302 -0
  150. package/dist/chunk-SJGS3GDI.js +575 -0
  151. package/dist/chunk-SQZHXUB3.js +510 -0
  152. package/dist/chunk-SUTLW6ND.js +686 -0
  153. package/dist/chunk-SYF7FVBL.js +179 -0
  154. package/dist/chunk-T2MDZES3.js +1577 -0
  155. package/dist/chunk-T33IYTZM.js +1146 -0
  156. package/dist/chunk-TDGYTWM6.js +49 -0
  157. package/dist/chunk-TGL5FZVD.js +132 -0
  158. package/dist/chunk-TGWZXJ7L.js +1205 -0
  159. package/dist/chunk-TKDRT2DF.js +114 -0
  160. package/dist/chunk-TV2EBCSQ.js +152 -0
  161. package/dist/chunk-U26XXPJS.js +367 -0
  162. package/dist/chunk-U5QU5ZOD.js +419 -0
  163. package/dist/chunk-U6YTUVOX.js +1011 -0
  164. package/dist/chunk-UCINIRHW.js +188 -0
  165. package/dist/chunk-UJD5MPP6.js +52 -0
  166. package/dist/chunk-URCXX7WJ.js +146 -0
  167. package/dist/chunk-UX2L5CUD.js +898 -0
  168. package/dist/chunk-UZVYEF57.js +114 -0
  169. package/dist/chunk-V35KZDUZ.js +218 -0
  170. package/dist/chunk-VESL6DQY.js +1058 -0
  171. package/dist/chunk-VKHLUZNO.js +986 -0
  172. package/dist/chunk-VOYUCAQF.js +584 -0
  173. package/dist/chunk-VYRQHORQ.js +414 -0
  174. package/dist/chunk-W53XSRQE.js +245 -0
  175. package/dist/chunk-X4CEFOSG.js +226 -0
  176. package/dist/chunk-XDHUDE5K.js +380 -0
  177. package/dist/chunk-XISLDHEL.js +1290 -0
  178. package/dist/chunk-XM34YQ2Y.js +169 -0
  179. package/dist/chunk-XMDBTYCH.js +661 -0
  180. package/dist/chunk-XS2QPZJE.js +449 -0
  181. package/dist/chunk-YBUECLAF.js +618 -0
  182. package/dist/chunk-YQ6XEFVK.js +332 -0
  183. package/dist/chunk-YYLCPDCC.js +990 -0
  184. package/dist/chunk-Z4GLJ6J4.js +1035 -0
  185. package/dist/chunk-ZARZ4POR.js +210 -0
  186. package/dist/chunk-ZJPORZTC.js +119 -0
  187. package/dist/chunk-ZNUZ3EXD.js +243 -0
  188. package/dist/chunk-ZPST2KQO.js +49 -0
  189. package/dist/chunk-ZR5YA6ZF.js +512 -0
  190. package/dist/chunk-ZU4JPCPR.js +319 -0
  191. package/dist/chunk-ZUKUCZYZ.js +39 -0
  192. package/dist/cli/index.js +56 -45
  193. package/dist/clio-K2PBVCEM.js +27 -0
  194. package/dist/clio-context-tools-GR4OHFSO.js +145 -0
  195. package/dist/code-nav-4X3OI6DK.js +715 -0
  196. package/dist/codewiki/build-worker.js +4 -4
  197. package/dist/compile-cache-YRB6QRO7.js +18 -0
  198. package/dist/components-RQOJ6NUR.js +675 -0
  199. package/dist/config-Q5J7UBAB.js +291 -0
  200. package/dist/config-XE7XYZLU.js +38 -0
  201. package/dist/config-graph-P3555574.js +175 -0
  202. package/dist/configure-KIJ32ZO6.js +104 -0
  203. package/dist/context-LFBQOSXT.js +344 -0
  204. package/dist/context-NNLBES2Y.js +82 -0
  205. package/dist/context-WBH3KSVR.js +302 -0
  206. package/dist/context-clear-YOHMQ6SQ.js +208 -0
  207. package/dist/context-index-X2N5UAIF.js +120 -0
  208. package/dist/context-map-HOSMGUG2.js +555 -0
  209. package/dist/context-working-set-MRAEVDNV.js +1564 -0
  210. package/dist/data-tool-JJPBGMQJ.js +2986 -0
  211. package/dist/detail-RHJOTGN4.js +139 -0
  212. package/dist/dispatch-runner-NC7PYNIO.js +2477 -0
  213. package/dist/docs-K4GBWRUX.js +342 -0
  214. package/dist/doctor-S5KZ2GTN.js +1138 -0
  215. package/dist/doctor-deep-2EJQSHIZ.js +130 -0
  216. package/dist/domain-loader-MB34FDPD.js +13 -0
  217. package/dist/eval-3D6M36N7.js +5220 -0
  218. package/dist/eval-inventory-SM3HNM47.js +260 -0
  219. package/dist/evals-FO6JEUCN.js +104 -0
  220. package/dist/evidence-6IYN52ET.js +262 -0
  221. package/dist/evidence-JVECPI3F.js +250 -0
  222. package/dist/evidence-XNVPPLVK.js +410 -0
  223. package/dist/evolve-TLPUDJDM.js +634 -0
  224. package/dist/extensions-ROZJ5X3J.js +311 -0
  225. package/dist/fleet-6RJWIOEO.js +284 -0
  226. package/dist/fleet-WKVBF5SZ.js +942 -0
  227. package/dist/fleet-commands-L6WFT7KZ.js +76 -0
  228. package/dist/fleet-decisions-BTQMWU5A.js +55 -0
  229. package/dist/fleet-graph-553DZ67Q.js +141 -0
  230. package/dist/fleet-inspect-236FZPRB.js +329 -0
  231. package/dist/fleet-new-CKUXP3CO.js +48 -0
  232. package/dist/fleet-preflight-NZQHABWO.js +95 -0
  233. package/dist/fleet-validate-7NLAE26R.js +96 -0
  234. package/dist/fleet-verify-E3RO6A5W.js +226 -0
  235. package/dist/fleet-view-KMZQY7YJ.js +144 -0
  236. package/dist/gui/client/assets/abnfDiagram-VCTEODGH-DPBWQwNn.js +1 -0
  237. package/dist/gui/client/assets/architecture-7GRP2DOG-D1w8FrFW.js +1 -0
  238. package/dist/gui/client/assets/architectureDiagram-5GKGNRK7-CVPgKd1-.js +36 -0
  239. package/dist/gui/client/assets/blockDiagram-I7D4REHJ-BLmnqkK5.js +129 -0
  240. package/dist/gui/client/assets/c4Diagram-7LVT6UL2-4AU9cfM7.js +38 -0
  241. package/dist/gui/client/assets/channel-DwFZ0m8S.js +1 -0
  242. package/dist/gui/client/assets/chunk-4HAMMTFA-EOWkKCav.js +62 -0
  243. package/dist/gui/client/assets/chunk-75Z2AOVW-CygeoIMl.js +2 -0
  244. package/dist/gui/client/assets/chunk-DU6HZSFF-s27fViLb.js +125 -0
  245. package/dist/gui/client/assets/chunk-F27PBJKO-BrHvwLsZ.js +1 -0
  246. package/dist/gui/client/assets/chunk-GMAD6QVW-DzPh-7jt.js +72 -0
  247. package/dist/gui/client/assets/chunk-GVQU2GXP-pIaQkIzm.js +1 -0
  248. package/dist/gui/client/assets/chunk-IMKFNOWR-BGJVE_Br.js +231 -0
  249. package/dist/gui/client/assets/chunk-L3NEJ4N5-B3YLuhww.js +1 -0
  250. package/dist/gui/client/assets/chunk-OSK3NFVY-BRj61HHU.js +10 -0
  251. package/dist/gui/client/assets/chunk-P2QGCYS3-Sno90KxP.js +1 -0
  252. package/dist/gui/client/assets/chunk-POPQ4Y6H-Cw8NTbxr.js +1 -0
  253. package/dist/gui/client/assets/chunk-PWAF6VOD-BIhHgz37.js +1 -0
  254. package/dist/gui/client/assets/chunk-SHT3W25Y-Cqv7npBj.js +168 -0
  255. package/dist/gui/client/assets/chunk-SVP7TREG-Hxzl6Dee.js +88 -0
  256. package/dist/gui/client/assets/chunk-TICWLB2K-CIFVyVP2.js +206 -0
  257. package/dist/gui/client/assets/classDiagram-ZZMXUADV-BJbAiI_w.js +1 -0
  258. package/dist/gui/client/assets/classDiagram-v2-VYDZK3BY-BJbAiI_w.js +1 -0
  259. package/dist/gui/client/assets/cynefin-OW5HDTMX-DecLWZ-y.js +1 -0
  260. package/dist/gui/client/assets/cynefinDiagram-5FMLGOSQ-CK-T2N-D.js +62 -0
  261. package/dist/gui/client/assets/dagre-GXQ25YYZ-C0dfg-OS.js +4 -0
  262. package/dist/gui/client/assets/diagram-S7CK7UJ4-EaJukVh-.js +30 -0
  263. package/dist/gui/client/assets/diagram-UQ7AKVKN-xcOucEtP.js +41 -0
  264. package/dist/gui/client/assets/diagram-VSXAHHWV-3AUJACMf.js +3 -0
  265. package/dist/gui/client/assets/diagram-VX7I27RA-TPknLqam.js +24 -0
  266. package/dist/gui/client/assets/diagram-Z3DM3KII-wa1q3YMF.js +24 -0
  267. package/dist/gui/client/assets/ebnfDiagram-PWID7BFC-JBCF2-s7.js +1 -0
  268. package/dist/gui/client/assets/erDiagram-RLTQ6QDP-CmXjXPc4.js +99 -0
  269. package/dist/gui/client/assets/eventmodeling-NTZA5JFV-D_1aJWYl.js +1 -0
  270. package/dist/gui/client/assets/flowDiagram-HODETNUW-BQtZlael.js +1 -0
  271. package/dist/gui/client/assets/framework-Bq-znqwW.js +9 -0
  272. package/dist/gui/client/assets/ganttDiagram-EL5Y4UJY-IPaL_kaa.js +292 -0
  273. package/dist/gui/client/assets/gitGraph-4MIJSDKK-Oy0Q3hoc.js +1 -0
  274. package/dist/gui/client/assets/gitGraphDiagram-WWUBYQGX-jtAuBmbc.js +106 -0
  275. package/dist/gui/client/assets/index-CuFuBEdL.css +1 -0
  276. package/dist/gui/client/assets/index-hMbEIsX0.js +87 -0
  277. package/dist/gui/client/assets/info-A6RAGUB7-UtEs1tv7.js +1 -0
  278. package/dist/gui/client/assets/infoDiagram-27XIBGKW-hlwR1pBW.js +2 -0
  279. package/dist/gui/client/assets/ishikawaDiagram-5VMMS53U-C6vMtfsd.js +70 -0
  280. package/dist/gui/client/assets/journeyDiagram-3NMN7TZE-EAwAl_PS.js +139 -0
  281. package/dist/gui/client/assets/kanban-definition-UXKFOSKX-CQOhRKHW.js +89 -0
  282. package/dist/gui/client/assets/line-DbcwGZTW.js +1 -0
  283. package/dist/gui/client/assets/mermaid-parser.core-C2QfVcHd.js +7 -0
  284. package/dist/gui/client/assets/mermaid.core-N9qUTre1.js +44 -0
  285. package/dist/gui/client/assets/mindmap-definition-YA3MSWOX-BR_FL9gK.js +96 -0
  286. package/dist/gui/client/assets/packet-AYTQ26CC-CbBJ2oAa.js +1 -0
  287. package/dist/gui/client/assets/pegDiagram-XKGWAZYB-BruU0IHM.js +1 -0
  288. package/dist/gui/client/assets/pie-WAS4IAKB-BWdSng4H.js +1 -0
  289. package/dist/gui/client/assets/pieDiagram-E7YTZNPT-CR3ljgdU.js +39 -0
  290. package/dist/gui/client/assets/quadrantDiagram-AXDQQJYC-C-boKslr.js +7 -0
  291. package/dist/gui/client/assets/radar-RG4KPBEZ-CGlOnAKG.js +1 -0
  292. package/dist/gui/client/assets/railroad-74A4TZTK-CDvuAlyC.js +1 -0
  293. package/dist/gui/client/assets/railroad-abnf-HS5TGJTU-CQUA9crC.js +1 -0
  294. package/dist/gui/client/assets/railroad-ebnf-LZEXJU2U-CD857gxq.js +1 -0
  295. package/dist/gui/client/assets/railroad-peg-WCYAUIDC-DUV4k35E.js +1 -0
  296. package/dist/gui/client/assets/railroadDiagram-O6MQD6OU-DMR4LXmA.js +1 -0
  297. package/dist/gui/client/assets/requirementDiagram-BXWQKSXE-DVltaF6c.js +84 -0
  298. package/dist/gui/client/assets/sankeyDiagram-P5KCCOFB-CHdNz472.js +40 -0
  299. package/dist/gui/client/assets/sequenceDiagram-WJ2MYXX4-DaMafIty.js +162 -0
  300. package/dist/gui/client/assets/stateDiagram-D77RDMKH-CEbBHqn3.js +1 -0
  301. package/dist/gui/client/assets/stateDiagram-v2-MP3YSRHH-B3JgDdFg.js +1 -0
  302. package/dist/gui/client/assets/swimlanes-42K2YHIH-BlPHndnJ.js +1 -0
  303. package/dist/gui/client/assets/swimlanesDiagram-VR7AAH4N-BPabHwsZ.js +8 -0
  304. package/dist/gui/client/assets/timeline-definition-24CTP7MA-E4Y1lPBI.js +120 -0
  305. package/dist/gui/client/assets/treeView-Q6P3EWNA-DrY0uhTN.js +1 -0
  306. package/dist/gui/client/assets/treemap-WGGIJYW6-CVotnLHf.js +1 -0
  307. package/dist/gui/client/assets/vennDiagram-4TSXK5OY-DJNrLIOF.js +34 -0
  308. package/dist/gui/client/assets/wardley-WFR3VGLG-ClOpAp5S.js +1 -0
  309. package/dist/gui/client/assets/wardleyDiagram-VM6X3IG4-qhMoKOXc.js +78 -0
  310. package/dist/gui/client/assets/xychartDiagram-S5SC5T6Z-CTuXoo9R.js +7 -0
  311. package/dist/gui/client/index.html +6 -0
  312. package/dist/gui/ops-worker.js +167 -0
  313. package/dist/gui/reads-worker.js +473 -0
  314. package/dist/gui/server.js +9780 -0
  315. package/dist/gui-QJS7XQMV.js +16 -0
  316. package/dist/init-DV5B6HQG.js +354 -0
  317. package/dist/install-6C45YXFP.js +19 -0
  318. package/dist/install-O7NSRU2W.js +13 -0
  319. package/dist/interactive-OXGYZYAS.js +22381 -0
  320. package/dist/interop-J7UOBOSF.js +254 -0
  321. package/dist/inventory-OEGIL6PY.js +144 -0
  322. package/dist/library-B3UPGY4V.js +83 -0
  323. package/dist/library-MXQA5DLT.js +309 -0
  324. package/dist/library-ROZAMUIL.js +496 -0
  325. package/dist/library-import-2LTWOVBD.js +190 -0
  326. package/dist/library-inventory-LJ3XHLWO.js +60 -0
  327. package/dist/library-validation-DARHHUNW.js +46 -0
  328. package/dist/mcp-2GSPYQ54.js +28 -0
  329. package/dist/memory-J3STUUIK.js +537 -0
  330. package/dist/models-Y3GMFJ2V.js +314 -0
  331. package/dist/monitor-LHNH577J.js +811 -0
  332. package/dist/orchestrator-DTAPXULA.js +12117 -0
  333. package/dist/panes-A743ONZ5.js +103 -0
  334. package/dist/panes-CTNO57ZY.js +76 -0
  335. package/dist/paths-3SBYJQDP.js +68 -0
  336. package/dist/preload-OJBMAIXF.js +140 -0
  337. package/dist/providers-CMETPZNS.js +232 -0
  338. package/dist/registry-37T4U6X2.js +15 -0
  339. package/dist/reset-O7EUCYWO.js +346 -0
  340. package/dist/resources-FY6XYFN2.js +189 -0
  341. package/dist/run-H64MEVTA.js +1067 -0
  342. package/dist/run-script-PQ5NRU3X.js +42 -0
  343. package/dist/settings-SNIQNXCW.js +73 -0
  344. package/dist/settings-controls-X6GMCPVG.js +202 -0
  345. package/dist/share-CAFMMQLM.js +299 -0
  346. package/dist/skills-ERKQUC7L.js +114 -0
  347. package/dist/skills-eval-CQ23MYQK.js +1099 -0
  348. package/dist/skills-inventory-TVUYJDVN.js +142 -0
  349. package/dist/slash-commands-ROG3KIFJ.js +107 -0
  350. package/dist/startup-background-KDWCQMWT.js +247 -0
  351. package/dist/steer-KKYXJSH4.js +77 -0
  352. package/dist/support-M3RCUUEL.js +40 -0
  353. package/dist/system-ZDW44ZGX.js +142 -0
  354. package/dist/target-runtimes-PWA22WVW.js +73 -0
  355. package/dist/targets-AJWA6E7Z.js +1207 -0
  356. package/dist/tasks-6L2JJRC5.js +39 -0
  357. package/dist/terminal-lease-YFUSDPAD.js +432 -0
  358. package/dist/tools-5XJUABRD.js +30 -0
  359. package/dist/trace-LA5MVR4Y.js +527 -0
  360. package/dist/tree-sitter-TQW3Y52T.js +4673 -0
  361. package/dist/tui-primitives-IUCVWLH5.js +19 -0
  362. package/dist/uninstall-SAWGGXAB.js +448 -0
  363. package/dist/upgrade-HSNSVTZG.js +300 -0
  364. package/dist/usage-XSILDHKF.js +1083 -0
  365. package/dist/verifiers-ECA5GIHL.js +633 -0
  366. package/dist/verify-R6QQCCEB.js +31 -0
  367. package/dist/version-PLZYB5KW.js +22 -0
  368. package/dist/web-fetch-PVZNMBOB.js +803 -0
  369. package/dist/wiki-generate-RP22WP5K.js +647 -0
  370. package/dist/with-panes-W3PAZPRF.js +629 -0
  371. package/dist/worker/entry.js +324 -284
  372. package/dist/workspace-check-3764ZKC2.js +83 -0
  373. package/docs/README.md +26 -10
  374. package/docs/architecture/acp.md +179 -12
  375. package/docs/architecture/artifact-placement.md +1 -1
  376. package/docs/architecture/capacity-and-scheduling.md +7 -8
  377. package/docs/architecture/context-engine.md +350 -95
  378. package/docs/architecture/model-catalog.md +18 -11
  379. package/docs/architecture/observability.md +1 -1
  380. package/docs/architecture/pi-boundary.md +59 -6
  381. package/docs/architecture/prompt-envelope-and-tools.md +147 -39
  382. package/docs/architecture/provider-adapter-cookbook.md +2 -2
  383. package/docs/architecture/safety-model.md +18 -4
  384. package/docs/architecture/trace-store.md +2 -2
  385. package/docs/architecture/tui-design.md +41 -81
  386. package/docs/architecture/worker-dispatch-mechanics.md +9 -1
  387. package/docs/gui/README.md +69 -0
  388. package/docs/gui/boundary-doctrine.md +104 -0
  389. package/docs/gui/chat-rendering-spec.md +1440 -0
  390. package/docs/gui/cli-surface-routing.md +148 -0
  391. package/docs/gui/delivery-order.md +53 -0
  392. package/docs/gui/event-bus-coverage.md +103 -0
  393. package/docs/gui/inspector-presentation.md +71 -0
  394. package/docs/gui/parity/01-cli-surface.md +74 -0
  395. package/docs/gui/parity/02-slash-and-surfaces.md +110 -0
  396. package/docs/gui/parity/03-domains-and-plan.md +69 -0
  397. package/docs/gui/performance-baseline.md +76 -0
  398. package/docs/gui/settings-write-surface.md +267 -0
  399. package/docs/gui/workflow-coverage.md +64 -0
  400. package/docs/guide/built-in-agents.md +1 -1
  401. package/docs/guide/commands-and-modes.md +256 -99
  402. package/docs/guide/configuration-and-targets.md +485 -124
  403. package/docs/guide/configuration-reference.md +165 -82
  404. package/docs/guide/doctor.md +127 -0
  405. package/docs/guide/environment-variables.md +1 -1
  406. package/docs/guide/exit-codes-and-output.md +3 -1
  407. package/docs/guide/extensions-and-sharing.md +3 -14
  408. package/docs/guide/fleet-dispatch.md +231 -45
  409. package/docs/guide/glossary.md +1 -1
  410. package/docs/guide/installation-and-lifecycle.md +27 -16
  411. package/docs/guide/interop.md +2 -2
  412. package/docs/guide/proactive-memory.md +154 -68
  413. package/docs/guide/resource-library.md +4 -0
  414. package/docs/guide/skills-marketplace.md +8 -4
  415. package/docs/guide/slurm.md +88 -0
  416. package/docs/guide/tool-usage.md +134 -11
  417. package/docs/guide/troubleshooting.md +4 -2
  418. package/docs/process/battletest-2026-09-20-fixes.md +161 -0
  419. package/docs/process/configure-tree-proposal.md +637 -0
  420. package/docs/process/documentation-coverage.md +8 -0
  421. package/docs/process/documentation-guide.md +18 -1
  422. package/docs/process/eval-runner.md +58 -14
  423. package/docs/process/performance-methodology.md +11 -3
  424. package/docs/process/release-cut-checklist.md +29 -3
  425. package/docs/process/tool-audit-v0.4.9.md +3 -0
  426. package/examples/extensions/README.md +1 -3
  427. package/examples/extensions/lab-status/clio-coder-extension.json +1 -1
  428. package/examples/extensions/measurements/clio-coder-extension.json +1 -1
  429. package/library/registry.yaml +30 -5
  430. package/library/skills/git/fix-issue/SKILL.md +2 -1
  431. package/library/skills/git/fix-issue/plugin.json +1 -1
  432. package/library/skills/git/ship/SKILL.md +2 -1
  433. package/library/skills/git/ship/plugin.json +1 -1
  434. package/library/skills/meta/clio-coder-test/SKILL.md +5 -6
  435. package/library/skills/meta/clio-coder-test/evals.md +2 -2
  436. package/library/skills/meta/clio-coder-test/references/test-map.md +2 -2
  437. package/library/skills/registry.yaml +9 -5
  438. package/library/skills/research/slurm-jobs/SKILL.md +110 -0
  439. package/library/skills/research/slurm-jobs/evals.md +39 -0
  440. package/library/skills/research/slurm-jobs/plugin.json +23 -0
  441. package/library/skills/skill-marketplace.json +18 -2
  442. package/package.json +15 -10
  443. package/src/cli/args.ts +59 -0
  444. package/src/cli/argv.ts +7 -0
  445. package/src/cli/clio.ts +9 -1
  446. package/src/cli/configure-controls.ts +136 -0
  447. package/src/cli/configure-onboarding.ts +24 -7
  448. package/src/cli/configure-quick.ts +32 -7
  449. package/src/cli/configure-target.ts +11 -1
  450. package/src/cli/configure.ts +253 -256
  451. package/src/cli/docs-server.ts +290 -0
  452. package/src/cli/docs.ts +60 -15
  453. package/src/cli/doctor-deep.ts +126 -0
  454. package/src/cli/doctor-hpc.ts +122 -0
  455. package/src/cli/doctor-slurm.ts +130 -0
  456. package/src/cli/doctor-task-worktrees.ts +88 -0
  457. package/src/cli/doctor.ts +165 -16
  458. package/src/cli/fleet-verify.ts +3 -2
  459. package/src/cli/gui.ts +111 -0
  460. package/src/cli/index.ts +14 -4
  461. package/src/cli/library.ts +2 -7
  462. package/src/cli/modes/json-stream.ts +4 -2
  463. package/src/cli/modes/print.ts +252 -25
  464. package/src/cli/run.ts +199 -71
  465. package/src/cli/skills.ts +25 -7
  466. package/src/cli/targets.ts +87 -9
  467. package/src/cli/uninstall.ts +28 -8
  468. package/src/cli/usage.ts +2 -1
  469. package/src/cli/workspace-check.ts +71 -0
  470. package/src/core/bash-exec.ts +8 -2
  471. package/src/core/bus-events.ts +32 -3
  472. package/src/core/cache-telemetry.ts +3 -2
  473. package/src/core/compile-cache.ts +11 -1
  474. package/src/core/config.ts +59 -6
  475. package/src/core/defaults.ts +27 -5
  476. package/src/core/diagnostics.ts +25 -0
  477. package/src/core/event-bus.ts +2 -1
  478. package/src/core/gateway-routing.ts +10 -3
  479. package/src/core/git-commit-attribution.ts +2 -1
  480. package/src/core/naming-compat.ts +6 -4
  481. package/src/core/package-root.ts +0 -9
  482. package/src/core/path-canonical.ts +143 -24
  483. package/src/core/residency-target-key.ts +2 -6
  484. package/src/core/run-overrides.ts +1 -1
  485. package/src/core/settings-awareness.ts +108 -0
  486. package/src/core/settings-controls.ts +673 -0
  487. package/src/core/settings-navigation.ts +116 -0
  488. package/src/core/theme-token-hex.ts +19 -9
  489. package/src/core/turn-constraints.ts +52 -0
  490. package/src/domains/agents/builtins/scout.md +7 -17
  491. package/src/domains/agents/catalog.ts +5 -1
  492. package/src/domains/agents/extension.ts +2 -1
  493. package/src/domains/agents/registry.ts +4 -3
  494. package/src/domains/agents/result-contract.ts +132 -1
  495. package/src/domains/config/classify.ts +11 -7
  496. package/src/domains/config/extension.ts +5 -1
  497. package/src/domains/config/keybindings.ts +2 -2
  498. package/src/domains/context/codewiki/coordinator.ts +10 -0
  499. package/src/domains/context/worker/snapshot.ts +6 -3
  500. package/src/domains/dispatch/active-route-planner.ts +2 -0
  501. package/src/domains/dispatch/agent-candidates.ts +5 -1
  502. package/src/domains/dispatch/capability-match.ts +1 -1
  503. package/src/domains/dispatch/contract.ts +28 -0
  504. package/src/domains/dispatch/event-pump.ts +37 -3
  505. package/src/domains/dispatch/extension.ts +391 -48
  506. package/src/domains/dispatch/failure-classification.ts +37 -2
  507. package/src/domains/dispatch/receipt-integrity.ts +3 -0
  508. package/src/domains/dispatch/run-identity.ts +10 -3
  509. package/src/domains/dispatch/target-breaker.ts +163 -0
  510. package/src/domains/dispatch/types.ts +29 -2
  511. package/src/domains/dispatch/worker-model-loads.ts +66 -0
  512. package/src/domains/dispatch/worker-protocol.ts +20 -1
  513. package/src/domains/dispatch/worker-spawn.ts +28 -2
  514. package/src/domains/eval/artifacts/redact.ts +9 -0
  515. package/src/domains/eval/metrics/noop.ts +61 -0
  516. package/src/domains/eval/reports/junit.ts +5 -1
  517. package/src/domains/eval/reports/text.ts +7 -0
  518. package/src/domains/eval/runners/clio-run.ts +19 -8
  519. package/src/domains/eval/runners/external-command.ts +29 -4
  520. package/src/domains/eval/schema/adapter.ts +6 -2
  521. package/src/domains/eval/schema/suite.ts +2 -0
  522. package/src/domains/eval/schema/validate.ts +3 -0
  523. package/src/domains/eval/suites/run.ts +167 -26
  524. package/src/domains/evidence/detail.ts +3 -2
  525. package/src/domains/extensions/operator-runtime.ts +11 -4
  526. package/src/domains/gateway/mcp/client.ts +1 -1
  527. package/src/domains/lifecycle/doctor.ts +42 -26
  528. package/src/domains/lifecycle/migrations/2026-09-18-ollama-runtime-id.ts +38 -0
  529. package/src/domains/lifecycle/migrations/index.ts +2 -0
  530. package/src/domains/middleware/demo-guidance.ts +36 -0
  531. package/src/domains/middleware/dispatch-nudge.ts +1 -1
  532. package/src/domains/middleware/memory-intervention.ts +51 -4
  533. package/src/domains/middleware/runtime.ts +5 -4
  534. package/src/domains/middleware/skills-reminder.ts +29 -52
  535. package/src/domains/middleware/task-nudge.ts +1 -0
  536. package/src/domains/middleware/watchdog.ts +4 -0
  537. package/src/domains/observability/extension.ts +2 -1
  538. package/src/domains/observability/out-of-turn-usage.ts +3 -2
  539. package/src/domains/observability/projection.ts +3 -2
  540. package/src/domains/observability/worker-progress.ts +48 -0
  541. package/src/domains/prompts/compiler.ts +148 -52
  542. package/src/domains/prompts/contract.ts +3 -3
  543. package/src/domains/prompts/demo-guidance.ts +8 -0
  544. package/src/domains/prompts/extension.ts +12 -7
  545. package/src/domains/prompts/fragments/identity/clio.md +2 -1
  546. package/src/domains/prompts/fragments/identity/docs-routing.md +2 -0
  547. package/src/domains/prompts/fragments/identity/self-awareness.md +4 -0
  548. package/src/domains/prompts/fragments/operating/contract.md +16 -7
  549. package/src/domains/prompts/fragments/operating/delegation.md +29 -13
  550. package/src/domains/prompts/fragments/operating/skills.md +18 -10
  551. package/src/domains/prompts/fragments/operating/worker.md +2 -0
  552. package/src/domains/providers/cache-deployment.ts +45 -2
  553. package/src/domains/providers/contract.ts +52 -11
  554. package/src/domains/providers/extension.ts +230 -53
  555. package/src/domains/providers/model-discovery.ts +22 -8
  556. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +5 -7
  557. package/src/domains/providers/plugins.ts +3 -4
  558. package/src/domains/providers/probe/fingerprint.ts +2 -2
  559. package/src/domains/providers/probe/reasoning.ts +9 -16
  560. package/src/domains/providers/probe/tool-call.ts +236 -0
  561. package/src/domains/providers/registry.ts +51 -8
  562. package/src/domains/providers/runtime-resolution.ts +60 -12
  563. package/src/domains/providers/runtimes/boot-manifest.ts +1 -1
  564. package/src/domains/providers/runtimes/builtins.ts +2 -2
  565. package/src/domains/providers/runtimes/common/lmstudio-http.ts +57 -41
  566. package/src/domains/providers/runtimes/common/local-synth.ts +3 -1
  567. package/src/domains/providers/runtimes/common/ollama-model-ids.ts +11 -0
  568. package/src/domains/providers/runtimes/common/probe-helpers.ts +53 -0
  569. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +3 -1
  570. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +7 -13
  571. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +7 -17
  572. package/src/domains/providers/runtimes/local-native/llamacpp.ts +1 -0
  573. package/src/domains/providers/runtimes/local-native/ollama.ts +211 -0
  574. package/src/domains/providers/runtimes/protocol/litellm.ts +77 -65
  575. package/src/domains/providers/support.ts +1 -1
  576. package/src/domains/providers/types/local-model-quirks.ts +2 -3
  577. package/src/domains/providers/types/runtime-descriptor.ts +23 -3
  578. package/src/domains/providers/types/target-descriptor.ts +15 -3
  579. package/src/domains/resources/collision.ts +7 -2
  580. package/src/domains/resources/index.ts +1 -0
  581. package/src/domains/resources/library-actions.ts +4 -2
  582. package/src/domains/resources/library-inventory.ts +6 -2
  583. package/src/domains/resources/prompts/loader.ts +20 -7
  584. package/src/domains/resources/skills/availability.ts +56 -0
  585. package/src/domains/resources/skills/loader.ts +20 -9
  586. package/src/domains/safety/action-classifier.ts +282 -31
  587. package/src/domains/safety/audit.ts +2 -1
  588. package/src/domains/safety/autonomy.ts +54 -11
  589. package/src/domains/safety/decision-presentation.ts +17 -4
  590. package/src/domains/safety/finish-contract-registration.ts +25 -1
  591. package/src/domains/safety/finish-contract.ts +20 -5
  592. package/src/domains/safety/path-policy.ts +6 -2
  593. package/src/domains/safety/policy-engine.ts +168 -48
  594. package/src/domains/safety/protected-artifacts.ts +527 -16
  595. package/src/domains/safety/read-scope.ts +120 -0
  596. package/src/domains/safety/skill-authority.ts +52 -16
  597. package/src/domains/scheduling/cluster.ts +14 -3
  598. package/src/domains/scheduling/contract.ts +7 -0
  599. package/src/domains/scheduling/extension.ts +20 -9
  600. package/src/domains/scheduling/local-capacity.ts +160 -0
  601. package/src/domains/session/context-accounting.ts +44 -31
  602. package/src/domains/session/context-ledger.ts +10 -3
  603. package/src/domains/session/entries.ts +4 -0
  604. package/src/domains/session/history.ts +1 -1
  605. package/src/domains/session/prompt-cache.ts +1 -0
  606. package/src/domains/session/prompt-manifest.ts +3 -1
  607. package/src/domains/session/retry.ts +4 -6
  608. package/src/domains/session/task-board.ts +19 -4
  609. package/src/domains/session/tree/preview.ts +3 -2
  610. package/src/engine/acp/commands.ts +653 -0
  611. package/src/engine/acp/server.ts +639 -20
  612. package/src/engine/acp/tool-mediator.ts +30 -7
  613. package/src/engine/acp/types.ts +58 -0
  614. package/src/engine/agent.ts +55 -10
  615. package/src/engine/ai.ts +11 -2
  616. package/src/engine/api-registry.ts +5 -4
  617. package/src/engine/apis/degraded-inference.ts +243 -0
  618. package/src/engine/apis/llamacpp-residency.ts +50 -6
  619. package/src/engine/apis/lmstudio-residency.ts +3 -5
  620. package/src/engine/apis/lmstudio.ts +137 -31
  621. package/src/engine/apis/ollama-http.ts +118 -0
  622. package/src/engine/apis/ollama-native.ts +216 -97
  623. package/src/engine/apis/openai-completions.ts +191 -189
  624. package/src/engine/apis/output-budget.ts +3 -1
  625. package/src/engine/apis/residency-lock.ts +2 -1
  626. package/src/engine/apis/residency.ts +339 -89
  627. package/src/engine/apis/sampling-overrides.ts +23 -2
  628. package/src/engine/apis/types.ts +1 -2
  629. package/src/engine/claude/tool-safety.ts +30 -5
  630. package/src/engine/context.ts +13 -0
  631. package/src/engine/env-api-keys.ts +2 -1
  632. package/src/engine/gemma-channel-filter.ts +3 -2
  633. package/src/engine/instrumented-tui.ts +25 -0
  634. package/src/engine/loop-guard.ts +172 -6
  635. package/src/engine/pi-mono-names.ts +16 -0
  636. package/src/engine/prewarm.ts +44 -15
  637. package/src/engine/provider-payload.ts +52 -14
  638. package/src/engine/session.ts +4 -2
  639. package/src/engine/worker-events.ts +9 -1
  640. package/src/engine/worker-runtime.ts +269 -42
  641. package/src/engine/worker-tools.ts +8 -3
  642. package/src/entry/boot-options.ts +23 -0
  643. package/src/entry/orchestrator.ts +207 -36
  644. package/src/interactive/assistant-generation-timing.ts +52 -0
  645. package/src/interactive/chat-loop-messages.ts +4 -1
  646. package/src/interactive/chat-loop.ts +59 -9
  647. package/src/interactive/chat-panel.ts +10 -1
  648. package/src/interactive/clio-editor.ts +51 -79
  649. package/src/interactive/context-meter.ts +1 -0
  650. package/src/interactive/context-overlay.ts +21 -8
  651. package/src/interactive/cost-overlay.ts +1 -1
  652. package/src/interactive/dispatch-board.ts +39 -8
  653. package/src/interactive/editor-bash.ts +0 -34
  654. package/src/interactive/editor-rails.ts +43 -0
  655. package/src/interactive/editor-submit.ts +34 -2
  656. package/src/interactive/footer/dashboard.ts +67 -38
  657. package/src/interactive/footer/demo-hints.ts +40 -0
  658. package/src/interactive/footer/key-hints.ts +21 -0
  659. package/src/interactive/footer/notifications.ts +1 -1
  660. package/src/interactive/footer/pages.ts +486 -0
  661. package/src/interactive/footer/system-metrics.ts +147 -0
  662. package/src/interactive/footer/widgets.ts +158 -63
  663. package/src/interactive/footer-panel.ts +29 -7
  664. package/src/interactive/interactive-application.ts +109 -21
  665. package/src/interactive/interactive-event-projection.ts +6 -2
  666. package/src/interactive/interactive-presentation.ts +25 -29
  667. package/src/interactive/interactive-slash-runtime.ts +32 -18
  668. package/src/interactive/interactive-subscriptions.ts +25 -5
  669. package/src/interactive/interactive-tickers.ts +21 -5
  670. package/src/interactive/keybinding-manager.ts +9 -0
  671. package/src/interactive/overlay-frame.ts +29 -7
  672. package/src/interactive/overlay-lifecycle.ts +5 -3
  673. package/src/interactive/overlay-model-selectors.ts +4 -0
  674. package/src/interactive/overlay-permission-lifecycle.ts +6 -5
  675. package/src/interactive/overlays/ask-user.ts +103 -110
  676. package/src/interactive/overlays/help-reference.ts +1 -0
  677. package/src/interactive/overlays/message-picker.ts +3 -29
  678. package/src/interactive/overlays/session-selector.ts +3 -2
  679. package/src/interactive/overlays/settings-sections.ts +2 -30
  680. package/src/interactive/overlays/settings.ts +310 -607
  681. package/src/interactive/permission-hint.ts +3 -3
  682. package/src/interactive/permission-overlay.ts +45 -27
  683. package/src/interactive/renderers/doctor-report.ts +43 -0
  684. package/src/interactive/renderers/tool-execution.ts +87 -62
  685. package/src/interactive/renderers/worker-entry.ts +76 -3
  686. package/src/interactive/side-question.ts +3 -1
  687. package/src/interactive/slash-commands.ts +78 -23
  688. package/src/interactive/startup-background.ts +131 -0
  689. package/src/interactive/startup-diagnostics.ts +16 -0
  690. package/src/interactive/status/state-machine.ts +16 -3
  691. package/src/interactive/status/types.ts +2 -0
  692. package/src/interactive/status/verbs.ts +1 -1
  693. package/src/interactive/terminal-lease.ts +26 -22
  694. package/src/interactive/theme/components.ts +1 -1
  695. package/src/interactive/theme/rules.ts +1 -1
  696. package/src/interactive/theme/tokens.ts +16 -10
  697. package/src/interactive/transcript-detail.ts +4 -0
  698. package/src/interactive/turn-context.ts +56 -20
  699. package/src/interactive/turn-middleware.ts +57 -9
  700. package/src/interactive/turn-prewarm.ts +121 -18
  701. package/src/interactive/turn-recovery.ts +10 -8
  702. package/src/interactive/turn-runtime.ts +74 -29
  703. package/src/interactive/turn-state.ts +3 -0
  704. package/src/interactive/welcome-art.ts +36 -0
  705. package/src/interactive/welcome-dashboard.ts +209 -49
  706. package/src/interactive/worker-replay.ts +4 -0
  707. package/src/interactive/worker-stream.ts +17 -2
  708. package/src/tools/agent-tools.ts +22 -1
  709. package/src/tools/builtin-tool-catalog.ts +2 -2
  710. package/src/tools/codewiki/code-nav.ts +1 -1
  711. package/src/tools/codewiki/shared.ts +39 -1
  712. package/src/tools/compete-worktrees.ts +8 -91
  713. package/src/tools/context/docs-engine.ts +44 -12
  714. package/src/tools/context/index.ts +126 -22
  715. package/src/tools/context/library.ts +1 -1
  716. package/src/tools/context/surface.ts +12 -7
  717. package/src/tools/core-bootstrap.ts +3 -0
  718. package/src/tools/dispatch-runner.ts +18 -0
  719. package/src/tools/dispatch-schema.ts +187 -206
  720. package/src/tools/edit.ts +46 -42
  721. package/src/tools/file-mutation-queue.ts +25 -26
  722. package/src/tools/gateway/clio-context-surface.ts +1 -1
  723. package/src/tools/gateway/index.ts +7 -3
  724. package/src/tools/gateway/mcp-capabilities.ts +5 -3
  725. package/src/tools/grep.ts +14 -2
  726. package/src/tools/ls.ts +1 -4
  727. package/src/tools/monitor.ts +14 -1
  728. package/src/tools/observation.ts +1 -3
  729. package/src/tools/path-utils.ts +51 -18
  730. package/src/tools/process-lease.ts +99 -0
  731. package/src/tools/read.ts +1 -1
  732. package/src/tools/registry.ts +71 -9
  733. package/src/tools/task-worktree.ts +296 -17
  734. package/src/tools/tasks.ts +29 -7
  735. package/src/tools/worker-evidence.ts +60 -1
  736. package/src/tools/worktree-root.ts +252 -0
  737. package/src/tools/write.ts +34 -30
  738. package/src/worker/entry.ts +18 -1
  739. package/src/worker/protocol.ts +54 -1
  740. package/src/worker/spec-contract.ts +22 -2
  741. package/dist/acp-ZWZCPS2A.js +0 -130
  742. package/dist/agents-LYSOWZUE.js +0 -150
  743. package/dist/auth-WBQGKWQ5.js +0 -551
  744. package/dist/background-BUMOBAQN.js +0 -37
  745. package/dist/builtins-ODRJOEDI.js +0 -22
  746. package/dist/chunk-2DRRZ57Q.js +0 -571
  747. package/dist/chunk-2JBZYUPY.js +0 -105
  748. package/dist/chunk-2VBWFXYE.js +0 -198
  749. package/dist/chunk-2X2R3UTH.js +0 -1018
  750. package/dist/chunk-32KJPXAM.js +0 -75
  751. package/dist/chunk-37LW32LZ.js +0 -32
  752. package/dist/chunk-3A3CUMKA.js +0 -54
  753. package/dist/chunk-3AND2EFU.js +0 -215
  754. package/dist/chunk-3RDHGNU7.js +0 -647
  755. package/dist/chunk-3SUDBGEI.js +0 -1323
  756. package/dist/chunk-3TQN67I2.js +0 -396
  757. package/dist/chunk-3U4BL2EV.js +0 -103
  758. package/dist/chunk-3UQADNG2.js +0 -302
  759. package/dist/chunk-434LRQ6Z.js +0 -13441
  760. package/dist/chunk-4ATBOFRP.js +0 -7802
  761. package/dist/chunk-4DNL43EZ.js +0 -139
  762. package/dist/chunk-4HFJKRGZ.js +0 -5250
  763. package/dist/chunk-555E2WVV.js +0 -322
  764. package/dist/chunk-5GZICIYO.js +0 -462
  765. package/dist/chunk-5PHVPU4G.js +0 -160
  766. package/dist/chunk-5RTEFNBP.js +0 -197
  767. package/dist/chunk-64XJW7NT.js +0 -380
  768. package/dist/chunk-6TKOFFGE.js +0 -1058
  769. package/dist/chunk-6UJ7RDI7.js +0 -1143
  770. package/dist/chunk-7FBCRWVT.js +0 -1801
  771. package/dist/chunk-7JSOSVLP.js +0 -283
  772. package/dist/chunk-7N3OLLSL.js +0 -637
  773. package/dist/chunk-7QQRPB2E.js +0 -915
  774. package/dist/chunk-A6DULIMH.js +0 -986
  775. package/dist/chunk-AB3QXXBC.js +0 -123
  776. package/dist/chunk-ACCECAH4.js +0 -49
  777. package/dist/chunk-AM6CEP2K.js +0 -2120
  778. package/dist/chunk-AUHVBIDW.js +0 -19
  779. package/dist/chunk-AY4XE6GN.js +0 -665
  780. package/dist/chunk-BBA2TAWV.js +0 -667
  781. package/dist/chunk-BFPHMSK7.js +0 -169
  782. package/dist/chunk-BMNVVKEW.js +0 -604
  783. package/dist/chunk-CKK25WN3.js +0 -72
  784. package/dist/chunk-CTGZCEI6.js +0 -33
  785. package/dist/chunk-DIAJYJYG.js +0 -446
  786. package/dist/chunk-DVNAPPXU.js +0 -27
  787. package/dist/chunk-DXVMLM3Z.js +0 -92
  788. package/dist/chunk-E3LEPLQ2.js +0 -68
  789. package/dist/chunk-EHZRAB4U.js +0 -63
  790. package/dist/chunk-EM2DIQAJ.js +0 -179
  791. package/dist/chunk-EM2WNQS2.js +0 -93
  792. package/dist/chunk-ETF4ROKH.js +0 -595
  793. package/dist/chunk-F2YM3JY4.js +0 -22513
  794. package/dist/chunk-FEBQWHJT.js +0 -1023
  795. package/dist/chunk-FPS4R2RN.js +0 -1975
  796. package/dist/chunk-GD55RTIW.js +0 -33
  797. package/dist/chunk-GJDRMBDI.js +0 -573
  798. package/dist/chunk-GREYLTZ5.js +0 -658
  799. package/dist/chunk-H2WSCZZT.js +0 -238
  800. package/dist/chunk-H6IUCY6Q.js +0 -117
  801. package/dist/chunk-H72DCH3E.js +0 -563
  802. package/dist/chunk-H7TXJR23.js +0 -705
  803. package/dist/chunk-HBJQQTKM.js +0 -40
  804. package/dist/chunk-HCVKSGNZ.js +0 -990
  805. package/dist/chunk-HVCAY2FH.js +0 -67
  806. package/dist/chunk-I47EJPYL.js +0 -1377
  807. package/dist/chunk-IALGWTLO.js +0 -36
  808. package/dist/chunk-IALZJE37.js +0 -1710
  809. package/dist/chunk-IC7JXLOM.js +0 -1577
  810. package/dist/chunk-IOSVTTCD.js +0 -108
  811. package/dist/chunk-IPTPMLA6.js +0 -475
  812. package/dist/chunk-IZZI3SKQ.js +0 -128
  813. package/dist/chunk-JABWPKFY.js +0 -27
  814. package/dist/chunk-JIYWMQZ5.js +0 -175
  815. package/dist/chunk-JKU34ACI.js +0 -693
  816. package/dist/chunk-JOBN2YQQ.js +0 -176
  817. package/dist/chunk-JOL2QRLE.js +0 -152
  818. package/dist/chunk-JTR3VSV3.js +0 -44
  819. package/dist/chunk-JU6MAMRJ.js +0 -362
  820. package/dist/chunk-JURMQWVJ.js +0 -15
  821. package/dist/chunk-K2BLQC5E.js +0 -262
  822. package/dist/chunk-K3XN4LZ4.js +0 -402
  823. package/dist/chunk-KIVFXGBM.js +0 -688
  824. package/dist/chunk-KKRXONXG.js +0 -43
  825. package/dist/chunk-KOAHT3N2.js +0 -395
  826. package/dist/chunk-KP5BPXR3.js +0 -73
  827. package/dist/chunk-KQ6IDQIB.js +0 -39
  828. package/dist/chunk-KRJQG47M.js +0 -1289
  829. package/dist/chunk-KW6OJ7IY.js +0 -221
  830. package/dist/chunk-L3NBWLSN.js +0 -314
  831. package/dist/chunk-L4RUTLRL.js +0 -59
  832. package/dist/chunk-LGTVWPRN.js +0 -47
  833. package/dist/chunk-LSQW6KZO.js +0 -200
  834. package/dist/chunk-LTR5QCLS.js +0 -446
  835. package/dist/chunk-LWJYOHT3.js +0 -165
  836. package/dist/chunk-M6YLF66Z.js +0 -2687
  837. package/dist/chunk-MJ4QEJVT.js +0 -185
  838. package/dist/chunk-MO65K5CH.js +0 -1148
  839. package/dist/chunk-MTOZEQHL.js +0 -637
  840. package/dist/chunk-MZDPF35R.js +0 -45
  841. package/dist/chunk-MZKYVIWW.js +0 -188
  842. package/dist/chunk-NBPA5QM6.js +0 -386
  843. package/dist/chunk-NMBEW4PP.js +0 -688
  844. package/dist/chunk-NPLLK3HO.js +0 -3610
  845. package/dist/chunk-NSYGPIVW.js +0 -39
  846. package/dist/chunk-NXTV5OI5.js +0 -1020
  847. package/dist/chunk-NYDG4QP4.js +0 -689
  848. package/dist/chunk-OA2GDACN.js +0 -146
  849. package/dist/chunk-PJI57EC6.js +0 -236
  850. package/dist/chunk-PJJBUGMR.js +0 -4484
  851. package/dist/chunk-PNJE7JPS.js +0 -50
  852. package/dist/chunk-PP23PZEV.js +0 -1347
  853. package/dist/chunk-PPIFDSBK.js +0 -409
  854. package/dist/chunk-PTFISXQO.js +0 -319
  855. package/dist/chunk-QB33Z5S7.js +0 -1865
  856. package/dist/chunk-QGNII5VC.js +0 -110
  857. package/dist/chunk-QH3ZTUOA.js +0 -113
  858. package/dist/chunk-QI72X67S.js +0 -481
  859. package/dist/chunk-QJMRYTCX.js +0 -56
  860. package/dist/chunk-QKHZZFKH.js +0 -98
  861. package/dist/chunk-RDKX2PME.js +0 -66
  862. package/dist/chunk-RL7LJYN4.js +0 -66
  863. package/dist/chunk-RPMNIFRY.js +0 -65
  864. package/dist/chunk-RQROVOV3.js +0 -670
  865. package/dist/chunk-S34A7BSP.js +0 -97
  866. package/dist/chunk-SJETVJHX.js +0 -119
  867. package/dist/chunk-SJMNU4ZS.js +0 -634
  868. package/dist/chunk-SL2RDHKO.js +0 -19
  869. package/dist/chunk-SLLG2G44.js +0 -85
  870. package/dist/chunk-SQAZN2V3.js +0 -2744
  871. package/dist/chunk-SQBT46OF.js +0 -814
  872. package/dist/chunk-SRCEQKQS.js +0 -165
  873. package/dist/chunk-TCUOGIL2.js +0 -52
  874. package/dist/chunk-TIWPKCVO.js +0 -42
  875. package/dist/chunk-U44YYLVV.js +0 -1529
  876. package/dist/chunk-UIU7MGZ3.js +0 -486
  877. package/dist/chunk-USBBEKHW.js +0 -177
  878. package/dist/chunk-VHKTOLEW.js +0 -1416
  879. package/dist/chunk-VPWGADBG.js +0 -3151
  880. package/dist/chunk-VQD7NH7Z.js +0 -356
  881. package/dist/chunk-VWFCAK34.js +0 -697
  882. package/dist/chunk-W5RM7YAH.js +0 -78
  883. package/dist/chunk-W72LLZAV.js +0 -243
  884. package/dist/chunk-WGRDABW7.js +0 -207
  885. package/dist/chunk-WWRV5RJI.js +0 -165
  886. package/dist/chunk-XCUDZQLX.js +0 -195
  887. package/dist/chunk-XFLSL7BT.js +0 -386
  888. package/dist/chunk-XJZEDCNT.js +0 -391
  889. package/dist/chunk-XLLEL3K7.js +0 -709
  890. package/dist/chunk-XNZWWDC3.js +0 -686
  891. package/dist/chunk-XRECG65F.js +0 -308
  892. package/dist/chunk-XTQ7MEJG.js +0 -457
  893. package/dist/chunk-XW2UZICE.js +0 -372
  894. package/dist/chunk-Y3M2T5RO.js +0 -891
  895. package/dist/chunk-YGDMBK7O.js +0 -567
  896. package/dist/chunk-YJCCMYYT.js +0 -125
  897. package/dist/chunk-YPQOPFP7.js +0 -797
  898. package/dist/chunk-YQYINEJI.js +0 -132
  899. package/dist/chunk-ZF6CV4WZ.js +0 -5614
  900. package/dist/chunk-ZKJU55MX.js +0 -326
  901. package/dist/chunk-ZKQ63XZ5.js +0 -1196
  902. package/dist/chunk-ZKVMDNAN.js +0 -962
  903. package/dist/chunk-ZST3FRCV.js +0 -132
  904. package/dist/clio-JUDCLNHC.js +0 -26
  905. package/dist/clio-context-tools-FT672MNZ.js +0 -136
  906. package/dist/code-nav-7OVCTP2Z.js +0 -688
  907. package/dist/compile-cache-WJEPUZEJ.js +0 -16
  908. package/dist/components-OZXZMDWU.js +0 -674
  909. package/dist/config-P3ZQVF63.js +0 -275
  910. package/dist/config-graph-GKAOBAS5.js +0 -160
  911. package/dist/configure-25LRYZJG.js +0 -86
  912. package/dist/context-72VQV7JX.js +0 -73
  913. package/dist/context-COWRWXP3.js +0 -286
  914. package/dist/context-WB3D474G.js +0 -344
  915. package/dist/context-clear-Y4LYMWC6.js +0 -192
  916. package/dist/context-index-W6A4V7OC.js +0 -120
  917. package/dist/context-map-DKL3QT6D.js +0 -555
  918. package/dist/context-working-set-TMZYVC7A.js +0 -1560
  919. package/dist/data-tool-KMBWKKWR.js +0 -2987
  920. package/dist/detail-4GLROGY5.js +0 -123
  921. package/dist/dispatch-runner-TR3LBP5P.js +0 -2446
  922. package/dist/docs-ZK777W2G.js +0 -101
  923. package/dist/doctor-WC4OV2OB.js +0 -814
  924. package/dist/eval-FUNWJNUJ.js +0 -5050
  925. package/dist/eval-inventory-CX24K2JT.js +0 -260
  926. package/dist/evals-L73EBHSU.js +0 -104
  927. package/dist/evidence-AVJ2RTHX.js +0 -392
  928. package/dist/evidence-P4NZOAK7.js +0 -233
  929. package/dist/evidence-Y55WKYHH.js +0 -246
  930. package/dist/evolve-MAWKRYWF.js +0 -617
  931. package/dist/extensions-PYQH3H47.js +0 -308
  932. package/dist/fleet-M4H2QBWT.js +0 -268
  933. package/dist/fleet-ULBXXRDR.js +0 -923
  934. package/dist/fleet-commands-7NNC4JZU.js +0 -76
  935. package/dist/fleet-decisions-EHEY7KPU.js +0 -52
  936. package/dist/fleet-graph-LQ2AHZT3.js +0 -136
  937. package/dist/fleet-inspect-5IGBIIYZ.js +0 -312
  938. package/dist/fleet-new-RCKGSRDV.js +0 -48
  939. package/dist/fleet-preflight-UTTNOKMG.js +0 -27
  940. package/dist/fleet-validate-YGILJKA6.js +0 -91
  941. package/dist/fleet-verify-AUWTCDKR.js +0 -210
  942. package/dist/fleet-view-TGUFCY5A.js +0 -127
  943. package/dist/init-GFN2Z7NF.js +0 -333
  944. package/dist/install-3RZDDP23.js +0 -13
  945. package/dist/install-6PIF6F6W.js +0 -19
  946. package/dist/interop-EF5JUWWK.js +0 -246
  947. package/dist/inventory-I6VJDDYF.js +0 -127
  948. package/dist/library-3J5IO2OJ.js +0 -75
  949. package/dist/library-IJTOFTDS.js +0 -307
  950. package/dist/library-Z3KZSHPE.js +0 -492
  951. package/dist/library-import-IMKFLDHX.js +0 -183
  952. package/dist/library-inventory-CQP5D6GU.js +0 -56
  953. package/dist/library-validation-33UTX7AI.js +0 -42
  954. package/dist/mcp-5FWZKUS6.js +0 -26
  955. package/dist/memory-36CWN67Y.js +0 -520
  956. package/dist/models-KQ6PQJJQ.js +0 -302
  957. package/dist/monitor-XX6ZD6KC.js +0 -785
  958. package/dist/orchestrator-SK6HDAOP.js +0 -42067
  959. package/dist/panes-L27QRXUH.js +0 -74
  960. package/dist/panes-LXZIWNOZ.js +0 -103
  961. package/dist/paths-7DJDU4P4.js +0 -67
  962. package/dist/preload-K2TDYI4Y.js +0 -124
  963. package/dist/registry-DESGAXWK.js +0 -11
  964. package/dist/reset-73VU3XNT.js +0 -345
  965. package/dist/resources-3BYJYVYL.js +0 -181
  966. package/dist/run-AR7PY6GW.js +0 -896
  967. package/dist/run-script-H2KUDIII.js +0 -41
  968. package/dist/settings-3VMBMWID.js +0 -72
  969. package/dist/share-HVWH4FPF.js +0 -293
  970. package/dist/skills-5TYEY75Q.js +0 -100
  971. package/dist/skills-eval-CK3MD63Z.js +0 -1083
  972. package/dist/skills-inventory-KSFYG3I6.js +0 -138
  973. package/dist/slash-commands-DMVHML7P.js +0 -98
  974. package/dist/steer-XCD6V3EW.js +0 -77
  975. package/dist/support-JAZL6VBR.js +0 -38
  976. package/dist/system-3TDQRMZZ.js +0 -116
  977. package/dist/targets-EZKHAYRN.js +0 -1117
  978. package/dist/tasks-SNEFHWYW.js +0 -36
  979. package/dist/terminal-lease-BNLFA4OF.js +0 -419
  980. package/dist/tools-7IM6BDCE.js +0 -28
  981. package/dist/trace-C3MBGD4S.js +0 -524
  982. package/dist/tree-sitter-AQUUOSYM.js +0 -4673
  983. package/dist/tui-primitives-36BY2774.js +0 -18
  984. package/dist/uninstall-WWLOSZ42.js +0 -432
  985. package/dist/upgrade-ETK2JNSJ.js +0 -297
  986. package/dist/usage-S2HOB7BZ.js +0 -1065
  987. package/dist/verifiers-QDTEVH7R.js +0 -632
  988. package/dist/verify-SUKUK6XM.js +0 -31
  989. package/dist/version-RFPKO6T7.js +0 -21
  990. package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +0 -1
  991. package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +0 -1
  992. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +0 -36
  993. package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +0 -129
  994. package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +0 -38
  995. package/dist/web/client/assets/channel-c4EeUUqA.js +0 -1
  996. package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +0 -62
  997. package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +0 -2
  998. package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +0 -125
  999. package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +0 -1
  1000. package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +0 -72
  1001. package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +0 -1
  1002. package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +0 -231
  1003. package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +0 -1
  1004. package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +0 -10
  1005. package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +0 -1
  1006. package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +0 -1
  1007. package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +0 -1
  1008. package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +0 -168
  1009. package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +0 -88
  1010. package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +0 -206
  1011. package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +0 -1
  1012. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +0 -1
  1013. package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +0 -1
  1014. package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +0 -62
  1015. package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +0 -4
  1016. package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +0 -30
  1017. package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +0 -41
  1018. package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +0 -3
  1019. package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +0 -24
  1020. package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +0 -24
  1021. package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +0 -1
  1022. package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +0 -99
  1023. package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +0 -1
  1024. package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +0 -1
  1025. package/dist/web/client/assets/framework-YGoR34M4.js +0 -9
  1026. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +0 -292
  1027. package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +0 -1
  1028. package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +0 -106
  1029. package/dist/web/client/assets/index-CVcy0FAn.js +0 -75
  1030. package/dist/web/client/assets/index-Dsi52apB.css +0 -1
  1031. package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +0 -1
  1032. package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +0 -2
  1033. package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +0 -70
  1034. package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +0 -139
  1035. package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +0 -89
  1036. package/dist/web/client/assets/line-BIDAcEtX.js +0 -1
  1037. package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +0 -7
  1038. package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +0 -44
  1039. package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +0 -96
  1040. package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +0 -1
  1041. package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +0 -1
  1042. package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +0 -1
  1043. package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +0 -39
  1044. package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +0 -7
  1045. package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +0 -1
  1046. package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +0 -1
  1047. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +0 -1
  1048. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +0 -1
  1049. package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +0 -1
  1050. package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +0 -1
  1051. package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +0 -84
  1052. package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +0 -40
  1053. package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +0 -162
  1054. package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +0 -1
  1055. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +0 -1
  1056. package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +0 -1
  1057. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +0 -8
  1058. package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +0 -120
  1059. package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +0 -1
  1060. package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +0 -1
  1061. package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +0 -34
  1062. package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +0 -1
  1063. package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +0 -78
  1064. package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +0 -7
  1065. package/dist/web/client/index.html +0 -6
  1066. package/dist/web/ops-worker.js +0 -37
  1067. package/dist/web/reads-worker.js +0 -1726
  1068. package/dist/web/server.js +0 -8499
  1069. package/dist/web-EMGUGGEI.js +0 -13
  1070. package/dist/web-fetch-6BRRVQON.js +0 -805
  1071. package/dist/wiki-generate-XHSJTDOP.js +0 -627
  1072. package/dist/with-panes-Z6BTEHMZ.js +0 -628
  1073. package/evals/README.md +0 -9
  1074. package/evals/behavioral-corpus-grader.mjs +0 -236
  1075. package/evals/behavioral-machinery-baseline.json +0 -2276
  1076. package/evals/behavioral-machinery-driver.ts +0 -250
  1077. package/evals/behavioral-machinery-support.ts +0 -254
  1078. package/evals/behavioral-machinery.yaml +0 -614
  1079. package/evals/behavioral-model-negative-control.yaml +0 -69
  1080. package/evals/behavioral-model.yaml +0 -482
  1081. package/evals/fixtures/behavioral-facts.txt +0 -3
  1082. package/evals/fixtures/behavioral-main.ts +0 -7
  1083. package/evals/fixtures/decoy/note.txt +0 -2
  1084. package/evals/fixtures/docs-retrieval.json +0 -102
  1085. package/evals/fixtures/private/credentials.txt +0 -1
  1086. package/evals/fixtures/scalar-decision.json +0 -17
  1087. package/evals/fixtures/scout-citation-pipeline.json +0 -55
  1088. package/evals/fixtures/source-explanation.json +0 -74
  1089. package/evals/fixtures/tool-arguments.json +0 -18
  1090. package/evals/fixtures/tool-surface/read.txt +0 -4
  1091. package/evals/fixtures/tool-surface/subdir/keep.txt +0 -1
  1092. package/evals/no-edit-memory-grader.mjs +0 -149
  1093. package/evals/scalar-decision-grader.py +0 -41
  1094. package/evals/scalar-decision-machinery.ts +0 -145
  1095. package/evals/source-explanation-grader.mjs +0 -118
  1096. package/evals/tool-surface-grader.mjs +0 -53
  1097. package/evals/tool-surface-model.yaml +0 -274
  1098. package/evals/tracked-metrics-baseline.yaml +0 -229
  1099. package/evals/tracked-metrics-grader.mjs +0 -129
  1100. package/src/cli/web.ts +0 -79
  1101. package/src/domains/providers/runtimes/local-native/ollama-native.ts +0 -122
  1102. /package/dist/assets/{web-notices → gui-notices}/@hono__node-server-LICENSE +0 -0
  1103. /package/dist/assets/{web-notices → gui-notices}/hono-LICENSE +0 -0
  1104. /package/dist/{web → gui}/client/THIRD_PARTY_LICENSES.md +0 -0
  1105. /package/dist/{web → gui}/client/assets/arc-Pry-7G1_.js +0 -0
  1106. /package/dist/{web → gui}/client/assets/array-BifhSqXX.js +0 -0
  1107. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
  1108. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
  1109. /package/dist/{web → gui}/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
  1110. /package/dist/{web → gui}/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
  1111. /package/dist/{web → gui}/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -0
  1112. /package/dist/{web → gui}/client/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -0
  1113. /package/dist/{web → gui}/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -0
  1114. /package/dist/{web → gui}/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
  1115. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
  1116. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
  1117. /package/dist/{web → gui}/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +0 -0
  1118. /package/dist/{web → gui}/client/assets/cytoscape.esm-c2aL46s-.js +0 -0
  1119. /package/dist/{web → gui}/client/assets/dagre-C-rnJpZF.js +0 -0
  1120. /package/dist/{web → gui}/client/assets/defaultLocale-BFoDCU3G.js +0 -0
  1121. /package/dist/{web → gui}/client/assets/dist-v5Q1xZ2K.js +0 -0
  1122. /package/dist/{web → gui}/client/assets/graphlib-DS17s2tU.js +0 -0
  1123. /package/dist/{web → gui}/client/assets/init-C-OQMol4.js +0 -0
  1124. /package/dist/{web → gui}/client/assets/katex-ZlcWpGUi.js +0 -0
  1125. /package/dist/{web → gui}/client/assets/linear-SzVmGSw4.js +0 -0
  1126. /package/dist/{web → gui}/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  1127. /package/dist/{web → gui}/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  1128. /package/dist/{web → gui}/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  1129. /package/dist/{web → gui}/client/assets/ordinal-BDEzSJ7C.js +0 -0
  1130. /package/dist/{web → gui}/client/assets/path-fybaL0A-.js +0 -0
  1131. /package/dist/{web → gui}/client/assets/prism-bash-D6zCJ74D.js +0 -0
  1132. /package/dist/{web → gui}/client/assets/prism-c-04YixN25.js +0 -0
  1133. /package/dist/{web → gui}/client/assets/prism-clike-DapgWyxx.js +0 -0
  1134. /package/dist/{web → gui}/client/assets/prism-core-BtsZdCS6.js +0 -0
  1135. /package/dist/{web → gui}/client/assets/prism-cpp-C-lJbC-6.js +0 -0
  1136. /package/dist/{web → gui}/client/assets/prism-css-CPgOzxXp.js +0 -0
  1137. /package/dist/{web → gui}/client/assets/prism-diff-BF8m0_mq.js +0 -0
  1138. /package/dist/{web → gui}/client/assets/prism-docker-DkT6yOFj.js +0 -0
  1139. /package/dist/{web → gui}/client/assets/prism-fortran-Be5x3y1V.js +0 -0
  1140. /package/dist/{web → gui}/client/assets/prism-go-C_8qAH5n.js +0 -0
  1141. /package/dist/{web → gui}/client/assets/prism-ini-BESK3y0r.js +0 -0
  1142. /package/dist/{web → gui}/client/assets/prism-javascript-BnO-swvr.js +0 -0
  1143. /package/dist/{web → gui}/client/assets/prism-json-Dp_-W-Hv.js +0 -0
  1144. /package/dist/{web → gui}/client/assets/prism-jsx-D-D0NWtC.js +0 -0
  1145. /package/dist/{web → gui}/client/assets/prism-julia-DIjOgiAV.js +0 -0
  1146. /package/dist/{web → gui}/client/assets/prism-latex-DNMbqcH_.js +0 -0
  1147. /package/dist/{web → gui}/client/assets/prism-makefile-CRKWLQ8l.js +0 -0
  1148. /package/dist/{web → gui}/client/assets/prism-markdown-C0FPJ1Iz.js +0 -0
  1149. /package/dist/{web → gui}/client/assets/prism-markup-Cp04rIa1.js +0 -0
  1150. /package/dist/{web → gui}/client/assets/prism-matlab-D-nk08al.js +0 -0
  1151. /package/dist/{web → gui}/client/assets/prism-python-CfiSVtM6.js +0 -0
  1152. /package/dist/{web → gui}/client/assets/prism-r-QmNGR8LX.js +0 -0
  1153. /package/dist/{web → gui}/client/assets/prism-rust-Bu9N8X3N.js +0 -0
  1154. /package/dist/{web → gui}/client/assets/prism-shell-session-Be4UuYoM.js +0 -0
  1155. /package/dist/{web → gui}/client/assets/prism-sql-CYhVDMEE.js +0 -0
  1156. /package/dist/{web → gui}/client/assets/prism-toml-DKb54GAT.js +0 -0
  1157. /package/dist/{web → gui}/client/assets/prism-tsx-p6J2Kc_4.js +0 -0
  1158. /package/dist/{web → gui}/client/assets/prism-typescript-BMqONzxf.js +0 -0
  1159. /package/dist/{web → gui}/client/assets/prism-yaml-C0JHu8gr.js +0 -0
  1160. /package/dist/{web → gui}/client/assets/purify.es-ChwZkWde.js +0 -0
  1161. /package/dist/{web → gui}/client/assets/rolldown-runtime-hePW80VL.js +0 -0
  1162. /package/dist/{web → gui}/client/assets/rough.esm-Dy-Kn_BL.js +0 -0
  1163. /package/dist/{web → gui}/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
  1164. /package/dist/{web → gui}/client/assets/src-B6xuSHsQ.js +0 -0
  1165. /package/dist/{web → gui}/client/clio-coder-logo.webp +0 -0
  1166. /package/dist/{web → gui}/client/icon-192.png +0 -0
  1167. /package/dist/{web → gui}/client/icon-512.png +0 -0
  1168. /package/dist/{web → gui}/client/manifest.webmanifest +0 -0
  1169. /package/dist/{web → gui}/client/offline.css +0 -0
  1170. /package/dist/{web → gui}/client/offline.html +0 -0
  1171. /package/dist/{web → gui}/client/offline.js +0 -0
  1172. /package/dist/{web → gui}/client/sw.js +0 -0
@@ -1,1710 +0,0 @@
1
- import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- ROUTE_POLICY_VERSION,
4
- isRouteDecisionAgentSelection,
5
- isRoutingIntent,
6
- parseWorkerContextProvenance
7
- } from "./chunk-MO65K5CH.js";
8
- import {
9
- isExecutionRole
10
- } from "./chunk-H6IUCY6Q.js";
11
- import {
12
- readSettings
13
- } from "./chunk-FPS4R2RN.js";
14
- import {
15
- require_dist
16
- } from "./chunk-B5GGDIHT.js";
17
- import {
18
- readClioVersion,
19
- resolvePackageRoot
20
- } from "./chunk-E3LEPLQ2.js";
21
- import {
22
- __toESM,
23
- init_esm_shims
24
- } from "./chunk-ECBHH7LU.js";
25
-
26
- // src/domains/context/codewiki/digest.ts
27
- init_esm_shims();
28
- function compareStrings(a, b) {
29
- return a.localeCompare(b);
30
- }
31
- function topTwoSegments(path2) {
32
- const parts = path2.split("/").slice(0, -1);
33
- if (parts.length === 0) return ".";
34
- return parts.slice(0, 2).join("/");
35
- }
36
- function sourceFiles(codewiki) {
37
- return codewiki.files.filter((file) => file.lang !== "config").sort((a, b) => a.path.localeCompare(b.path));
38
- }
39
- function countBy(items) {
40
- const counts = /* @__PURE__ */ new Map();
41
- for (const item of items) counts.set(item, (counts.get(item) ?? 0) + 1);
42
- return [...counts.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]));
43
- }
44
- function entryPoints(codewiki, limit) {
45
- const files = sourceFiles(codewiki);
46
- const tagged = files.filter((file) => file.role === "entry");
47
- if (tagged.length >= limit) return tagged.slice(0, limit);
48
- const fileById = new Map(files.map((file) => [file.id, file]));
49
- const inDegree = /* @__PURE__ */ new Map();
50
- for (const edge of codewiki.edges) {
51
- if ("toFileId" in edge) inDegree.set(edge.toFileId, (inDegree.get(edge.toFileId) ?? 0) + 1);
52
- }
53
- const taggedIds = new Set(tagged.map((file) => file.id));
54
- const ranked = [...inDegree.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])).map(([id]) => fileById.get(id)).filter((file) => file !== void 0 && !taggedIds.has(file.id));
55
- return [...tagged, ...ranked].slice(0, limit);
56
- }
57
- function keySymbols(codewiki, limit) {
58
- const rank = /* @__PURE__ */ new Map([
59
- ["class", 0],
60
- ["trait", 1],
61
- ["iface", 2],
62
- ["type", 3],
63
- ["func", 4],
64
- ["method", 5],
65
- ["const", 6],
66
- ["var", 7]
67
- ]);
68
- return [...codewiki.symbols].sort((a, b) => {
69
- const rankCmp = (rank.get(a.kind) ?? 99) - (rank.get(b.kind) ?? 99);
70
- return rankCmp || a.name.localeCompare(b.name) || a.fileId.localeCompare(b.fileId) || a.line - b.line;
71
- }).slice(0, limit);
72
- }
73
- function dependencyLines(codewiki, limit) {
74
- const fileById = new Map(codewiki.files.map((file) => [file.id, file]));
75
- const byFile = /* @__PURE__ */ new Map();
76
- for (const edge of codewiki.edges) {
77
- const deps = byFile.get(edge.fileId) ?? { internal: [], external: [] };
78
- if ("toFileId" in edge) {
79
- const target = fileById.get(edge.toFileId);
80
- if (target) deps.internal.push(target.path);
81
- } else {
82
- deps.external.push(edge.externalModule);
83
- }
84
- byFile.set(edge.fileId, deps);
85
- }
86
- return [...byFile.entries()].map(([fileId, deps]) => {
87
- const file = fileById.get(fileId);
88
- if (!file) return "";
89
- const internal = [...new Set(deps.internal)].sort(compareStrings).slice(0, 4);
90
- const external = [...new Set(deps.external)].sort(compareStrings).slice(0, 4);
91
- return `- ${file.path}: internal=[${internal.join(", ")}] external=[${external.join(", ")}]`;
92
- }).filter((line) => line.length > 0).sort(compareStrings).slice(0, limit);
93
- }
94
- function fitLines(lines, tokenBudget) {
95
- const maxChars = Math.max(256, Math.floor(tokenBudget * 4));
96
- const out = [];
97
- let used = 0;
98
- for (const line of lines) {
99
- const next = used + line.length + 1;
100
- if (next > maxChars) {
101
- out.push("[digest truncated]");
102
- break;
103
- }
104
- out.push(line);
105
- used = next;
106
- }
107
- return out.join("\n");
108
- }
109
- function entryPointLine(file) {
110
- const base = `- ${file.path} (${file.lang}, ${file.loc} loc)`;
111
- return file.summary ? `${base}: ${file.summary.slice(0, 160)}` : base;
112
- }
113
- function renderCodewikiDigest(codewiki, tokenBudget = 1200) {
114
- const files = sourceFiles(codewiki);
115
- const areaCounts = countBy(files.map((file) => topTwoSegments(file.path))).slice(0, 10).map(([area, count]) => `${area}=${count}`);
116
- const languageCounts = countBy(files.map((file) => file.lang)).map(([language, count]) => `${language}=${count}`).join(", ");
117
- const roleCounts = countBy(files.map((file) => file.role)).map(([role, count]) => `${role}=${count}`).join(", ");
118
- const fileById = new Map(codewiki.files.map((file) => [file.id, file]));
119
- const lines = [
120
- `codewiki v${codewiki.version} language=${codewiki.language} files=${files.length} configs=${codewiki.files.length - files.length} symbols=${codewiki.symbols.length} edges=${codewiki.edges.length}`,
121
- `languages: ${languageCounts || "none"}`,
122
- `roles: ${roleCounts || "none"}`,
123
- `areas: ${areaCounts.join(", ") || "none"}`,
124
- "entry points:",
125
- ...entryPoints(codewiki, 12).map(entryPointLine),
126
- "key symbols:",
127
- ...keySymbols(codewiki, 40).map((symbol) => {
128
- const file = fileById.get(symbol.fileId);
129
- const location = file ? `${file.path}:${symbol.line}` : `${symbol.fileId}:${symbol.line}`;
130
- return `- ${symbol.name} ${symbol.kind} ${location}`;
131
- }),
132
- "dependencies:",
133
- ...dependencyLines(codewiki, 24)
134
- ];
135
- return fitLines(lines, tokenBudget);
136
- }
137
-
138
- // src/domains/prompts/hash.ts
139
- init_esm_shims();
140
- import { createHash } from "node:crypto";
141
- function sha256(input) {
142
- return createHash("sha256").update(input, "utf8").digest("hex");
143
- }
144
- function canonicalJson(value) {
145
- return serialize(value);
146
- }
147
- function serialize(value) {
148
- if (value === null) return "null";
149
- if (typeof value === "number") {
150
- if (!Number.isFinite(value)) {
151
- throw new Error(`canonicalJson: non-finite number ${String(value)} is not representable`);
152
- }
153
- return JSON.stringify(value);
154
- }
155
- if (typeof value === "string" || typeof value === "boolean") {
156
- return JSON.stringify(value);
157
- }
158
- if (typeof value === "bigint") {
159
- throw new Error("canonicalJson: bigint is not representable");
160
- }
161
- if (typeof value === "symbol" || typeof value === "function") {
162
- throw new Error(`canonicalJson: ${typeof value} is not representable`);
163
- }
164
- if (value === void 0) {
165
- throw new Error("canonicalJson: undefined is not representable at root");
166
- }
167
- if (Array.isArray(value)) {
168
- const parts = [];
169
- for (let i = 0; i < value.length; i++) {
170
- if (!(i in value) || value[i] === void 0) {
171
- parts.push("null");
172
- continue;
173
- }
174
- parts.push(serialize(value[i]));
175
- }
176
- return `[${parts.join(",")}]`;
177
- }
178
- if (typeof value === "object") {
179
- const obj = value;
180
- const keys = Object.keys(obj).sort();
181
- const parts = [];
182
- for (const key of keys) {
183
- const child = obj[key];
184
- if (child === void 0) continue;
185
- parts.push(`${JSON.stringify(key)}:${serialize(child)}`);
186
- }
187
- return `{${parts.join(",")}}`;
188
- }
189
- throw new Error(`canonicalJson: unsupported value of type ${typeof value}`);
190
- }
191
-
192
- // src/domains/dispatch/receipt-integrity.ts
193
- init_esm_shims();
194
- import { createHash as createHash2 } from "node:crypto";
195
- var RUN_RECEIPT_INTEGRITY_VERSION = 20;
196
- var RUN_RECEIPT_INTEGRITY_ALGORITHM = "sha256";
197
- function sha2562(input) {
198
- return createHash2("sha256").update(input, "utf8").digest("hex");
199
- }
200
- function canonicalJson2(value) {
201
- return serializeCanonical(value);
202
- }
203
- function serializeCanonical(value) {
204
- if (value === null) return "null";
205
- if (typeof value === "number") {
206
- if (!Number.isFinite(value)) {
207
- throw new Error(`receipt integrity: non-finite number ${String(value)} is not representable`);
208
- }
209
- return JSON.stringify(value);
210
- }
211
- if (typeof value === "string" || typeof value === "boolean") return JSON.stringify(value);
212
- if (typeof value === "bigint") throw new Error("receipt integrity: bigint is not representable");
213
- if (typeof value === "symbol" || typeof value === "function") {
214
- throw new Error(`receipt integrity: ${typeof value} is not representable`);
215
- }
216
- if (value === void 0) throw new Error("receipt integrity: undefined is not representable at root");
217
- if (Array.isArray(value)) {
218
- const parts = [];
219
- for (let i = 0; i < value.length; i++) {
220
- if (!(i in value) || value[i] === void 0) {
221
- parts.push("null");
222
- continue;
223
- }
224
- parts.push(serializeCanonical(value[i]));
225
- }
226
- return `[${parts.join(",")}]`;
227
- }
228
- if (typeof value === "object") {
229
- const obj = value;
230
- const keys = Object.keys(obj).sort();
231
- const parts = [];
232
- for (const key of keys) {
233
- const child = obj[key];
234
- if (child === void 0) continue;
235
- parts.push(`${JSON.stringify(key)}:${serializeCanonical(child)}`);
236
- }
237
- return `{${parts.join(",")}}`;
238
- }
239
- throw new Error(`receipt integrity: unsupported value of type ${typeof value}`);
240
- }
241
- var RECEIPT_INTEGRITY_FIELD_COVERAGE = {
242
- runId: true,
243
- agentId: true,
244
- executionRole: true,
245
- agentAudience: true,
246
- requestOrigin: true,
247
- task: true,
248
- intent: true,
249
- pathScope: true,
250
- // Historical receipts omit this field, so their receipt and ledger payloads remain unchanged.
251
- budget: true,
252
- targetId: true,
253
- wireModelId: true,
254
- runtimeId: true,
255
- runtimeKind: true,
256
- startedAt: true,
257
- endedAt: true,
258
- outcome: true,
259
- outcomeDetail: true,
260
- lineage: true,
261
- identity: true,
262
- node: true,
263
- attestation: true,
264
- reroutes: true,
265
- pipeline: true,
266
- gate: true,
267
- council: true,
268
- plan: true,
269
- fleetGate: true,
270
- personaOverride: true,
271
- // Absent unless the parent board held decisions, so older receipts and
272
- // decision-free runs digest exactly as before.
273
- decisionRefs: true,
274
- projectContext: true,
275
- // Always set on receipts written after #104 landed; absent only on older
276
- // receipts, which omit these fields from canonical serialization.
277
- rulesApplied: true,
278
- operatorProfileApplied: true,
279
- exitCode: true,
280
- failureMessage: true,
281
- tokenCount: true,
282
- inputTokenCount: true,
283
- outputTokenCount: true,
284
- cacheReadTokenCount: true,
285
- cacheWriteTokenCount: true,
286
- cacheWrite1hTokenCount: true,
287
- reasoningTokenCount: true,
288
- upstreamResponses: true,
289
- output: true,
290
- costUsd: true,
291
- costProvenance: true,
292
- compiledPromptHash: true,
293
- staticCompositionHash: true,
294
- staticShellHash: true,
295
- sessionShellHash: true,
296
- dynamicHash: true,
297
- promptSignature: true,
298
- toolSignature: true,
299
- clioCoderVersion: true,
300
- piMonoVersion: true,
301
- platform: true,
302
- nodeVersion: true,
303
- toolCalls: true,
304
- toolStats: true,
305
- toolActivity: true,
306
- verification: true,
307
- hostVerification: true,
308
- worktree: true,
309
- routingIntent: true,
310
- quality: true,
311
- skillActivations: true,
312
- autonomyEnforcement: true,
313
- safety: true,
314
- reproducibility: true,
315
- runtimeResolution: true,
316
- delegation: true,
317
- findingsSummary: true,
318
- // Both are optional and absent unless the run produced the condition they
319
- // name, so a receipt that carries neither digests exactly as it did before
320
- // they existed and the integrity version stays where it is.
321
- validationGrounding: true,
322
- capabilityMismatch: true,
323
- // Same reasoning: absent unless the run had an agent ledger, so a receipt
324
- // without one omits the field from canonical serialization.
325
- ledgerContribution: true,
326
- sessionId: true,
327
- briefing: true,
328
- workerContext: true,
329
- outcomeCode: true,
330
- steering: true,
331
- routeDecision: true
332
- };
333
- var RECEIPT_FIELDS = Object.keys(RECEIPT_INTEGRITY_FIELD_COVERAGE);
334
- function selectedReceiptFields(receipt, fields) {
335
- const source = receipt;
336
- const result = {};
337
- for (const field of fields) {
338
- const value = source[field];
339
- if (value !== void 0) result[field] = value;
340
- }
341
- return result;
342
- }
343
- function receiptDigestFields(receipt, legacyNaming = false) {
344
- const result = selectedReceiptFields(receipt, RECEIPT_FIELDS);
345
- if (legacyNaming) {
346
- const source = receipt;
347
- const version = source.clioVersion ?? source.clioCoderVersion;
348
- delete result.clioCoderVersion;
349
- if (version !== void 0) result.clioVersion = version;
350
- }
351
- result.briefing = receipt.briefing ?? null;
352
- result.outcomeCode = receipt.outcomeCode ?? null;
353
- result.steering = receipt.steering ?? null;
354
- return result;
355
- }
356
- function ledgerDigestFields(envelope) {
357
- return {
358
- id: envelope.id,
359
- agentId: envelope.agentId,
360
- executionRole: envelope.executionRole,
361
- task: envelope.task,
362
- ...envelope.budget !== void 0 ? { budget: envelope.budget } : {},
363
- ...envelope.decisionRefs !== void 0 ? { decisionRefs: envelope.decisionRefs } : {},
364
- targetId: envelope.targetId,
365
- wireModelId: envelope.wireModelId,
366
- runtimeId: envelope.runtimeId,
367
- runtimeKind: envelope.runtimeKind,
368
- startedAt: envelope.startedAt,
369
- endedAt: envelope.endedAt,
370
- status: envelope.status,
371
- exitCode: envelope.exitCode,
372
- sessionId: envelope.sessionId,
373
- cwd: envelope.cwd,
374
- tokenCount: envelope.tokenCount,
375
- cacheReadTokenCount: envelope.cacheReadTokenCount,
376
- cacheWriteTokenCount: envelope.cacheWriteTokenCount,
377
- cacheWrite1hTokenCount: envelope.cacheWrite1hTokenCount,
378
- reasoningTokenCount: envelope.reasoningTokenCount,
379
- staticShellHash: envelope.staticShellHash,
380
- sessionShellHash: envelope.sessionShellHash,
381
- dynamicHash: envelope.dynamicHash,
382
- costUsd: envelope.costUsd,
383
- agentAudience: envelope.agentAudience ?? null,
384
- requestOrigin: envelope.requestOrigin ?? null,
385
- outcome: envelope.outcome ?? null,
386
- outcomeDetail: envelope.outcomeDetail ?? null,
387
- lineage: envelope.lineage ?? null,
388
- identity: envelope.identity ?? null,
389
- node: envelope.node ?? null,
390
- reroutes: envelope.reroutes ?? null,
391
- pipeline: envelope.pipeline ?? null,
392
- gate: envelope.gate ?? null,
393
- plan: envelope.plan ?? null,
394
- personaOverride: envelope.personaOverride ?? null,
395
- inputTokenCount: envelope.inputTokenCount ?? 0,
396
- outputTokenCount: envelope.outputTokenCount ?? 0,
397
- promptSignature: envelope.promptSignature ?? null,
398
- toolSignature: envelope.toolSignature ?? null,
399
- briefing: envelope.briefing ?? null,
400
- ...envelope.workerContext !== void 0 ? { workerContext: envelope.workerContext } : {},
401
- outcomeCode: envelope.outcomeCode ?? null,
402
- steering: envelope.steering ?? null
403
- };
404
- }
405
- function integrityPayload(receipt, envelope, legacyNaming = false) {
406
- return {
407
- contract: legacyNaming ? "clio.runReceipt.integrity" : "clio-coder.runReceipt.integrity",
408
- version: RUN_RECEIPT_INTEGRITY_VERSION,
409
- sources: ["receipt", "run-ledger"],
410
- receipt: receiptDigestFields(receipt, legacyNaming),
411
- ledger: ledgerDigestFields(envelope)
412
- };
413
- }
414
- function computeReceiptIntegrity(receipt, envelope, legacyNaming = false) {
415
- return {
416
- version: RUN_RECEIPT_INTEGRITY_VERSION,
417
- algorithm: RUN_RECEIPT_INTEGRITY_ALGORITHM,
418
- digest: sha2562(canonicalJson2(integrityPayload(receipt, envelope, legacyNaming)))
419
- };
420
- }
421
- function isReceiptQuality(value) {
422
- if (!value || typeof value !== "object" || Array.isArray(value)) return false;
423
- const quality = value;
424
- if (quality.version !== 1 || !Array.isArray(quality.typedValidations)) return false;
425
- if (!quality.typedValidations.every(
426
- (fact) => fact !== null && typeof fact === "object" && typeof fact.sourceId === "string" && typeof fact.validatorDigest === "string" && /^[0-9a-f]{64}$/.test(String(fact.validatorDigest)) && typeof fact.passed === "boolean"
427
- ))
428
- return false;
429
- const schema = quality.responseSchema;
430
- if (!schema || typeof schema !== "object" || Array.isArray(schema)) return false;
431
- const responseSchema = schema;
432
- const resultContract = quality.resultContract;
433
- const validResultContract = resultContract === null || resultContract !== void 0 && typeof resultContract === "object" && !Array.isArray(resultContract) && typeof resultContract.sourceId === "string" && typeof resultContract.validatorDigest === "string" && /^[0-9a-f]{64}$/.test(String(resultContract.validatorDigest)) && (resultContract.conformance === "pass" || resultContract.conformance === "fail" || resultContract.conformance === "not-reached") && (resultContract.quality === "pass" || resultContract.quality === "fail" || resultContract.quality === "unmeasured");
434
- return (responseSchema.sourceId === null || typeof responseSchema.sourceId === "string") && (responseSchema.schemaDigest === null || typeof responseSchema.schemaDigest === "string" && /^[0-9a-f]{64}$/.test(responseSchema.schemaDigest)) && typeof responseSchema.runtimeEnforceable === "boolean" && (responseSchema.enforcementPassed === null || typeof responseSchema.enforcementPassed === "boolean") && validResultContract;
435
- }
436
- function isCurrentRouteDecision(value) {
437
- if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
438
- const decision = value;
439
- return decision.policyVersion === ROUTE_POLICY_VERSION && (decision.mode === "fixed" || decision.mode === "shadow" || decision.mode === "active") && isRouteDecisionAgentSelection(decision.agentSelection) && typeof decision.decisionHash === "string" && /^[0-9a-f]{64}$/u.test(decision.decisionHash);
440
- }
441
- function withReceiptIntegrity(receipt, envelope) {
442
- if (!isReceiptQuality(receipt.quality)) throw new Error("receipt integrity: required quality block invalid");
443
- if (!isExecutionRole(receipt.executionRole)) throw new Error("receipt integrity: required execution role invalid");
444
- if (!isRoutingIntent(receipt.routingIntent)) {
445
- throw new Error("receipt integrity: required routing intent invalid");
446
- }
447
- if (receipt.routeDecision !== void 0 && !isCurrentRouteDecision(receipt.routeDecision)) {
448
- throw new Error("receipt integrity: route decision is invalid or retired");
449
- }
450
- return {
451
- ...receipt,
452
- routingIntent: receipt.routingIntent,
453
- integrity: computeReceiptIntegrity(receipt, envelope)
454
- };
455
- }
456
- function isReceiptIntegrity(value) {
457
- if (!value || typeof value !== "object" || Array.isArray(value)) return false;
458
- const candidate = value;
459
- return candidate.version === RUN_RECEIPT_INTEGRITY_VERSION && candidate.algorithm === RUN_RECEIPT_INTEGRITY_ALGORITHM && typeof candidate.digest === "string" && /^[0-9a-f]{64}$/.test(candidate.digest);
460
- }
461
- function firstLedgerMismatch(receipt, envelope) {
462
- const sharedFields = [
463
- ["runId", receipt.runId, envelope.id],
464
- ["agentId", receipt.agentId, envelope.agentId],
465
- ["executionRole", receipt.executionRole, envelope.executionRole],
466
- ["agentAudience", receipt.agentAudience, envelope.agentAudience],
467
- ["requestOrigin", receipt.requestOrigin, envelope.requestOrigin],
468
- ["task", receipt.task, envelope.task],
469
- ["targetId", receipt.targetId, envelope.targetId],
470
- ["wireModelId", receipt.wireModelId, envelope.wireModelId],
471
- ["runtimeId", receipt.runtimeId, envelope.runtimeId],
472
- ["runtimeKind", receipt.runtimeKind, envelope.runtimeKind],
473
- ["startedAt", receipt.startedAt, envelope.startedAt],
474
- ["endedAt", receipt.endedAt, envelope.endedAt],
475
- ["exitCode", receipt.exitCode, envelope.exitCode],
476
- ["tokenCount", receipt.tokenCount, envelope.tokenCount],
477
- ["cacheReadTokenCount", receipt.cacheReadTokenCount ?? 0, envelope.cacheReadTokenCount ?? 0],
478
- ["cacheWriteTokenCount", receipt.cacheWriteTokenCount ?? 0, envelope.cacheWriteTokenCount ?? 0],
479
- ["cacheWrite1hTokenCount", receipt.cacheWrite1hTokenCount ?? 0, envelope.cacheWrite1hTokenCount ?? 0],
480
- ["reasoningTokenCount", receipt.reasoningTokenCount ?? 0, envelope.reasoningTokenCount ?? 0],
481
- ["staticShellHash", receipt.staticShellHash ?? null, envelope.staticShellHash ?? null],
482
- ["sessionShellHash", receipt.sessionShellHash ?? null, envelope.sessionShellHash ?? null],
483
- ["dynamicHash", receipt.dynamicHash ?? null, envelope.dynamicHash ?? null],
484
- ["costUsd", receipt.costUsd, envelope.costUsd],
485
- ["sessionId", receipt.sessionId, envelope.sessionId],
486
- ["outcome", receipt.outcome ?? null, envelope.outcome ?? null],
487
- ["outcomeDetail", receipt.outcomeDetail ?? null, envelope.outcomeDetail ?? null],
488
- ["nodeId", receipt.node?.id ?? null, envelope.node?.id ?? null],
489
- ["outcomeCode", receipt.outcomeCode ?? null, envelope.outcomeCode ?? null]
490
- ];
491
- for (const [field, receiptValue, ledgerValue] of sharedFields) {
492
- if (!Object.is(receiptValue, ledgerValue)) return field;
493
- }
494
- if (canonicalJson2(receipt.briefing ?? null) !== canonicalJson2(envelope.briefing ?? null)) return "briefing";
495
- if (canonicalJson2(receipt.workerContext ?? null) !== canonicalJson2(envelope.workerContext ?? null))
496
- return "workerContext";
497
- if (canonicalJson2(receipt.budget ?? null) !== canonicalJson2(envelope.budget ?? null)) return "budget";
498
- if (canonicalJson2(receipt.steering ?? null) !== canonicalJson2(envelope.steering ?? null)) return "steering";
499
- return null;
500
- }
501
- function verifyReceiptIntegrity(receipt, envelope) {
502
- if (!isReceiptQuality(receipt.quality) || !isReceiptIntegrity(receipt.integrity)) {
503
- return { ok: false, reason: "integrity invalid" };
504
- }
505
- if (!isExecutionRole(receipt.executionRole)) return { ok: false, reason: "execution role invalid" };
506
- if (!isRoutingIntent(receipt.routingIntent)) {
507
- return { ok: false, reason: "routing intent invalid" };
508
- }
509
- if (receipt.routeDecision !== void 0 && !isCurrentRouteDecision(receipt.routeDecision)) {
510
- return { ok: false, reason: "route decision invalid" };
511
- }
512
- const mismatch = firstLedgerMismatch(receipt, envelope);
513
- if (mismatch) {
514
- return { ok: false, reason: `ledger mismatch: ${mismatch}` };
515
- }
516
- const expected = computeReceiptIntegrity(receipt, envelope);
517
- const legacyExpected = computeReceiptIntegrity(receipt, envelope, true);
518
- if (expected.digest !== receipt.integrity.digest && legacyExpected.digest !== receipt.integrity.digest) {
519
- return { ok: false, reason: "integrity mismatch" };
520
- }
521
- return { ok: true };
522
- }
523
-
524
- // src/domains/evidence/trust-status.ts
525
- init_esm_shims();
526
- var TRUST_STATUS_VERSION = 1;
527
- var TRUST_STATUS_MAX_ARTIFACT_REFERENCES = 16;
528
- var TRUST_STATUS_MAX_IDENTIFIER_LENGTH = 512;
529
- var TRUST_STATUS_AXES = [
530
- "artifactIntegrity",
531
- "validationGrounding",
532
- "independentReview",
533
- "contextProvenance",
534
- "autonomyEnforcement",
535
- "completionEvidence"
536
- ];
537
- var TRUST_STATUS_STATES = {
538
- artifactIntegrity: ["verified", "failed", "absent", "unknown", "not_applicable"],
539
- validationGrounding: ["validated", "failed", "ungrounded", "absent", "unknown", "not_applicable"],
540
- independentReview: ["passed", "failed", "inconclusive", "not_independent", "absent", "unknown", "not_applicable"],
541
- contextProvenance: ["recorded", "invalid", "absent", "unknown", "not_applicable"],
542
- autonomyEnforcement: ["enforced", "approximated", "bypassed", "absent", "unknown", "not_applicable"],
543
- completionEvidence: ["evidenced", "incomplete", "limited", "absent", "unknown", "not_applicable"]
544
- };
545
- var SELF_REPORTED_ARTIFACT_KINDS = /* @__PURE__ */ new Set([
546
- "finish_contract_evidence",
547
- "run_receipt"
548
- ]);
549
- var AXIS_STATES = {
550
- artifactIntegrity: new Set(TRUST_STATUS_STATES.artifactIntegrity),
551
- validationGrounding: new Set(TRUST_STATUS_STATES.validationGrounding),
552
- independentReview: new Set(TRUST_STATUS_STATES.independentReview),
553
- contextProvenance: new Set(TRUST_STATUS_STATES.contextProvenance),
554
- autonomyEnforcement: new Set(TRUST_STATUS_STATES.autonomyEnforcement),
555
- completionEvidence: new Set(TRUST_STATUS_STATES.completionEvidence)
556
- };
557
- var AXIS_SOURCES = {
558
- artifactIntegrity: /* @__PURE__ */ new Set(["receipt_integrity_verification", "compatibility"]),
559
- validationGrounding: /* @__PURE__ */ new Set(["run_receipt", "evidence_bundle", "compatibility"]),
560
- independentReview: /* @__PURE__ */ new Set(["gate_decision", "compatibility"]),
561
- contextProvenance: /* @__PURE__ */ new Set(["run_receipt", "evidence_bundle", "compatibility"]),
562
- autonomyEnforcement: /* @__PURE__ */ new Set(["run_receipt", "compatibility"]),
563
- completionEvidence: /* @__PURE__ */ new Set(["finish_contract", "compatibility"])
564
- };
565
- var SOURCE_AUTHORITIES = {
566
- receipt_integrity_verification: /* @__PURE__ */ new Set(["clio"]),
567
- run_receipt: /* @__PURE__ */ new Set(["clio", "validator", "runtime", "external_system", "unknown"]),
568
- gate_decision: /* @__PURE__ */ new Set(["clio", "reviewer", "operator", "unknown"]),
569
- evidence_bundle: /* @__PURE__ */ new Set(["clio"]),
570
- finish_contract: /* @__PURE__ */ new Set(["clio"]),
571
- compatibility: /* @__PURE__ */ new Set(["clio", "unknown"])
572
- };
573
- var ABSENCE_REASONS = /* @__PURE__ */ new Set([
574
- "not_recorded",
575
- "not_observed",
576
- "artifact_missing",
577
- "historical_format"
578
- ]);
579
- var SOURCE_KINDS = /* @__PURE__ */ new Set([
580
- "receipt_integrity_verification",
581
- "run_receipt",
582
- "gate_decision",
583
- "evidence_bundle",
584
- "finish_contract",
585
- "compatibility"
586
- ]);
587
- var AUTHORITY_KINDS = /* @__PURE__ */ new Set([
588
- "clio",
589
- "validator",
590
- "reviewer",
591
- "operator",
592
- "runtime",
593
- "external_system",
594
- "unknown"
595
- ]);
596
- var ARTIFACT_KINDS = /* @__PURE__ */ new Set([
597
- "run_receipt",
598
- "validation_result",
599
- "gate_decision",
600
- "briefing",
601
- "project_context",
602
- "worker_context",
603
- "autonomy_policy",
604
- "finish_contract_evidence",
605
- "evidence_bundle",
606
- "session_entry"
607
- ]);
608
- function isRecord(value) {
609
- return typeof value === "object" && value !== null && !Array.isArray(value);
610
- }
611
- function hasExactKeys(value, keys) {
612
- const expected = new Set(keys);
613
- return Object.keys(value).length === expected.size && Object.keys(value).every((key) => expected.has(key));
614
- }
615
- function isTrustStatusIdentifier(value) {
616
- if (typeof value !== "string" || value.trim().length === 0 || value.length > TRUST_STATUS_MAX_IDENTIFIER_LENGTH) {
617
- return false;
618
- }
619
- for (const character of value) {
620
- const codePoint = character.codePointAt(0);
621
- if (codePoint !== void 0 && (codePoint < 32 || codePoint === 127)) return false;
622
- }
623
- return true;
624
- }
625
- function compareArtifactReferences(left, right) {
626
- const leftKey = `${left.kind}\0${left.id}\0${left.digest?.value ?? ""}`;
627
- const rightKey = `${right.kind}\0${right.id}\0${right.digest?.value ?? ""}`;
628
- return leftKey < rightKey ? -1 : leftKey > rightKey ? 1 : 0;
629
- }
630
- function normalizeArtifactReference(value, path2) {
631
- if (!isRecord(value)) throw new Error(`${path2} must be an object`);
632
- if (!hasExactKeys(value, value.digest === void 0 ? ["kind", "id"] : ["kind", "id", "digest"])) {
633
- throw new Error(`${path2} has unknown or missing fields`);
634
- }
635
- if (typeof value.kind !== "string" || !ARTIFACT_KINDS.has(value.kind)) {
636
- throw new Error(`${path2}.kind is invalid`);
637
- }
638
- if (!isTrustStatusIdentifier(value.id)) throw new Error(`${path2}.id is invalid`);
639
- const reference = { kind: value.kind, id: value.id };
640
- if (value.digest !== void 0) {
641
- 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)) {
642
- throw new Error(`${path2}.digest is invalid`);
643
- }
644
- reference.digest = { algorithm: "sha256", value: value.digest.value };
645
- }
646
- return reference;
647
- }
648
- function normalizeAttributedStatus(axis, value) {
649
- if (!hasExactKeys(value, ["state", "source", "authority", "artifacts"])) {
650
- throw new Error(`${axis} has unknown or missing fields`);
651
- }
652
- if (!isRecord(value.source) || !hasExactKeys(value.source, ["kind", "id"])) {
653
- throw new Error(`${axis}.source is invalid`);
654
- }
655
- if (typeof value.source.kind !== "string" || !SOURCE_KINDS.has(value.source.kind) || !AXIS_SOURCES[axis].has(value.source.kind) || !isTrustStatusIdentifier(value.source.id)) {
656
- throw new Error(`${axis}.source is invalid`);
657
- }
658
- if (!isRecord(value.authority) || !hasExactKeys(value.authority, ["kind", "id"])) {
659
- throw new Error(`${axis}.authority is invalid`);
660
- }
661
- if (typeof value.authority.kind !== "string" || !AUTHORITY_KINDS.has(value.authority.kind) || !SOURCE_AUTHORITIES[value.source.kind].has(
662
- value.authority.kind
663
- ) || !isTrustStatusIdentifier(value.authority.id)) {
664
- throw new Error(`${axis}.authority is invalid`);
665
- }
666
- if (value.source.kind === "compatibility" && value.state !== "unknown" && value.state !== "not_applicable") {
667
- throw new Error(`${axis} compatibility source cannot establish ${value.state}`);
668
- }
669
- if (!Array.isArray(value.artifacts) || value.artifacts.length > TRUST_STATUS_MAX_ARTIFACT_REFERENCES) {
670
- throw new Error(`${axis}.artifacts exceeds the bounded reference list`);
671
- }
672
- const artifacts = value.artifacts.map(
673
- (entry, index) => normalizeArtifactReference(entry, `${axis}.artifacts[${index}]`)
674
- );
675
- artifacts.sort(compareArtifactReferences);
676
- for (let index = 1; index < artifacts.length; index += 1) {
677
- if (compareArtifactReferences(
678
- artifacts[index - 1],
679
- artifacts[index]
680
- ) === 0) {
681
- throw new Error(`${axis}.artifacts contains a duplicate reference`);
682
- }
683
- }
684
- return {
685
- state: value.state,
686
- source: { kind: value.source.kind, id: value.source.id },
687
- authority: { kind: value.authority.kind, id: value.authority.id },
688
- artifacts
689
- };
690
- }
691
- function normalizeAxis(axis, value) {
692
- if (!isRecord(value) || typeof value.state !== "string" || !AXIS_STATES[axis].has(value.state)) {
693
- throw new Error(`${axis}.state is invalid`);
694
- }
695
- if (value.state === "absent") {
696
- if (!hasExactKeys(value, ["state", "reason"]) || typeof value.reason !== "string" || !ABSENCE_REASONS.has(value.reason)) {
697
- throw new Error(`${axis} absent state is invalid`);
698
- }
699
- return { state: "absent", reason: value.reason };
700
- }
701
- return normalizeAttributedStatus(axis, value);
702
- }
703
- function normalizeTrustStatus(value) {
704
- if (!isRecord(value) || !hasExactKeys(value, ["version", ...TRUST_STATUS_AXES])) {
705
- throw new Error("trust status has unknown or missing fields");
706
- }
707
- if (value.version !== TRUST_STATUS_VERSION) throw new Error("trust status version is invalid");
708
- return {
709
- version: TRUST_STATUS_VERSION,
710
- artifactIntegrity: normalizeAxis("artifactIntegrity", value.artifactIntegrity),
711
- validationGrounding: normalizeAxis("validationGrounding", value.validationGrounding),
712
- independentReview: normalizeAxis("independentReview", value.independentReview),
713
- contextProvenance: normalizeAxis("contextProvenance", value.contextProvenance),
714
- autonomyEnforcement: normalizeAxis("autonomyEnforcement", value.autonomyEnforcement),
715
- completionEvidence: normalizeAxis("completionEvidence", value.completionEvidence)
716
- };
717
- }
718
- function validateTrustStatus(value) {
719
- try {
720
- return { ok: true, status: normalizeTrustStatus(value) };
721
- } catch (error) {
722
- return { ok: false, reason: error instanceof Error ? error.message : String(error) };
723
- }
724
- }
725
- function absentTrustStatus(reason) {
726
- return { state: "absent", reason };
727
- }
728
- function composeTrustStatus(...projections) {
729
- const axes = {
730
- artifactIntegrity: absentTrustStatus("not_recorded"),
731
- validationGrounding: absentTrustStatus("not_recorded"),
732
- independentReview: absentTrustStatus("not_recorded"),
733
- contextProvenance: absentTrustStatus("not_recorded"),
734
- autonomyEnforcement: absentTrustStatus("not_recorded"),
735
- completionEvidence: absentTrustStatus("not_recorded")
736
- };
737
- for (const projection of projections) {
738
- if (projection.artifactIntegrity !== void 0) axes.artifactIntegrity = projection.artifactIntegrity;
739
- if (projection.validationGrounding !== void 0) axes.validationGrounding = projection.validationGrounding;
740
- if (projection.independentReview !== void 0) axes.independentReview = projection.independentReview;
741
- if (projection.contextProvenance !== void 0) axes.contextProvenance = projection.contextProvenance;
742
- if (projection.autonomyEnforcement !== void 0) axes.autonomyEnforcement = projection.autonomyEnforcement;
743
- if (projection.completionEvidence !== void 0) axes.completionEvidence = projection.completionEvidence;
744
- }
745
- return normalizeTrustStatus({ version: TRUST_STATUS_VERSION, ...axes });
746
- }
747
- function projectTrustStatus(status, axes) {
748
- const normalized = normalizeTrustStatus(status);
749
- const projection = {};
750
- const requested = new Set(axes);
751
- if (requested.has("artifactIntegrity")) projection.artifactIntegrity = normalized.artifactIntegrity;
752
- if (requested.has("validationGrounding")) projection.validationGrounding = normalized.validationGrounding;
753
- if (requested.has("independentReview")) projection.independentReview = normalized.independentReview;
754
- if (requested.has("contextProvenance")) projection.contextProvenance = normalized.contextProvenance;
755
- if (requested.has("autonomyEnforcement")) projection.autonomyEnforcement = normalized.autonomyEnforcement;
756
- if (requested.has("completionEvidence")) projection.completionEvidence = normalized.completionEvidence;
757
- return projection;
758
- }
759
- function sha256Reference(kind, id, digest) {
760
- const reference = { kind, id };
761
- if (digest !== void 0 && /^[a-f0-9]{64}$/u.test(digest)) {
762
- reference.digest = { algorithm: "sha256", value: digest };
763
- }
764
- return reference;
765
- }
766
- function receiptReference(receipt) {
767
- return sha256Reference("run_receipt", receipt.runId, receipt.integrity?.digest);
768
- }
769
- function attributed(state, source, authority, artifacts) {
770
- return { state, source, authority, artifacts: [...artifacts].sort(compareArtifactReferences) };
771
- }
772
- function receiptSource(receipt) {
773
- return { kind: "run_receipt", id: receipt.runId };
774
- }
775
- function compatibilitySource(receipt, field) {
776
- return { kind: "compatibility", id: `run_receipt:${receipt.runId}:${field}` };
777
- }
778
- var DISPATCH_AUTHORITY = { kind: "clio", id: "dispatch" };
779
- var COMPATIBILITY_AUTHORITY = { kind: "unknown", id: "historical-persisted-format" };
780
- function retiredReceiptIntegrity(integrity) {
781
- if (!isRecord(integrity)) return null;
782
- const version = integrity.version;
783
- if (typeof version !== "number" || !Number.isInteger(version) || version < 1) return null;
784
- if (version >= RUN_RECEIPT_INTEGRITY_VERSION) return null;
785
- return { receiptVersion: version, supportedVersion: RUN_RECEIPT_INTEGRITY_VERSION };
786
- }
787
- function retiredReceiptIntegrityReason(retired) {
788
- return `receipt integrity v${retired.receiptVersion} is retired; this build verifies v${retired.supportedVersion}; the receipt is not read as evidence`;
789
- }
790
- function verifyReceiptIntegrityOutcome(receipt, envelope) {
791
- const retired = retiredReceiptIntegrity(receipt.integrity);
792
- if (retired !== null) return { ok: false, reason: retiredReceiptIntegrityReason(retired), retired };
793
- return verifyReceiptIntegrity(receipt, envelope);
794
- }
795
- var RETIRED_INTEGRITY_SOURCE = /:integrity-v(\d+)-retired$/u;
796
- function retiredIntegritySourceId(runId, receiptVersion) {
797
- return `run_receipt:${runId}:integrity-v${receiptVersion}-retired`;
798
- }
799
- function retiredIntegrityVersionOf(status) {
800
- if (status.state !== "unknown" || status.source.kind !== "compatibility") return null;
801
- const match = RETIRED_INTEGRITY_SOURCE.exec(status.source.id);
802
- return match === null ? null : Number(match[1]);
803
- }
804
- function adaptReceiptIntegrityStatus(receipt, verification) {
805
- if (receipt === null || receipt === void 0) return absentTrustStatus("artifact_missing");
806
- const artifacts = [receiptReference(receipt)];
807
- if (verification !== void 0 && !verification.ok && verification.retired !== void 0) {
808
- return attributed(
809
- "unknown",
810
- { kind: "compatibility", id: retiredIntegritySourceId(receipt.runId, verification.retired.receiptVersion) },
811
- COMPATIBILITY_AUTHORITY,
812
- artifacts
813
- );
814
- }
815
- if (verification === void 0 || verification.ok && receipt.integrity === void 0) {
816
- return attributed(
817
- "unknown",
818
- {
819
- kind: "compatibility",
820
- id: `run_receipt:${receipt.runId}:${receipt.integrity === void 0 ? "integrity-missing" : "integrity-unchecked"}`
821
- },
822
- COMPATIBILITY_AUTHORITY,
823
- artifacts
824
- );
825
- }
826
- return attributed(
827
- verification.ok ? "verified" : "failed",
828
- { kind: "receipt_integrity_verification", id: receipt.runId },
829
- { kind: "clio", id: "receipt-integrity" },
830
- artifacts
831
- );
832
- }
833
- function validationArtifacts(receipt) {
834
- const artifacts = [receiptReference(receipt)];
835
- for (const fact of receipt.quality?.typedValidations ?? []) {
836
- artifacts.push(sha256Reference("validation_result", fact.sourceId, fact.validatorDigest));
837
- }
838
- const resultContract = receipt.quality?.resultContract;
839
- if (resultContract !== null && resultContract !== void 0) {
840
- artifacts.push(sha256Reference("validation_result", resultContract.sourceId, resultContract.validatorDigest));
841
- }
842
- return uniqueBoundedReferences(artifacts);
843
- }
844
- function qualityHasFailure(quality) {
845
- if (quality === void 0) return false;
846
- if (quality.typedValidations.some((fact) => !fact.passed)) return true;
847
- return quality.resultContract?.conformance === "fail" || quality.resultContract?.quality === "fail";
848
- }
849
- function qualityHasValidation(quality) {
850
- if (quality === void 0) return false;
851
- if (quality.typedValidations.some((fact) => fact.passed)) return true;
852
- return quality.resultContract?.quality === "pass";
853
- }
854
- function verificationStatus(verification, receipt, artifacts) {
855
- if (verification.state === "verified") {
856
- return attributed("validated", receiptSource(receipt), { kind: "validator", id: verification.basis }, artifacts);
857
- }
858
- if (verification.state === "unverified") return absentTrustStatus("not_observed");
859
- if (verification.state === "not_applicable") {
860
- return attributed("not_applicable", receiptSource(receipt), DISPATCH_AUTHORITY, artifacts);
861
- }
862
- return attributed(
863
- "unknown",
864
- receiptSource(receipt),
865
- verification.basis === "acp-external-unobserved" ? { kind: "external_system", id: "acp-delegation" } : COMPATIBILITY_AUTHORITY,
866
- artifacts
867
- );
868
- }
869
- function adaptRunReceiptValidationStatus(receipt) {
870
- if (receipt === null || receipt === void 0) return absentTrustStatus("artifact_missing");
871
- const artifacts = validationArtifacts(receipt);
872
- if (receipt.hostVerification?.status === "rejected") {
873
- return attributed("failed", receiptSource(receipt), { kind: "validator", id: "host-verification" }, artifacts);
874
- }
875
- if (receipt.hostVerification?.status === "verified") {
876
- return attributed("validated", receiptSource(receipt), { kind: "validator", id: "host-verification" }, artifacts);
877
- }
878
- if (receipt.hostVerification?.status === "not_implicated") {
879
- return attributed("unknown", receiptSource(receipt), { kind: "validator", id: "host-verification" }, artifacts);
880
- }
881
- if (qualityHasFailure(receipt.quality)) {
882
- return attributed("failed", receiptSource(receipt), { kind: "validator", id: "receipt-quality" }, artifacts);
883
- }
884
- if ((receipt.validationGrounding?.ungrounded.length ?? 0) > 0 || receipt.validationGrounding !== void 0 && receipt.validationGrounding.claimed > receipt.validationGrounding.grounded) {
885
- return attributed("ungrounded", receiptSource(receipt), { kind: "validator", id: "command-grounding" }, artifacts);
886
- }
887
- if (qualityHasValidation(receipt.quality)) {
888
- return attributed("validated", receiptSource(receipt), { kind: "validator", id: "receipt-quality" }, artifacts);
889
- }
890
- if (receipt.verification !== void 0) {
891
- return verificationStatus(receipt.verification, receipt, artifacts);
892
- }
893
- return attributed("unknown", compatibilitySource(receipt, "verification"), COMPATIBILITY_AUTHORITY, artifacts);
894
- }
895
- function validBriefing(briefing) {
896
- return Number.isSafeInteger(briefing.bytes) && briefing.bytes >= 0 && /^[a-f0-9]{64}$/u.test(briefing.contentHash);
897
- }
898
- function validBoundedProjectContext(context) {
899
- return context.tier === "bounded" && Number.isSafeInteger(context.chars) && (context.chars ?? -1) >= 0 && typeof context.contentHash === "string" && /^[a-f0-9]{64}$/u.test(context.contentHash);
900
- }
901
- var NONE_TIER_SECTIONS = ["workspace-root"];
902
- function validNoneTierProjectContext(context) {
903
- return context.tier === "none" && context.sections !== void 0 && context.sections.length === NONE_TIER_SECTIONS.length && context.sections.every((section) => NONE_TIER_SECTIONS.includes(section)) && Number.isSafeInteger(context.chars) && (context.chars ?? -1) >= 0 && typeof context.contentHash === "string" && /^[a-f0-9]{64}$/u.test(context.contentHash);
904
- }
905
- function recordedProjectContextHash(context) {
906
- if (context === void 0) return void 0;
907
- if (context.tier === "bounded") return validBoundedProjectContext(context) ? context.contentHash : void 0;
908
- return validNoneTierProjectContext(context) ? context.contentHash : void 0;
909
- }
910
- function validWorkerContext(value) {
911
- try {
912
- parseWorkerContextProvenance(value);
913
- return true;
914
- } catch {
915
- return false;
916
- }
917
- }
918
- function contextArtifacts(receipt) {
919
- const artifacts = [receiptReference(receipt)];
920
- if (receipt.workerContext !== void 0 && validWorkerContext(receipt.workerContext))
921
- artifacts.push(
922
- sha256Reference("worker_context", `${receipt.runId}:worker-context`, receipt.workerContext.contentHash)
923
- );
924
- if (receipt.briefing !== void 0 && validBriefing(receipt.briefing)) {
925
- artifacts.push(sha256Reference("briefing", `${receipt.runId}:briefing`, receipt.briefing.contentHash));
926
- }
927
- const recordedHash = recordedProjectContextHash(receipt.projectContext);
928
- if (recordedHash !== void 0) {
929
- artifacts.push(sha256Reference("project_context", `${receipt.runId}:project-context`, recordedHash));
930
- }
931
- return uniqueBoundedReferences(artifacts);
932
- }
933
- function adaptRunReceiptContextStatus(receipt) {
934
- if (receipt === null || receipt === void 0) return absentTrustStatus("artifact_missing");
935
- const artifacts = contextArtifacts(receipt);
936
- const source = receiptSource(receipt);
937
- const briefingInvalid = receipt.briefing !== void 0 && !validBriefing(receipt.briefing);
938
- if (briefingInvalid || receipt.workerContext !== void 0 && !validWorkerContext(receipt.workerContext))
939
- return attributed("invalid", source, DISPATCH_AUTHORITY, artifacts);
940
- const context = receipt.projectContext;
941
- if (context === void 0) {
942
- if (receipt.briefing !== void 0 || receipt.workerContext !== void 0)
943
- return attributed("recorded", source, DISPATCH_AUTHORITY, artifacts);
944
- return attributed("unknown", compatibilitySource(receipt, "projectContext"), COMPATIBILITY_AUTHORITY, artifacts);
945
- }
946
- if (context.tier === "none") {
947
- const bare = context.chars === void 0 && context.contentHash === void 0 && context.sections === void 0;
948
- if (bare) {
949
- return receipt.briefing === void 0 && receipt.workerContext === void 0 ? attributed("not_applicable", source, DISPATCH_AUTHORITY, artifacts) : attributed("recorded", source, DISPATCH_AUTHORITY, artifacts);
950
- }
951
- return attributed(
952
- validNoneTierProjectContext(context) ? "recorded" : "invalid",
953
- source,
954
- DISPATCH_AUTHORITY,
955
- artifacts
956
- );
957
- }
958
- return attributed(validBoundedProjectContext(context) ? "recorded" : "invalid", source, DISPATCH_AUTHORITY, artifacts);
959
- }
960
- function adaptRunReceiptAutonomyStatus(receipt) {
961
- if (receipt === null || receipt === void 0) return absentTrustStatus("artifact_missing");
962
- const enforcement = receipt.autonomyEnforcement;
963
- const artifacts = [receiptReference(receipt)];
964
- if (enforcement === void 0) {
965
- return attributed("unknown", compatibilitySource(receipt, "autonomyEnforcement"), COMPATIBILITY_AUTHORITY, artifacts);
966
- }
967
- artifacts.push({ kind: "autonomy_policy", id: `${receipt.runId}:${enforcement.autonomy}` });
968
- const authority = enforcement.grade === "mediated" ? { kind: "clio", id: "safety-autonomy" } : { kind: "runtime", id: enforcement.externalMode ?? "external-runtime" };
969
- const state = enforcement.dangerousBypass === true || enforcement.grade === "bypassed" ? "bypassed" : enforcement.grade === "approximated" ? "approximated" : "enforced";
970
- return attributed(state, receiptSource(receipt), authority, artifacts);
971
- }
972
- function receiptClaimsAreAuthenticated(receipt, integrity) {
973
- return receipt?.integrity !== void 0 && integrity?.ok === true;
974
- }
975
- function unauthenticatedReceiptProjection(receipt, integrity) {
976
- if (receipt === null || receipt === void 0) {
977
- return {
978
- validationGrounding: absentTrustStatus("artifact_missing"),
979
- contextProvenance: absentTrustStatus("artifact_missing"),
980
- autonomyEnforcement: absentTrustStatus("artifact_missing")
981
- };
982
- }
983
- if (receipt.integrity === void 0) {
984
- const artifacts = [receiptReference(receipt)];
985
- return {
986
- validationGrounding: attributed(
987
- "unknown",
988
- compatibilitySource(receipt, "canonical-projection"),
989
- COMPATIBILITY_AUTHORITY,
990
- artifacts
991
- ),
992
- contextProvenance: attributed(
993
- "unknown",
994
- compatibilitySource(receipt, "canonical-projection"),
995
- COMPATIBILITY_AUTHORITY,
996
- artifacts
997
- ),
998
- autonomyEnforcement: attributed(
999
- "unknown",
1000
- compatibilitySource(receipt, "canonical-projection"),
1001
- COMPATIBILITY_AUTHORITY,
1002
- artifacts
1003
- )
1004
- };
1005
- }
1006
- if (integrity !== void 0 && !integrity.ok && integrity.retired !== void 0) {
1007
- return {
1008
- validationGrounding: absentTrustStatus("historical_format"),
1009
- contextProvenance: absentTrustStatus("historical_format"),
1010
- autonomyEnforcement: absentTrustStatus("historical_format")
1011
- };
1012
- }
1013
- return {
1014
- validationGrounding: absentTrustStatus("not_observed"),
1015
- contextProvenance: absentTrustStatus("not_observed"),
1016
- autonomyEnforcement: absentTrustStatus("not_observed")
1017
- };
1018
- }
1019
- function adaptRunReceiptTrustStatus(receipt, options = {}) {
1020
- const authenticated = receiptClaimsAreAuthenticated(receipt, options.integrity);
1021
- const receiptProjection = authenticated ? {
1022
- validationGrounding: adaptRunReceiptValidationStatus(receipt),
1023
- contextProvenance: adaptRunReceiptContextStatus(receipt),
1024
- autonomyEnforcement: adaptRunReceiptAutonomyStatus(receipt)
1025
- } : unauthenticatedReceiptProjection(receipt, options.integrity);
1026
- return composeTrustStatus({
1027
- artifactIntegrity: adaptReceiptIntegrityStatus(receipt, options.integrity),
1028
- ...receiptProjection,
1029
- independentReview: absentTrustStatus(receipt === null || receipt === void 0 ? "artifact_missing" : "not_recorded"),
1030
- completionEvidence: absentTrustStatus(
1031
- receipt === null || receipt === void 0 ? "artifact_missing" : "not_recorded"
1032
- )
1033
- });
1034
- }
1035
- function inspectRunReceiptTrustStatus(receipt, envelope) {
1036
- let integrity;
1037
- if (receipt === null || receipt === void 0) {
1038
- integrity = { ok: false, reason: "receipt unavailable" };
1039
- } else if (envelope === null || envelope === void 0) {
1040
- integrity = { ok: false, reason: "run ledger envelope unavailable" };
1041
- } else {
1042
- try {
1043
- integrity = verifyReceiptIntegrityOutcome(receipt, envelope);
1044
- } catch (error) {
1045
- integrity = {
1046
- ok: false,
1047
- reason: `receipt invalid: ${error instanceof Error ? error.message : String(error)}`
1048
- };
1049
- }
1050
- }
1051
- return {
1052
- integrity,
1053
- status: adaptRunReceiptTrustStatus(receipt, { integrity })
1054
- };
1055
- }
1056
- function gateReference(artifact) {
1057
- return sha256Reference("gate_decision", artifact.id, artifact.integrity.digest);
1058
- }
1059
- function gateAuthority(artifact) {
1060
- if (artifact.outcome === "operator-confirmed") return { kind: "operator", id: "gate-confirmation" };
1061
- if (artifact.outcome === "full-auto-applied") return { kind: "clio", id: "full-auto-gate-policy" };
1062
- return { kind: "reviewer", id: artifact.decider?.runId ?? "unavailable-decider" };
1063
- }
1064
- function adaptGateDecisionReviewStatus(artifact, subjectRunId, verification) {
1065
- if (artifact === null || artifact === void 0) return absentTrustStatus("artifact_missing");
1066
- const source = { kind: "gate_decision", id: artifact.id };
1067
- const artifacts = [gateReference(artifact)];
1068
- const authority = gateAuthority(artifact);
1069
- if (!artifact.subjects.some((subject) => subject.runId === subjectRunId)) return absentTrustStatus("not_recorded");
1070
- if (verification === void 0 || !verification.ok) {
1071
- return attributed(
1072
- "unknown",
1073
- source,
1074
- verification === void 0 ? COMPATIBILITY_AUTHORITY : { kind: "unknown", id: "unauthenticated-gate-artifact" },
1075
- artifacts
1076
- );
1077
- }
1078
- if (artifact.decider === void 0 || artifact.correlation === void 0) {
1079
- if (artifact.outcome === "operator-confirmed" || artifact.outcome === "full-auto-applied") {
1080
- return attributed("not_applicable", source, authority, artifacts);
1081
- }
1082
- return attributed("inconclusive", source, authority, artifacts);
1083
- }
1084
- if (!artifact.correlation.independent) return attributed("not_independent", source, authority, artifacts);
1085
- if (artifact.outcome === "pass") return attributed("passed", source, authority, artifacts);
1086
- if (artifact.outcome === "fail") return attributed("failed", source, authority, artifacts);
1087
- if (artifact.outcome === "winner") {
1088
- return attributed(
1089
- artifact.winner?.subject.runId === subjectRunId ? "passed" : "failed",
1090
- source,
1091
- authority,
1092
- artifacts
1093
- );
1094
- }
1095
- return attributed("inconclusive", source, authority, artifacts);
1096
- }
1097
- function adaptGroundedEvidenceValidationStatus(input) {
1098
- const observed = (input.artifacts ?? []).filter((artifact) => !SELF_REPORTED_ARTIFACT_KINDS.has(artifact.kind));
1099
- if (observed.length === 0) return absentTrustStatus("not_observed");
1100
- return attributed(
1101
- "validated",
1102
- { kind: "evidence_bundle", id: `${input.evidenceId}:${input.runId}` },
1103
- { kind: "clio", id: "evidence-grounding" },
1104
- uniqueBoundedReferences([{ kind: "evidence_bundle", id: input.evidenceId }, ...observed])
1105
- );
1106
- }
1107
- function adaptFinishContractCompletionStatus(assessment, options = {}) {
1108
- const artifacts = uniqueBoundedReferences(
1109
- options.artifacts ?? assessment.evidence.map((evidence, index) => ({
1110
- kind: evidence.turnId === void 0 ? "finish_contract_evidence" : "session_entry",
1111
- id: evidence.turnId ?? `${evidence.kind}:${index + 1}`
1112
- }))
1113
- );
1114
- const source = { kind: "finish_contract", id: options.sourceId ?? assessment.reason };
1115
- const authority = { kind: "clio", id: "finish-contract" };
1116
- if (assessment.reason === "no_mutation") return attributed("not_applicable", source, authority, artifacts);
1117
- if (assessment.reason === "validation_evidence") return attributed("evidenced", source, authority, artifacts);
1118
- if (assessment.reason === "explicit_limitation") return attributed("limited", source, authority, artifacts);
1119
- return attributed("incomplete", source, authority, artifacts);
1120
- }
1121
- function uniqueBoundedReferences(references) {
1122
- const sorted = [...references].sort(compareArtifactReferences);
1123
- const unique = sorted.filter(
1124
- (reference, index) => index === 0 || compareArtifactReferences(sorted[index - 1], reference) !== 0
1125
- );
1126
- return unique.slice(0, TRUST_STATUS_MAX_ARTIFACT_REFERENCES);
1127
- }
1128
-
1129
- // src/domains/evidence/trust-projection.ts
1130
- init_esm_shims();
1131
- var TRUST_SUMMARY_VERSION = 1;
1132
- var TRUST_SUMMARY_MAX_REFS = 8;
1133
- var TRUST_VERDICTS = [
1134
- "reviewed",
1135
- "grounded",
1136
- "unverified",
1137
- "compromised",
1138
- "unknown"
1139
- ];
1140
- var TRUST_STATE_WORDS = {
1141
- artifactIntegrity: {
1142
- verified: "sealed",
1143
- failed: "seal broken",
1144
- absent: "no receipt",
1145
- unknown: "seal unchecked",
1146
- not_applicable: "seal not applicable"
1147
- },
1148
- validationGrounding: {
1149
- validated: "grounded",
1150
- failed: "validation failed",
1151
- ungrounded: "inferred: validation claimed, none observed",
1152
- absent: "no validation observed",
1153
- unknown: "validation unknown",
1154
- not_applicable: "validation not applicable"
1155
- },
1156
- independentReview: {
1157
- passed: "independently reviewed: pass",
1158
- failed: "independently reviewed: fail",
1159
- inconclusive: "independent review inconclusive",
1160
- not_independent: "review not independent",
1161
- absent: "not independently reviewed",
1162
- unknown: "independent review unknown",
1163
- not_applicable: "independent review not applicable"
1164
- },
1165
- contextProvenance: {
1166
- recorded: "context recorded",
1167
- invalid: "context record invalid",
1168
- absent: "context not recorded",
1169
- unknown: "context unknown",
1170
- not_applicable: "context not applicable"
1171
- },
1172
- autonomyEnforcement: {
1173
- enforced: "mediated",
1174
- approximated: "approximated",
1175
- bypassed: "bypassed",
1176
- absent: "autonomy not recorded",
1177
- unknown: "autonomy unknown",
1178
- not_applicable: "autonomy not applicable"
1179
- },
1180
- completionEvidence: {
1181
- evidenced: "completion evidenced",
1182
- incomplete: "completion unevidenced",
1183
- limited: "completion limited",
1184
- absent: "completion not recorded",
1185
- unknown: "completion unknown",
1186
- not_applicable: "completion not applicable"
1187
- }
1188
- };
1189
- function trustStateWord(axis, state) {
1190
- const words = TRUST_STATE_WORDS[axis];
1191
- return words[state] ?? words.unknown ?? "unknown";
1192
- }
1193
- function authorityOf(status, axis) {
1194
- const entry = status[axis];
1195
- return entry.state === "absent" ? null : `${entry.authority.kind}:${entry.authority.id}`;
1196
- }
1197
- function integrityClause(status) {
1198
- const retired = retiredIntegrityVersionOf(status.artifactIntegrity);
1199
- if (retired !== null) return `seal v${retired} retired (this build verifies v${RUN_RECEIPT_INTEGRITY_VERSION})`;
1200
- return trustStateWord("artifactIntegrity", status.artifactIntegrity.state);
1201
- }
1202
- function validationClause(status) {
1203
- const entry = status.validationGrounding;
1204
- const word = trustStateWord("validationGrounding", entry.state);
1205
- if (entry.state === "absent") return word;
1206
- if (entry.state === "validated" || entry.state === "failed") return `${word} by ${entry.authority.id}`;
1207
- if (entry.state === "unknown" && entry.authority.kind !== "unknown") return `${word} (${entry.authority.id})`;
1208
- return word;
1209
- }
1210
- function autonomyClause(status) {
1211
- const entry = status.autonomyEnforcement;
1212
- const word = trustStateWord("autonomyEnforcement", entry.state);
1213
- if (entry.state !== "approximated" && entry.state !== "bypassed") return word;
1214
- return `${word} (${entry.authority.id})`;
1215
- }
1216
- function formatTrustSummary(status) {
1217
- return [
1218
- integrityClause(status),
1219
- validationClause(status),
1220
- trustStateWord("independentReview", status.independentReview.state),
1221
- autonomyClause(status),
1222
- trustStateWord("contextProvenance", status.contextProvenance.state),
1223
- trustStateWord("completionEvidence", status.completionEvidence.state)
1224
- ].join("; ");
1225
- }
1226
- function formatTrustSummaryLine(status) {
1227
- return `trust v${TRUST_SUMMARY_VERSION}: ${trustVerdict(status)}; ${formatTrustSummary(status)}`;
1228
- }
1229
- function formatTrustAxes(status) {
1230
- return [`trust_status=v${status.version}`, ...TRUST_STATUS_AXES.map((axis) => `${axis}:${status[axis].state}`)].join(
1231
- " "
1232
- );
1233
- }
1234
- function isUnanswered(status, axis) {
1235
- const state = status[axis].state;
1236
- return state === "absent" || state === "unknown";
1237
- }
1238
- function trustVerdict(status) {
1239
- const integrity = status.artifactIntegrity.state;
1240
- const validation = status.validationGrounding.state;
1241
- const review = status.independentReview.state;
1242
- const autonomy = status.autonomyEnforcement.state;
1243
- if (integrity === "failed" || autonomy === "bypassed" || validation === "failed" || validation === "ungrounded" || review === "failed" || review === "not_independent" || status.contextProvenance.state === "invalid") {
1244
- return "compromised";
1245
- }
1246
- if (integrity !== "verified") return "unknown";
1247
- if (review === "passed") return "reviewed";
1248
- if (validation === "validated") return "grounded";
1249
- return "unverified";
1250
- }
1251
- function claimantOf(status) {
1252
- const state = status.validationGrounding.state;
1253
- if (state === "absent" || state === "ungrounded") return "worker";
1254
- return authorityOf(status, "validationGrounding") ?? "worker";
1255
- }
1256
- function referenceKey(reference) {
1257
- return `${reference.kind}:${reference.id}`;
1258
- }
1259
- function trustSummaryReferences(status) {
1260
- const keys = /* @__PURE__ */ new Set();
1261
- for (const axis of TRUST_STATUS_AXES) {
1262
- const entry = status[axis];
1263
- if (entry.state === "absent") continue;
1264
- for (const reference of entry.artifacts) keys.add(referenceKey(reference));
1265
- }
1266
- return [...keys].sort().slice(0, TRUST_SUMMARY_MAX_REFS);
1267
- }
1268
- function summarizeTrustStatus(status) {
1269
- const axes = Object.fromEntries(TRUST_STATUS_AXES.map((axis) => [axis, status[axis].state]));
1270
- return {
1271
- version: TRUST_SUMMARY_VERSION,
1272
- verdict: trustVerdict(status),
1273
- text: formatTrustSummary(status),
1274
- axes,
1275
- claimant: claimantOf(status),
1276
- unknown: TRUST_STATUS_AXES.filter((axis) => isUnanswered(status, axis)),
1277
- refs: trustSummaryReferences(status)
1278
- };
1279
- }
1280
-
1281
- // src/domains/eval/provenance.ts
1282
- init_esm_shims();
1283
- import { spawnSync } from "node:child_process";
1284
- function evalClioProvenance(options = {}) {
1285
- return {
1286
- version: readClioVersion(),
1287
- commit: options.commit === void 0 ? currentClioCommit() : options.commit,
1288
- entry: options.entry ?? process.argv[1] ?? "unknown"
1289
- };
1290
- }
1291
- function evalEnvironmentProvenance() {
1292
- return {
1293
- platform: `${process.platform}-${process.arch}`,
1294
- node: process.version
1295
- };
1296
- }
1297
- async function evalServingConfiguration(targets, observations) {
1298
- const targetId = targets.length === 1 ? targets[0]?.id ?? "unknown" : "multiple";
1299
- const configured = configuredTarget(targetId);
1300
- const target = targets.length === 1 ? targets[0] : void 0;
1301
- const runtimeId = consensus(observations.map((entry) => entry.runtimeId)) ?? configured?.runtime ?? null;
1302
- const modelId = consensus(observations.map((entry) => entry.modelId)) ?? target?.model ?? configured?.defaultModel ?? null;
1303
- const props = configured?.url === void 0 ? null : await readServingProps(configured.url, modelId);
1304
- return {
1305
- targetId,
1306
- runtimeId,
1307
- modelId,
1308
- serverBuild: props?.serverBuild ?? null,
1309
- total_slots: props?.totalSlots ?? null,
1310
- thinkingLevel: consensus(observations.map((entry) => entry.thinkingLevel)) ?? target?.thinking ?? null,
1311
- compiledPromptHash: consensus(observations.map((entry) => entry.compiledPromptHash))
1312
- };
1313
- }
1314
- function evalServingObservationFrom(target, receipt, compiledPromptHashes) {
1315
- const compiledPromptHash = receipt?.staticCompositionHash ?? receipt?.compiledPromptHash ?? consensus(compiledPromptHashes);
1316
- return {
1317
- targetId: receipt?.targetId ?? target.id,
1318
- runtimeId: receipt?.runtimeId ?? null,
1319
- modelId: receipt?.wireModelId ?? target.model ?? null,
1320
- thinkingLevel: receipt?.runtimeResolution?.effectiveThinkingLevel ?? target.thinking ?? null,
1321
- compiledPromptHash
1322
- };
1323
- }
1324
- function currentClioCommit() {
1325
- const result = spawnSync("git", ["rev-parse", "HEAD"], {
1326
- cwd: resolvePackageRoot(),
1327
- encoding: "utf8",
1328
- stdio: ["ignore", "pipe", "ignore"],
1329
- timeout: 1e3
1330
- });
1331
- if (result.status !== 0 || typeof result.stdout !== "string") return null;
1332
- const value = result.stdout.trim();
1333
- return value.length > 0 ? value : null;
1334
- }
1335
- function configuredTarget(targetId) {
1336
- try {
1337
- const target = readSettings().targets.find((entry) => entry.id === targetId);
1338
- if (target === void 0) return null;
1339
- return {
1340
- runtime: target.runtime,
1341
- ...target.url === void 0 ? {} : { url: target.url },
1342
- ...target.defaultModel === void 0 ? {} : { defaultModel: target.defaultModel }
1343
- };
1344
- } catch {
1345
- return null;
1346
- }
1347
- }
1348
- async function readServingProps(targetUrl, modelId) {
1349
- const root = targetUrl.replace(/\/+$/u, "").replace(/\/v1$/u, "");
1350
- try {
1351
- const response = await fetch(`${root}/props`, { signal: AbortSignal.timeout(5e3) });
1352
- if (!response.ok) return null;
1353
- const value = await response.json();
1354
- if (!isRecord2(value)) return null;
1355
- const totalSlots = positiveInteger(value.total_slots) ?? await readServingSlots(root, modelId);
1356
- return {
1357
- serverBuild: typeof value.build_info === "string" && value.build_info.length > 0 ? value.build_info : null,
1358
- totalSlots
1359
- };
1360
- } catch {
1361
- return null;
1362
- }
1363
- }
1364
- async function readServingSlots(root, modelId) {
1365
- if (modelId === null) return null;
1366
- try {
1367
- const query = new URLSearchParams({ model: modelId });
1368
- const response = await fetch(`${root}/slots?${query}`, { signal: AbortSignal.timeout(5e3) });
1369
- if (!response.ok) return null;
1370
- const value = await response.json();
1371
- return Array.isArray(value) && value.length > 0 ? value.length : null;
1372
- } catch {
1373
- return null;
1374
- }
1375
- }
1376
- function consensus(values) {
1377
- const known = [...new Set(values.filter((value) => typeof value === "string" && value.length > 0))];
1378
- return known.length === 1 ? known[0] ?? null : null;
1379
- }
1380
- function positiveInteger(value) {
1381
- return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : null;
1382
- }
1383
- function isRecord2(value) {
1384
- return typeof value === "object" && value !== null && !Array.isArray(value);
1385
- }
1386
-
1387
- // src/domains/eval/task-file.ts
1388
- init_esm_shims();
1389
- var import_yaml = __toESM(require_dist(), 1);
1390
- import { createHash as createHash3 } from "node:crypto";
1391
- import { readFile } from "node:fs/promises";
1392
- import { dirname, isAbsolute, relative, resolve } from "node:path";
1393
-
1394
- // src/domains/eval/types.ts
1395
- init_esm_shims();
1396
- var EVAL_TASK_FILE_VERSION = 1;
1397
-
1398
- // src/domains/eval/task-file.ts
1399
- var TASK_KEYS = /* @__PURE__ */ new Set(["id", "prompt", "cwd", "setup", "verifier", "timeoutMs", "tags"]);
1400
- async function loadEvalTaskFile(path2) {
1401
- const resolved = resolve(path2);
1402
- const raw = await readFile(resolved, "utf8");
1403
- const result = parseEvalTaskFileYaml(raw);
1404
- if (!result.valid) {
1405
- throw new EvalTaskFileError(result.issues);
1406
- }
1407
- const baseDir = dirname(resolved);
1408
- const cwdIssues = validateTaskCwds(result.taskFile.tasks, baseDir);
1409
- if (cwdIssues.length > 0) throw new EvalTaskFileError(cwdIssues);
1410
- return {
1411
- path: resolved,
1412
- baseDir,
1413
- contentHash: sha256Hex(raw),
1414
- taskFile: result.taskFile
1415
- };
1416
- }
1417
- function parseEvalTaskFileYaml(raw) {
1418
- let parsed;
1419
- try {
1420
- parsed = (0, import_yaml.parse)(raw);
1421
- } catch (error) {
1422
- const message = error instanceof Error ? error.message : String(error);
1423
- return { valid: false, issues: [{ path: "$", message: `invalid YAML: ${message}` }] };
1424
- }
1425
- return validateEvalTaskFile(parsed);
1426
- }
1427
- function validateEvalTaskFile(value) {
1428
- const issues = [];
1429
- if (!isRecord3(value)) {
1430
- return { valid: false, issues: [{ path: "$", message: "expected object" }] };
1431
- }
1432
- if (value.version !== EVAL_TASK_FILE_VERSION) {
1433
- issues.push({ path: "$.version", message: "expected version 1" });
1434
- }
1435
- if (!Array.isArray(value.tasks)) {
1436
- issues.push({ path: "$.tasks", message: "expected non-empty array" });
1437
- return { valid: false, issues };
1438
- }
1439
- if (value.tasks.length === 0) {
1440
- issues.push({ path: "$.tasks", message: "expected non-empty array" });
1441
- }
1442
- const tasks = [];
1443
- const seenIds = /* @__PURE__ */ new Set();
1444
- for (let index = 0; index < value.tasks.length; index += 1) {
1445
- const task = parseTask(value.tasks[index], `$.tasks[${index}]`, issues);
1446
- if (task === null) continue;
1447
- if (seenIds.has(task.id)) {
1448
- issues.push({ path: `$.tasks[${index}].id`, message: `duplicate task id: ${task.id}` });
1449
- }
1450
- seenIds.add(task.id);
1451
- tasks.push(task);
1452
- }
1453
- if (issues.length > 0) return { valid: false, issues };
1454
- return { valid: true, taskFile: { version: 1, tasks } };
1455
- }
1456
- var EvalTaskFileError = class extends Error {
1457
- issues;
1458
- constructor(issues) {
1459
- super(`eval task file invalid (${issues.length} ${issues.length === 1 ? "issue" : "issues"})`);
1460
- this.name = "EvalTaskFileError";
1461
- this.issues = [...issues];
1462
- }
1463
- };
1464
- function parseTask(value, path2, issues) {
1465
- if (!isRecord3(value)) {
1466
- issues.push({ path: path2, message: "expected object" });
1467
- return null;
1468
- }
1469
- for (const key of Object.keys(value).sort((a, b) => a.localeCompare(b))) {
1470
- if (!TASK_KEYS.has(key)) issues.push({ path: `${path2}.${key}`, message: "unknown field" });
1471
- }
1472
- const id = readNonEmptyString(value, path2, "id", issues);
1473
- if (id !== null && !/^[A-Za-z0-9._-]+$/.test(id)) {
1474
- issues.push({ path: `${path2}.id`, message: "expected id with letters, numbers, dots, underscores, or hyphens" });
1475
- }
1476
- const prompt = readNonEmptyString(value, path2, "prompt", issues);
1477
- const cwd = readNonEmptyString(value, path2, "cwd", issues);
1478
- if (cwd !== null && isAbsolute(cwd)) {
1479
- issues.push({ path: `${path2}.cwd`, message: "expected repo-local relative path" });
1480
- }
1481
- const setup = readStringArray(value, path2, "setup", issues, true);
1482
- const verifier = readStringArray(value, path2, "verifier", issues, false);
1483
- if (verifier !== null && verifier.length === 0) {
1484
- issues.push({ path: `${path2}.verifier`, message: "expected at least one command" });
1485
- }
1486
- const timeoutMs = readPositiveInteger(value, path2, "timeoutMs", issues);
1487
- const tags = readStringArray(value, path2, "tags", issues, true);
1488
- if (id === null || prompt === null || cwd === null || setup === null || verifier === null || timeoutMs === null) {
1489
- return null;
1490
- }
1491
- return { id, prompt, cwd, setup, verifier, timeoutMs, tags: tags ?? [] };
1492
- }
1493
- function validateTaskCwds(tasks, baseDir) {
1494
- const issues = [];
1495
- for (let index = 0; index < tasks.length; index += 1) {
1496
- const task = tasks[index];
1497
- if (task === void 0) continue;
1498
- const resolved = resolve(baseDir, task.cwd);
1499
- const rel = relative(baseDir, resolved);
1500
- if (rel === "" || !rel.startsWith("..") && !isAbsolute(rel)) continue;
1501
- issues.push({ path: `$.tasks[${index}].cwd`, message: "cwd must stay within the task file directory" });
1502
- }
1503
- return issues;
1504
- }
1505
- function readNonEmptyString(record, path2, field, issues) {
1506
- const value = record[field];
1507
- if (typeof value !== "string" || value.trim().length === 0) {
1508
- issues.push({ path: `${path2}.${field}`, message: "expected non-empty string" });
1509
- return null;
1510
- }
1511
- return value;
1512
- }
1513
- function readStringArray(record, path2, field, issues, allowMissing) {
1514
- const value = record[field];
1515
- if (value === void 0 && allowMissing) return [];
1516
- if (!Array.isArray(value)) {
1517
- issues.push({ path: `${path2}.${field}`, message: "expected string array" });
1518
- return null;
1519
- }
1520
- const out = [];
1521
- for (let index = 0; index < value.length; index += 1) {
1522
- const entry = value[index];
1523
- if (typeof entry !== "string" || entry.trim().length === 0) {
1524
- issues.push({ path: `${path2}.${field}[${index}]`, message: "expected non-empty string" });
1525
- continue;
1526
- }
1527
- out.push(entry);
1528
- }
1529
- return out;
1530
- }
1531
- function readPositiveInteger(record, path2, field, issues) {
1532
- const value = record[field];
1533
- if (typeof value !== "number" || !Number.isInteger(value) || value <= 0) {
1534
- issues.push({ path: `${path2}.${field}`, message: "expected positive integer" });
1535
- return null;
1536
- }
1537
- return value;
1538
- }
1539
- function isRecord3(value) {
1540
- return typeof value === "object" && value !== null && !Array.isArray(value);
1541
- }
1542
- function sha256Hex(content) {
1543
- return createHash3("sha256").update(content, "utf8").digest("hex");
1544
- }
1545
-
1546
- // src/domains/eval/run-compare.ts
1547
- init_esm_shims();
1548
- var EvalTrackedMetricSourceMismatchError = class extends Error {
1549
- constructor(metric, baseline, candidate) {
1550
- super(
1551
- `tracked metric ${metric} cannot compare estimated and measured values (baseline=${baseline.join(",") || "none"}, candidate=${candidate.join(",") || "none"})`
1552
- );
1553
- this.name = "EvalTrackedMetricSourceMismatchError";
1554
- }
1555
- };
1556
- function assertComparableTrackedMetricSources(metric, baseline, candidate) {
1557
- if (baseline.includes("estimated") === candidate.includes("estimated")) return;
1558
- throw new EvalTrackedMetricSourceMismatchError(metric, baseline, candidate);
1559
- }
1560
-
1561
- // src/domains/prompts/fragment-loader.ts
1562
- init_esm_shims();
1563
- var import_yaml2 = __toESM(require_dist(), 1);
1564
- import { readdirSync, readFileSync } from "node:fs";
1565
- import path from "node:path";
1566
- var frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
1567
- var fragmentIdRegex = /^[a-z0-9-]+(?:\.[a-z0-9-]+)+$/;
1568
- function defaultRootDir() {
1569
- return path.join(resolvePackageRoot(), "src", "domains", "prompts", "fragments");
1570
- }
1571
- function walk(root) {
1572
- const out = [];
1573
- let entries;
1574
- try {
1575
- entries = readdirSync(root, { withFileTypes: true });
1576
- } catch {
1577
- return out;
1578
- }
1579
- for (const entry of entries) {
1580
- const full = path.join(root, entry.name);
1581
- if (entry.isDirectory()) {
1582
- out.push(...walk(full));
1583
- continue;
1584
- }
1585
- if (entry.isFile() && entry.name.endsWith(".md")) {
1586
- out.push(full);
1587
- }
1588
- }
1589
- return out.sort((left, right) => left.localeCompare(right));
1590
- }
1591
- function parseFragment(filePath, rootDir) {
1592
- const raw = readFileSync(filePath, "utf8");
1593
- const rawRel = path.relative(rootDir, filePath);
1594
- const relPath = rawRel.split(path.sep).join("/");
1595
- const match = raw.match(frontmatterRegex);
1596
- if (!match) {
1597
- throw new Error(`fragment-loader: ${relPath}: missing or malformed YAML frontmatter`);
1598
- }
1599
- const frontmatterText = match[1] ?? "";
1600
- const body = match[2] ?? "";
1601
- let parsed;
1602
- try {
1603
- parsed = import_yaml2.default.parse(frontmatterText);
1604
- } catch (err) {
1605
- const reason = err instanceof Error ? err.message : String(err);
1606
- throw new Error(`fragment-loader: ${relPath}: invalid YAML frontmatter (${reason})`);
1607
- }
1608
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
1609
- throw new Error(`fragment-loader: ${relPath}: frontmatter must be a YAML object`);
1610
- }
1611
- const fm = parsed;
1612
- const id = fm.id;
1613
- if (typeof id !== "string" || !fragmentIdRegex.test(id)) {
1614
- throw new Error(`fragment-loader: ${relPath}: frontmatter.id must be a dot-separated namespace`);
1615
- }
1616
- const version = fm.version;
1617
- if (version !== 1) {
1618
- throw new Error(`fragment-loader: ${relPath}: frontmatter.version must be 1`);
1619
- }
1620
- const description = fm.description;
1621
- if (typeof description !== "string" || description.trim() === "") {
1622
- throw new Error(`fragment-loader: ${relPath}: frontmatter.description must be a non-empty string`);
1623
- }
1624
- const dynamicRaw = fm.dynamic;
1625
- if (dynamicRaw !== void 0 && typeof dynamicRaw !== "boolean") {
1626
- throw new Error(`fragment-loader: ${relPath}: frontmatter.dynamic must be a boolean when present`);
1627
- }
1628
- return {
1629
- path: filePath,
1630
- relPath,
1631
- id,
1632
- version,
1633
- description,
1634
- dynamic: dynamicRaw === true,
1635
- body,
1636
- contentHash: sha256(raw)
1637
- };
1638
- }
1639
- function loadFragments(options) {
1640
- const rootDir = typeof options === "string" ? options : options?.rootDir;
1641
- const resolvedRoot = rootDir ? path.resolve(rootDir) : defaultRootDir();
1642
- const files = walk(resolvedRoot);
1643
- const byId = /* @__PURE__ */ new Map();
1644
- for (const file of files) {
1645
- const fragment = parseFragment(file, resolvedRoot);
1646
- const existing = byId.get(fragment.id);
1647
- if (existing) {
1648
- throw new Error(
1649
- `fragment-loader: duplicate fragment id "${fragment.id}" in ${existing.relPath} and ${fragment.relPath}`
1650
- );
1651
- }
1652
- byId.set(fragment.id, fragment);
1653
- }
1654
- return { byId, rootDir: resolvedRoot };
1655
- }
1656
-
1657
- export {
1658
- renderCodewikiDigest,
1659
- sha256,
1660
- canonicalJson,
1661
- RUN_RECEIPT_INTEGRITY_VERSION,
1662
- RUN_RECEIPT_INTEGRITY_ALGORITHM,
1663
- withReceiptIntegrity,
1664
- isReceiptIntegrity,
1665
- verifyReceiptIntegrity,
1666
- TRUST_STATUS_VERSION,
1667
- TRUST_STATUS_MAX_ARTIFACT_REFERENCES,
1668
- TRUST_STATUS_MAX_IDENTIFIER_LENGTH,
1669
- TRUST_STATUS_AXES,
1670
- TRUST_STATUS_STATES,
1671
- isTrustStatusIdentifier,
1672
- normalizeTrustStatus,
1673
- validateTrustStatus,
1674
- absentTrustStatus,
1675
- composeTrustStatus,
1676
- projectTrustStatus,
1677
- retiredReceiptIntegrity,
1678
- retiredReceiptIntegrityReason,
1679
- verifyReceiptIntegrityOutcome,
1680
- retiredIntegrityVersionOf,
1681
- adaptReceiptIntegrityStatus,
1682
- adaptRunReceiptValidationStatus,
1683
- adaptRunReceiptContextStatus,
1684
- adaptRunReceiptAutonomyStatus,
1685
- adaptRunReceiptTrustStatus,
1686
- inspectRunReceiptTrustStatus,
1687
- adaptGateDecisionReviewStatus,
1688
- adaptGroundedEvidenceValidationStatus,
1689
- adaptFinishContractCompletionStatus,
1690
- TRUST_SUMMARY_VERSION,
1691
- TRUST_SUMMARY_MAX_REFS,
1692
- TRUST_VERDICTS,
1693
- TRUST_STATE_WORDS,
1694
- trustStateWord,
1695
- formatTrustSummary,
1696
- formatTrustSummaryLine,
1697
- formatTrustAxes,
1698
- trustVerdict,
1699
- trustSummaryReferences,
1700
- summarizeTrustStatus,
1701
- evalClioProvenance,
1702
- evalEnvironmentProvenance,
1703
- evalServingConfiguration,
1704
- evalServingObservationFrom,
1705
- assertComparableTrackedMetricSources,
1706
- loadEvalTaskFile,
1707
- EvalTaskFileError,
1708
- loadFragments
1709
- };
1710
- //# sourceMappingURL=chunk-IALZJE37.js.map