@iowarp/clio-coder 0.4.6 → 0.4.8

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 (1142) hide show
  1. package/.claude-plugin/marketplace.json +283 -0
  2. package/CHANGELOG.md +79 -0
  3. package/CONTRIBUTING.md +178 -96
  4. package/NOTICE +8 -0
  5. package/README.md +100 -47
  6. package/dist/acp-JWPQZM2D.js +130 -0
  7. package/dist/agents-4GCDIRVX.js +149 -0
  8. package/dist/assets/codewiki.json +1 -1
  9. package/dist/assets/tui-notices/get-east-asian-width-LICENSE +9 -0
  10. package/dist/assets/tui-notices/marked-LICENSE +44 -0
  11. package/dist/assets/tui-notices/pi-tui-LICENSE +21 -0
  12. package/dist/assets/web-notices/@hono__node-server-LICENSE +21 -0
  13. package/dist/assets/web-notices/hono-LICENSE +21 -0
  14. package/dist/auth-SYAKTDQE.js +551 -0
  15. package/dist/background-OW67WMYR.js +37 -0
  16. package/dist/builtins-TKS63VNV.js +22 -0
  17. package/dist/chunk-2JSCCEKO.js +85 -0
  18. package/dist/chunk-2SXGG2IV.js +391 -0
  19. package/dist/chunk-2U2U5POA.js +59 -0
  20. package/dist/chunk-2ZWLMA3T.js +658 -0
  21. package/dist/chunk-36XSBPXL.js +579 -0
  22. package/dist/chunk-3IQOZRQ6.js +396 -0
  23. package/dist/chunk-3XE4NRLF.js +324 -0
  24. package/dist/chunk-44U2OUSM.js +243 -0
  25. package/dist/chunk-4P6M2TTE.js +119 -0
  26. package/dist/chunk-526ABLHD.js +1219 -0
  27. package/dist/chunk-5C2OQHLR.js +674 -0
  28. package/dist/chunk-5D2FNBMG.js +185 -0
  29. package/dist/chunk-5EQO5NWP.js +243 -0
  30. package/dist/chunk-5HULHKT2.js +32 -0
  31. package/dist/chunk-5UG6EZI3.js +66 -0
  32. package/dist/chunk-5W4FRA5Q.js +22283 -0
  33. package/dist/chunk-6R5MBXBJ.js +386 -0
  34. package/dist/chunk-6TKOFFGE.js +1058 -0
  35. package/dist/chunk-6UJ7RDI7.js +1143 -0
  36. package/dist/chunk-6X7VOCDY.js +44 -0
  37. package/dist/chunk-7QQRPB2E.js +915 -0
  38. package/dist/chunk-ARRUMZ7X.js +1377 -0
  39. package/dist/chunk-ATB3Q7YO.js +663 -0
  40. package/dist/chunk-AUHVBIDW.js +19 -0
  41. package/dist/chunk-BE4I3UJ2.js +668 -0
  42. package/dist/chunk-BFPHMSK7.js +169 -0
  43. package/dist/chunk-BHJMMCXS.js +466 -0
  44. package/dist/chunk-BIY22UUK.js +1322 -0
  45. package/dist/chunk-D55WO5J7.js +110 -0
  46. package/dist/chunk-DVJL77SO.js +162 -0
  47. package/dist/chunk-E2NSPYLC.js +814 -0
  48. package/dist/chunk-EFXMQYI6.js +4484 -0
  49. package/dist/chunk-EPYATQMG.js +2718 -0
  50. package/dist/chunk-EXKUF426.js +1801 -0
  51. package/dist/chunk-F7Y6QTPL.js +689 -0
  52. package/dist/chunk-FB3KTE2J.js +1710 -0
  53. package/dist/chunk-FNVPQQYT.js +117 -0
  54. package/dist/chunk-GEVQNST4.js +101 -0
  55. package/dist/chunk-GEYX2NZ5.js +697 -0
  56. package/dist/chunk-GJBJHJNY.js +2120 -0
  57. package/dist/chunk-GM4TY6VN.js +1233 -0
  58. package/dist/chunk-GVU4CXPJ.js +5191 -0
  59. package/dist/chunk-H5DPSUBB.js +637 -0
  60. package/dist/chunk-H77XBUBM.js +688 -0
  61. package/dist/chunk-HMGAKB7E.js +380 -0
  62. package/dist/chunk-HP7KJ5O2.js +797 -0
  63. package/dist/chunk-HVCAY2FH.js +67 -0
  64. package/dist/chunk-ICYIUNO4.js +35 -0
  65. package/dist/chunk-IILXVWJY.js +223 -0
  66. package/dist/chunk-JCVIL6TY.js +595 -0
  67. package/dist/chunk-JIMWEYWO.js +63 -0
  68. package/dist/chunk-JLBVCROW.js +562 -0
  69. package/dist/chunk-JOBN2YQQ.js +176 -0
  70. package/dist/chunk-JOL2QRLE.js +152 -0
  71. package/dist/chunk-JRA6OBHY.js +974 -0
  72. package/dist/chunk-JV25I7ID.js +1865 -0
  73. package/dist/chunk-JYKUMHCQ.js +705 -0
  74. package/dist/chunk-K3W6BF5C.js +283 -0
  75. package/dist/chunk-K45LHSCI.js +194 -0
  76. package/dist/chunk-K53E2PTW.js +1289 -0
  77. package/dist/chunk-K5UJD6MM.js +39 -0
  78. package/dist/chunk-KGP3UQGJ.js +200 -0
  79. package/dist/chunk-KKRXONXG.js +43 -0
  80. package/dist/chunk-KWJXCL2X.js +103 -0
  81. package/dist/chunk-L75H5B3B.js +446 -0
  82. package/dist/chunk-LLCGGVSW.js +108 -0
  83. package/dist/chunk-LZCCBLRC.js +57 -0
  84. package/dist/chunk-LZDLYSUN.js +197 -0
  85. package/dist/chunk-MATCRH3M.js +667 -0
  86. package/dist/chunk-MEHBW2SP.js +132 -0
  87. package/dist/chunk-MUXNDNMZ.js +659 -0
  88. package/dist/chunk-MWMW53WW.js +7346 -0
  89. package/dist/chunk-MZDPF35R.js +45 -0
  90. package/dist/chunk-MZKYVIWW.js +188 -0
  91. package/dist/chunk-O2QJDRWP.js +362 -0
  92. package/dist/chunk-O3HSB2YL.js +693 -0
  93. package/dist/chunk-OEMFEL26.js +891 -0
  94. package/dist/chunk-OH3YYA3B.js +15 -0
  95. package/dist/chunk-OPC4DQD6.js +634 -0
  96. package/dist/chunk-ORRNGQDV.js +207 -0
  97. package/dist/chunk-P4JS3MH5.js +165 -0
  98. package/dist/chunk-P7GTE4FX.js +308 -0
  99. package/dist/chunk-PAQVETLA.js +962 -0
  100. package/dist/chunk-PFZJMXIY.js +146 -0
  101. package/dist/chunk-PGEFOTJB.js +1974 -0
  102. package/dist/chunk-PJ5H5B7A.js +3151 -0
  103. package/dist/chunk-PMUUAABD.js +604 -0
  104. package/dist/chunk-Q32C6AWI.js +236 -0
  105. package/dist/chunk-QGIC5SX5.js +139 -0
  106. package/dist/chunk-QLAGXTTV.js +482 -0
  107. package/dist/chunk-QLKCCC2J.js +573 -0
  108. package/dist/chunk-QWUSS2QP.js +3630 -0
  109. package/dist/chunk-QYSAZMSH.js +47 -0
  110. package/dist/chunk-R5NRX5N4.js +123 -0
  111. package/dist/chunk-RAUOKUZV.js +1572 -0
  112. package/dist/chunk-RBES4TCZ.js +302 -0
  113. package/dist/chunk-RFCKPS2V.js +26 -0
  114. package/dist/chunk-RFULVPBX.js +318 -0
  115. package/dist/chunk-RKFNU5UA.js +404 -0
  116. package/dist/chunk-RM3XJX7P.js +1148 -0
  117. package/dist/chunk-RNLAPBJL.js +386 -0
  118. package/dist/chunk-RPMNIFRY.js +65 -0
  119. package/dist/chunk-RRZFRIJP.js +42 -0
  120. package/dist/chunk-RXI7K4J5.js +4493 -0
  121. package/dist/chunk-SER7RRAE.js +4271 -0
  122. package/dist/chunk-STC6CWUZ.js +402 -0
  123. package/dist/chunk-TEHVMHOK.js +97 -0
  124. package/dist/chunk-TOPICHGR.js +33 -0
  125. package/dist/chunk-U3TPUXOQ.js +2653 -0
  126. package/dist/chunk-UB33F3YW.js +709 -0
  127. package/dist/chunk-UDAK6GR2.js +175 -0
  128. package/dist/chunk-USBBEKHW.js +177 -0
  129. package/dist/chunk-V4ZKOKRB.js +13433 -0
  130. package/dist/chunk-W5RM7YAH.js +78 -0
  131. package/dist/chunk-W7KNI3F5.js +215 -0
  132. package/dist/chunk-WFTSK7N3.js +637 -0
  133. package/dist/chunk-WJWNZXRM.js +395 -0
  134. package/dist/chunk-WLHX3MM5.js +63 -0
  135. package/dist/chunk-WS4FOGLY.js +686 -0
  136. package/dist/chunk-WTZVSMQZ.js +52 -0
  137. package/dist/chunk-WWRV5RJI.js +165 -0
  138. package/dist/chunk-X6FLVUM5.js +141 -0
  139. package/dist/chunk-XC5POIL4.js +68 -0
  140. package/dist/chunk-XTLJDC2X.js +1013 -0
  141. package/dist/chunk-XW2UZICE.js +372 -0
  142. package/dist/chunk-Y3JU5RPK.js +8 -0
  143. package/dist/chunk-YGIV24MF.js +1018 -0
  144. package/dist/chunk-YJCCMYYT.js +125 -0
  145. package/dist/chunk-YKIIWURD.js +36 -0
  146. package/dist/chunk-YQ3GFEUY.js +341 -0
  147. package/dist/chunk-YXANQGCX.js +179 -0
  148. package/dist/chunk-YXFKLMX2.js +222 -0
  149. package/dist/chunk-ZST3FRCV.js +132 -0
  150. package/dist/cli/index.js +40 -40
  151. package/dist/clio-BPBAPZGA.js +26 -0
  152. package/dist/code-nav-KBQ3RIFK.js +686 -0
  153. package/dist/components-6DKAXWFN.js +674 -0
  154. package/dist/config-FWL5JK2H.js +270 -0
  155. package/dist/config-graph-ACDB26L2.js +156 -0
  156. package/dist/configure-ZIZ4YV62.js +85 -0
  157. package/dist/context-EZZPT2ZV.js +1074 -0
  158. package/dist/context-VIL5MFRH.js +282 -0
  159. package/dist/context-Z3GOBHDK.js +344 -0
  160. package/dist/context-clear-ZPB3L7MN.js +188 -0
  161. package/dist/context-index-W6A4V7OC.js +120 -0
  162. package/dist/context-map-DKL3QT6D.js +555 -0
  163. package/dist/context-working-set-2GLBVF7L.js +1559 -0
  164. package/dist/detail-VSBWYSGZ.js +119 -0
  165. package/dist/dispatch-runner-EEEHGKX4.js +2442 -0
  166. package/dist/docs-VMMWFVHL.js +101 -0
  167. package/dist/doctor-V5L4IQGP.js +812 -0
  168. package/dist/eval-VJYJ2BV3.js +5050 -0
  169. package/dist/eval-inventory-CX24K2JT.js +260 -0
  170. package/dist/evals-J2H5V6DD.js +104 -0
  171. package/dist/evidence-POWAEBEW.js +229 -0
  172. package/dist/evidence-XCCCLS36.js +242 -0
  173. package/dist/evidence-Y35YSXH6.js +388 -0
  174. package/dist/evolve-GPG72VB6.js +613 -0
  175. package/dist/extensions-YIZ7W3DA.js +308 -0
  176. package/dist/fleet-2MDCQ2VK.js +264 -0
  177. package/dist/fleet-W2AF3TOJ.js +919 -0
  178. package/dist/fleet-commands-WS56G26H.js +75 -0
  179. package/dist/fleet-decisions-MYGZ3JW7.js +52 -0
  180. package/dist/fleet-graph-ELTBXBAV.js +136 -0
  181. package/dist/fleet-inspect-45IK73L4.js +308 -0
  182. package/dist/fleet-preflight-T5NCZKHE.js +22 -0
  183. package/dist/fleet-validate-VG4JBLA4.js +91 -0
  184. package/dist/fleet-verify-VTSABAYO.js +206 -0
  185. package/dist/fleet-view-XC7WMKSS.js +123 -0
  186. package/dist/init-VTJNNTIP.js +329 -0
  187. package/dist/install-6PIF6F6W.js +19 -0
  188. package/dist/interop-IU6BNA7C.js +246 -0
  189. package/dist/inventory-QPQUTUUZ.js +123 -0
  190. package/dist/library-HUTAS57T.js +492 -0
  191. package/dist/library-LF7DLU6S.js +306 -0
  192. package/dist/library-Q3NWL5CM.js +75 -0
  193. package/dist/library-import-PPW4YUC5.js +183 -0
  194. package/dist/library-inventory-DIRVFRZU.js +56 -0
  195. package/dist/library-validation-XHUZ3INE.js +42 -0
  196. package/dist/memory-Z2LSKNV6.js +516 -0
  197. package/dist/models-3FTREYPY.js +302 -0
  198. package/dist/monitor-HF2MQRB3.js +781 -0
  199. package/dist/orchestrator-UYPA6W4S.js +41502 -0
  200. package/dist/panes-736XB73K.js +74 -0
  201. package/dist/panes-C4P3PIWT.js +103 -0
  202. package/dist/paths-JQ4QYIYB.js +67 -0
  203. package/dist/preload-XSLRYH3Y.js +120 -0
  204. package/dist/reset-V7QSPZYE.js +345 -0
  205. package/dist/resources-OJGDFHYT.js +181 -0
  206. package/dist/run-T354SMDW.js +892 -0
  207. package/dist/settings-MWZXO6RV.js +72 -0
  208. package/dist/share-Y5ZKJPND.js +293 -0
  209. package/dist/skills-4GLZC4LN.js +100 -0
  210. package/dist/skills-eval-L5T7GODM.js +1074 -0
  211. package/dist/skills-inventory-LASKXEZI.js +138 -0
  212. package/dist/slash-commands-OIMRU36D.js +95 -0
  213. package/dist/steer-KMAM2Y2C.js +77 -0
  214. package/dist/support-AWC3XKPX.js +38 -0
  215. package/dist/system-CD75NYBU.js +116 -0
  216. package/dist/targets-VSZX2J2S.js +1116 -0
  217. package/dist/tasks-AN567LYH.js +36 -0
  218. package/dist/terminal-lease-6KTWNHVY.js +418 -0
  219. package/dist/tools-AGRK3V5J.js +28 -0
  220. package/dist/trace-P4MQZD33.js +524 -0
  221. package/dist/tui-primitives-A6MUW32V.js +18 -0
  222. package/dist/uninstall-BRUTEPIC.js +432 -0
  223. package/dist/upgrade-SBCGHQGJ.js +307 -0
  224. package/dist/usage-BIDVTO6V.js +1061 -0
  225. package/dist/verifiers-LTGCAMXS.js +630 -0
  226. package/dist/verify-OZU4LLNP.js +30 -0
  227. package/dist/web/client/THIRD_PARTY_LICENSES.md +1809 -0
  228. package/dist/web/client/assets/abnfDiagram-VCTEODGH-C5wfoHm3.js +1 -0
  229. package/dist/web/client/assets/arc-oH91sfLl.js +1 -0
  230. package/dist/web/client/assets/architecture-7GRP2DOG-EGozsYEO.js +1 -0
  231. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-z9FokbJl.js +36 -0
  232. package/dist/web/client/assets/array-BifhSqXX.js +1 -0
  233. package/dist/web/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
  234. package/dist/web/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
  235. package/dist/web/client/assets/blockDiagram-I7D4REHJ-wi0_CYHL.js +129 -0
  236. package/dist/web/client/assets/c4Diagram-7LVT6UL2-DV7NYc2W.js +38 -0
  237. package/dist/web/client/assets/channel-CiUWbHN9.js +1 -0
  238. package/dist/web/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  239. package/dist/web/client/assets/chunk-4HAMMTFA-Bhsegh3F.js +62 -0
  240. package/dist/web/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  241. package/dist/web/client/assets/chunk-75Z2AOVW-RQCckcQG.js +2 -0
  242. package/dist/web/client/assets/chunk-DU6HZSFF-C5USiOAy.js +125 -0
  243. package/dist/web/client/assets/chunk-F27PBJKO-BcNqv2x1.js +1 -0
  244. package/dist/web/client/assets/chunk-FOHPRMQF-CoA4358r.js +161 -0
  245. package/dist/web/client/assets/chunk-GMAD6QVW-Bq8JWiZT.js +72 -0
  246. package/dist/web/client/assets/chunk-GVQU2GXP-DbchrAeJ.js +1 -0
  247. package/dist/web/client/assets/chunk-IMKFNOWR-DrpvjocK.js +231 -0
  248. package/dist/web/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  249. package/dist/web/client/assets/chunk-L3NEJ4N5-DHLmTnCe.js +1 -0
  250. package/dist/web/client/assets/chunk-OSK3NFVY-CsRbtN9n.js +10 -0
  251. package/dist/web/client/assets/chunk-P2QGCYS3-aqPbxoMh.js +1 -0
  252. package/dist/web/client/assets/chunk-POPQ4Y6H-Dl5vw0h0.js +1 -0
  253. package/dist/web/client/assets/chunk-PWAF6VOD-D7OBRSdO.js +1 -0
  254. package/dist/web/client/assets/chunk-SHT3W25Y-CdKCIwuB.js +168 -0
  255. package/dist/web/client/assets/chunk-SVP7TREG-B94Nu_1-.js +88 -0
  256. package/dist/web/client/assets/chunk-TICWLB2K-jjRQI_hk.js +206 -0
  257. package/dist/web/client/assets/chunk-XXDRQBXY-azkbKE37.js +1 -0
  258. package/dist/web/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  259. package/dist/web/client/assets/classDiagram-ZZMXUADV-CMODalmo.js +1 -0
  260. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-CMODalmo.js +1 -0
  261. package/dist/web/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
  262. package/dist/web/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
  263. package/dist/web/client/assets/cose-bilkent-JH36ORCC-RbQL23qS.js +1 -0
  264. package/dist/web/client/assets/cynefin-OW5HDTMX--i9RDU5f.js +1 -0
  265. package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-cRcvyBdp.js +62 -0
  266. package/dist/web/client/assets/cytoscape.esm-c2aL46s-.js +321 -0
  267. package/dist/web/client/assets/dagre-C-rnJpZF.js +1 -0
  268. package/dist/web/client/assets/dagre-GXQ25YYZ-C9mZmAPe.js +4 -0
  269. package/dist/web/client/assets/defaultLocale-BFoDCU3G.js +1 -0
  270. package/dist/web/client/assets/diagram-S7CK7UJ4-Oj_zlLDY.js +30 -0
  271. package/dist/web/client/assets/diagram-UQ7AKVKN-BWKbbfcR.js +41 -0
  272. package/dist/web/client/assets/diagram-VSXAHHWV-C3N3f7DO.js +3 -0
  273. package/dist/web/client/assets/diagram-VX7I27RA-CtDKDAWe.js +24 -0
  274. package/dist/web/client/assets/diagram-Z3DM3KII-B8bkBRCz.js +24 -0
  275. package/dist/web/client/assets/dist-D0_q-A2b.js +1 -0
  276. package/dist/web/client/assets/ebnfDiagram-PWID7BFC-CskW-Whx.js +1 -0
  277. package/dist/web/client/assets/erDiagram-RLTQ6QDP-C-83cgCW.js +99 -0
  278. package/dist/web/client/assets/eventmodeling-NTZA5JFV-DjVq8wKU.js +1 -0
  279. package/dist/web/client/assets/flowDiagram-HODETNUW-BUiCBGXt.js +1 -0
  280. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-B2lb8lvF.js +292 -0
  281. package/dist/web/client/assets/gitGraph-4MIJSDKK-B40cQtBE.js +1 -0
  282. package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CH-7P7Di.js +106 -0
  283. package/dist/web/client/assets/graphlib-DS17s2tU.js +1 -0
  284. package/dist/web/client/assets/index-Dsi52apB.css +1 -0
  285. package/dist/web/client/assets/index-FSIC94pi.js +83 -0
  286. package/dist/web/client/assets/info-A6RAGUB7-eCCE9D_Q.js +1 -0
  287. package/dist/web/client/assets/infoDiagram-27XIBGKW-DRnvqMjM.js +2 -0
  288. package/dist/web/client/assets/init-C-OQMol4.js +1 -0
  289. package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-DBA_55wp.js +70 -0
  290. package/dist/web/client/assets/journeyDiagram-3NMN7TZE-C-ewpNl7.js +139 -0
  291. package/dist/web/client/assets/kanban-definition-UXKFOSKX-B1taGsu0.js +89 -0
  292. package/dist/web/client/assets/katex-ZlcWpGUi.js +257 -0
  293. package/dist/web/client/assets/line-lZ0kyxDI.js +1 -0
  294. package/dist/web/client/assets/linear-DIc8FgZj.js +1 -0
  295. package/dist/web/client/assets/mermaid-parser.core-SXolxpXw.js +7 -0
  296. package/dist/web/client/assets/mermaid.core-DXgQtkNg.js +44 -0
  297. package/dist/web/client/assets/mindmap-definition-YA3MSWOX-DXJas9K7.js +96 -0
  298. package/dist/web/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  299. package/dist/web/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  300. package/dist/web/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  301. package/dist/web/client/assets/ordinal-BDEzSJ7C.js +1 -0
  302. package/dist/web/client/assets/packet-AYTQ26CC-OqVl_07o.js +1 -0
  303. package/dist/web/client/assets/path-fybaL0A-.js +1 -0
  304. package/dist/web/client/assets/pegDiagram-XKGWAZYB-CPE_zdfN.js +1 -0
  305. package/dist/web/client/assets/pie-WAS4IAKB-DAxnMBLe.js +1 -0
  306. package/dist/web/client/assets/pieDiagram-E7YTZNPT-Uwjpufxv.js +39 -0
  307. package/dist/web/client/assets/prism-bash-D6zCJ74D.js +1 -0
  308. package/dist/web/client/assets/prism-c-04YixN25.js +1 -0
  309. package/dist/web/client/assets/prism-clike-DapgWyxx.js +1 -0
  310. package/dist/web/client/assets/prism-core-BngLtbUd.js +1 -0
  311. package/dist/web/client/assets/prism-cpp-C-lJbC-6.js +1 -0
  312. package/dist/web/client/assets/prism-css-CPgOzxXp.js +1 -0
  313. package/dist/web/client/assets/prism-diff-BF8m0_mq.js +3 -0
  314. package/dist/web/client/assets/prism-docker-DkT6yOFj.js +1 -0
  315. package/dist/web/client/assets/prism-fortran-Be5x3y1V.js +1 -0
  316. package/dist/web/client/assets/prism-go-C_8qAH5n.js +1 -0
  317. package/dist/web/client/assets/prism-ini-BESK3y0r.js +1 -0
  318. package/dist/web/client/assets/prism-javascript-BnO-swvr.js +1 -0
  319. package/dist/web/client/assets/prism-json-Dp_-W-Hv.js +1 -0
  320. package/dist/web/client/assets/prism-jsx-D-D0NWtC.js +1 -0
  321. package/dist/web/client/assets/prism-julia-DIjOgiAV.js +1 -0
  322. package/dist/web/client/assets/prism-latex-DNMbqcH_.js +1 -0
  323. package/dist/web/client/assets/prism-makefile-CRKWLQ8l.js +1 -0
  324. package/dist/web/client/assets/prism-markdown-C0FPJ1Iz.js +1 -0
  325. package/dist/web/client/assets/prism-markup-Cp04rIa1.js +1 -0
  326. package/dist/web/client/assets/prism-matlab-D-nk08al.js +1 -0
  327. package/dist/web/client/assets/prism-python-CfiSVtM6.js +1 -0
  328. package/dist/web/client/assets/prism-r-QmNGR8LX.js +1 -0
  329. package/dist/web/client/assets/prism-rust-Bu9N8X3N.js +1 -0
  330. package/dist/web/client/assets/prism-shell-session-Be4UuYoM.js +1 -0
  331. package/dist/web/client/assets/prism-sql-CYhVDMEE.js +1 -0
  332. package/dist/web/client/assets/prism-toml-DKb54GAT.js +1 -0
  333. package/dist/web/client/assets/prism-tsx-p6J2Kc_4.js +1 -0
  334. package/dist/web/client/assets/prism-typescript-BMqONzxf.js +1 -0
  335. package/dist/web/client/assets/prism-yaml-C0JHu8gr.js +1 -0
  336. package/dist/web/client/assets/purify.es-ChwZkWde.js +3 -0
  337. package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-Bjs4yjgs.js +7 -0
  338. package/dist/web/client/assets/radar-RG4KPBEZ-CuCKjHM3.js +1 -0
  339. package/dist/web/client/assets/railroad-74A4TZTK-CnQK-Cc1.js +1 -0
  340. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-BcW01NZG.js +1 -0
  341. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-B7YCEDDd.js +1 -0
  342. package/dist/web/client/assets/railroad-peg-WCYAUIDC-DjNZbSTZ.js +1 -0
  343. package/dist/web/client/assets/railroadDiagram-O6MQD6OU-BDDIPNLL.js +1 -0
  344. package/dist/web/client/assets/requirementDiagram-BXWQKSXE-B5Ydyxc1.js +84 -0
  345. package/dist/web/client/assets/rough.esm-Dy-Kn_BL.js +1 -0
  346. package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-Bw2Qym75.js +40 -0
  347. package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-BZf36nO0.js +162 -0
  348. package/dist/web/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  349. package/dist/web/client/assets/src-yeptRXpt.js +1 -0
  350. package/dist/web/client/assets/stateDiagram-D77RDMKH-DnH6JRkp.js +1 -0
  351. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-C7QtHeK4.js +1 -0
  352. package/dist/web/client/assets/swimlanes-42K2YHIH-D9PZmtZg.js +1 -0
  353. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-CBZlPFky.js +8 -0
  354. package/dist/web/client/assets/timeline-definition-24CTP7MA-CrkZZBo7.js +120 -0
  355. package/dist/web/client/assets/treeView-Q6P3EWNA-C9zDShoC.js +1 -0
  356. package/dist/web/client/assets/treemap-WGGIJYW6-B-plj9yK.js +1 -0
  357. package/dist/web/client/assets/vennDiagram-4TSXK5OY-VeOdaphN.js +34 -0
  358. package/dist/web/client/assets/wardley-WFR3VGLG-Wl1P_m6L.js +1 -0
  359. package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-B85-R9t2.js +78 -0
  360. package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BrD8OW8m.js +7 -0
  361. package/dist/web/client/clio-coder-logo.webp +0 -0
  362. package/dist/web/client/icon-192.png +0 -0
  363. package/dist/web/client/icon-512.png +0 -0
  364. package/dist/web/client/index.html +4 -0
  365. package/dist/web/client/manifest.webmanifest +15 -0
  366. package/dist/web/client/offline.css +55 -0
  367. package/dist/web/client/offline.html +5 -0
  368. package/dist/web/client/offline.js +27 -0
  369. package/dist/web/client/sw.js +34 -0
  370. package/dist/web/ops-worker.js +37 -0
  371. package/dist/web/reads-worker.js +1726 -0
  372. package/dist/web/server.js +8499 -0
  373. package/dist/web-EU6ATJWA.js +13 -0
  374. package/dist/web-fetch-U22Q7HV4.js +788 -0
  375. package/dist/wiki-generate-LZRLFG6I.js +623 -0
  376. package/dist/with-panes-X5CZOGML.js +628 -0
  377. package/dist/worker/entry.js +300 -93
  378. package/docs/README.md +58 -14
  379. package/docs/architecture/acp.md +5 -9
  380. package/docs/architecture/alcf-provider.md +0 -3
  381. package/docs/architecture/architecture.md +8 -10
  382. package/docs/architecture/artifact-placement.md +0 -3
  383. package/docs/architecture/artifact-versions.md +3 -6
  384. package/docs/architecture/capacity-and-scheduling.md +0 -3
  385. package/docs/architecture/context-engine.md +35 -4
  386. package/docs/architecture/context-working-set.md +0 -3
  387. package/docs/architecture/dispatch-architecture-rationale.md +0 -3
  388. package/docs/architecture/dispatch-typed-intent.md +0 -3
  389. package/docs/architecture/evidence-and-memory.md +0 -3
  390. package/docs/architecture/library.md +30 -0
  391. package/docs/architecture/middleware-and-components.md +1 -4
  392. package/docs/architecture/model-catalog.md +21 -4
  393. package/docs/architecture/observability.md +0 -3
  394. package/docs/architecture/pi-boundary.md +23 -8
  395. package/docs/architecture/prompt-envelope-and-tools.md +6 -9
  396. package/docs/architecture/provider-adapter-cookbook.md +1 -4
  397. package/docs/architecture/safety-model.md +21 -5
  398. package/docs/architecture/session-lifecycle.md +12 -4
  399. package/docs/architecture/time-conventions.md +0 -3
  400. package/docs/architecture/trace-store.md +28 -20
  401. package/docs/architecture/tui-design.md +108 -12
  402. package/docs/architecture/worker-context.md +104 -0
  403. package/docs/architecture/worker-dispatch-mechanics.md +1 -4
  404. package/docs/guide/authoring-plugins.md +158 -0
  405. package/docs/guide/built-in-agents.md +5 -8
  406. package/docs/guide/commands-and-modes.md +162 -61
  407. package/docs/guide/configuration-and-targets.md +198 -5
  408. package/docs/guide/configuration-reference.md +36 -38
  409. package/docs/guide/environment-variables.md +2 -5
  410. package/docs/guide/exit-codes-and-output.md +1 -4
  411. package/docs/guide/extensions-and-sharing.md +92 -55
  412. package/docs/guide/fleet-dispatch.md +31 -7
  413. package/docs/guide/glossary.md +1 -4
  414. package/docs/guide/harness-extensions.md +289 -0
  415. package/docs/guide/installation-and-lifecycle.md +10 -13
  416. package/docs/guide/interop.md +241 -0
  417. package/docs/guide/panes-and-files.md +3 -6
  418. package/docs/guide/plugins.md +77 -0
  419. package/docs/guide/proactive-memory.md +0 -3
  420. package/docs/guide/resource-library.md +109 -45
  421. package/docs/guide/skills-marketplace.md +34 -73
  422. package/docs/guide/tool-usage.md +19 -10
  423. package/docs/guide/troubleshooting.md +1 -4
  424. package/docs/history/config-knobs-audit.md +0 -3
  425. package/docs/history/release-cut-checklist.md +0 -3
  426. package/docs/process/development-pipeline.md +14 -17
  427. package/docs/process/documentation-coverage.md +31 -4
  428. package/docs/process/documentation-guide.md +28 -27
  429. package/docs/process/eval-runner.md +8 -6
  430. package/docs/process/evals-internal.md +0 -3
  431. package/docs/process/evolution.md +0 -3
  432. package/docs/process/fleet-demo-runbook.md +0 -3
  433. package/docs/process/git-commit-provenance.md +0 -3
  434. package/docs/process/performance-methodology.md +2 -5
  435. package/docs/process/release-cut-checklist.md +114 -217
  436. package/docs/process/scientific-validation.md +23 -3
  437. package/evals/scalar-decision-machinery.ts +1 -1
  438. package/examples/extensions/README.md +67 -0
  439. package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
  440. package/examples/extensions/lab-status/extension.mjs +68 -0
  441. package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
  442. package/examples/extensions/measurements/clio-coder-extension.json +28 -0
  443. package/examples/extensions/measurements/summarize.cjs +23 -0
  444. package/library/README.md +109 -0
  445. package/library/_authoring/templates/agent/README.md +28 -0
  446. package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
  447. package/library/_authoring/templates/agent/plugin.json +23 -0
  448. package/library/_authoring/templates/fleet/README.md +29 -0
  449. package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
  450. package/library/_authoring/templates/fleet/plugin.json +23 -0
  451. package/library/_authoring/templates/plugin/README.md +37 -0
  452. package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
  453. package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
  454. package/library/_authoring/templates/plugin/plugin.json +42 -0
  455. package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
  456. package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
  457. package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
  458. package/library/_authoring/templates/prompt/README.md +28 -0
  459. package/library/_authoring/templates/prompt/plugin.json +23 -0
  460. package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
  461. package/library/_authoring/templates/skill/README.md +24 -0
  462. package/library/_authoring/templates/skill/SKILL.md +39 -0
  463. package/library/_authoring/templates/skill/evals.md +30 -0
  464. package/library/_authoring/templates/skill/plugin.json +23 -0
  465. package/library/agents/README.md +7 -0
  466. package/library/fleets/README.md +7 -0
  467. package/library/plugins/materio/README.md +137 -0
  468. package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
  469. package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
  470. package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
  471. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
  472. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
  473. package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
  474. package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
  475. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
  476. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
  477. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
  478. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
  479. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
  480. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
  481. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
  482. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
  483. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
  484. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
  485. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
  486. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
  487. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
  488. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
  489. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
  490. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
  491. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
  492. package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
  493. package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
  494. package/library/plugins/materio/assets/actions/add-task.md +86 -0
  495. package/library/plugins/materio/assets/actions/archive-task.md +84 -0
  496. package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
  497. package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
  498. package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
  499. package/library/plugins/materio/assets/actions/execute-task.md +290 -0
  500. package/library/plugins/materio/assets/actions/help.md +140 -0
  501. package/library/plugins/materio/assets/actions/identify-research.md +204 -0
  502. package/library/plugins/materio/assets/actions/literature-review.md +199 -0
  503. package/library/plugins/materio/assets/actions/pause-research.md +34 -0
  504. package/library/plugins/materio/assets/actions/progress.md +125 -0
  505. package/library/plugins/materio/assets/actions/remove-task.md +82 -0
  506. package/library/plugins/materio/assets/actions/resume-research.md +84 -0
  507. package/library/plugins/materio/assets/actions/settings.md +38 -0
  508. package/library/plugins/materio/assets/actions/status.md +112 -0
  509. package/library/plugins/materio/assets/actions/upload-data.md +123 -0
  510. package/library/plugins/materio/assets/actions/wtfp.md +179 -0
  511. package/library/plugins/materio/assets/references/research-domains.md +134 -0
  512. package/library/plugins/materio/assets/references/research-policy.md +77 -0
  513. package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
  514. package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
  515. package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
  516. package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
  517. package/library/plugins/materio/assets/scripts/research_state.py +400 -0
  518. package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
  519. package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
  520. package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
  521. package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
  522. package/library/plugins/materio/assets/templates/config.json +5 -0
  523. package/library/plugins/materio/evals/scripts.yaml +29 -0
  524. package/library/plugins/materio/plugin.json +530 -0
  525. package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
  526. package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
  527. package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
  528. package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
  529. package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
  530. package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
  531. package/library/plugins/materio/tests/test_check_physics.py +139 -0
  532. package/library/plugins/materio/tests/test_check_scripts.py +140 -0
  533. package/library/plugins/materio/tests/test_research_state.py +291 -0
  534. package/library/plugins/materio/tests/test_verify_citations.py +337 -0
  535. package/library/prompts/README.md +7 -0
  536. package/library/registry.yaml +921 -0
  537. package/library/skills/README.md +120 -0
  538. package/library/skills/coding/ast-grep/SKILL.md +213 -0
  539. package/library/skills/coding/ast-grep/evals.md +82 -0
  540. package/library/skills/coding/ast-grep/plugin.json +23 -0
  541. package/library/skills/coding/coding-standards/SKILL.md +164 -0
  542. package/library/skills/coding/coding-standards/evals.md +57 -0
  543. package/library/skills/coding/coding-standards/plugin.json +23 -0
  544. package/library/skills/coding/prototype/SKILL.md +151 -0
  545. package/library/skills/coding/prototype/evals.md +61 -0
  546. package/library/skills/coding/prototype/plugin.json +23 -0
  547. package/library/skills/coding/tdd/SKILL.md +134 -0
  548. package/library/skills/coding/tdd/evals.md +61 -0
  549. package/library/skills/coding/tdd/plugin.json +23 -0
  550. package/library/skills/context/context-handoff/SKILL.md +176 -0
  551. package/library/skills/context/context-handoff/evals.md +101 -0
  552. package/library/skills/context/context-handoff/plugin.json +23 -0
  553. package/library/skills/context/context-prime/SKILL.md +131 -0
  554. package/library/skills/context/context-prime/evals.md +99 -0
  555. package/library/skills/context/context-prime/plugin.json +23 -0
  556. package/library/skills/git/branch-closeout/SKILL.md +132 -0
  557. package/library/skills/git/branch-closeout/plugin.json +23 -0
  558. package/library/skills/git/file-ticket/SKILL.md +126 -0
  559. package/library/skills/git/file-ticket/plugin.json +23 -0
  560. package/library/skills/git/fix-issue/SKILL.md +136 -0
  561. package/library/skills/git/fix-issue/plugin.json +23 -0
  562. package/library/skills/git/resolve-merge-conflicts/SKILL.md +151 -0
  563. package/library/skills/git/resolve-merge-conflicts/evals.md +85 -0
  564. package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
  565. package/library/skills/git/ship/SKILL.md +134 -0
  566. package/library/skills/git/ship/plugin.json +23 -0
  567. package/library/skills/git/worktree-create/SKILL.md +127 -0
  568. package/library/skills/git/worktree-create/plugin.json +23 -0
  569. package/library/skills/git/worktree-merge/SKILL.md +147 -0
  570. package/library/skills/git/worktree-merge/plugin.json +23 -0
  571. package/library/skills/meta/clio-coder-dev/SKILL.md +101 -0
  572. package/library/skills/meta/clio-coder-dev/evals.md +46 -0
  573. package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
  574. package/library/skills/meta/clio-coder-test/SKILL.md +156 -0
  575. package/library/skills/meta/clio-coder-test/evals.md +62 -0
  576. package/library/skills/meta/clio-coder-test/plugin.json +23 -0
  577. package/library/skills/meta/clio-coder-test/references/test-map.md +97 -0
  578. package/library/skills/meta/credentials/SKILL.md +132 -0
  579. package/library/skills/meta/credentials/evals.md +104 -0
  580. package/library/skills/meta/credentials/plugin.json +23 -0
  581. package/library/skills/meta/find-skills/SKILL.md +85 -0
  582. package/library/skills/meta/find-skills/evals.md +65 -0
  583. package/library/skills/meta/find-skills/plugin.json +23 -0
  584. package/library/skills/meta/herdr/SKILL.md +133 -0
  585. package/library/skills/meta/herdr/evals.md +38 -0
  586. package/library/skills/meta/herdr/plugin.json +23 -0
  587. package/library/skills/meta/skill-craft/SKILL.md +139 -0
  588. package/library/skills/meta/skill-craft/evals.md +49 -0
  589. package/library/skills/meta/skill-craft/plugin.json +23 -0
  590. package/library/skills/planning/archify/SKILL.md +196 -0
  591. package/library/skills/planning/archify/plugin.json +23 -0
  592. package/library/skills/planning/architecture/SKILL.md +184 -0
  593. package/library/skills/planning/architecture/evals.md +101 -0
  594. package/library/skills/planning/architecture/plugin.json +23 -0
  595. package/library/skills/planning/backlog/SKILL.md +212 -0
  596. package/library/skills/planning/backlog/evals.md +185 -0
  597. package/library/skills/planning/backlog/plugin.json +23 -0
  598. package/library/skills/planning/prd/SKILL.md +129 -0
  599. package/library/skills/planning/prd/evals.md +103 -0
  600. package/library/skills/planning/prd/plugin.json +23 -0
  601. package/library/skills/planning/product-intent/SKILL.md +173 -0
  602. package/library/skills/planning/product-intent/evals.md +106 -0
  603. package/library/skills/planning/product-intent/plugin.json +23 -0
  604. package/library/skills/planning/tech-spec/SKILL.md +172 -0
  605. package/library/skills/planning/tech-spec/evals.md +120 -0
  606. package/library/skills/planning/tech-spec/plugin.json +23 -0
  607. package/library/skills/registry.yaml +144 -0
  608. package/library/skills/remote.yaml +13 -0
  609. package/library/skills/research/arxiv-literature/SKILL.md +168 -0
  610. package/library/skills/research/arxiv-literature/evals.md +108 -0
  611. package/library/skills/research/arxiv-literature/plugin.json +23 -0
  612. package/library/skills/research/experiment-protocol/SKILL.md +148 -0
  613. package/library/skills/research/experiment-protocol/evals.md +114 -0
  614. package/library/skills/research/experiment-protocol/plugin.json +23 -0
  615. package/library/skills/research/scientific-debugging/SKILL.md +149 -0
  616. package/library/skills/research/scientific-debugging/evals.md +156 -0
  617. package/library/skills/research/scientific-debugging/plugin.json +23 -0
  618. package/library/skills/research/scientific-modernization/SKILL.md +170 -0
  619. package/library/skills/research/scientific-modernization/evals.md +111 -0
  620. package/library/skills/research/scientific-modernization/plugin.json +23 -0
  621. package/library/skills/skill-marketplace.json +507 -0
  622. package/library/skills/workflow/cut-it/SKILL.md +153 -0
  623. package/library/skills/workflow/cut-it/evals.md +143 -0
  624. package/library/skills/workflow/cut-it/plugin.json +23 -0
  625. package/library/skills/workflow/design-council/SKILL.md +233 -0
  626. package/library/skills/workflow/design-council/evals.md +258 -0
  627. package/library/skills/workflow/design-council/plugin.json +23 -0
  628. package/library/skills/workflow/grill-me/SKILL.md +267 -0
  629. package/library/skills/workflow/grill-me/evals.md +231 -0
  630. package/library/skills/workflow/grill-me/plugin.json +23 -0
  631. package/library/skills/workflow/workflow-distiller/SKILL.md +204 -0
  632. package/library/skills/workflow/workflow-distiller/evals.md +233 -0
  633. package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
  634. package/package.json +23 -14
  635. package/src/cli/agents.ts +1 -1
  636. package/src/cli/config-inspect.ts +1 -1
  637. package/src/cli/configure.ts +2 -2
  638. package/src/cli/docs.ts +65 -328
  639. package/src/cli/eval.ts +40 -6
  640. package/src/cli/extensions.ts +74 -8
  641. package/src/cli/fleet-preflight.ts +2 -0
  642. package/src/cli/fleet.ts +2 -0
  643. package/src/cli/index.ts +4 -4
  644. package/src/cli/interop-inspect.ts +61 -33
  645. package/src/cli/interop.ts +79 -9
  646. package/src/cli/library-import.ts +139 -0
  647. package/src/cli/library.ts +418 -120
  648. package/src/cli/run.ts +26 -9
  649. package/src/cli/skills-eval.ts +43 -6
  650. package/src/cli/skills-inventory.ts +6 -2
  651. package/src/cli/skills.ts +44 -491
  652. package/src/cli/trace.ts +4 -65
  653. package/src/cli/uninstall.ts +26 -0
  654. package/src/cli/usage.ts +3 -0
  655. package/src/cli/web.ts +79 -0
  656. package/src/core/bus-events.ts +8 -4
  657. package/src/core/config.ts +71 -0
  658. package/src/core/defaults.ts +1 -1
  659. package/src/core/domain-loader.ts +37 -28
  660. package/src/core/recent-models.ts +2 -2
  661. package/src/core/session-routing.ts +3 -3
  662. package/src/core/state-file-lock.ts +1 -1
  663. package/src/core/termination.ts +13 -9
  664. package/src/core/tool-names.ts +5 -0
  665. package/src/domains/agents/contract.ts +1 -1
  666. package/src/domains/agents/extension.ts +53 -9
  667. package/src/domains/agents/fleet-commands.ts +92 -1
  668. package/src/domains/agents/fleet-contract.ts +87 -19
  669. package/src/domains/agents/recipe.ts +5 -4
  670. package/src/domains/agents/registry.ts +80 -24
  671. package/src/domains/config/extension.ts +5 -4
  672. package/src/domains/config/keybindings.ts +155 -95
  673. package/src/domains/context/worker/contract.ts +91 -0
  674. package/src/domains/context/worker/pressure.ts +120 -0
  675. package/src/domains/context/worker/recall.ts +62 -0
  676. package/src/domains/context/worker/select.ts +164 -0
  677. package/src/domains/context/worker/snapshot.ts +35 -0
  678. package/src/domains/context/worker/store.ts +16 -0
  679. package/src/domains/context/working-set/replay/synthetic.ts +2 -1
  680. package/src/domains/dispatch/active-route-planner.ts +2 -0
  681. package/src/domains/dispatch/backoff.ts +1 -0
  682. package/src/domains/dispatch/code-step.ts +12 -2
  683. package/src/domains/dispatch/contract.ts +3 -0
  684. package/src/domains/dispatch/execution-plan.ts +2 -0
  685. package/src/domains/dispatch/extension.ts +184 -39
  686. package/src/domains/dispatch/fleet-plan.ts +10 -0
  687. package/src/domains/dispatch/fleet-run.ts +1 -0
  688. package/src/domains/dispatch/index.ts +1 -0
  689. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  690. package/src/domains/dispatch/receipt-integrity.ts +7 -0
  691. package/src/domains/dispatch/state.ts +2 -2
  692. package/src/domains/dispatch/types.ts +7 -0
  693. package/src/domains/dispatch/validation.ts +12 -0
  694. package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
  695. package/src/domains/eval/metrics/tracked.ts +22 -2
  696. package/src/domains/evidence/failure-attribution.ts +1 -0
  697. package/src/domains/evidence/trust-status.ts +22 -3
  698. package/src/domains/extensions/command-schema.ts +145 -0
  699. package/src/domains/extensions/command-tools.ts +15 -0
  700. package/src/domains/extensions/compatibility.ts +7 -0
  701. package/src/domains/extensions/contract.ts +0 -4
  702. package/src/domains/extensions/discovery.ts +69 -205
  703. package/src/domains/extensions/extension.ts +0 -4
  704. package/src/domains/extensions/index.ts +1 -5
  705. package/src/domains/extensions/manager.ts +1 -6
  706. package/src/domains/extensions/operator-commands.ts +29 -0
  707. package/src/domains/extensions/operator-runtime.ts +485 -0
  708. package/src/domains/extensions/public-api.ts +53 -0
  709. package/src/domains/extensions/runtime-child.mjs +114 -0
  710. package/src/domains/extensions/runtime-process.ts +306 -0
  711. package/src/domains/extensions/runtime-schema.ts +146 -0
  712. package/src/domains/extensions/snapshot-access.ts +21 -0
  713. package/src/domains/extensions/snapshot.ts +4 -32
  714. package/src/domains/extensions/state.ts +5 -83
  715. package/src/domains/extensions/types.ts +33 -34
  716. package/src/domains/interop/adopt.ts +546 -0
  717. package/src/domains/interop/detect.ts +50 -12
  718. package/src/domains/interop/foreign.ts +554 -0
  719. package/src/domains/interop/import.ts +277 -0
  720. package/src/domains/interop/index.ts +24 -0
  721. package/src/domains/interop/install.ts +6 -0
  722. package/src/domains/interop/inventory.ts +351 -0
  723. package/src/domains/interop/projection.ts +360 -0
  724. package/src/domains/interop/registry.ts +106 -3
  725. package/src/domains/interop/types.ts +51 -0
  726. package/src/domains/lifecycle/migrations/index.ts +0 -2
  727. package/src/domains/lifecycle/naming-resources.ts +1 -1
  728. package/src/domains/middleware/hooks.ts +2 -2
  729. package/src/domains/middleware/marketplace-offer.ts +1 -1
  730. package/src/domains/mux/contract.ts +1 -1
  731. package/src/domains/observability/background-memory-usage.ts +3 -0
  732. package/src/domains/observability/compaction-usage.ts +2 -0
  733. package/src/domains/observability/cost.ts +5 -0
  734. package/src/domains/observability/extension.ts +1 -0
  735. package/src/domains/observability/out-of-turn-usage.ts +2 -0
  736. package/src/domains/observability/trace-store.ts +65 -5
  737. package/src/domains/plugins/catalog.ts +204 -0
  738. package/src/domains/plugins/contract.ts +24 -0
  739. package/src/domains/plugins/discovery.ts +316 -0
  740. package/src/domains/plugins/extension.ts +40 -0
  741. package/src/domains/plugins/index.ts +77 -0
  742. package/src/domains/plugins/integrity.ts +6 -0
  743. package/src/domains/plugins/manifest.ts +3 -0
  744. package/src/domains/plugins/resources.ts +102 -0
  745. package/src/domains/plugins/state.ts +753 -0
  746. package/src/domains/plugins/types.ts +217 -0
  747. package/src/domains/prompts/extension.ts +4 -10
  748. package/src/domains/prompts/fragments/operating/skills.md +10 -10
  749. package/src/domains/providers/cache-deployment.ts +147 -0
  750. package/src/domains/providers/catalog.ts +12 -7
  751. package/src/domains/providers/extension.ts +27 -5
  752. package/src/domains/providers/index.ts +1 -0
  753. package/src/domains/providers/plugins.ts +3 -13
  754. package/src/domains/providers/runtimes/common/local-synth.ts +4 -0
  755. package/src/domains/providers/types/target-descriptor.ts +17 -0
  756. package/src/domains/resources/common-loader.ts +9 -6
  757. package/src/domains/resources/index.ts +67 -0
  758. package/src/domains/resources/library-actions.ts +836 -0
  759. package/src/domains/resources/library-evals.ts +38 -0
  760. package/src/domains/resources/library-inventory.ts +1048 -0
  761. package/src/domains/resources/library-types.ts +50 -0
  762. package/src/domains/resources/library-validation.ts +634 -0
  763. package/src/domains/resources/library.ts +437 -156
  764. package/src/domains/resources/package-references.ts +66 -0
  765. package/src/domains/resources/prompts/loader.ts +75 -41
  766. package/src/domains/resources/skills/install.ts +2 -2
  767. package/src/domains/resources/skills/loader.ts +77 -22
  768. package/src/domains/resources/skills/marketplace.ts +48 -57
  769. package/src/domains/resources/skills/promotion.ts +2 -2
  770. package/src/domains/resources/skills/provenance-pin.ts +17 -4
  771. package/src/domains/safety/action-classifier.ts +2 -2
  772. package/src/domains/safety/default-path-policy.ts +3 -1
  773. package/src/domains/safety/policy-engine.ts +1 -1
  774. package/src/domains/safety/protected-artifacts.ts +21 -5
  775. package/src/domains/safety/skill-authority.ts +5 -2
  776. package/src/domains/session/compaction/compact.ts +4 -1
  777. package/src/domains/session/entries.ts +1 -0
  778. package/src/domains/session/usage.ts +6 -7
  779. package/src/domains/share/archive.ts +1 -1
  780. package/src/engine/acp/server.ts +11 -0
  781. package/src/engine/ai.ts +2 -0
  782. package/src/engine/apis/openai-completions.ts +61 -6
  783. package/src/engine/notices/pi-tui-LICENSE +21 -0
  784. package/src/engine/prewarm.ts +232 -0
  785. package/src/engine/provider-diagnostics.ts +6 -1
  786. package/src/engine/tui.ts +3 -0
  787. package/src/engine/worker-runtime.ts +58 -14
  788. package/src/engine/worker-tools.ts +5 -0
  789. package/src/entry/orchestrator.ts +46 -21
  790. package/src/entry/plugin-reload.ts +18 -0
  791. package/src/interactive/application-controller.ts +67 -21
  792. package/src/interactive/chat-loop-messages.ts +3 -0
  793. package/src/interactive/chat-loop.ts +32 -11
  794. package/src/interactive/chat-panel.ts +5 -1
  795. package/src/interactive/clio-editor.ts +53 -21
  796. package/src/interactive/command-output.ts +56 -1
  797. package/src/interactive/editor-submit.ts +65 -28
  798. package/src/interactive/fleet-run-preview.ts +2 -0
  799. package/src/interactive/follow-up-queue-panel.ts +3 -3
  800. package/src/interactive/footer/dashboard.ts +4 -1
  801. package/src/interactive/footer/notifications.ts +2 -2
  802. package/src/interactive/footer/widgets.ts +2 -2
  803. package/src/interactive/interactive-application.ts +209 -21
  804. package/src/interactive/interactive-input-runtime.ts +254 -7
  805. package/src/interactive/interactive-presentation.ts +41 -12
  806. package/src/interactive/interactive-slash-runtime.ts +37 -8
  807. package/src/interactive/keybinding-manager.ts +156 -79
  808. package/src/interactive/keyboard-owner.ts +37 -0
  809. package/src/interactive/leader-key.ts +49 -102
  810. package/src/interactive/leader-menu.ts +45 -0
  811. package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
  812. package/src/interactive/overlay-frame.ts +15 -0
  813. package/src/interactive/overlay-key-routing.ts +46 -47
  814. package/src/interactive/overlay-lifecycle.ts +30 -15
  815. package/src/interactive/overlay-resource-openers.ts +56 -46
  816. package/src/interactive/overlays/ask-user.ts +630 -556
  817. package/src/interactive/overlays/extension-panel.ts +70 -0
  818. package/src/interactive/overlays/extensions.ts +28 -5
  819. package/src/interactive/overlays/fleet-run-approval.ts +7 -3
  820. package/src/interactive/overlays/help-reference.ts +89 -40
  821. package/src/interactive/overlays/interop.ts +122 -3
  822. package/src/interactive/overlays/keybinding-detail.ts +2 -2
  823. package/src/interactive/overlays/library-lifecycle.ts +90 -0
  824. package/src/interactive/overlays/library-model.ts +574 -0
  825. package/src/interactive/overlays/library-review.ts +557 -0
  826. package/src/interactive/overlays/library-tabs.ts +3 -15
  827. package/src/interactive/overlays/library.ts +602 -0
  828. package/src/interactive/overlays/list-overlay.ts +218 -39
  829. package/src/interactive/overlays/model-selector.ts +28 -25
  830. package/src/interactive/overlays/session-selector.ts +9 -3
  831. package/src/interactive/overlays/settings.ts +25 -18
  832. package/src/interactive/overlays/tree-selector.ts +16 -11
  833. package/src/interactive/permission-hint.ts +13 -0
  834. package/src/interactive/permission-overlay.ts +77 -28
  835. package/src/interactive/prewarm.ts +11 -197
  836. package/src/interactive/prompt-source-label.ts +21 -0
  837. package/src/interactive/renderers/reference-card.ts +35 -0
  838. package/src/interactive/renderers/worker-entry.ts +35 -3
  839. package/src/interactive/session-usage-reseed.ts +2 -0
  840. package/src/interactive/side-question.ts +2 -0
  841. package/src/interactive/slash-autocomplete.ts +99 -1
  842. package/src/interactive/slash-commands.ts +390 -67
  843. package/src/interactive/slash-spec.ts +0 -1
  844. package/src/interactive/terminal-lease.ts +44 -12
  845. package/src/interactive/turn-context.ts +1 -0
  846. package/src/interactive/turn-persistence.ts +3 -0
  847. package/src/interactive/turn-prewarm.ts +126 -19
  848. package/src/interactive/turn-queues.ts +8 -7
  849. package/src/interactive/turn-runtime.ts +15 -1
  850. package/src/interactive/view/view-overlay.ts +19 -14
  851. package/src/interactive/welcome-dashboard.ts +525 -408
  852. package/src/tools/bootstrap.ts +8 -0
  853. package/src/tools/builtin-tool-catalog.ts +15 -6
  854. package/src/tools/context/index.ts +58 -5
  855. package/src/tools/context/library.ts +465 -0
  856. package/src/tools/context/surface.ts +20 -6
  857. package/src/tools/core-bootstrap.ts +3 -0
  858. package/src/tools/dispatch-admission.ts +24 -1
  859. package/src/tools/dispatch-arguments.ts +8 -0
  860. package/src/tools/dispatch-plan.ts +32 -0
  861. package/src/tools/dispatch-schema.ts +31 -1
  862. package/src/tools/dispatch-types.ts +3 -0
  863. package/src/tools/dispatch.ts +1 -1
  864. package/src/tools/harness-extensions.ts +169 -0
  865. package/src/tools/observation.ts +4 -0
  866. package/src/tools/policy.ts +7 -1
  867. package/src/tools/registry.ts +31 -3
  868. package/src/tools/worker-evidence.ts +5 -0
  869. package/src/worker/context-seed.ts +192 -0
  870. package/src/worker/entry.ts +1 -0
  871. package/src/worker/spec-contract.ts +35 -1
  872. package/dist/acp-UVEVWSDL.js +0 -130
  873. package/dist/agents-VWY37DTK.js +0 -148
  874. package/dist/auth-PCV2XQDV.js +0 -551
  875. package/dist/builtins-PD652MTK.js +0 -22
  876. package/dist/chunk-22PQ4TX4.js +0 -360
  877. package/dist/chunk-24T2YZ7A.js +0 -22648
  878. package/dist/chunk-2AKYFREM.js +0 -1008
  879. package/dist/chunk-2QPI3TR3.js +0 -162
  880. package/dist/chunk-3BJGMT2D.js +0 -324
  881. package/dist/chunk-3HQVBIKD.js +0 -308
  882. package/dist/chunk-3JLFK5MW.js +0 -193
  883. package/dist/chunk-3O2ZAUGQ.js +0 -283
  884. package/dist/chunk-3QKXHCGS.js +0 -59
  885. package/dist/chunk-3T4DXWP6.js +0 -668
  886. package/dist/chunk-3UW3KU4A.js +0 -21
  887. package/dist/chunk-3WBALRQH.js +0 -5076
  888. package/dist/chunk-4DU2TVI4.js +0 -108
  889. package/dist/chunk-4U4TKZFR.js +0 -5052
  890. package/dist/chunk-4VMV6OS6.js +0 -101
  891. package/dist/chunk-536HXRFE.js +0 -1257
  892. package/dist/chunk-5CMARGPF.js +0 -477
  893. package/dist/chunk-5CY4Q6QI.js +0 -141
  894. package/dist/chunk-5QRX7SLS.js +0 -1018
  895. package/dist/chunk-5VTJP36Q.js +0 -36
  896. package/dist/chunk-5ZSZEYJK.js +0 -119
  897. package/dist/chunk-6HAO6X5B.js +0 -197
  898. package/dist/chunk-6OII3LOK.js +0 -404
  899. package/dist/chunk-6RYDAVQT.js +0 -4338
  900. package/dist/chunk-6VRRJT7L.js +0 -146
  901. package/dist/chunk-6YA46L5A.js +0 -386
  902. package/dist/chunk-77CZRFTE.js +0 -634
  903. package/dist/chunk-7JSSKXG2.js +0 -1215
  904. package/dist/chunk-7WUZEB2M.js +0 -165
  905. package/dist/chunk-7YJWEF2L.js +0 -974
  906. package/dist/chunk-ACCKVSHU.js +0 -44
  907. package/dist/chunk-B3MOMLJ4.js +0 -433
  908. package/dist/chunk-BBV5TKE6.js +0 -35
  909. package/dist/chunk-BLTEAUCB.js +0 -668
  910. package/dist/chunk-BS4GAMUB.js +0 -233
  911. package/dist/chunk-BT7HGDOX.js +0 -3151
  912. package/dist/chunk-CBSKDFWL.js +0 -101
  913. package/dist/chunk-CXQ37WJH.js +0 -45
  914. package/dist/chunk-DXLUVUD4.js +0 -1490
  915. package/dist/chunk-DZK63TZJ.js +0 -1334
  916. package/dist/chunk-E7RF4KBO.js +0 -266
  917. package/dist/chunk-ECOMVOHP.js +0 -139
  918. package/dist/chunk-EHOSNVVM.js +0 -59
  919. package/dist/chunk-F5Z7EWMN.js +0 -4484
  920. package/dist/chunk-FQOOGXBH.js +0 -579
  921. package/dist/chunk-GLYBJ4RQ.js +0 -396
  922. package/dist/chunk-HHVJNVUJ.js +0 -179
  923. package/dist/chunk-HL26ADLH.js +0 -77
  924. package/dist/chunk-HPTJF6DG.js +0 -2465
  925. package/dist/chunk-HXHFDHB6.js +0 -962
  926. package/dist/chunk-HZ2T2YED.js +0 -1687
  927. package/dist/chunk-HZFBVU5X.js +0 -666
  928. package/dist/chunk-I2K2NCZQ.js +0 -659
  929. package/dist/chunk-IGLVVNEG.js +0 -402
  930. package/dist/chunk-IKRWLEDA.js +0 -1567
  931. package/dist/chunk-J2FYEQ5L.js +0 -33
  932. package/dist/chunk-JMPL7NUB.js +0 -108
  933. package/dist/chunk-K2HL3GBL.js +0 -998
  934. package/dist/chunk-KAFMW7WM.js +0 -386
  935. package/dist/chunk-KTFSFCVN.js +0 -46
  936. package/dist/chunk-LIN2K3EL.js +0 -66
  937. package/dist/chunk-LUL5Z66S.js +0 -221
  938. package/dist/chunk-LVFANMOH.js +0 -466
  939. package/dist/chunk-LY4N4TTL.js +0 -117
  940. package/dist/chunk-LZBMXNLP.js +0 -1196
  941. package/dist/chunk-M6TAYK66.js +0 -807
  942. package/dist/chunk-N2OKBREN.js +0 -243
  943. package/dist/chunk-NC4KV7EL.js +0 -39
  944. package/dist/chunk-NF3BK5WR.js +0 -42
  945. package/dist/chunk-NNWJYUNO.js +0 -573
  946. package/dist/chunk-NTK3WTHM.js +0 -141
  947. package/dist/chunk-ODUTYZIU.js +0 -688
  948. package/dist/chunk-OQM5IVJY.js +0 -1377
  949. package/dist/chunk-P5JMBPDJ.js +0 -7192
  950. package/dist/chunk-P5SC4DLJ.js +0 -47
  951. package/dist/chunk-P6M7RKMI.js +0 -97
  952. package/dist/chunk-PWWSIB2A.js +0 -52
  953. package/dist/chunk-PZN2LQY6.js +0 -674
  954. package/dist/chunk-Q7NNUHQV.js +0 -705
  955. package/dist/chunk-QCOV5DFY.js +0 -911
  956. package/dist/chunk-QNWRHOMF.js +0 -692
  957. package/dist/chunk-QRFXEO6Y.js +0 -17
  958. package/dist/chunk-QXFBABFJ.js +0 -380
  959. package/dist/chunk-RGZNQ5CT.js +0 -657
  960. package/dist/chunk-SRZOW5L2.js +0 -1865
  961. package/dist/chunk-SXQKNKRA.js +0 -223
  962. package/dist/chunk-T334FW2H.js +0 -362
  963. package/dist/chunk-T52TPHYC.js +0 -318
  964. package/dist/chunk-TJFDL26W.js +0 -658
  965. package/dist/chunk-TN5FW4XY.js +0 -172
  966. package/dist/chunk-U7H5WRG5.js +0 -123
  967. package/dist/chunk-UFYNOQK4.js +0 -302
  968. package/dist/chunk-URBGEOH3.js +0 -32
  969. package/dist/chunk-USZA7GWL.js +0 -341
  970. package/dist/chunk-UUQ5G6EZ.js +0 -697
  971. package/dist/chunk-VAHLPXPY.js +0 -399
  972. package/dist/chunk-VANN3GDP.js +0 -2488
  973. package/dist/chunk-VHMX7SXF.js +0 -1289
  974. package/dist/chunk-WJIMKGD6.js +0 -132
  975. package/dist/chunk-WKUYQBCG.js +0 -795
  976. package/dist/chunk-WNGF5AJX.js +0 -1911
  977. package/dist/chunk-WV6TDAPN.js +0 -3627
  978. package/dist/chunk-X3BI7HTV.js +0 -562
  979. package/dist/chunk-XWMSPJYN.js +0 -149
  980. package/dist/chunk-YPRSNUTC.js +0 -395
  981. package/dist/chunk-ZS43Y2FT.js +0 -438
  982. package/dist/clio-QQCMTUZE.js +0 -26
  983. package/dist/code-nav-GUPM6766.js +0 -686
  984. package/dist/components-TNIKXCBH.js +0 -674
  985. package/dist/config-IIM7YOD3.js +0 -621
  986. package/dist/configure-4ZM5HWJX.js +0 -73
  987. package/dist/context-44BZLJ3J.js +0 -344
  988. package/dist/context-AIDVQKMW.js +0 -278
  989. package/dist/context-OL5P3HEP.js +0 -1031
  990. package/dist/context-clear-OQV76MYP.js +0 -184
  991. package/dist/context-index-HP2JFUWA.js +0 -120
  992. package/dist/context-map-INTXD54D.js +0 -555
  993. package/dist/context-working-set-ZUW3EGLS.js +0 -1556
  994. package/dist/detail-UXPWRANG.js +0 -115
  995. package/dist/dispatch-runner-P3ZW6G77.js +0 -2438
  996. package/dist/docs-BL7ROUFN.js +0 -292
  997. package/dist/doctor-JJVGPZWT.js +0 -797
  998. package/dist/eval-V2RTN3UH.js +0 -4972
  999. package/dist/eval-inventory-QOYZERXJ.js +0 -315
  1000. package/dist/evidence-35PYWGSO.js +0 -225
  1001. package/dist/evidence-CIGGKI6J.js +0 -383
  1002. package/dist/evolve-33SM3NJP.js +0 -609
  1003. package/dist/extensions-YVRHX6ZI.js +0 -229
  1004. package/dist/fleet-LFO7SIPC.js +0 -908
  1005. package/dist/fleet-commands-RLK72GU3.js +0 -75
  1006. package/dist/fleet-decisions-3SBSCTCW.js +0 -159
  1007. package/dist/fleet-graph-JZIBCGMW.js +0 -134
  1008. package/dist/fleet-inspect-2L5YGGZJ.js +0 -469
  1009. package/dist/fleet-preflight-QRSHIIDE.js +0 -22
  1010. package/dist/fleet-validate-LIAVKDUU.js +0 -92
  1011. package/dist/fleet-verify-JIK3OQZR.js +0 -202
  1012. package/dist/fleet-view-IWHYGQKK.js +0 -118
  1013. package/dist/init-NJEDOTQW.js +0 -321
  1014. package/dist/interop-RVCAYECG.js +0 -115
  1015. package/dist/inventory-74UL7UHU.js +0 -118
  1016. package/dist/library-CTKZA7K3.js +0 -226
  1017. package/dist/memory-I76I5VUH.js +0 -512
  1018. package/dist/models-D4YDIQZQ.js +0 -289
  1019. package/dist/monitor-NKVD55HX.js +0 -775
  1020. package/dist/orchestrator-I6OATVPK.js +0 -39518
  1021. package/dist/panes-7BTYH3XQ.js +0 -103
  1022. package/dist/panes-WPOMEMRH.js +0 -74
  1023. package/dist/paths-J3KN7UAO.js +0 -67
  1024. package/dist/preload-EJAWJEIO.js +0 -116
  1025. package/dist/reset-4XMQKDNZ.js +0 -345
  1026. package/dist/resources-TVYVXK3Q.js +0 -125
  1027. package/dist/run-OWQNNSJU.js +0 -872
  1028. package/dist/share-NPZZMUXG.js +0 -290
  1029. package/dist/skills-OXFEAWMT.js +0 -510
  1030. package/dist/skills-eval-J5TCKSJA.js +0 -1034
  1031. package/dist/skills-inventory-7II4DM57.js +0 -133
  1032. package/dist/slash-commands-MDSDSWYF.js +0 -92
  1033. package/dist/steer-S7D7IKPU.js +0 -77
  1034. package/dist/support-5VAEC32W.js +0 -38
  1035. package/dist/targets-KILZEOCE.js +0 -1109
  1036. package/dist/tasks-R6P6OV22.js +0 -36
  1037. package/dist/terminal-lease-LZCG2KN3.js +0 -405
  1038. package/dist/tools-6OCQ6SVB.js +0 -28
  1039. package/dist/trace-JHLXWUMN.js +0 -572
  1040. package/dist/tui-primitives-RCY2HN7G.js +0 -17
  1041. package/dist/uninstall-FXYMFFRT.js +0 -407
  1042. package/dist/upgrade-D2OZH6IQ.js +0 -307
  1043. package/dist/usage-PIASNUS4.js +0 -1052
  1044. package/dist/verifiers-LTHUY2PX.js +0 -630
  1045. package/dist/verify-HYF7KBVE.js +0 -30
  1046. package/dist/web-fetch-MQN4FH3X.js +0 -788
  1047. package/dist/wiki-generate-RK7JQ5NP.js +0 -615
  1048. package/dist/with-panes-OFTNAR4Y.js +0 -628
  1049. package/skills/README.md +0 -418
  1050. package/skills/coding/ast-grep/SKILL.md +0 -213
  1051. package/skills/coding/ast-grep/evals.md +0 -82
  1052. package/skills/coding/coding-standards/SKILL.md +0 -164
  1053. package/skills/coding/coding-standards/evals.md +0 -57
  1054. package/skills/coding/prototype/SKILL.md +0 -151
  1055. package/skills/coding/prototype/evals.md +0 -61
  1056. package/skills/coding/tdd/SKILL.md +0 -134
  1057. package/skills/coding/tdd/evals.md +0 -61
  1058. package/skills/context/context-handoff/SKILL.md +0 -176
  1059. package/skills/context/context-handoff/evals.md +0 -101
  1060. package/skills/context/context-prime/SKILL.md +0 -131
  1061. package/skills/context/context-prime/evals.md +0 -99
  1062. package/skills/git/branch-closeout/SKILL.md +0 -132
  1063. package/skills/git/file-ticket/SKILL.md +0 -126
  1064. package/skills/git/fix-issue/SKILL.md +0 -136
  1065. package/skills/git/resolve-merge-conflicts/SKILL.md +0 -151
  1066. package/skills/git/resolve-merge-conflicts/evals.md +0 -85
  1067. package/skills/git/ship/SKILL.md +0 -134
  1068. package/skills/git/worktree-create/SKILL.md +0 -127
  1069. package/skills/git/worktree-merge/SKILL.md +0 -147
  1070. package/skills/meta/clio-coder-dev/SKILL.md +0 -101
  1071. package/skills/meta/clio-coder-dev/evals.md +0 -46
  1072. package/skills/meta/clio-coder-test/SKILL.md +0 -146
  1073. package/skills/meta/clio-coder-test/evals.md +0 -48
  1074. package/skills/meta/clio-coder-test/references/test-map.md +0 -96
  1075. package/skills/meta/credentials/SKILL.md +0 -132
  1076. package/skills/meta/credentials/evals.md +0 -104
  1077. package/skills/meta/find-skills/SKILL.md +0 -78
  1078. package/skills/meta/find-skills/evals.md +0 -47
  1079. package/skills/meta/herdr/SKILL.md +0 -133
  1080. package/skills/meta/herdr/evals.md +0 -38
  1081. package/skills/meta/skill-craft/SKILL.md +0 -125
  1082. package/skills/meta/skill-craft/evals.md +0 -41
  1083. package/skills/planning/archify/SKILL.md +0 -196
  1084. package/skills/planning/architecture/SKILL.md +0 -184
  1085. package/skills/planning/architecture/evals.md +0 -101
  1086. package/skills/planning/backlog/SKILL.md +0 -212
  1087. package/skills/planning/backlog/evals.md +0 -185
  1088. package/skills/planning/prd/SKILL.md +0 -129
  1089. package/skills/planning/prd/evals.md +0 -103
  1090. package/skills/planning/product-intent/SKILL.md +0 -173
  1091. package/skills/planning/product-intent/evals.md +0 -106
  1092. package/skills/planning/tech-spec/SKILL.md +0 -172
  1093. package/skills/planning/tech-spec/evals.md +0 -120
  1094. package/skills/registry.yaml +0 -144
  1095. package/skills/remote.yaml +0 -13
  1096. package/skills/research/arxiv-literature/SKILL.md +0 -168
  1097. package/skills/research/arxiv-literature/evals.md +0 -108
  1098. package/skills/research/experiment-protocol/SKILL.md +0 -148
  1099. package/skills/research/experiment-protocol/evals.md +0 -114
  1100. package/skills/research/scientific-debugging/SKILL.md +0 -149
  1101. package/skills/research/scientific-debugging/evals.md +0 -156
  1102. package/skills/research/scientific-modernization/SKILL.md +0 -170
  1103. package/skills/research/scientific-modernization/evals.md +0 -111
  1104. package/skills/skill-marketplace.json +0 -507
  1105. package/skills/workflow/cut-it/SKILL.md +0 -153
  1106. package/skills/workflow/cut-it/evals.md +0 -143
  1107. package/skills/workflow/design-council/SKILL.md +0 -233
  1108. package/skills/workflow/design-council/evals.md +0 -258
  1109. package/skills/workflow/grill-me/SKILL.md +0 -267
  1110. package/skills/workflow/grill-me/evals.md +0 -231
  1111. package/skills/workflow/workflow-distiller/SKILL.md +0 -201
  1112. package/skills/workflow/workflow-distiller/evals.md +0 -225
  1113. package/src/domains/extensions/resource-path.ts +0 -27
  1114. package/src/domains/extensions/resources.ts +0 -37
  1115. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
  1116. package/src/interactive/overlays/agents.ts +0 -70
  1117. package/src/interactive/overlays/library-install-confirm.ts +0 -152
  1118. package/src/interactive/overlays/prompts.ts +0 -89
  1119. package/src/interactive/overlays/skills-hub.ts +0 -615
  1120. /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
  1121. /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
  1122. /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
  1123. /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
  1124. /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
  1125. /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
  1126. /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
  1127. /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
  1128. /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
  1129. /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
  1130. /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
  1131. /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
  1132. /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
  1133. /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
  1134. /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
  1135. /package/{skills → library/skills}/git/ship/evals.md +0 -0
  1136. /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
  1137. /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
  1138. /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
  1139. /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
  1140. /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
  1141. /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
  1142. /package/{skills → library/skills}/planning/archify/evals.md +0 -0
@@ -0,0 +1,1710 @@
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-RM3XJX7P.js";
8
+ import {
9
+ isExecutionRole
10
+ } from "./chunk-FNVPQQYT.js";
11
+ import {
12
+ readSettings
13
+ } from "./chunk-PGEFOTJB.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-FB3KTE2J.js.map