@iowarp/clio-coder 0.4.9 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1172) hide show
  1. package/.claude-plugin/marketplace.json +11 -3
  2. package/CHANGELOG.md +153 -0
  3. package/CODE_OF_CONDUCT.md +10 -0
  4. package/CONTRIBUTING.md +208 -382
  5. package/NOTICE +8 -2
  6. package/README.md +199 -418
  7. package/ROADMAP.md +82 -0
  8. package/SECURITY.md +14 -11
  9. package/dist/acp-KS7ARGV6.js +132 -0
  10. package/dist/agents-YOGJ2YEJ.js +163 -0
  11. package/dist/assets/codewiki.json +1 -1
  12. package/dist/auth-CEDCO6O6.js +557 -0
  13. package/dist/background-YWTBPSQU.js +39 -0
  14. package/dist/builtins-GDYO4RTR.js +23 -0
  15. package/dist/chunk-27YTM2CV.js +175 -0
  16. package/dist/chunk-2AF6YC7Q.js +75 -0
  17. package/dist/chunk-2DTIWSAW.js +381 -0
  18. package/dist/chunk-2EMLKSCX.js +262 -0
  19. package/dist/chunk-2OJ3YZQP.js +665 -0
  20. package/dist/chunk-2VLYHHFT.js +35 -0
  21. package/dist/chunk-2WVPJF3Z.js +204 -0
  22. package/dist/chunk-33OASOS6.js +176 -0
  23. package/dist/chunk-3BD2LXYJ.js +19 -0
  24. package/dist/chunk-3JHUFKG7.js +30 -0
  25. package/dist/chunk-3JLTRPN7.js +711 -0
  26. package/dist/chunk-3LT34CAM.js +2796 -0
  27. package/dist/chunk-3O5JWP4L.js +1670 -0
  28. package/dist/chunk-3UW3KU4A.js +21 -0
  29. package/dist/chunk-4A6YRGV4.js +569 -0
  30. package/dist/chunk-4D2BRCZ3.js +67 -0
  31. package/dist/chunk-4SYHGVDE.js +668 -0
  32. package/dist/chunk-4VDHLCF5.js +66 -0
  33. package/dist/chunk-4WOOTKFD.js +637 -0
  34. package/dist/chunk-4WV4PI66.js +80 -0
  35. package/dist/chunk-53OXPRI6.js +195 -0
  36. package/dist/chunk-55RMDDFM.js +1347 -0
  37. package/dist/chunk-56XP4FJU.js +2025 -0
  38. package/dist/chunk-5B3RTYAK.js +123 -0
  39. package/dist/chunk-5CD243WE.js +45 -0
  40. package/dist/chunk-5JQR5B4D.js +709 -0
  41. package/dist/chunk-5KQEUIWM.js +597 -0
  42. package/dist/chunk-5LP5FNNR.js +915 -0
  43. package/dist/chunk-62UK7AGW.js +9344 -0
  44. package/dist/chunk-6CTHLZFB.js +563 -0
  45. package/dist/chunk-6EJYVCTN.js +23 -0
  46. package/dist/chunk-6OWUM2NC.js +12289 -0
  47. package/dist/chunk-6RJMYYIE.js +1023 -0
  48. package/dist/chunk-6W75D37F.js +643 -0
  49. package/dist/chunk-733ZBT5P.js +1721 -0
  50. package/dist/chunk-77DCC6JZ.js +3710 -0
  51. package/dist/chunk-7QXCO3AF.js +156 -0
  52. package/dist/chunk-7RET77VB.js +481 -0
  53. package/dist/chunk-A4MVRV4C.js +65 -0
  54. package/dist/chunk-ALJWT6O6.js +93 -0
  55. package/dist/chunk-AVSR2HKI.js +232 -0
  56. package/dist/chunk-B7GY6QER.js +42 -0
  57. package/dist/chunk-BFOSV5EZ.js +178 -0
  58. package/dist/chunk-BGOIM7NB.js +103 -0
  59. package/dist/chunk-BJH6WFIB.js +372 -0
  60. package/dist/chunk-BOBCCDJ6.js +1533 -0
  61. package/dist/chunk-BRCOSE7O.js +117 -0
  62. package/dist/chunk-BYFHHCFV.js +601 -0
  63. package/dist/chunk-C2CPOIH2.js +83 -0
  64. package/dist/chunk-C7AQTPCE.js +694 -0
  65. package/dist/chunk-CBAQPTDU.js +165 -0
  66. package/dist/chunk-CDQ2UC6W.js +125 -0
  67. package/dist/chunk-CN6SW5DC.js +177 -0
  68. package/dist/chunk-CRHPCPZP.js +132 -0
  69. package/dist/chunk-CTFPFW3H.js +44 -0
  70. package/dist/chunk-D3KWFOUT.js +103 -0
  71. package/dist/chunk-D65E25JG.js +185 -0
  72. package/dist/chunk-DCGHJQ2U.js +236 -0
  73. package/dist/chunk-DE2LU267.js +106 -0
  74. package/dist/chunk-DF6PI6GN.js +97 -0
  75. package/dist/chunk-DGC6X6XR.js +53 -0
  76. package/dist/chunk-DOUISWEE.js +526 -0
  77. package/dist/chunk-DR3TAEUA.js +188 -0
  78. package/dist/chunk-DVTBERFY.js +33 -0
  79. package/dist/chunk-DXSETN72.js +1051 -0
  80. package/dist/chunk-DZLR4UEH.js +128 -0
  81. package/dist/chunk-E6IPKW2E.js +77 -0
  82. package/dist/chunk-EG4ARXPC.js +139 -0
  83. package/dist/chunk-EKV4UBCM.js +652 -0
  84. package/dist/chunk-EOJPDNUP.js +1325 -0
  85. package/dist/chunk-EX57VVWW.js +4157 -0
  86. package/dist/chunk-EYTLV3W3.js +5937 -0
  87. package/dist/chunk-EZD2BXGP.js +475 -0
  88. package/dist/chunk-EZDCA34W.js +314 -0
  89. package/dist/chunk-FD2I4KBR.js +33 -0
  90. package/dist/chunk-FD3IAHQM.js +27 -0
  91. package/dist/chunk-FFYTC2KQ.js +416 -0
  92. package/dist/chunk-FGSQHUCK.js +110 -0
  93. package/dist/chunk-GCQFN7YI.js +32 -0
  94. package/dist/chunk-GGPF6LLE.js +38 -0
  95. package/dist/chunk-GGWI3OVM.js +215 -0
  96. package/dist/chunk-GLIQT7SU.js +172 -0
  97. package/dist/chunk-GN7QBEEI.js +95 -0
  98. package/dist/chunk-GRHOXDKB.js +1104 -0
  99. package/dist/chunk-HMN2C6YL.js +54 -0
  100. package/dist/chunk-HOEDA42N.js +310 -0
  101. package/dist/chunk-HOYZUKG7.js +192 -0
  102. package/dist/chunk-HQVN7G4F.js +1021 -0
  103. package/dist/chunk-HSQQFDB3.js +519 -0
  104. package/dist/chunk-I4ELN5BX.js +47 -0
  105. package/dist/chunk-I4Y4WKZR.js +386 -0
  106. package/dist/chunk-IFPDAD7R.js +797 -0
  107. package/dist/chunk-IN7DGBVS.js +582 -0
  108. package/dist/chunk-ISHUS7HC.js +396 -0
  109. package/dist/chunk-JPXLJSGR.js +191 -0
  110. package/dist/chunk-JQCLXSFI.js +69 -0
  111. package/dist/chunk-KBUTSJSR.js +61 -0
  112. package/dist/chunk-KW5HXKLJ.js +56 -0
  113. package/dist/chunk-L4APUGCT.js +139 -0
  114. package/dist/chunk-L7G7K4I2.js +505 -0
  115. package/dist/chunk-LAR7DX5E.js +1840 -0
  116. package/dist/chunk-LAVUQX3B.js +462 -0
  117. package/dist/chunk-LJRBX7QR.js +116 -0
  118. package/dist/chunk-LNOXCGN2.js +1864 -0
  119. package/dist/chunk-LTWH2ACR.js +23002 -0
  120. package/dist/chunk-LYJJ6546.js +661 -0
  121. package/dist/chunk-M2IPMWCN.js +457 -0
  122. package/dist/chunk-MGLRTOCK.js +101 -0
  123. package/dist/chunk-MZF5IKZT.js +160 -0
  124. package/dist/chunk-N24R6KWS.js +386 -0
  125. package/dist/chunk-NASYVWDB.js +604 -0
  126. package/dist/chunk-NBXFPI7U.js +195 -0
  127. package/dist/chunk-NDPF2N2L.js +400 -0
  128. package/dist/chunk-NFSK2VNU.js +446 -0
  129. package/dist/chunk-NG3QQSXY.js +43 -0
  130. package/dist/chunk-NOCSM22Y.js +63 -0
  131. package/dist/chunk-NVPXXW2H.js +1143 -0
  132. package/dist/chunk-O63U2I6I.js +30 -0
  133. package/dist/chunk-OJXOA6YU.js +98 -0
  134. package/dist/chunk-OPD7GL6F.js +1196 -0
  135. package/dist/chunk-OQ2EOAHA.js +14399 -0
  136. package/dist/chunk-OV62D6KO.js +688 -0
  137. package/dist/chunk-OZ76TLGU.js +740 -0
  138. package/dist/chunk-P4GNZPXO.js +1156 -0
  139. package/dist/chunk-PS6JAWJZ.js +78 -0
  140. package/dist/chunk-PXRCXGLK.js +1865 -0
  141. package/dist/chunk-QDUUOZ3S.js +108 -0
  142. package/dist/chunk-QG6I2T5E.js +1416 -0
  143. package/dist/chunk-QHSBROEW.js +308 -0
  144. package/dist/chunk-QNUQ7K7D.js +46 -0
  145. package/dist/chunk-QZTTRSJE.js +333 -0
  146. package/dist/chunk-R2UUNSNQ.js +1605 -0
  147. package/dist/chunk-R7FGRZNF.js +1794 -0
  148. package/dist/chunk-RNDCROSG.js +199 -0
  149. package/dist/chunk-S36CXHO2.js +302 -0
  150. package/dist/chunk-SJGS3GDI.js +575 -0
  151. package/dist/chunk-SQZHXUB3.js +510 -0
  152. package/dist/chunk-SUTLW6ND.js +686 -0
  153. package/dist/chunk-SYF7FVBL.js +179 -0
  154. package/dist/chunk-T2MDZES3.js +1577 -0
  155. package/dist/chunk-T33IYTZM.js +1146 -0
  156. package/dist/chunk-TDGYTWM6.js +49 -0
  157. package/dist/chunk-TGL5FZVD.js +132 -0
  158. package/dist/chunk-TGWZXJ7L.js +1205 -0
  159. package/dist/chunk-TKDRT2DF.js +114 -0
  160. package/dist/chunk-TV2EBCSQ.js +152 -0
  161. package/dist/chunk-U26XXPJS.js +367 -0
  162. package/dist/chunk-U5QU5ZOD.js +419 -0
  163. package/dist/chunk-U6YTUVOX.js +1011 -0
  164. package/dist/chunk-UCINIRHW.js +188 -0
  165. package/dist/chunk-UJD5MPP6.js +52 -0
  166. package/dist/chunk-URCXX7WJ.js +146 -0
  167. package/dist/chunk-UX2L5CUD.js +898 -0
  168. package/dist/chunk-UZVYEF57.js +114 -0
  169. package/dist/chunk-V35KZDUZ.js +218 -0
  170. package/dist/chunk-VESL6DQY.js +1058 -0
  171. package/dist/chunk-VKHLUZNO.js +986 -0
  172. package/dist/chunk-VOYUCAQF.js +584 -0
  173. package/dist/chunk-VYRQHORQ.js +414 -0
  174. package/dist/chunk-W53XSRQE.js +245 -0
  175. package/dist/chunk-X4CEFOSG.js +226 -0
  176. package/dist/chunk-XDHUDE5K.js +380 -0
  177. package/dist/chunk-XISLDHEL.js +1290 -0
  178. package/dist/chunk-XM34YQ2Y.js +169 -0
  179. package/dist/chunk-XMDBTYCH.js +661 -0
  180. package/dist/chunk-XS2QPZJE.js +449 -0
  181. package/dist/chunk-YBUECLAF.js +618 -0
  182. package/dist/chunk-YQ6XEFVK.js +332 -0
  183. package/dist/chunk-YYLCPDCC.js +990 -0
  184. package/dist/chunk-Z4GLJ6J4.js +1035 -0
  185. package/dist/chunk-ZARZ4POR.js +210 -0
  186. package/dist/chunk-ZJPORZTC.js +119 -0
  187. package/dist/chunk-ZNUZ3EXD.js +243 -0
  188. package/dist/chunk-ZPST2KQO.js +49 -0
  189. package/dist/chunk-ZR5YA6ZF.js +512 -0
  190. package/dist/chunk-ZU4JPCPR.js +319 -0
  191. package/dist/chunk-ZUKUCZYZ.js +39 -0
  192. package/dist/cli/index.js +56 -45
  193. package/dist/clio-K2PBVCEM.js +27 -0
  194. package/dist/clio-context-tools-GR4OHFSO.js +145 -0
  195. package/dist/code-nav-4X3OI6DK.js +715 -0
  196. package/dist/codewiki/build-worker.js +4 -4
  197. package/dist/compile-cache-YRB6QRO7.js +18 -0
  198. package/dist/components-RQOJ6NUR.js +675 -0
  199. package/dist/config-Q5J7UBAB.js +291 -0
  200. package/dist/config-XE7XYZLU.js +38 -0
  201. package/dist/config-graph-P3555574.js +175 -0
  202. package/dist/configure-KIJ32ZO6.js +104 -0
  203. package/dist/context-LFBQOSXT.js +344 -0
  204. package/dist/context-NNLBES2Y.js +82 -0
  205. package/dist/context-WBH3KSVR.js +302 -0
  206. package/dist/context-clear-YOHMQ6SQ.js +208 -0
  207. package/dist/context-index-X2N5UAIF.js +120 -0
  208. package/dist/context-map-HOSMGUG2.js +555 -0
  209. package/dist/context-working-set-MRAEVDNV.js +1564 -0
  210. package/dist/data-tool-JJPBGMQJ.js +2986 -0
  211. package/dist/detail-RHJOTGN4.js +139 -0
  212. package/dist/dispatch-runner-NC7PYNIO.js +2477 -0
  213. package/dist/docs-K4GBWRUX.js +342 -0
  214. package/dist/doctor-S5KZ2GTN.js +1138 -0
  215. package/dist/doctor-deep-2EJQSHIZ.js +130 -0
  216. package/dist/domain-loader-MB34FDPD.js +13 -0
  217. package/dist/eval-3D6M36N7.js +5220 -0
  218. package/dist/eval-inventory-SM3HNM47.js +260 -0
  219. package/dist/evals-FO6JEUCN.js +104 -0
  220. package/dist/evidence-6IYN52ET.js +262 -0
  221. package/dist/evidence-JVECPI3F.js +250 -0
  222. package/dist/evidence-XNVPPLVK.js +410 -0
  223. package/dist/evolve-TLPUDJDM.js +634 -0
  224. package/dist/extensions-ROZJ5X3J.js +311 -0
  225. package/dist/fleet-6RJWIOEO.js +284 -0
  226. package/dist/fleet-WKVBF5SZ.js +942 -0
  227. package/dist/fleet-commands-L6WFT7KZ.js +76 -0
  228. package/dist/fleet-decisions-BTQMWU5A.js +55 -0
  229. package/dist/fleet-graph-553DZ67Q.js +141 -0
  230. package/dist/fleet-inspect-236FZPRB.js +329 -0
  231. package/dist/fleet-new-CKUXP3CO.js +48 -0
  232. package/dist/fleet-preflight-NZQHABWO.js +95 -0
  233. package/dist/fleet-validate-7NLAE26R.js +96 -0
  234. package/dist/fleet-verify-E3RO6A5W.js +226 -0
  235. package/dist/fleet-view-KMZQY7YJ.js +144 -0
  236. package/dist/gui/client/assets/abnfDiagram-VCTEODGH-DPBWQwNn.js +1 -0
  237. package/dist/gui/client/assets/architecture-7GRP2DOG-D1w8FrFW.js +1 -0
  238. package/dist/gui/client/assets/architectureDiagram-5GKGNRK7-CVPgKd1-.js +36 -0
  239. package/dist/gui/client/assets/blockDiagram-I7D4REHJ-BLmnqkK5.js +129 -0
  240. package/dist/gui/client/assets/c4Diagram-7LVT6UL2-4AU9cfM7.js +38 -0
  241. package/dist/gui/client/assets/channel-DwFZ0m8S.js +1 -0
  242. package/dist/gui/client/assets/chunk-4HAMMTFA-EOWkKCav.js +62 -0
  243. package/dist/gui/client/assets/chunk-75Z2AOVW-CygeoIMl.js +2 -0
  244. package/dist/gui/client/assets/chunk-DU6HZSFF-s27fViLb.js +125 -0
  245. package/dist/gui/client/assets/chunk-F27PBJKO-BrHvwLsZ.js +1 -0
  246. package/dist/gui/client/assets/chunk-GMAD6QVW-DzPh-7jt.js +72 -0
  247. package/dist/gui/client/assets/chunk-GVQU2GXP-pIaQkIzm.js +1 -0
  248. package/dist/gui/client/assets/chunk-IMKFNOWR-BGJVE_Br.js +231 -0
  249. package/dist/gui/client/assets/chunk-L3NEJ4N5-B3YLuhww.js +1 -0
  250. package/dist/gui/client/assets/chunk-OSK3NFVY-BRj61HHU.js +10 -0
  251. package/dist/gui/client/assets/chunk-P2QGCYS3-Sno90KxP.js +1 -0
  252. package/dist/gui/client/assets/chunk-POPQ4Y6H-Cw8NTbxr.js +1 -0
  253. package/dist/gui/client/assets/chunk-PWAF6VOD-BIhHgz37.js +1 -0
  254. package/dist/gui/client/assets/chunk-SHT3W25Y-Cqv7npBj.js +168 -0
  255. package/dist/gui/client/assets/chunk-SVP7TREG-Hxzl6Dee.js +88 -0
  256. package/dist/gui/client/assets/chunk-TICWLB2K-CIFVyVP2.js +206 -0
  257. package/dist/gui/client/assets/classDiagram-ZZMXUADV-BJbAiI_w.js +1 -0
  258. package/dist/gui/client/assets/classDiagram-v2-VYDZK3BY-BJbAiI_w.js +1 -0
  259. package/dist/gui/client/assets/cynefin-OW5HDTMX-DecLWZ-y.js +1 -0
  260. package/dist/gui/client/assets/cynefinDiagram-5FMLGOSQ-CK-T2N-D.js +62 -0
  261. package/dist/gui/client/assets/dagre-GXQ25YYZ-C0dfg-OS.js +4 -0
  262. package/dist/gui/client/assets/diagram-S7CK7UJ4-EaJukVh-.js +30 -0
  263. package/dist/gui/client/assets/diagram-UQ7AKVKN-xcOucEtP.js +41 -0
  264. package/dist/gui/client/assets/diagram-VSXAHHWV-3AUJACMf.js +3 -0
  265. package/dist/gui/client/assets/diagram-VX7I27RA-TPknLqam.js +24 -0
  266. package/dist/gui/client/assets/diagram-Z3DM3KII-wa1q3YMF.js +24 -0
  267. package/dist/gui/client/assets/ebnfDiagram-PWID7BFC-JBCF2-s7.js +1 -0
  268. package/dist/gui/client/assets/erDiagram-RLTQ6QDP-CmXjXPc4.js +99 -0
  269. package/dist/gui/client/assets/eventmodeling-NTZA5JFV-D_1aJWYl.js +1 -0
  270. package/dist/gui/client/assets/flowDiagram-HODETNUW-BQtZlael.js +1 -0
  271. package/dist/gui/client/assets/framework-Bq-znqwW.js +9 -0
  272. package/dist/gui/client/assets/ganttDiagram-EL5Y4UJY-IPaL_kaa.js +292 -0
  273. package/dist/gui/client/assets/gitGraph-4MIJSDKK-Oy0Q3hoc.js +1 -0
  274. package/dist/gui/client/assets/gitGraphDiagram-WWUBYQGX-jtAuBmbc.js +106 -0
  275. package/dist/gui/client/assets/index-CuFuBEdL.css +1 -0
  276. package/dist/gui/client/assets/index-hMbEIsX0.js +87 -0
  277. package/dist/gui/client/assets/info-A6RAGUB7-UtEs1tv7.js +1 -0
  278. package/dist/gui/client/assets/infoDiagram-27XIBGKW-hlwR1pBW.js +2 -0
  279. package/dist/gui/client/assets/ishikawaDiagram-5VMMS53U-C6vMtfsd.js +70 -0
  280. package/dist/gui/client/assets/journeyDiagram-3NMN7TZE-EAwAl_PS.js +139 -0
  281. package/dist/gui/client/assets/kanban-definition-UXKFOSKX-CQOhRKHW.js +89 -0
  282. package/dist/gui/client/assets/line-DbcwGZTW.js +1 -0
  283. package/dist/gui/client/assets/mermaid-parser.core-C2QfVcHd.js +7 -0
  284. package/dist/gui/client/assets/mermaid.core-N9qUTre1.js +44 -0
  285. package/dist/gui/client/assets/mindmap-definition-YA3MSWOX-BR_FL9gK.js +96 -0
  286. package/dist/gui/client/assets/packet-AYTQ26CC-CbBJ2oAa.js +1 -0
  287. package/dist/gui/client/assets/pegDiagram-XKGWAZYB-BruU0IHM.js +1 -0
  288. package/dist/gui/client/assets/pie-WAS4IAKB-BWdSng4H.js +1 -0
  289. package/dist/gui/client/assets/pieDiagram-E7YTZNPT-CR3ljgdU.js +39 -0
  290. package/dist/gui/client/assets/quadrantDiagram-AXDQQJYC-C-boKslr.js +7 -0
  291. package/dist/gui/client/assets/radar-RG4KPBEZ-CGlOnAKG.js +1 -0
  292. package/dist/gui/client/assets/railroad-74A4TZTK-CDvuAlyC.js +1 -0
  293. package/dist/gui/client/assets/railroad-abnf-HS5TGJTU-CQUA9crC.js +1 -0
  294. package/dist/gui/client/assets/railroad-ebnf-LZEXJU2U-CD857gxq.js +1 -0
  295. package/dist/gui/client/assets/railroad-peg-WCYAUIDC-DUV4k35E.js +1 -0
  296. package/dist/gui/client/assets/railroadDiagram-O6MQD6OU-DMR4LXmA.js +1 -0
  297. package/dist/gui/client/assets/requirementDiagram-BXWQKSXE-DVltaF6c.js +84 -0
  298. package/dist/gui/client/assets/sankeyDiagram-P5KCCOFB-CHdNz472.js +40 -0
  299. package/dist/gui/client/assets/sequenceDiagram-WJ2MYXX4-DaMafIty.js +162 -0
  300. package/dist/gui/client/assets/stateDiagram-D77RDMKH-CEbBHqn3.js +1 -0
  301. package/dist/gui/client/assets/stateDiagram-v2-MP3YSRHH-B3JgDdFg.js +1 -0
  302. package/dist/gui/client/assets/swimlanes-42K2YHIH-BlPHndnJ.js +1 -0
  303. package/dist/gui/client/assets/swimlanesDiagram-VR7AAH4N-BPabHwsZ.js +8 -0
  304. package/dist/gui/client/assets/timeline-definition-24CTP7MA-E4Y1lPBI.js +120 -0
  305. package/dist/gui/client/assets/treeView-Q6P3EWNA-DrY0uhTN.js +1 -0
  306. package/dist/gui/client/assets/treemap-WGGIJYW6-CVotnLHf.js +1 -0
  307. package/dist/gui/client/assets/vennDiagram-4TSXK5OY-DJNrLIOF.js +34 -0
  308. package/dist/gui/client/assets/wardley-WFR3VGLG-ClOpAp5S.js +1 -0
  309. package/dist/gui/client/assets/wardleyDiagram-VM6X3IG4-qhMoKOXc.js +78 -0
  310. package/dist/gui/client/assets/xychartDiagram-S5SC5T6Z-CTuXoo9R.js +7 -0
  311. package/dist/gui/client/index.html +6 -0
  312. package/dist/gui/ops-worker.js +167 -0
  313. package/dist/gui/reads-worker.js +473 -0
  314. package/dist/gui/server.js +9780 -0
  315. package/dist/gui-QJS7XQMV.js +16 -0
  316. package/dist/init-DV5B6HQG.js +354 -0
  317. package/dist/install-6C45YXFP.js +19 -0
  318. package/dist/install-O7NSRU2W.js +13 -0
  319. package/dist/interactive-OXGYZYAS.js +22381 -0
  320. package/dist/interop-J7UOBOSF.js +254 -0
  321. package/dist/inventory-OEGIL6PY.js +144 -0
  322. package/dist/library-B3UPGY4V.js +83 -0
  323. package/dist/library-MXQA5DLT.js +309 -0
  324. package/dist/library-ROZAMUIL.js +496 -0
  325. package/dist/library-import-2LTWOVBD.js +190 -0
  326. package/dist/library-inventory-LJ3XHLWO.js +60 -0
  327. package/dist/library-validation-DARHHUNW.js +46 -0
  328. package/dist/mcp-2GSPYQ54.js +28 -0
  329. package/dist/memory-J3STUUIK.js +537 -0
  330. package/dist/models-Y3GMFJ2V.js +314 -0
  331. package/dist/monitor-LHNH577J.js +811 -0
  332. package/dist/orchestrator-DTAPXULA.js +12117 -0
  333. package/dist/panes-A743ONZ5.js +103 -0
  334. package/dist/panes-CTNO57ZY.js +76 -0
  335. package/dist/paths-3SBYJQDP.js +68 -0
  336. package/dist/preload-OJBMAIXF.js +140 -0
  337. package/dist/providers-CMETPZNS.js +232 -0
  338. package/dist/registry-37T4U6X2.js +15 -0
  339. package/dist/reset-O7EUCYWO.js +346 -0
  340. package/dist/resources-FY6XYFN2.js +189 -0
  341. package/dist/run-H64MEVTA.js +1067 -0
  342. package/dist/run-script-PQ5NRU3X.js +42 -0
  343. package/dist/settings-SNIQNXCW.js +73 -0
  344. package/dist/settings-controls-X6GMCPVG.js +202 -0
  345. package/dist/share-CAFMMQLM.js +299 -0
  346. package/dist/skills-ERKQUC7L.js +114 -0
  347. package/dist/skills-eval-CQ23MYQK.js +1099 -0
  348. package/dist/skills-inventory-TVUYJDVN.js +142 -0
  349. package/dist/slash-commands-ROG3KIFJ.js +107 -0
  350. package/dist/startup-background-KDWCQMWT.js +247 -0
  351. package/dist/steer-KKYXJSH4.js +77 -0
  352. package/dist/support-M3RCUUEL.js +40 -0
  353. package/dist/system-ZDW44ZGX.js +142 -0
  354. package/dist/target-runtimes-PWA22WVW.js +73 -0
  355. package/dist/targets-AJWA6E7Z.js +1207 -0
  356. package/dist/tasks-6L2JJRC5.js +39 -0
  357. package/dist/terminal-lease-YFUSDPAD.js +432 -0
  358. package/dist/tools-5XJUABRD.js +30 -0
  359. package/dist/trace-LA5MVR4Y.js +527 -0
  360. package/dist/tree-sitter-TQW3Y52T.js +4673 -0
  361. package/dist/tui-primitives-IUCVWLH5.js +19 -0
  362. package/dist/uninstall-SAWGGXAB.js +448 -0
  363. package/dist/upgrade-HSNSVTZG.js +300 -0
  364. package/dist/usage-XSILDHKF.js +1083 -0
  365. package/dist/verifiers-ECA5GIHL.js +633 -0
  366. package/dist/verify-R6QQCCEB.js +31 -0
  367. package/dist/version-PLZYB5KW.js +22 -0
  368. package/dist/web-fetch-PVZNMBOB.js +803 -0
  369. package/dist/wiki-generate-RP22WP5K.js +647 -0
  370. package/dist/with-panes-W3PAZPRF.js +629 -0
  371. package/dist/worker/entry.js +324 -284
  372. package/dist/workspace-check-3764ZKC2.js +83 -0
  373. package/docs/README.md +26 -10
  374. package/docs/architecture/acp.md +179 -12
  375. package/docs/architecture/artifact-placement.md +1 -1
  376. package/docs/architecture/capacity-and-scheduling.md +7 -8
  377. package/docs/architecture/context-engine.md +350 -95
  378. package/docs/architecture/model-catalog.md +18 -11
  379. package/docs/architecture/observability.md +1 -1
  380. package/docs/architecture/pi-boundary.md +59 -6
  381. package/docs/architecture/prompt-envelope-and-tools.md +147 -39
  382. package/docs/architecture/provider-adapter-cookbook.md +2 -2
  383. package/docs/architecture/safety-model.md +18 -4
  384. package/docs/architecture/trace-store.md +2 -2
  385. package/docs/architecture/tui-design.md +41 -81
  386. package/docs/architecture/worker-dispatch-mechanics.md +9 -1
  387. package/docs/gui/README.md +69 -0
  388. package/docs/gui/boundary-doctrine.md +104 -0
  389. package/docs/gui/chat-rendering-spec.md +1440 -0
  390. package/docs/gui/cli-surface-routing.md +148 -0
  391. package/docs/gui/delivery-order.md +53 -0
  392. package/docs/gui/event-bus-coverage.md +103 -0
  393. package/docs/gui/inspector-presentation.md +71 -0
  394. package/docs/gui/parity/01-cli-surface.md +74 -0
  395. package/docs/gui/parity/02-slash-and-surfaces.md +110 -0
  396. package/docs/gui/parity/03-domains-and-plan.md +69 -0
  397. package/docs/gui/performance-baseline.md +76 -0
  398. package/docs/gui/settings-write-surface.md +267 -0
  399. package/docs/gui/workflow-coverage.md +64 -0
  400. package/docs/guide/built-in-agents.md +1 -1
  401. package/docs/guide/commands-and-modes.md +256 -99
  402. package/docs/guide/configuration-and-targets.md +485 -124
  403. package/docs/guide/configuration-reference.md +165 -82
  404. package/docs/guide/doctor.md +127 -0
  405. package/docs/guide/environment-variables.md +1 -1
  406. package/docs/guide/exit-codes-and-output.md +3 -1
  407. package/docs/guide/extensions-and-sharing.md +3 -14
  408. package/docs/guide/fleet-dispatch.md +231 -45
  409. package/docs/guide/glossary.md +1 -1
  410. package/docs/guide/installation-and-lifecycle.md +27 -16
  411. package/docs/guide/interop.md +2 -2
  412. package/docs/guide/proactive-memory.md +154 -68
  413. package/docs/guide/resource-library.md +4 -0
  414. package/docs/guide/skills-marketplace.md +8 -4
  415. package/docs/guide/slurm.md +88 -0
  416. package/docs/guide/tool-usage.md +134 -11
  417. package/docs/guide/troubleshooting.md +4 -2
  418. package/docs/process/battletest-2026-09-20-fixes.md +161 -0
  419. package/docs/process/configure-tree-proposal.md +637 -0
  420. package/docs/process/documentation-coverage.md +8 -0
  421. package/docs/process/documentation-guide.md +18 -1
  422. package/docs/process/eval-runner.md +58 -14
  423. package/docs/process/performance-methodology.md +11 -3
  424. package/docs/process/release-cut-checklist.md +29 -3
  425. package/docs/process/tool-audit-v0.4.9.md +3 -0
  426. package/examples/extensions/README.md +1 -3
  427. package/examples/extensions/lab-status/clio-coder-extension.json +1 -1
  428. package/examples/extensions/measurements/clio-coder-extension.json +1 -1
  429. package/library/registry.yaml +30 -5
  430. package/library/skills/git/fix-issue/SKILL.md +2 -1
  431. package/library/skills/git/fix-issue/plugin.json +1 -1
  432. package/library/skills/git/ship/SKILL.md +2 -1
  433. package/library/skills/git/ship/plugin.json +1 -1
  434. package/library/skills/meta/clio-coder-test/SKILL.md +5 -6
  435. package/library/skills/meta/clio-coder-test/evals.md +2 -2
  436. package/library/skills/meta/clio-coder-test/references/test-map.md +2 -2
  437. package/library/skills/registry.yaml +9 -5
  438. package/library/skills/research/slurm-jobs/SKILL.md +110 -0
  439. package/library/skills/research/slurm-jobs/evals.md +39 -0
  440. package/library/skills/research/slurm-jobs/plugin.json +23 -0
  441. package/library/skills/skill-marketplace.json +18 -2
  442. package/package.json +15 -10
  443. package/src/cli/args.ts +59 -0
  444. package/src/cli/argv.ts +7 -0
  445. package/src/cli/clio.ts +9 -1
  446. package/src/cli/configure-controls.ts +136 -0
  447. package/src/cli/configure-onboarding.ts +24 -7
  448. package/src/cli/configure-quick.ts +32 -7
  449. package/src/cli/configure-target.ts +11 -1
  450. package/src/cli/configure.ts +253 -256
  451. package/src/cli/docs-server.ts +290 -0
  452. package/src/cli/docs.ts +60 -15
  453. package/src/cli/doctor-deep.ts +126 -0
  454. package/src/cli/doctor-hpc.ts +122 -0
  455. package/src/cli/doctor-slurm.ts +130 -0
  456. package/src/cli/doctor-task-worktrees.ts +88 -0
  457. package/src/cli/doctor.ts +165 -16
  458. package/src/cli/fleet-verify.ts +3 -2
  459. package/src/cli/gui.ts +111 -0
  460. package/src/cli/index.ts +14 -4
  461. package/src/cli/library.ts +2 -7
  462. package/src/cli/modes/json-stream.ts +4 -2
  463. package/src/cli/modes/print.ts +252 -25
  464. package/src/cli/run.ts +199 -71
  465. package/src/cli/skills.ts +25 -7
  466. package/src/cli/targets.ts +87 -9
  467. package/src/cli/uninstall.ts +28 -8
  468. package/src/cli/usage.ts +2 -1
  469. package/src/cli/workspace-check.ts +71 -0
  470. package/src/core/bash-exec.ts +8 -2
  471. package/src/core/bus-events.ts +32 -3
  472. package/src/core/cache-telemetry.ts +3 -2
  473. package/src/core/compile-cache.ts +11 -1
  474. package/src/core/config.ts +59 -6
  475. package/src/core/defaults.ts +27 -5
  476. package/src/core/diagnostics.ts +25 -0
  477. package/src/core/event-bus.ts +2 -1
  478. package/src/core/gateway-routing.ts +10 -3
  479. package/src/core/git-commit-attribution.ts +2 -1
  480. package/src/core/naming-compat.ts +6 -4
  481. package/src/core/package-root.ts +0 -9
  482. package/src/core/path-canonical.ts +143 -24
  483. package/src/core/residency-target-key.ts +2 -6
  484. package/src/core/run-overrides.ts +1 -1
  485. package/src/core/settings-awareness.ts +108 -0
  486. package/src/core/settings-controls.ts +673 -0
  487. package/src/core/settings-navigation.ts +116 -0
  488. package/src/core/theme-token-hex.ts +19 -9
  489. package/src/core/turn-constraints.ts +52 -0
  490. package/src/domains/agents/builtins/scout.md +7 -17
  491. package/src/domains/agents/catalog.ts +5 -1
  492. package/src/domains/agents/extension.ts +2 -1
  493. package/src/domains/agents/registry.ts +4 -3
  494. package/src/domains/agents/result-contract.ts +132 -1
  495. package/src/domains/config/classify.ts +11 -7
  496. package/src/domains/config/extension.ts +5 -1
  497. package/src/domains/config/keybindings.ts +2 -2
  498. package/src/domains/context/codewiki/coordinator.ts +10 -0
  499. package/src/domains/context/worker/snapshot.ts +6 -3
  500. package/src/domains/dispatch/active-route-planner.ts +2 -0
  501. package/src/domains/dispatch/agent-candidates.ts +5 -1
  502. package/src/domains/dispatch/capability-match.ts +1 -1
  503. package/src/domains/dispatch/contract.ts +28 -0
  504. package/src/domains/dispatch/event-pump.ts +37 -3
  505. package/src/domains/dispatch/extension.ts +391 -48
  506. package/src/domains/dispatch/failure-classification.ts +37 -2
  507. package/src/domains/dispatch/receipt-integrity.ts +3 -0
  508. package/src/domains/dispatch/run-identity.ts +10 -3
  509. package/src/domains/dispatch/target-breaker.ts +163 -0
  510. package/src/domains/dispatch/types.ts +29 -2
  511. package/src/domains/dispatch/worker-model-loads.ts +66 -0
  512. package/src/domains/dispatch/worker-protocol.ts +20 -1
  513. package/src/domains/dispatch/worker-spawn.ts +28 -2
  514. package/src/domains/eval/artifacts/redact.ts +9 -0
  515. package/src/domains/eval/metrics/noop.ts +61 -0
  516. package/src/domains/eval/reports/junit.ts +5 -1
  517. package/src/domains/eval/reports/text.ts +7 -0
  518. package/src/domains/eval/runners/clio-run.ts +19 -8
  519. package/src/domains/eval/runners/external-command.ts +29 -4
  520. package/src/domains/eval/schema/adapter.ts +6 -2
  521. package/src/domains/eval/schema/suite.ts +2 -0
  522. package/src/domains/eval/schema/validate.ts +3 -0
  523. package/src/domains/eval/suites/run.ts +167 -26
  524. package/src/domains/evidence/detail.ts +3 -2
  525. package/src/domains/extensions/operator-runtime.ts +11 -4
  526. package/src/domains/gateway/mcp/client.ts +1 -1
  527. package/src/domains/lifecycle/doctor.ts +42 -26
  528. package/src/domains/lifecycle/migrations/2026-09-18-ollama-runtime-id.ts +38 -0
  529. package/src/domains/lifecycle/migrations/index.ts +2 -0
  530. package/src/domains/middleware/demo-guidance.ts +36 -0
  531. package/src/domains/middleware/dispatch-nudge.ts +1 -1
  532. package/src/domains/middleware/memory-intervention.ts +51 -4
  533. package/src/domains/middleware/runtime.ts +5 -4
  534. package/src/domains/middleware/skills-reminder.ts +29 -52
  535. package/src/domains/middleware/task-nudge.ts +1 -0
  536. package/src/domains/middleware/watchdog.ts +4 -0
  537. package/src/domains/observability/extension.ts +2 -1
  538. package/src/domains/observability/out-of-turn-usage.ts +3 -2
  539. package/src/domains/observability/projection.ts +3 -2
  540. package/src/domains/observability/worker-progress.ts +48 -0
  541. package/src/domains/prompts/compiler.ts +148 -52
  542. package/src/domains/prompts/contract.ts +3 -3
  543. package/src/domains/prompts/demo-guidance.ts +8 -0
  544. package/src/domains/prompts/extension.ts +12 -7
  545. package/src/domains/prompts/fragments/identity/clio.md +2 -1
  546. package/src/domains/prompts/fragments/identity/docs-routing.md +2 -0
  547. package/src/domains/prompts/fragments/identity/self-awareness.md +4 -0
  548. package/src/domains/prompts/fragments/operating/contract.md +16 -7
  549. package/src/domains/prompts/fragments/operating/delegation.md +29 -13
  550. package/src/domains/prompts/fragments/operating/skills.md +18 -10
  551. package/src/domains/prompts/fragments/operating/worker.md +2 -0
  552. package/src/domains/providers/cache-deployment.ts +45 -2
  553. package/src/domains/providers/contract.ts +52 -11
  554. package/src/domains/providers/extension.ts +230 -53
  555. package/src/domains/providers/model-discovery.ts +22 -8
  556. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +5 -7
  557. package/src/domains/providers/plugins.ts +3 -4
  558. package/src/domains/providers/probe/fingerprint.ts +2 -2
  559. package/src/domains/providers/probe/reasoning.ts +9 -16
  560. package/src/domains/providers/probe/tool-call.ts +236 -0
  561. package/src/domains/providers/registry.ts +51 -8
  562. package/src/domains/providers/runtime-resolution.ts +60 -12
  563. package/src/domains/providers/runtimes/boot-manifest.ts +1 -1
  564. package/src/domains/providers/runtimes/builtins.ts +2 -2
  565. package/src/domains/providers/runtimes/common/lmstudio-http.ts +57 -41
  566. package/src/domains/providers/runtimes/common/local-synth.ts +3 -1
  567. package/src/domains/providers/runtimes/common/ollama-model-ids.ts +11 -0
  568. package/src/domains/providers/runtimes/common/probe-helpers.ts +53 -0
  569. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +3 -1
  570. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +7 -13
  571. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +7 -17
  572. package/src/domains/providers/runtimes/local-native/llamacpp.ts +1 -0
  573. package/src/domains/providers/runtimes/local-native/ollama.ts +211 -0
  574. package/src/domains/providers/runtimes/protocol/litellm.ts +77 -65
  575. package/src/domains/providers/support.ts +1 -1
  576. package/src/domains/providers/types/local-model-quirks.ts +2 -3
  577. package/src/domains/providers/types/runtime-descriptor.ts +23 -3
  578. package/src/domains/providers/types/target-descriptor.ts +15 -3
  579. package/src/domains/resources/collision.ts +7 -2
  580. package/src/domains/resources/index.ts +1 -0
  581. package/src/domains/resources/library-actions.ts +4 -2
  582. package/src/domains/resources/library-inventory.ts +6 -2
  583. package/src/domains/resources/prompts/loader.ts +20 -7
  584. package/src/domains/resources/skills/availability.ts +56 -0
  585. package/src/domains/resources/skills/loader.ts +20 -9
  586. package/src/domains/safety/action-classifier.ts +282 -31
  587. package/src/domains/safety/audit.ts +2 -1
  588. package/src/domains/safety/autonomy.ts +54 -11
  589. package/src/domains/safety/decision-presentation.ts +17 -4
  590. package/src/domains/safety/finish-contract-registration.ts +25 -1
  591. package/src/domains/safety/finish-contract.ts +20 -5
  592. package/src/domains/safety/path-policy.ts +6 -2
  593. package/src/domains/safety/policy-engine.ts +168 -48
  594. package/src/domains/safety/protected-artifacts.ts +527 -16
  595. package/src/domains/safety/read-scope.ts +120 -0
  596. package/src/domains/safety/skill-authority.ts +52 -16
  597. package/src/domains/scheduling/cluster.ts +14 -3
  598. package/src/domains/scheduling/contract.ts +7 -0
  599. package/src/domains/scheduling/extension.ts +20 -9
  600. package/src/domains/scheduling/local-capacity.ts +160 -0
  601. package/src/domains/session/context-accounting.ts +44 -31
  602. package/src/domains/session/context-ledger.ts +10 -3
  603. package/src/domains/session/entries.ts +4 -0
  604. package/src/domains/session/history.ts +1 -1
  605. package/src/domains/session/prompt-cache.ts +1 -0
  606. package/src/domains/session/prompt-manifest.ts +3 -1
  607. package/src/domains/session/retry.ts +4 -6
  608. package/src/domains/session/task-board.ts +19 -4
  609. package/src/domains/session/tree/preview.ts +3 -2
  610. package/src/engine/acp/commands.ts +653 -0
  611. package/src/engine/acp/server.ts +639 -20
  612. package/src/engine/acp/tool-mediator.ts +30 -7
  613. package/src/engine/acp/types.ts +58 -0
  614. package/src/engine/agent.ts +55 -10
  615. package/src/engine/ai.ts +11 -2
  616. package/src/engine/api-registry.ts +5 -4
  617. package/src/engine/apis/degraded-inference.ts +243 -0
  618. package/src/engine/apis/llamacpp-residency.ts +50 -6
  619. package/src/engine/apis/lmstudio-residency.ts +3 -5
  620. package/src/engine/apis/lmstudio.ts +137 -31
  621. package/src/engine/apis/ollama-http.ts +118 -0
  622. package/src/engine/apis/ollama-native.ts +216 -97
  623. package/src/engine/apis/openai-completions.ts +191 -189
  624. package/src/engine/apis/output-budget.ts +3 -1
  625. package/src/engine/apis/residency-lock.ts +2 -1
  626. package/src/engine/apis/residency.ts +339 -89
  627. package/src/engine/apis/sampling-overrides.ts +23 -2
  628. package/src/engine/apis/types.ts +1 -2
  629. package/src/engine/claude/tool-safety.ts +30 -5
  630. package/src/engine/context.ts +13 -0
  631. package/src/engine/env-api-keys.ts +2 -1
  632. package/src/engine/gemma-channel-filter.ts +3 -2
  633. package/src/engine/instrumented-tui.ts +25 -0
  634. package/src/engine/loop-guard.ts +172 -6
  635. package/src/engine/pi-mono-names.ts +16 -0
  636. package/src/engine/prewarm.ts +44 -15
  637. package/src/engine/provider-payload.ts +52 -14
  638. package/src/engine/session.ts +4 -2
  639. package/src/engine/worker-events.ts +9 -1
  640. package/src/engine/worker-runtime.ts +269 -42
  641. package/src/engine/worker-tools.ts +8 -3
  642. package/src/entry/boot-options.ts +23 -0
  643. package/src/entry/orchestrator.ts +207 -36
  644. package/src/interactive/assistant-generation-timing.ts +52 -0
  645. package/src/interactive/chat-loop-messages.ts +4 -1
  646. package/src/interactive/chat-loop.ts +59 -9
  647. package/src/interactive/chat-panel.ts +10 -1
  648. package/src/interactive/clio-editor.ts +51 -79
  649. package/src/interactive/context-meter.ts +1 -0
  650. package/src/interactive/context-overlay.ts +21 -8
  651. package/src/interactive/cost-overlay.ts +1 -1
  652. package/src/interactive/dispatch-board.ts +39 -8
  653. package/src/interactive/editor-bash.ts +0 -34
  654. package/src/interactive/editor-rails.ts +43 -0
  655. package/src/interactive/editor-submit.ts +34 -2
  656. package/src/interactive/footer/dashboard.ts +67 -38
  657. package/src/interactive/footer/demo-hints.ts +40 -0
  658. package/src/interactive/footer/key-hints.ts +21 -0
  659. package/src/interactive/footer/notifications.ts +1 -1
  660. package/src/interactive/footer/pages.ts +486 -0
  661. package/src/interactive/footer/system-metrics.ts +147 -0
  662. package/src/interactive/footer/widgets.ts +158 -63
  663. package/src/interactive/footer-panel.ts +29 -7
  664. package/src/interactive/interactive-application.ts +109 -21
  665. package/src/interactive/interactive-event-projection.ts +6 -2
  666. package/src/interactive/interactive-presentation.ts +25 -29
  667. package/src/interactive/interactive-slash-runtime.ts +32 -18
  668. package/src/interactive/interactive-subscriptions.ts +25 -5
  669. package/src/interactive/interactive-tickers.ts +21 -5
  670. package/src/interactive/keybinding-manager.ts +9 -0
  671. package/src/interactive/overlay-frame.ts +29 -7
  672. package/src/interactive/overlay-lifecycle.ts +5 -3
  673. package/src/interactive/overlay-model-selectors.ts +4 -0
  674. package/src/interactive/overlay-permission-lifecycle.ts +6 -5
  675. package/src/interactive/overlays/ask-user.ts +103 -110
  676. package/src/interactive/overlays/help-reference.ts +1 -0
  677. package/src/interactive/overlays/message-picker.ts +3 -29
  678. package/src/interactive/overlays/session-selector.ts +3 -2
  679. package/src/interactive/overlays/settings-sections.ts +2 -30
  680. package/src/interactive/overlays/settings.ts +310 -607
  681. package/src/interactive/permission-hint.ts +3 -3
  682. package/src/interactive/permission-overlay.ts +45 -27
  683. package/src/interactive/renderers/doctor-report.ts +43 -0
  684. package/src/interactive/renderers/tool-execution.ts +87 -62
  685. package/src/interactive/renderers/worker-entry.ts +76 -3
  686. package/src/interactive/side-question.ts +3 -1
  687. package/src/interactive/slash-commands.ts +78 -23
  688. package/src/interactive/startup-background.ts +131 -0
  689. package/src/interactive/startup-diagnostics.ts +16 -0
  690. package/src/interactive/status/state-machine.ts +16 -3
  691. package/src/interactive/status/types.ts +2 -0
  692. package/src/interactive/status/verbs.ts +1 -1
  693. package/src/interactive/terminal-lease.ts +26 -22
  694. package/src/interactive/theme/components.ts +1 -1
  695. package/src/interactive/theme/rules.ts +1 -1
  696. package/src/interactive/theme/tokens.ts +16 -10
  697. package/src/interactive/transcript-detail.ts +4 -0
  698. package/src/interactive/turn-context.ts +56 -20
  699. package/src/interactive/turn-middleware.ts +57 -9
  700. package/src/interactive/turn-prewarm.ts +121 -18
  701. package/src/interactive/turn-recovery.ts +10 -8
  702. package/src/interactive/turn-runtime.ts +74 -29
  703. package/src/interactive/turn-state.ts +3 -0
  704. package/src/interactive/welcome-art.ts +36 -0
  705. package/src/interactive/welcome-dashboard.ts +209 -49
  706. package/src/interactive/worker-replay.ts +4 -0
  707. package/src/interactive/worker-stream.ts +17 -2
  708. package/src/tools/agent-tools.ts +22 -1
  709. package/src/tools/builtin-tool-catalog.ts +2 -2
  710. package/src/tools/codewiki/code-nav.ts +1 -1
  711. package/src/tools/codewiki/shared.ts +39 -1
  712. package/src/tools/compete-worktrees.ts +8 -91
  713. package/src/tools/context/docs-engine.ts +44 -12
  714. package/src/tools/context/index.ts +126 -22
  715. package/src/tools/context/library.ts +1 -1
  716. package/src/tools/context/surface.ts +12 -7
  717. package/src/tools/core-bootstrap.ts +3 -0
  718. package/src/tools/dispatch-runner.ts +18 -0
  719. package/src/tools/dispatch-schema.ts +187 -206
  720. package/src/tools/edit.ts +46 -42
  721. package/src/tools/file-mutation-queue.ts +25 -26
  722. package/src/tools/gateway/clio-context-surface.ts +1 -1
  723. package/src/tools/gateway/index.ts +7 -3
  724. package/src/tools/gateway/mcp-capabilities.ts +5 -3
  725. package/src/tools/grep.ts +14 -2
  726. package/src/tools/ls.ts +1 -4
  727. package/src/tools/monitor.ts +14 -1
  728. package/src/tools/observation.ts +1 -3
  729. package/src/tools/path-utils.ts +51 -18
  730. package/src/tools/process-lease.ts +99 -0
  731. package/src/tools/read.ts +1 -1
  732. package/src/tools/registry.ts +71 -9
  733. package/src/tools/task-worktree.ts +296 -17
  734. package/src/tools/tasks.ts +29 -7
  735. package/src/tools/worker-evidence.ts +60 -1
  736. package/src/tools/worktree-root.ts +252 -0
  737. package/src/tools/write.ts +34 -30
  738. package/src/worker/entry.ts +18 -1
  739. package/src/worker/protocol.ts +54 -1
  740. package/src/worker/spec-contract.ts +22 -2
  741. package/dist/acp-ZWZCPS2A.js +0 -130
  742. package/dist/agents-LYSOWZUE.js +0 -150
  743. package/dist/auth-WBQGKWQ5.js +0 -551
  744. package/dist/background-BUMOBAQN.js +0 -37
  745. package/dist/builtins-ODRJOEDI.js +0 -22
  746. package/dist/chunk-2DRRZ57Q.js +0 -571
  747. package/dist/chunk-2JBZYUPY.js +0 -105
  748. package/dist/chunk-2VBWFXYE.js +0 -198
  749. package/dist/chunk-2X2R3UTH.js +0 -1018
  750. package/dist/chunk-32KJPXAM.js +0 -75
  751. package/dist/chunk-37LW32LZ.js +0 -32
  752. package/dist/chunk-3A3CUMKA.js +0 -54
  753. package/dist/chunk-3AND2EFU.js +0 -215
  754. package/dist/chunk-3RDHGNU7.js +0 -647
  755. package/dist/chunk-3SUDBGEI.js +0 -1323
  756. package/dist/chunk-3TQN67I2.js +0 -396
  757. package/dist/chunk-3U4BL2EV.js +0 -103
  758. package/dist/chunk-3UQADNG2.js +0 -302
  759. package/dist/chunk-434LRQ6Z.js +0 -13441
  760. package/dist/chunk-4ATBOFRP.js +0 -7802
  761. package/dist/chunk-4DNL43EZ.js +0 -139
  762. package/dist/chunk-4HFJKRGZ.js +0 -5250
  763. package/dist/chunk-555E2WVV.js +0 -322
  764. package/dist/chunk-5GZICIYO.js +0 -462
  765. package/dist/chunk-5PHVPU4G.js +0 -160
  766. package/dist/chunk-5RTEFNBP.js +0 -197
  767. package/dist/chunk-64XJW7NT.js +0 -380
  768. package/dist/chunk-6TKOFFGE.js +0 -1058
  769. package/dist/chunk-6UJ7RDI7.js +0 -1143
  770. package/dist/chunk-7FBCRWVT.js +0 -1801
  771. package/dist/chunk-7JSOSVLP.js +0 -283
  772. package/dist/chunk-7N3OLLSL.js +0 -637
  773. package/dist/chunk-7QQRPB2E.js +0 -915
  774. package/dist/chunk-A6DULIMH.js +0 -986
  775. package/dist/chunk-AB3QXXBC.js +0 -123
  776. package/dist/chunk-ACCECAH4.js +0 -49
  777. package/dist/chunk-AM6CEP2K.js +0 -2120
  778. package/dist/chunk-AUHVBIDW.js +0 -19
  779. package/dist/chunk-AY4XE6GN.js +0 -665
  780. package/dist/chunk-BBA2TAWV.js +0 -667
  781. package/dist/chunk-BFPHMSK7.js +0 -169
  782. package/dist/chunk-BMNVVKEW.js +0 -604
  783. package/dist/chunk-CKK25WN3.js +0 -72
  784. package/dist/chunk-CTGZCEI6.js +0 -33
  785. package/dist/chunk-DIAJYJYG.js +0 -446
  786. package/dist/chunk-DVNAPPXU.js +0 -27
  787. package/dist/chunk-DXVMLM3Z.js +0 -92
  788. package/dist/chunk-E3LEPLQ2.js +0 -68
  789. package/dist/chunk-EHZRAB4U.js +0 -63
  790. package/dist/chunk-EM2DIQAJ.js +0 -179
  791. package/dist/chunk-EM2WNQS2.js +0 -93
  792. package/dist/chunk-ETF4ROKH.js +0 -595
  793. package/dist/chunk-F2YM3JY4.js +0 -22513
  794. package/dist/chunk-FEBQWHJT.js +0 -1023
  795. package/dist/chunk-FPS4R2RN.js +0 -1975
  796. package/dist/chunk-GD55RTIW.js +0 -33
  797. package/dist/chunk-GJDRMBDI.js +0 -573
  798. package/dist/chunk-GREYLTZ5.js +0 -658
  799. package/dist/chunk-H2WSCZZT.js +0 -238
  800. package/dist/chunk-H6IUCY6Q.js +0 -117
  801. package/dist/chunk-H72DCH3E.js +0 -563
  802. package/dist/chunk-H7TXJR23.js +0 -705
  803. package/dist/chunk-HBJQQTKM.js +0 -40
  804. package/dist/chunk-HCVKSGNZ.js +0 -990
  805. package/dist/chunk-HVCAY2FH.js +0 -67
  806. package/dist/chunk-I47EJPYL.js +0 -1377
  807. package/dist/chunk-IALGWTLO.js +0 -36
  808. package/dist/chunk-IALZJE37.js +0 -1710
  809. package/dist/chunk-IC7JXLOM.js +0 -1577
  810. package/dist/chunk-IOSVTTCD.js +0 -108
  811. package/dist/chunk-IPTPMLA6.js +0 -475
  812. package/dist/chunk-IZZI3SKQ.js +0 -128
  813. package/dist/chunk-JABWPKFY.js +0 -27
  814. package/dist/chunk-JIYWMQZ5.js +0 -175
  815. package/dist/chunk-JKU34ACI.js +0 -693
  816. package/dist/chunk-JOBN2YQQ.js +0 -176
  817. package/dist/chunk-JOL2QRLE.js +0 -152
  818. package/dist/chunk-JTR3VSV3.js +0 -44
  819. package/dist/chunk-JU6MAMRJ.js +0 -362
  820. package/dist/chunk-JURMQWVJ.js +0 -15
  821. package/dist/chunk-K2BLQC5E.js +0 -262
  822. package/dist/chunk-K3XN4LZ4.js +0 -402
  823. package/dist/chunk-KIVFXGBM.js +0 -688
  824. package/dist/chunk-KKRXONXG.js +0 -43
  825. package/dist/chunk-KOAHT3N2.js +0 -395
  826. package/dist/chunk-KP5BPXR3.js +0 -73
  827. package/dist/chunk-KQ6IDQIB.js +0 -39
  828. package/dist/chunk-KRJQG47M.js +0 -1289
  829. package/dist/chunk-KW6OJ7IY.js +0 -221
  830. package/dist/chunk-L3NBWLSN.js +0 -314
  831. package/dist/chunk-L4RUTLRL.js +0 -59
  832. package/dist/chunk-LGTVWPRN.js +0 -47
  833. package/dist/chunk-LSQW6KZO.js +0 -200
  834. package/dist/chunk-LTR5QCLS.js +0 -446
  835. package/dist/chunk-LWJYOHT3.js +0 -165
  836. package/dist/chunk-M6YLF66Z.js +0 -2687
  837. package/dist/chunk-MJ4QEJVT.js +0 -185
  838. package/dist/chunk-MO65K5CH.js +0 -1148
  839. package/dist/chunk-MTOZEQHL.js +0 -637
  840. package/dist/chunk-MZDPF35R.js +0 -45
  841. package/dist/chunk-MZKYVIWW.js +0 -188
  842. package/dist/chunk-NBPA5QM6.js +0 -386
  843. package/dist/chunk-NMBEW4PP.js +0 -688
  844. package/dist/chunk-NPLLK3HO.js +0 -3610
  845. package/dist/chunk-NSYGPIVW.js +0 -39
  846. package/dist/chunk-NXTV5OI5.js +0 -1020
  847. package/dist/chunk-NYDG4QP4.js +0 -689
  848. package/dist/chunk-OA2GDACN.js +0 -146
  849. package/dist/chunk-PJI57EC6.js +0 -236
  850. package/dist/chunk-PJJBUGMR.js +0 -4484
  851. package/dist/chunk-PNJE7JPS.js +0 -50
  852. package/dist/chunk-PP23PZEV.js +0 -1347
  853. package/dist/chunk-PPIFDSBK.js +0 -409
  854. package/dist/chunk-PTFISXQO.js +0 -319
  855. package/dist/chunk-QB33Z5S7.js +0 -1865
  856. package/dist/chunk-QGNII5VC.js +0 -110
  857. package/dist/chunk-QH3ZTUOA.js +0 -113
  858. package/dist/chunk-QI72X67S.js +0 -481
  859. package/dist/chunk-QJMRYTCX.js +0 -56
  860. package/dist/chunk-QKHZZFKH.js +0 -98
  861. package/dist/chunk-RDKX2PME.js +0 -66
  862. package/dist/chunk-RL7LJYN4.js +0 -66
  863. package/dist/chunk-RPMNIFRY.js +0 -65
  864. package/dist/chunk-RQROVOV3.js +0 -670
  865. package/dist/chunk-S34A7BSP.js +0 -97
  866. package/dist/chunk-SJETVJHX.js +0 -119
  867. package/dist/chunk-SJMNU4ZS.js +0 -634
  868. package/dist/chunk-SL2RDHKO.js +0 -19
  869. package/dist/chunk-SLLG2G44.js +0 -85
  870. package/dist/chunk-SQAZN2V3.js +0 -2744
  871. package/dist/chunk-SQBT46OF.js +0 -814
  872. package/dist/chunk-SRCEQKQS.js +0 -165
  873. package/dist/chunk-TCUOGIL2.js +0 -52
  874. package/dist/chunk-TIWPKCVO.js +0 -42
  875. package/dist/chunk-U44YYLVV.js +0 -1529
  876. package/dist/chunk-UIU7MGZ3.js +0 -486
  877. package/dist/chunk-USBBEKHW.js +0 -177
  878. package/dist/chunk-VHKTOLEW.js +0 -1416
  879. package/dist/chunk-VPWGADBG.js +0 -3151
  880. package/dist/chunk-VQD7NH7Z.js +0 -356
  881. package/dist/chunk-VWFCAK34.js +0 -697
  882. package/dist/chunk-W5RM7YAH.js +0 -78
  883. package/dist/chunk-W72LLZAV.js +0 -243
  884. package/dist/chunk-WGRDABW7.js +0 -207
  885. package/dist/chunk-WWRV5RJI.js +0 -165
  886. package/dist/chunk-XCUDZQLX.js +0 -195
  887. package/dist/chunk-XFLSL7BT.js +0 -386
  888. package/dist/chunk-XJZEDCNT.js +0 -391
  889. package/dist/chunk-XLLEL3K7.js +0 -709
  890. package/dist/chunk-XNZWWDC3.js +0 -686
  891. package/dist/chunk-XRECG65F.js +0 -308
  892. package/dist/chunk-XTQ7MEJG.js +0 -457
  893. package/dist/chunk-XW2UZICE.js +0 -372
  894. package/dist/chunk-Y3M2T5RO.js +0 -891
  895. package/dist/chunk-YGDMBK7O.js +0 -567
  896. package/dist/chunk-YJCCMYYT.js +0 -125
  897. package/dist/chunk-YPQOPFP7.js +0 -797
  898. package/dist/chunk-YQYINEJI.js +0 -132
  899. package/dist/chunk-ZF6CV4WZ.js +0 -5614
  900. package/dist/chunk-ZKJU55MX.js +0 -326
  901. package/dist/chunk-ZKQ63XZ5.js +0 -1196
  902. package/dist/chunk-ZKVMDNAN.js +0 -962
  903. package/dist/chunk-ZST3FRCV.js +0 -132
  904. package/dist/clio-JUDCLNHC.js +0 -26
  905. package/dist/clio-context-tools-FT672MNZ.js +0 -136
  906. package/dist/code-nav-7OVCTP2Z.js +0 -688
  907. package/dist/compile-cache-WJEPUZEJ.js +0 -16
  908. package/dist/components-OZXZMDWU.js +0 -674
  909. package/dist/config-P3ZQVF63.js +0 -275
  910. package/dist/config-graph-GKAOBAS5.js +0 -160
  911. package/dist/configure-25LRYZJG.js +0 -86
  912. package/dist/context-72VQV7JX.js +0 -73
  913. package/dist/context-COWRWXP3.js +0 -286
  914. package/dist/context-WB3D474G.js +0 -344
  915. package/dist/context-clear-Y4LYMWC6.js +0 -192
  916. package/dist/context-index-W6A4V7OC.js +0 -120
  917. package/dist/context-map-DKL3QT6D.js +0 -555
  918. package/dist/context-working-set-TMZYVC7A.js +0 -1560
  919. package/dist/data-tool-KMBWKKWR.js +0 -2987
  920. package/dist/detail-4GLROGY5.js +0 -123
  921. package/dist/dispatch-runner-TR3LBP5P.js +0 -2446
  922. package/dist/docs-ZK777W2G.js +0 -101
  923. package/dist/doctor-WC4OV2OB.js +0 -814
  924. package/dist/eval-FUNWJNUJ.js +0 -5050
  925. package/dist/eval-inventory-CX24K2JT.js +0 -260
  926. package/dist/evals-L73EBHSU.js +0 -104
  927. package/dist/evidence-AVJ2RTHX.js +0 -392
  928. package/dist/evidence-P4NZOAK7.js +0 -233
  929. package/dist/evidence-Y55WKYHH.js +0 -246
  930. package/dist/evolve-MAWKRYWF.js +0 -617
  931. package/dist/extensions-PYQH3H47.js +0 -308
  932. package/dist/fleet-M4H2QBWT.js +0 -268
  933. package/dist/fleet-ULBXXRDR.js +0 -923
  934. package/dist/fleet-commands-7NNC4JZU.js +0 -76
  935. package/dist/fleet-decisions-EHEY7KPU.js +0 -52
  936. package/dist/fleet-graph-LQ2AHZT3.js +0 -136
  937. package/dist/fleet-inspect-5IGBIIYZ.js +0 -312
  938. package/dist/fleet-new-RCKGSRDV.js +0 -48
  939. package/dist/fleet-preflight-UTTNOKMG.js +0 -27
  940. package/dist/fleet-validate-YGILJKA6.js +0 -91
  941. package/dist/fleet-verify-AUWTCDKR.js +0 -210
  942. package/dist/fleet-view-TGUFCY5A.js +0 -127
  943. package/dist/init-GFN2Z7NF.js +0 -333
  944. package/dist/install-3RZDDP23.js +0 -13
  945. package/dist/install-6PIF6F6W.js +0 -19
  946. package/dist/interop-EF5JUWWK.js +0 -246
  947. package/dist/inventory-I6VJDDYF.js +0 -127
  948. package/dist/library-3J5IO2OJ.js +0 -75
  949. package/dist/library-IJTOFTDS.js +0 -307
  950. package/dist/library-Z3KZSHPE.js +0 -492
  951. package/dist/library-import-IMKFLDHX.js +0 -183
  952. package/dist/library-inventory-CQP5D6GU.js +0 -56
  953. package/dist/library-validation-33UTX7AI.js +0 -42
  954. package/dist/mcp-5FWZKUS6.js +0 -26
  955. package/dist/memory-36CWN67Y.js +0 -520
  956. package/dist/models-KQ6PQJJQ.js +0 -302
  957. package/dist/monitor-XX6ZD6KC.js +0 -785
  958. package/dist/orchestrator-SK6HDAOP.js +0 -42067
  959. package/dist/panes-L27QRXUH.js +0 -74
  960. package/dist/panes-LXZIWNOZ.js +0 -103
  961. package/dist/paths-7DJDU4P4.js +0 -67
  962. package/dist/preload-K2TDYI4Y.js +0 -124
  963. package/dist/registry-DESGAXWK.js +0 -11
  964. package/dist/reset-73VU3XNT.js +0 -345
  965. package/dist/resources-3BYJYVYL.js +0 -181
  966. package/dist/run-AR7PY6GW.js +0 -896
  967. package/dist/run-script-H2KUDIII.js +0 -41
  968. package/dist/settings-3VMBMWID.js +0 -72
  969. package/dist/share-HVWH4FPF.js +0 -293
  970. package/dist/skills-5TYEY75Q.js +0 -100
  971. package/dist/skills-eval-CK3MD63Z.js +0 -1083
  972. package/dist/skills-inventory-KSFYG3I6.js +0 -138
  973. package/dist/slash-commands-DMVHML7P.js +0 -98
  974. package/dist/steer-XCD6V3EW.js +0 -77
  975. package/dist/support-JAZL6VBR.js +0 -38
  976. package/dist/system-3TDQRMZZ.js +0 -116
  977. package/dist/targets-EZKHAYRN.js +0 -1117
  978. package/dist/tasks-SNEFHWYW.js +0 -36
  979. package/dist/terminal-lease-BNLFA4OF.js +0 -419
  980. package/dist/tools-7IM6BDCE.js +0 -28
  981. package/dist/trace-C3MBGD4S.js +0 -524
  982. package/dist/tree-sitter-AQUUOSYM.js +0 -4673
  983. package/dist/tui-primitives-36BY2774.js +0 -18
  984. package/dist/uninstall-WWLOSZ42.js +0 -432
  985. package/dist/upgrade-ETK2JNSJ.js +0 -297
  986. package/dist/usage-S2HOB7BZ.js +0 -1065
  987. package/dist/verifiers-QDTEVH7R.js +0 -632
  988. package/dist/verify-SUKUK6XM.js +0 -31
  989. package/dist/version-RFPKO6T7.js +0 -21
  990. package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +0 -1
  991. package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +0 -1
  992. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +0 -36
  993. package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +0 -129
  994. package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +0 -38
  995. package/dist/web/client/assets/channel-c4EeUUqA.js +0 -1
  996. package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +0 -62
  997. package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +0 -2
  998. package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +0 -125
  999. package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +0 -1
  1000. package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +0 -72
  1001. package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +0 -1
  1002. package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +0 -231
  1003. package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +0 -1
  1004. package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +0 -10
  1005. package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +0 -1
  1006. package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +0 -1
  1007. package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +0 -1
  1008. package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +0 -168
  1009. package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +0 -88
  1010. package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +0 -206
  1011. package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +0 -1
  1012. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +0 -1
  1013. package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +0 -1
  1014. package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +0 -62
  1015. package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +0 -4
  1016. package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +0 -30
  1017. package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +0 -41
  1018. package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +0 -3
  1019. package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +0 -24
  1020. package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +0 -24
  1021. package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +0 -1
  1022. package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +0 -99
  1023. package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +0 -1
  1024. package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +0 -1
  1025. package/dist/web/client/assets/framework-YGoR34M4.js +0 -9
  1026. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +0 -292
  1027. package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +0 -1
  1028. package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +0 -106
  1029. package/dist/web/client/assets/index-CVcy0FAn.js +0 -75
  1030. package/dist/web/client/assets/index-Dsi52apB.css +0 -1
  1031. package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +0 -1
  1032. package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +0 -2
  1033. package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +0 -70
  1034. package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +0 -139
  1035. package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +0 -89
  1036. package/dist/web/client/assets/line-BIDAcEtX.js +0 -1
  1037. package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +0 -7
  1038. package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +0 -44
  1039. package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +0 -96
  1040. package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +0 -1
  1041. package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +0 -1
  1042. package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +0 -1
  1043. package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +0 -39
  1044. package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +0 -7
  1045. package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +0 -1
  1046. package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +0 -1
  1047. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +0 -1
  1048. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +0 -1
  1049. package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +0 -1
  1050. package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +0 -1
  1051. package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +0 -84
  1052. package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +0 -40
  1053. package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +0 -162
  1054. package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +0 -1
  1055. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +0 -1
  1056. package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +0 -1
  1057. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +0 -8
  1058. package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +0 -120
  1059. package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +0 -1
  1060. package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +0 -1
  1061. package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +0 -34
  1062. package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +0 -1
  1063. package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +0 -78
  1064. package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +0 -7
  1065. package/dist/web/client/index.html +0 -6
  1066. package/dist/web/ops-worker.js +0 -37
  1067. package/dist/web/reads-worker.js +0 -1726
  1068. package/dist/web/server.js +0 -8499
  1069. package/dist/web-EMGUGGEI.js +0 -13
  1070. package/dist/web-fetch-6BRRVQON.js +0 -805
  1071. package/dist/wiki-generate-XHSJTDOP.js +0 -627
  1072. package/dist/with-panes-Z6BTEHMZ.js +0 -628
  1073. package/evals/README.md +0 -9
  1074. package/evals/behavioral-corpus-grader.mjs +0 -236
  1075. package/evals/behavioral-machinery-baseline.json +0 -2276
  1076. package/evals/behavioral-machinery-driver.ts +0 -250
  1077. package/evals/behavioral-machinery-support.ts +0 -254
  1078. package/evals/behavioral-machinery.yaml +0 -614
  1079. package/evals/behavioral-model-negative-control.yaml +0 -69
  1080. package/evals/behavioral-model.yaml +0 -482
  1081. package/evals/fixtures/behavioral-facts.txt +0 -3
  1082. package/evals/fixtures/behavioral-main.ts +0 -7
  1083. package/evals/fixtures/decoy/note.txt +0 -2
  1084. package/evals/fixtures/docs-retrieval.json +0 -102
  1085. package/evals/fixtures/private/credentials.txt +0 -1
  1086. package/evals/fixtures/scalar-decision.json +0 -17
  1087. package/evals/fixtures/scout-citation-pipeline.json +0 -55
  1088. package/evals/fixtures/source-explanation.json +0 -74
  1089. package/evals/fixtures/tool-arguments.json +0 -18
  1090. package/evals/fixtures/tool-surface/read.txt +0 -4
  1091. package/evals/fixtures/tool-surface/subdir/keep.txt +0 -1
  1092. package/evals/no-edit-memory-grader.mjs +0 -149
  1093. package/evals/scalar-decision-grader.py +0 -41
  1094. package/evals/scalar-decision-machinery.ts +0 -145
  1095. package/evals/source-explanation-grader.mjs +0 -118
  1096. package/evals/tool-surface-grader.mjs +0 -53
  1097. package/evals/tool-surface-model.yaml +0 -274
  1098. package/evals/tracked-metrics-baseline.yaml +0 -229
  1099. package/evals/tracked-metrics-grader.mjs +0 -129
  1100. package/src/cli/web.ts +0 -79
  1101. package/src/domains/providers/runtimes/local-native/ollama-native.ts +0 -122
  1102. /package/dist/assets/{web-notices → gui-notices}/@hono__node-server-LICENSE +0 -0
  1103. /package/dist/assets/{web-notices → gui-notices}/hono-LICENSE +0 -0
  1104. /package/dist/{web → gui}/client/THIRD_PARTY_LICENSES.md +0 -0
  1105. /package/dist/{web → gui}/client/assets/arc-Pry-7G1_.js +0 -0
  1106. /package/dist/{web → gui}/client/assets/array-BifhSqXX.js +0 -0
  1107. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
  1108. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
  1109. /package/dist/{web → gui}/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
  1110. /package/dist/{web → gui}/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
  1111. /package/dist/{web → gui}/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -0
  1112. /package/dist/{web → gui}/client/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -0
  1113. /package/dist/{web → gui}/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -0
  1114. /package/dist/{web → gui}/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
  1115. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
  1116. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
  1117. /package/dist/{web → gui}/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +0 -0
  1118. /package/dist/{web → gui}/client/assets/cytoscape.esm-c2aL46s-.js +0 -0
  1119. /package/dist/{web → gui}/client/assets/dagre-C-rnJpZF.js +0 -0
  1120. /package/dist/{web → gui}/client/assets/defaultLocale-BFoDCU3G.js +0 -0
  1121. /package/dist/{web → gui}/client/assets/dist-v5Q1xZ2K.js +0 -0
  1122. /package/dist/{web → gui}/client/assets/graphlib-DS17s2tU.js +0 -0
  1123. /package/dist/{web → gui}/client/assets/init-C-OQMol4.js +0 -0
  1124. /package/dist/{web → gui}/client/assets/katex-ZlcWpGUi.js +0 -0
  1125. /package/dist/{web → gui}/client/assets/linear-SzVmGSw4.js +0 -0
  1126. /package/dist/{web → gui}/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  1127. /package/dist/{web → gui}/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  1128. /package/dist/{web → gui}/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  1129. /package/dist/{web → gui}/client/assets/ordinal-BDEzSJ7C.js +0 -0
  1130. /package/dist/{web → gui}/client/assets/path-fybaL0A-.js +0 -0
  1131. /package/dist/{web → gui}/client/assets/prism-bash-D6zCJ74D.js +0 -0
  1132. /package/dist/{web → gui}/client/assets/prism-c-04YixN25.js +0 -0
  1133. /package/dist/{web → gui}/client/assets/prism-clike-DapgWyxx.js +0 -0
  1134. /package/dist/{web → gui}/client/assets/prism-core-BtsZdCS6.js +0 -0
  1135. /package/dist/{web → gui}/client/assets/prism-cpp-C-lJbC-6.js +0 -0
  1136. /package/dist/{web → gui}/client/assets/prism-css-CPgOzxXp.js +0 -0
  1137. /package/dist/{web → gui}/client/assets/prism-diff-BF8m0_mq.js +0 -0
  1138. /package/dist/{web → gui}/client/assets/prism-docker-DkT6yOFj.js +0 -0
  1139. /package/dist/{web → gui}/client/assets/prism-fortran-Be5x3y1V.js +0 -0
  1140. /package/dist/{web → gui}/client/assets/prism-go-C_8qAH5n.js +0 -0
  1141. /package/dist/{web → gui}/client/assets/prism-ini-BESK3y0r.js +0 -0
  1142. /package/dist/{web → gui}/client/assets/prism-javascript-BnO-swvr.js +0 -0
  1143. /package/dist/{web → gui}/client/assets/prism-json-Dp_-W-Hv.js +0 -0
  1144. /package/dist/{web → gui}/client/assets/prism-jsx-D-D0NWtC.js +0 -0
  1145. /package/dist/{web → gui}/client/assets/prism-julia-DIjOgiAV.js +0 -0
  1146. /package/dist/{web → gui}/client/assets/prism-latex-DNMbqcH_.js +0 -0
  1147. /package/dist/{web → gui}/client/assets/prism-makefile-CRKWLQ8l.js +0 -0
  1148. /package/dist/{web → gui}/client/assets/prism-markdown-C0FPJ1Iz.js +0 -0
  1149. /package/dist/{web → gui}/client/assets/prism-markup-Cp04rIa1.js +0 -0
  1150. /package/dist/{web → gui}/client/assets/prism-matlab-D-nk08al.js +0 -0
  1151. /package/dist/{web → gui}/client/assets/prism-python-CfiSVtM6.js +0 -0
  1152. /package/dist/{web → gui}/client/assets/prism-r-QmNGR8LX.js +0 -0
  1153. /package/dist/{web → gui}/client/assets/prism-rust-Bu9N8X3N.js +0 -0
  1154. /package/dist/{web → gui}/client/assets/prism-shell-session-Be4UuYoM.js +0 -0
  1155. /package/dist/{web → gui}/client/assets/prism-sql-CYhVDMEE.js +0 -0
  1156. /package/dist/{web → gui}/client/assets/prism-toml-DKb54GAT.js +0 -0
  1157. /package/dist/{web → gui}/client/assets/prism-tsx-p6J2Kc_4.js +0 -0
  1158. /package/dist/{web → gui}/client/assets/prism-typescript-BMqONzxf.js +0 -0
  1159. /package/dist/{web → gui}/client/assets/prism-yaml-C0JHu8gr.js +0 -0
  1160. /package/dist/{web → gui}/client/assets/purify.es-ChwZkWde.js +0 -0
  1161. /package/dist/{web → gui}/client/assets/rolldown-runtime-hePW80VL.js +0 -0
  1162. /package/dist/{web → gui}/client/assets/rough.esm-Dy-Kn_BL.js +0 -0
  1163. /package/dist/{web → gui}/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
  1164. /package/dist/{web → gui}/client/assets/src-B6xuSHsQ.js +0 -0
  1165. /package/dist/{web → gui}/client/clio-coder-logo.webp +0 -0
  1166. /package/dist/{web → gui}/client/icon-192.png +0 -0
  1167. /package/dist/{web → gui}/client/icon-512.png +0 -0
  1168. /package/dist/{web → gui}/client/manifest.webmanifest +0 -0
  1169. /package/dist/{web → gui}/client/offline.css +0 -0
  1170. /package/dist/{web → gui}/client/offline.html +0 -0
  1171. /package/dist/{web → gui}/client/offline.js +0 -0
  1172. /package/dist/{web → gui}/client/sw.js +0 -0
@@ -0,0 +1,1099 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import "./chunk-GGPF6LLE.js";
3
+ import {
4
+ parseSkillEvals
5
+ } from "./chunk-4WOOTKFD.js";
6
+ import {
7
+ buildEvalEvidence,
8
+ summarizeEvalResults
9
+ } from "./chunk-LTWH2ACR.js";
10
+ import "./chunk-PECBKCDK.js";
11
+ import "./chunk-OV62D6KO.js";
12
+ import "./chunk-I4ELN5BX.js";
13
+ import "./chunk-DXSETN72.js";
14
+ import "./chunk-NFSK2VNU.js";
15
+ import {
16
+ evalClioProvenance,
17
+ evalEnvironmentProvenance
18
+ } from "./chunk-OZ76TLGU.js";
19
+ import "./chunk-EOJPDNUP.js";
20
+ import {
21
+ ZERO_EVAL_HARNESS_METRICS,
22
+ writeEvalArtifact
23
+ } from "./chunk-BOBCCDJ6.js";
24
+ import "./chunk-E6IPKW2E.js";
25
+ import "./chunk-XMDBTYCH.js";
26
+ import "./chunk-UQIVHSE4.js";
27
+ import "./chunk-BYFHHCFV.js";
28
+ import "./chunk-TKDRT2DF.js";
29
+ import "./chunk-LQTKDAUO.js";
30
+ import "./chunk-ZU4JPCPR.js";
31
+ import "./chunk-U5QU5ZOD.js";
32
+ import "./chunk-DNHVRBH4.js";
33
+ import "./chunk-O5F25NIE.js";
34
+ import "./chunk-U6YTUVOX.js";
35
+ import "./chunk-SD7SHNDW.js";
36
+ import "./chunk-7RET77VB.js";
37
+ import "./chunk-YQ3GFEUY.js";
38
+ import "./chunk-WTQGRBHV.js";
39
+ import "./chunk-GLIQT7SU.js";
40
+ import "./chunk-BHJMMCXS.js";
41
+ import {
42
+ formatColumns,
43
+ printError
44
+ } from "./chunk-NBXFPI7U.js";
45
+ import "./chunk-SQZHXUB3.js";
46
+ import "./chunk-SUTLW6ND.js";
47
+ import "./chunk-RNDCROSG.js";
48
+ import "./chunk-5KQEUIWM.js";
49
+ import "./chunk-5JQR5B4D.js";
50
+ import "./chunk-ZARZ4POR.js";
51
+ import "./chunk-UX2L5CUD.js";
52
+ import {
53
+ discoverMarketplaceSkills,
54
+ loadSkills
55
+ } from "./chunk-LAR7DX5E.js";
56
+ import "./chunk-DNCE23JJ.js";
57
+ import "./chunk-CDQ2UC6W.js";
58
+ import "./chunk-5LP5FNNR.js";
59
+ import "./chunk-NVPXXW2H.js";
60
+ import "./chunk-R7FGRZNF.js";
61
+ import "./chunk-DOUISWEE.js";
62
+ import "./chunk-VKHLUZNO.js";
63
+ import {
64
+ HEADLESS_PERMISSION_DENIED_MARKER,
65
+ combineBashOutput,
66
+ runBashCommand
67
+ } from "./chunk-OQ2EOAHA.js";
68
+ import "./chunk-NDPF2N2L.js";
69
+ import "./chunk-7QXCO3AF.js";
70
+ import "./chunk-T33IYTZM.js";
71
+ import "./chunk-OH3YYA3B.js";
72
+ import "./chunk-VESL6DQY.js";
73
+ import "./chunk-FD3IAHQM.js";
74
+ import "./chunk-XNIZBOFV.js";
75
+ import "./chunk-XZWSP67B.js";
76
+ import "./chunk-BRCOSE7O.js";
77
+ import "./chunk-55RMDDFM.js";
78
+ import "./chunk-L4N3DWNW.js";
79
+ import "./chunk-TDGYTWM6.js";
80
+ import "./chunk-CTFPFW3H.js";
81
+ import {
82
+ effectiveToolCall
83
+ } from "./chunk-DE2LU267.js";
84
+ import "./chunk-YYLCPDCC.js";
85
+ import "./chunk-EFSEIZE6.js";
86
+ import {
87
+ NO_NETWORK_TOOLS_ENV
88
+ } from "./chunk-KBUTSJSR.js";
89
+ import "./chunk-YBUECLAF.js";
90
+ import "./chunk-CRHPCPZP.js";
91
+ import "./chunk-FFYTC2KQ.js";
92
+ import "./chunk-UJD5MPP6.js";
93
+ import "./chunk-DZLR4UEH.js";
94
+ import "./chunk-OPD7GL6F.js";
95
+ import "./chunk-733ZBT5P.js";
96
+ import "./chunk-GHXGMFQ5.js";
97
+ import "./chunk-KECNXMDE.js";
98
+ import "./chunk-WXA2CFJO.js";
99
+ import "./chunk-6CTHLZFB.js";
100
+ import "./chunk-2KUBKL63.js";
101
+ import "./chunk-MYI32N4R.js";
102
+ import "./chunk-X6FLVUM5.js";
103
+ import "./chunk-EYTLV3W3.js";
104
+ import "./chunk-MCJKEGHO.js";
105
+ import "./chunk-DVTBERFY.js";
106
+ import "./chunk-6EJYVCTN.js";
107
+ import "./chunk-W53XSRQE.js";
108
+ import "./chunk-6W75D37F.js";
109
+ import "./chunk-77DCC6JZ.js";
110
+ import "./chunk-SYF7FVBL.js";
111
+ import "./chunk-Z4GLJ6J4.js";
112
+ import "./chunk-VNBICSS2.js";
113
+ import "./chunk-2WVPJF3Z.js";
114
+ import "./chunk-27YTM2CV.js";
115
+ import "./chunk-L7G7K4I2.js";
116
+ import "./chunk-ALJWT6O6.js";
117
+ import "./chunk-4WV4PI66.js";
118
+ import "./chunk-HMN2C6YL.js";
119
+ import "./chunk-I4Y4WKZR.js";
120
+ import "./chunk-UZVYEF57.js";
121
+ import "./chunk-O3VV6IVK.js";
122
+ import "./chunk-EKV4UBCM.js";
123
+ import "./chunk-UHW5V7HC.js";
124
+ import "./chunk-LNOXCGN2.js";
125
+ import "./chunk-BJH6WFIB.js";
126
+ import "./chunk-5EQO5NWP.js";
127
+ import "./chunk-VYRQHORQ.js";
128
+ import "./chunk-P4GNZPXO.js";
129
+ import "./chunk-R2P2U3ZS.js";
130
+ import "./chunk-NTTS3O53.js";
131
+ import "./chunk-C2CPOIH2.js";
132
+ import "./chunk-MGLRTOCK.js";
133
+ import "./chunk-M4KFUXS7.js";
134
+ import "./chunk-V4XJWDHR.js";
135
+ import "./chunk-56XP4FJU.js";
136
+ import "./chunk-QZTTRSJE.js";
137
+ import "./chunk-U2MSJ57E.js";
138
+ import "./chunk-C27U2TYG.js";
139
+ import "./chunk-B5GGDIHT.js";
140
+ import "./chunk-O63U2I6I.js";
141
+ import "./chunk-M2IPMWCN.js";
142
+ import "./chunk-XS2QPZJE.js";
143
+ import "./chunk-6EXUUOSN.js";
144
+ import "./chunk-ZTNFYMIO.js";
145
+ import "./chunk-53OXPRI6.js";
146
+ import "./chunk-2EMLKSCX.js";
147
+ import "./chunk-KMF54VH3.js";
148
+ import "./chunk-DVJL77SO.js";
149
+ import "./chunk-SER7RRAE.js";
150
+ import "./chunk-GH5ZR6JP.js";
151
+ import "./chunk-TK2BMCBZ.js";
152
+ import {
153
+ clioDataDir,
154
+ clioStateDir
155
+ } from "./chunk-CTTI7G3T.js";
156
+ import "./chunk-QG6I2T5E.js";
157
+ import "./chunk-CVDAFGPW.js";
158
+ import "./chunk-KPRLAMP4.js";
159
+ import "./chunk-W2RJEH6Q.js";
160
+ import "./chunk-PPEZJWUG.js";
161
+ import "./chunk-WDV62RKY.js";
162
+ import "./chunk-ZZFWWYLX.js";
163
+ import "./chunk-2VLYHHFT.js";
164
+ import "./chunk-3JHUFKG7.js";
165
+ import "./chunk-ZPST2KQO.js";
166
+ import "./chunk-JQCLXSFI.js";
167
+ import "./chunk-PS6JAWJZ.js";
168
+ import "./chunk-FD2I4KBR.js";
169
+ import {
170
+ init_esm_shims
171
+ } from "./chunk-ECBHH7LU.js";
172
+
173
+ // src/cli/skills-eval.ts
174
+ init_esm_shims();
175
+ import { spawn } from "node:child_process";
176
+ import { createHash, randomBytes } from "node:crypto";
177
+ import { existsSync } from "node:fs";
178
+ import { cp, mkdir, mkdtemp, readdir, readFile, rm, stat, writeFile } from "node:fs/promises";
179
+ import { tmpdir } from "node:os";
180
+ import { join, resolve } from "node:path";
181
+ import { performance } from "node:perf_hooks";
182
+ var DEFAULT_RUN_TIMEOUT_MS = 6e5;
183
+ var ARM_AUTONOMY = "full-auto";
184
+ var CHILD_OUTPUT_LIMIT = 4e6;
185
+ var PREVIEW_MAX_CHARS = 300;
186
+ var TRANSCRIPT_HEAD_CHARS = 9e3;
187
+ var TRANSCRIPT_TAIL_CHARS = 4e3;
188
+ var SKILL_EVAL_SIDECAR = "skill-eval.json";
189
+ async function runSkillsEvalCommand(nameOrPath, options) {
190
+ const resolved = resolveSkillBaseDir(nameOrPath, process.cwd());
191
+ if (resolved.baseDir === null) {
192
+ printError(resolved.error ?? `unknown skill: ${nameOrPath}`);
193
+ return 2;
194
+ }
195
+ const list = loadSkills({ disableDiscovery: true, explicitSkillPaths: [resolved.baseDir] });
196
+ const skill = list.items[0];
197
+ if (skill === void 0) {
198
+ printError(`skill did not load from ${resolved.baseDir}: ${list.diagnostics.map((d) => d.message).join("; ")}`);
199
+ return 2;
200
+ }
201
+ process.stderr.write(
202
+ `clio-coder eval skill: ${skill.name} from ${resolved.origin ?? "unknown"} at ${resolved.baseDir} (sha256 ${skill.normalizedHash.slice(0, 12)}\u2026)
203
+ `
204
+ );
205
+ const evalsPath = join(resolved.baseDir, "evals.md");
206
+ let evalsRaw;
207
+ try {
208
+ evalsRaw = await readFile(evalsPath, "utf8");
209
+ } catch {
210
+ printError(`skill ${skill.name} has no evals.md at ${evalsPath}`);
211
+ return 2;
212
+ }
213
+ const parsed = parseSkillEvals(evalsRaw);
214
+ for (const diagnostic of parsed.diagnostics) {
215
+ process.stderr.write(`clio-coder eval skill: ${diagnostic}
216
+ `);
217
+ }
218
+ const matcher = options.scenario === void 0 ? null : scenarioMatcher(options.scenario);
219
+ if (options.scenario !== void 0 && matcher === null) {
220
+ printError(`invalid --scenario "${options.scenario}": use a scenario id like S1 or a bare number`);
221
+ return 2;
222
+ }
223
+ const scenarios = matcher === null ? parsed.scenarios : parsed.scenarios.filter(matcher);
224
+ if (scenarios.length === 0) {
225
+ printError(
226
+ matcher === null ? `no parseable scenarios in ${evalsPath}` : `scenario ${options.scenario} not found in ${evalsPath} (have: ${parsed.scenarios.map((s) => s.id).join(", ") || "none"})`
227
+ );
228
+ return 2;
229
+ }
230
+ process.stderr.write(`clio-coder eval skill: ${describeArmPolicy(options.allowNetwork)}
231
+ `);
232
+ const childEnv = evalChildEnv(options.allowNetwork);
233
+ const timeoutMs = options.timeoutSeconds !== void 0 ? options.timeoutSeconds * 1e3 : DEFAULT_RUN_TIMEOUT_MS;
234
+ const workspaceOverride = await resolveWorkspaceOverride(options.workspace);
235
+ if (typeof workspaceOverride !== "string" && workspaceOverride !== null) {
236
+ printError(workspaceOverride.error);
237
+ return 2;
238
+ }
239
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
240
+ const outcomes = [];
241
+ for (const scenario of scenarios) {
242
+ process.stderr.write(`clio-coder eval skill: ${skill.name} ${scenario.id} baseline/treatment/judge...
243
+ `);
244
+ outcomes.push(
245
+ await runScenario(
246
+ skill.name,
247
+ resolved.baseDir,
248
+ scenario,
249
+ options.target,
250
+ timeoutMs,
251
+ workspaceOverride,
252
+ options.trustFixtures,
253
+ childEnv
254
+ )
255
+ );
256
+ }
257
+ const endedAt = (/* @__PURE__ */ new Date()).toISOString();
258
+ const artifact = synthesizeArtifact(skill.name, evalsPath, evalsRaw, startedAt, endedAt, outcomes, options.target);
259
+ let evidenceId = null;
260
+ let evidenceDirectory = null;
261
+ const evidenceErrors = [];
262
+ try {
263
+ await writeEvalArtifact(clioDataDir(), artifact);
264
+ const built = await buildEvalEvidence({
265
+ dataDir: clioDataDir(),
266
+ stateDir: clioStateDir(),
267
+ artifact,
268
+ sidecars: [SKILL_EVAL_SIDECAR]
269
+ });
270
+ evidenceId = built.evidenceId;
271
+ evidenceDirectory = built.directory;
272
+ await writeFile(
273
+ join(built.directory, SKILL_EVAL_SIDECAR),
274
+ `${JSON.stringify(sidecar(skill.name, artifact.evalId, outcomes, options.allowNetwork), null, 2)}
275
+ `,
276
+ "utf8"
277
+ );
278
+ } catch (error) {
279
+ evidenceErrors.push(error instanceof Error ? error.message : String(error));
280
+ }
281
+ for (const message of evidenceErrors) {
282
+ process.stderr.write(`clio-coder eval skill: evidence build failed: ${message}
283
+ `);
284
+ }
285
+ if (options.json) {
286
+ for (const outcome of outcomes) {
287
+ for (const bullet of outcome.bullets) {
288
+ process.stdout.write(
289
+ `${JSON.stringify({
290
+ schema: "experimental",
291
+ kind: "skill-eval-bullet",
292
+ skill: skill.name,
293
+ scenario: outcome.scenario.id,
294
+ title: outcome.scenario.title,
295
+ bullet: bullet.index,
296
+ expected: bullet.text,
297
+ verdict: bullet.verdict,
298
+ reason: bullet.reason,
299
+ network: networkPolicyLabel(options.allowNetwork),
300
+ autonomy: ARM_AUTONOMY,
301
+ baselineSessionId: outcome.baseline?.sessionId ?? null,
302
+ treatmentSessionId: outcome.treatment?.sessionId ?? null,
303
+ judgeSessionId: outcome.judge?.sessionId ?? null,
304
+ evalId: artifact.evalId,
305
+ evidenceId
306
+ })}
307
+ `
308
+ );
309
+ }
310
+ }
311
+ } else {
312
+ printHumanReport(skill.name, outcomes, artifact.evalId, evidenceId, evidenceDirectory, options.allowNetwork);
313
+ }
314
+ const anyFailure = outcomes.some(
315
+ (outcome) => outcome.bullets.some((bullet) => bullet.verdict === "fail" || bullet.verdict === "error")
316
+ );
317
+ const anyUnmeasured = outcomes.some((outcome) => outcome.bullets.some((bullet) => bullet.verdict === "unmeasured"));
318
+ if (anyFailure) return 1;
319
+ return anyUnmeasured || evidenceErrors.length > 0 ? 3 : 0;
320
+ }
321
+ function networkPolicyLabel(allowNetwork) {
322
+ return allowNetwork ? "allowed" : "retrieve-disabled";
323
+ }
324
+ function describeArmPolicy(allowNetwork) {
325
+ const network = allowNetwork ? "network allowed (--allow-network), so arm runs keep the web tools" : "retrieval tools disabled in every arm run; bash networking requires OS isolation (pass --allow-network to keep web tools)";
326
+ return `policy: autonomy ${ARM_AUTONOMY} for the baseline and treatment arms in per-run disposable workspaces; ${network}`;
327
+ }
328
+ function describeArmPolicyOutcome(allowNetwork) {
329
+ const network = allowNetwork ? "network: allowed (--allow-network); arm runs kept the web tools" : "retrieval: disabled; bash networking was not constrained";
330
+ return `policy: the baseline and treatment arms ran at autonomy ${ARM_AUTONOMY}; ${network}`;
331
+ }
332
+ function armRunArgs(arm, prompt, options = {}) {
333
+ const args = ["run", "--json", "--json-events", "full", "--no-skills"];
334
+ if (arm !== "judge") args.push("--autonomy", ARM_AUTONOMY);
335
+ if (options.skillBaseDir !== void 0) args.push("--skill", options.skillBaseDir);
336
+ if (options.target !== void 0) args.push("--target", options.target);
337
+ args.push(prompt);
338
+ return args;
339
+ }
340
+ function permissionWallReason(arm, run) {
341
+ const haystack = `${run.transcript}
342
+ ${run.finalText}`;
343
+ let blocked = 0;
344
+ let at = haystack.indexOf(HEADLESS_PERMISSION_DENIED_MARKER);
345
+ while (at >= 0) {
346
+ blocked += 1;
347
+ at = haystack.indexOf(HEADLESS_PERMISSION_DENIED_MARKER, at + HEADLESS_PERMISSION_DENIED_MARKER.length);
348
+ }
349
+ if (blocked === 0) return null;
350
+ return `${arm} arm transcript carries the headless permission wall ${blocked} time(s) ("${HEADLESS_PERMISSION_DENIED_MARKER}"): this run measured the harness's own autonomy gate, not the skill`;
351
+ }
352
+ function unmeasuredBullets(scenario, reason) {
353
+ return scenario.expected.map((text, index) => ({ index: index + 1, text, verdict: "unmeasured", reason }));
354
+ }
355
+ function evalChildEnv(allowNetwork, env = process.env) {
356
+ const childEnv = { ...env };
357
+ if (allowNetwork) {
358
+ Reflect.deleteProperty(childEnv, NO_NETWORK_TOOLS_ENV);
359
+ Reflect.deleteProperty(childEnv, "CLIO_CODER_NO_NETWORK_TOOLS");
360
+ } else childEnv[NO_NETWORK_TOOLS_ENV] = "1";
361
+ return childEnv;
362
+ }
363
+ function resolveSkillBaseDir(nameOrPath, cwd) {
364
+ const asPath = resolve(nameOrPath);
365
+ if (existsSync(join(asPath, "SKILL.md"))) return { baseDir: asPath, origin: "path" };
366
+ const discovered = loadSkills({ cwd }).items.find((skill) => skill.name === nameOrPath);
367
+ if (discovered !== void 0) {
368
+ return { baseDir: discovered.baseDir, origin: `${discovered.source}/${discovered.scope}` };
369
+ }
370
+ const marketplace = discoverMarketplaceSkills({ cwd });
371
+ const entry = marketplace.skills.find((skill) => skill.name === nameOrPath && skill.origin === "catalog");
372
+ if (entry !== void 0) return { baseDir: entry.sourceUrl, origin: "catalog" };
373
+ return {
374
+ baseDir: null,
375
+ error: `skill not found: ${nameOrPath} (expected an installed skill, a catalog skill name, or a directory containing SKILL.md)`
376
+ };
377
+ }
378
+ function scenarioMatcher(value) {
379
+ const trimmed = value.trim();
380
+ const full = /^([A-Za-z])(\d+)$/.exec(trimmed);
381
+ if (full !== null) {
382
+ const id = `${(full[1] ?? "").toUpperCase()}${Number.parseInt(full[2] ?? "", 10)}`;
383
+ return (scenario) => scenario.id === id;
384
+ }
385
+ const bare = /^(\d+)$/.exec(trimmed);
386
+ if (bare !== null) {
387
+ const wanted = Number.parseInt(bare[1] ?? "", 10);
388
+ return (scenario) => scenario.number === wanted;
389
+ }
390
+ return null;
391
+ }
392
+ async function resolveWorkspaceOverride(workspace) {
393
+ if (workspace === void 0) return null;
394
+ const resolved = resolve(workspace);
395
+ try {
396
+ const info = await stat(resolved);
397
+ if (!info.isDirectory()) return { error: `--workspace is not a directory: ${resolved}` };
398
+ return resolved;
399
+ } catch (error) {
400
+ const detail = error instanceof Error ? error.message : String(error);
401
+ return { error: `--workspace is not readable: ${resolved}: ${detail}` };
402
+ }
403
+ }
404
+ async function runScenario(skillName, skillBaseDir, scenario, target, timeoutMs, workspaceOverride, trustFixtures, childEnv) {
405
+ const scenarioStart = performance.now();
406
+ const workspace = await mkdtemp(join(tmpdir(), "clio-coder-skill-eval-seed-"));
407
+ let runWorkspaces = null;
408
+ try {
409
+ if (workspaceOverride !== null) await copyWorkspace(workspaceOverride, workspace);
410
+ const fixtureError = await runFixtureCommands(scenario, workspace, timeoutMs, trustFixtures);
411
+ if (fixtureError !== null) {
412
+ return await completeScenarioOutcome({
413
+ scenario,
414
+ bullets: errorBullets(scenario, fixtureError),
415
+ baseline: null,
416
+ treatment: null,
417
+ judge: null,
418
+ workspace,
419
+ wallTimeMs: Math.round(performance.now() - scenarioStart),
420
+ infraError: fixtureError
421
+ });
422
+ }
423
+ runWorkspaces = await materializeSkillEvalWorkspaces(workspace);
424
+ const baseline = await captureHeadlessRun(
425
+ armRunArgs("baseline", scenario.setup, { target }),
426
+ runWorkspaces.baseline,
427
+ timeoutMs,
428
+ childEnv
429
+ );
430
+ const treatment = await captureHeadlessRun(
431
+ armRunArgs("treatment", `/skill ${skillName} ${scenario.setup}`, { target, skillBaseDir }),
432
+ runWorkspaces.treatment,
433
+ timeoutMs,
434
+ childEnv
435
+ );
436
+ const infra = runInfraError("baseline", baseline) ?? runInfraError("treatment", treatment);
437
+ if (infra !== null) {
438
+ return await completeScenarioOutcome({
439
+ scenario,
440
+ bullets: errorBullets(scenario, infra),
441
+ baseline,
442
+ treatment,
443
+ judge: null,
444
+ workspace,
445
+ wallTimeMs: Math.round(performance.now() - scenarioStart),
446
+ infraError: infra
447
+ });
448
+ }
449
+ const wall = permissionWallReason("baseline", baseline) ?? permissionWallReason("treatment", treatment);
450
+ if (wall !== null) {
451
+ return await completeScenarioOutcome({
452
+ scenario,
453
+ bullets: unmeasuredBullets(scenario, wall),
454
+ baseline,
455
+ treatment,
456
+ judge: null,
457
+ workspace,
458
+ wallTimeMs: Math.round(performance.now() - scenarioStart),
459
+ infraError: wall
460
+ });
461
+ }
462
+ const judge = await captureHeadlessRun(
463
+ armRunArgs("judge", judgePrompt(scenario, baseline.transcript, treatment.transcript), { target }),
464
+ runWorkspaces.judge,
465
+ timeoutMs,
466
+ childEnv
467
+ );
468
+ const judgeInfra = runInfraError("judge", judge);
469
+ if (judgeInfra !== null) {
470
+ return await completeScenarioOutcome({
471
+ scenario,
472
+ bullets: errorBullets(scenario, judgeInfra),
473
+ baseline,
474
+ treatment,
475
+ judge,
476
+ workspace,
477
+ wallTimeMs: Math.round(performance.now() - scenarioStart),
478
+ infraError: judgeInfra
479
+ });
480
+ }
481
+ const bullets = parseJudgeVerdicts(scenario, judge);
482
+ return await completeScenarioOutcome({
483
+ scenario,
484
+ bullets,
485
+ baseline,
486
+ treatment,
487
+ judge,
488
+ workspace,
489
+ wallTimeMs: Math.round(performance.now() - scenarioStart),
490
+ infraError: null
491
+ });
492
+ } finally {
493
+ try {
494
+ if (runWorkspaces !== null) await runWorkspaces.cleanup();
495
+ } finally {
496
+ await rm(workspace, { recursive: true, force: true });
497
+ }
498
+ }
499
+ }
500
+ async function armWorkspace(created) {
501
+ const root = await mkdtemp(join(tmpdir(), "clio-coder-skill-eval-"));
502
+ created.push(root);
503
+ const workspace = join(root, "workspace");
504
+ await mkdir(workspace, { recursive: true });
505
+ return workspace;
506
+ }
507
+ async function materializeSkillEvalWorkspaces(seedWorkspace) {
508
+ const created = [];
509
+ try {
510
+ const baseline = await armWorkspace(created);
511
+ const treatment = await armWorkspace(created);
512
+ const judge = await armWorkspace(created);
513
+ await Promise.all([copyWorkspace(seedWorkspace, baseline), copyWorkspace(seedWorkspace, treatment)]);
514
+ return {
515
+ baseline,
516
+ treatment,
517
+ judge,
518
+ cleanup: async () => {
519
+ await Promise.all(created.map((path) => rm(path, { recursive: true, force: true })));
520
+ }
521
+ };
522
+ } catch (error) {
523
+ await Promise.all(created.map((path) => rm(path, { recursive: true, force: true })));
524
+ throw error;
525
+ }
526
+ }
527
+ async function copyWorkspace(source, destination) {
528
+ await cp(source, destination, {
529
+ recursive: true,
530
+ preserveTimestamps: true,
531
+ verbatimSymlinks: true
532
+ });
533
+ }
534
+ async function completeScenarioOutcome(outcome) {
535
+ return {
536
+ ...outcome,
537
+ usage: await usageForCapturedRuns([outcome.baseline, outcome.treatment, outcome.judge])
538
+ };
539
+ }
540
+ async function runFixtureCommands(scenario, workspace, timeoutMs, trustFixtures) {
541
+ const commands = scenario.fixtureCommands?.trim();
542
+ if (commands === void 0 || commands.length === 0) return null;
543
+ if (!trustFixtures) {
544
+ return "scenario declares fixture commands, which are real shell from the skill's evals.md; review them and rerun with --trust-fixtures";
545
+ }
546
+ const validationError = validateFixtureCommands(commands);
547
+ if (validationError !== null) return `fixture setup rejected: ${validationError}`;
548
+ const result = await runBashCommand(commands, {
549
+ cwd: workspace,
550
+ timeoutMs: Math.min(timeoutMs, 12e4)
551
+ });
552
+ const output = combineBashOutput(result).trim();
553
+ if (result.timedOut) return `fixture setup timed out${output.length > 0 ? `: ${truncate(output, 300)}` : ""}`;
554
+ if (result.outputCapped) {
555
+ return `fixture setup output exceeded limit${output.length > 0 ? `: ${truncate(output, 300)}` : ""}`;
556
+ }
557
+ if (result.error !== null) {
558
+ return `fixture setup failed${output.length > 0 ? `: ${truncate(output, 300)}` : `: ${result.error.message}`}`;
559
+ }
560
+ return null;
561
+ }
562
+ function validateFixtureCommands(commands) {
563
+ const checks = [
564
+ {
565
+ pattern: /(^|[\s;&|(<>='"`])\/(?!dev\/null(?:\s|$))(?=\S)/,
566
+ reason: "absolute paths are not allowed in fixture commands"
567
+ },
568
+ {
569
+ pattern: /(^|[\s;&|()'"`/=])\.\.(?=$|[/\s;&|()'"`])/,
570
+ reason: "parent-directory path segments are not allowed in fixture commands"
571
+ },
572
+ {
573
+ pattern: /(^|[\s;&|()])~(?=$|[/\s;&|()])/,
574
+ reason: "home-directory expansion is not allowed in fixture commands"
575
+ },
576
+ {
577
+ pattern: /\$(?:\{(?:HOME|CLIO_CODER_HOME|CLIO_CODER_CONFIG_DIR|CLIO_CODER_DATA_DIR|CLIO_CODER_STATE_DIR|CLIO_CODER_CACHE_DIR)\}|(?:HOME|CLIO_CODER_HOME|CLIO_CODER_CONFIG_DIR|CLIO_CODER_DATA_DIR|CLIO_CODER_STATE_DIR|CLIO_CODER_CACHE_DIR)\b)/,
578
+ reason: "home and Clio directory environment variables are not allowed in fixture commands"
579
+ },
580
+ {
581
+ pattern: /(^|[\s;&|()])(?:cd|pushd|popd)\b/,
582
+ reason: "directory-changing commands are not allowed in fixture commands"
583
+ },
584
+ {
585
+ pattern: /(^|[\s;&|()])(?:sudo|su|ssh|scp|rsync)\b/,
586
+ reason: "privilege-changing or remote commands are not allowed in fixture commands"
587
+ }
588
+ ];
589
+ for (const check of checks) {
590
+ if (check.pattern.test(commands)) return check.reason;
591
+ }
592
+ return null;
593
+ }
594
+ async function usageForCapturedRuns(runs) {
595
+ const sessionIds = new Set(
596
+ runs.flatMap((run) => run?.sessionId !== null && run?.sessionId !== void 0 ? [run.sessionId] : [])
597
+ );
598
+ const usage = {
599
+ tokens: 0,
600
+ costUsd: 0,
601
+ harness: { ...ZERO_EVAL_HARNESS_METRICS }
602
+ };
603
+ if (sessionIds.size === 0) return usage;
604
+ const receiptRoot = join(clioStateDir(), "receipts");
605
+ let files;
606
+ try {
607
+ files = (await readdir(receiptRoot)).filter((name) => name.endsWith(".json"));
608
+ } catch {
609
+ return usage;
610
+ }
611
+ for (const file of files) {
612
+ let parsed;
613
+ try {
614
+ parsed = JSON.parse(await readFile(join(receiptRoot, file), "utf8"));
615
+ } catch {
616
+ continue;
617
+ }
618
+ if (!isRecord(parsed) || typeof parsed.sessionId !== "string" || !sessionIds.has(parsed.sessionId)) continue;
619
+ usage.tokens += readNumber(parsed.tokenCount);
620
+ usage.costUsd += readNumber(parsed.costUsd);
621
+ usage.harness.receiptCount += 1;
622
+ usage.harness.toolCalls += readNumber(parsed.toolCalls);
623
+ if (isRecord(parsed.safety) && isRecord(parsed.safety.decisions)) {
624
+ usage.harness.safetyBlocks += readNumber(parsed.safety.decisions.blocked);
625
+ }
626
+ }
627
+ return usage;
628
+ }
629
+ function runInfraError(label, run) {
630
+ if (run.timedOut) return `${label} run timed out`;
631
+ if (run.exitCode !== 0) {
632
+ const detail = run.stderr.trim().split("\n").at(-1) ?? "";
633
+ return `${label} run exited ${run.exitCode}${detail.length > 0 ? `: ${detail}` : ""}`;
634
+ }
635
+ if (run.transcript.trim().length === 0 && run.finalText.trim().length === 0) {
636
+ return `${label} run produced no transcript`;
637
+ }
638
+ return null;
639
+ }
640
+ function errorBullets(scenario, reason) {
641
+ return scenario.expected.map((text, index) => ({ index: index + 1, text, verdict: "error", reason }));
642
+ }
643
+ function captureHeadlessRun(args, cwd, timeoutMs, env) {
644
+ const startedMs = performance.now();
645
+ return new Promise((resolvePromise) => {
646
+ let stdout = "";
647
+ let pendingStdout = "";
648
+ let stderr = "";
649
+ let timedOut = false;
650
+ let settled = false;
651
+ const keepLine = (line) => {
652
+ if (line.length === 0) return;
653
+ if (stdout.length < CHILD_OUTPUT_LIMIT) stdout += `${line}
654
+ `;
655
+ };
656
+ const child = spawn(process.execPath, [process.argv[1] ?? "", ...args], {
657
+ cwd,
658
+ stdio: ["ignore", "pipe", "pipe"],
659
+ env
660
+ });
661
+ child.stdout.setEncoding("utf8");
662
+ child.stderr.setEncoding("utf8");
663
+ child.stdout.on("data", (chunk) => {
664
+ pendingStdout += chunk;
665
+ const lines = pendingStdout.split("\n");
666
+ pendingStdout = lines.pop() ?? "";
667
+ for (const line of lines) keepLine(line);
668
+ });
669
+ child.stderr.on("data", (chunk) => {
670
+ if (stderr.length < CHILD_OUTPUT_LIMIT) stderr += chunk;
671
+ });
672
+ let killTimer;
673
+ const timer = setTimeout(() => {
674
+ timedOut = true;
675
+ child.kill("SIGTERM");
676
+ killTimer = setTimeout(() => child.kill("SIGKILL"), 5e3);
677
+ }, timeoutMs);
678
+ const finish = (exitCode) => {
679
+ if (settled) return;
680
+ settled = true;
681
+ clearTimeout(timer);
682
+ if (killTimer !== void 0) clearTimeout(killTimer);
683
+ keepLine(pendingStdout);
684
+ pendingStdout = "";
685
+ const parsedRun = parseRunStdout(stdout);
686
+ resolvePromise({
687
+ ...parsedRun,
688
+ exitCode,
689
+ timedOut,
690
+ wallTimeMs: Math.round(performance.now() - startedMs),
691
+ stderr
692
+ });
693
+ };
694
+ child.on("error", (error) => {
695
+ stderr += `
696
+ ${error.message}`;
697
+ finish(1);
698
+ });
699
+ child.on("close", (code) => finish(typeof code === "number" ? code : timedOut ? 124 : 1));
700
+ });
701
+ }
702
+ function loadsSkillBody(tool, args) {
703
+ if (tool !== "context" || !isRecord(args)) return false;
704
+ return args.scope === "skills" && typeof args.name === "string" && args.name.trim().length > 0;
705
+ }
706
+ function parseRunStdout(stdout) {
707
+ let sessionId = null;
708
+ const lines = [];
709
+ let finalText = "";
710
+ let sawJson = false;
711
+ const streamedText = /* @__PURE__ */ new Map();
712
+ const skillBodyCallIds = /* @__PURE__ */ new Set();
713
+ for (const line of stdout.split("\n")) {
714
+ if (line.trim().length === 0) continue;
715
+ let event;
716
+ try {
717
+ event = JSON.parse(line);
718
+ } catch {
719
+ continue;
720
+ }
721
+ if (!isRecord(event)) continue;
722
+ sawJson = true;
723
+ if (event.type === "session" && typeof event.id === "string") {
724
+ sessionId = event.id;
725
+ continue;
726
+ }
727
+ if (event.type === "text_delta" && typeof event.delta === "string") {
728
+ const contentIndex = typeof event.contentIndex === "number" ? event.contentIndex : 0;
729
+ streamedText.set(contentIndex, `${streamedText.get(contentIndex) ?? ""}${event.delta}`);
730
+ continue;
731
+ }
732
+ if (event.type === "tool_execution_start") {
733
+ const recordedTool = readString(event.toolName) ?? readString(event.tool) ?? "tool";
734
+ const recordedArgs = event.args ?? event.arguments ?? event.input;
735
+ const callId = readString(event.toolCallId);
736
+ const effective = effectiveToolCall(recordedTool, recordedArgs);
737
+ const tool = effective.toolName;
738
+ const args = effective.viaGateway ? effective.args : recordedArgs;
739
+ if (callId !== null && loadsSkillBody(tool, args)) skillBodyCallIds.add(callId);
740
+ lines.push(`TOOL ${tool} args=${preview(args)}`);
741
+ if (tool === "artifact" && isRecord(args) && typeof args.content === "string") {
742
+ lines.push(`TERMINAL ${tool} content:
743
+ ${args.content}`);
744
+ }
745
+ continue;
746
+ }
747
+ if (event.type === "tool_execution_end") {
748
+ const tool = readString(event.toolName) ?? readString(event.tool) ?? "tool";
749
+ const status = event.isError === true ? "error" : "ok";
750
+ const callId = readString(event.toolCallId);
751
+ if (callId !== null && skillBodyCallIds.has(callId)) {
752
+ lines.push(`RESULT ${tool} ${status}: <skill body withheld from the judge>`);
753
+ continue;
754
+ }
755
+ lines.push(`RESULT ${tool} ${status}: ${preview(event.result)}`);
756
+ continue;
757
+ }
758
+ if (event.type === "message_end" && isRecord(event.message) && event.message.role === "assistant") {
759
+ const content = Array.isArray(event.message.content) ? event.message.content : [];
760
+ const completedText = content.filter((item) => {
761
+ return isRecord(item) && item.type === "text" && typeof item.text === "string";
762
+ }).map((item) => item.text).join("").trim();
763
+ const streamed = [...streamedText.entries()].sort(([left], [right]) => left - right).map(([, text2]) => text2).join("").trim();
764
+ streamedText.clear();
765
+ const text = completedText.length > 0 ? completedText : streamed;
766
+ if (text.length > 0) {
767
+ lines.push(`ASSISTANT: ${text}`);
768
+ finalText = text;
769
+ }
770
+ }
771
+ }
772
+ if (!sawJson) {
773
+ const text = stdout.trim();
774
+ return { sessionId: null, transcript: text, finalText: text };
775
+ }
776
+ return { sessionId, transcript: elide(lines.join("\n")), finalText };
777
+ }
778
+ function judgePrompt(scenario, baselineTranscript, treatmentTranscript) {
779
+ const bullets = scenario.expected.map((text, index) => `${index + 1}. ${text}`).join("\n");
780
+ return [
781
+ "You are scoring a skill evaluation. Two transcripts follow: BASELINE ran without the skill, TREATMENT ran with the skill loaded.",
782
+ "Score each EXPECTED bullet strictly against the TREATMENT transcript; the baseline exists only for gap context.",
783
+ "A bullet passes only if the treatment transcript observably satisfies it; anything unverifiable from the transcript fails.",
784
+ 'Reply with STRICT JSON only, no prose and no code fences, exactly: {"bullets":[{"index":1,"pass":true,"reason":"<= 25 words"}]}',
785
+ `Include one entry per bullet, indexes 1 through ${scenario.expected.length} in order.`,
786
+ "Do not use any tools. Respond with the JSON verdict directly.",
787
+ "",
788
+ `SCENARIO ${scenario.id} - ${scenario.title}`,
789
+ `SETUP: ${scenario.setup}`,
790
+ "",
791
+ "EXPECTED BULLETS:",
792
+ bullets,
793
+ "",
794
+ "BASELINE TRANSCRIPT:",
795
+ baselineTranscript.length > 0 ? baselineTranscript : "(empty)",
796
+ "",
797
+ "TREATMENT TRANSCRIPT:",
798
+ treatmentTranscript.length > 0 ? treatmentTranscript : "(empty)"
799
+ ].join("\n");
800
+ }
801
+ function judgeVerdictAbsenceReason(judge) {
802
+ const sawBulletsKey = `${judge.finalText}
803
+ ${judge.transcript}`.includes('"bullets"');
804
+ return sawBulletsKey ? "judge response truncated mid-verdict (no complete bullets object): bullet not scored" : "judge response carried no parseable verdict object: bullet not scored";
805
+ }
806
+ function parseJudgeVerdicts(scenario, judge) {
807
+ const parsed = extractBulletsObject(judge.finalText) ?? extractBulletsObject(judge.transcript);
808
+ if (parsed === null) {
809
+ const reason = judgeVerdictAbsenceReason(judge);
810
+ return scenario.expected.map((text, i) => ({ index: i + 1, text, verdict: "unmeasured", reason }));
811
+ }
812
+ const entries = /* @__PURE__ */ new Map();
813
+ if (Array.isArray(parsed.bullets)) {
814
+ for (const item of parsed.bullets) {
815
+ if (!isRecord(item)) continue;
816
+ const index = typeof item.index === "number" ? item.index : Number.parseInt(String(item.index), 10);
817
+ if (!Number.isInteger(index)) continue;
818
+ entries.set(index, {
819
+ pass: item.pass === true,
820
+ reason: readString(item.reason) ?? ""
821
+ });
822
+ }
823
+ }
824
+ return scenario.expected.map((text, i) => {
825
+ const index = i + 1;
826
+ const entry = entries.get(index);
827
+ if (entry === void 0) {
828
+ return {
829
+ index,
830
+ text,
831
+ verdict: "unmeasured",
832
+ reason: "judge output omitted this bullet: bullet not scored"
833
+ };
834
+ }
835
+ return { index, text, verdict: entry.pass ? "pass" : "fail", reason: entry.reason };
836
+ });
837
+ }
838
+ function extractBulletsObject(text) {
839
+ const stripped = text.replace(/```(?:json)?/g, "");
840
+ const bulletsAt = stripped.indexOf('"bullets"');
841
+ if (bulletsAt < 0) return null;
842
+ let start = stripped.lastIndexOf("{", bulletsAt);
843
+ while (start >= 0) {
844
+ const candidate = balancedJsonSlice(stripped, start);
845
+ if (candidate !== null) {
846
+ try {
847
+ const parsed = JSON.parse(candidate);
848
+ if (isRecord(parsed) && Array.isArray(parsed.bullets)) return parsed;
849
+ } catch {
850
+ }
851
+ }
852
+ if (start === 0) break;
853
+ start = stripped.lastIndexOf("{", start - 1);
854
+ }
855
+ return null;
856
+ }
857
+ function balancedJsonSlice(text, start) {
858
+ let depth = 0;
859
+ let inString = false;
860
+ let escaped = false;
861
+ for (let i = start; i < text.length; i += 1) {
862
+ const ch = text[i];
863
+ if (escaped) {
864
+ escaped = false;
865
+ continue;
866
+ }
867
+ if (ch === "\\") {
868
+ if (inString) escaped = true;
869
+ continue;
870
+ }
871
+ if (ch === '"') {
872
+ inString = !inString;
873
+ continue;
874
+ }
875
+ if (inString) continue;
876
+ if (ch === "{") depth += 1;
877
+ else if (ch === "}") {
878
+ depth -= 1;
879
+ if (depth === 0) return text.slice(start, i + 1);
880
+ }
881
+ }
882
+ return null;
883
+ }
884
+ function synthesizeArtifact(skillName, evalsPath, evalsRaw, startedAt, endedAt, outcomes, target) {
885
+ const contentHash = createHash("sha256").update(evalsRaw, "utf8").digest("hex");
886
+ const stamp = startedAt.replace(/[-:.]/g, "");
887
+ const evalId = `skill-${skillName}-${stamp}-${contentHash.slice(0, 8)}-${randomBytes(6).toString("hex")}`;
888
+ const results = outcomes.map((outcome) => {
889
+ const failed = outcome.bullets.some((bullet) => bullet.verdict === "fail" || bullet.verdict === "error");
890
+ const unmeasured = outcome.bullets.some((bullet) => bullet.verdict === "unmeasured");
891
+ const pass = outcome.bullets.length > 0 && !failed && !unmeasured;
892
+ const record = {
893
+ taskId: outcome.scenario.id,
894
+ runId: `${evalId}-${outcome.scenario.id}`,
895
+ repeatIndex: 0,
896
+ cwd: outcome.workspace,
897
+ prompt: outcome.scenario.setup,
898
+ tags: [
899
+ "skill-eval",
900
+ `skill:${skillName}`,
901
+ ...unmeasured ? ["scenario:unmeasured"] : [],
902
+ ...outcome.bullets.map((bullet) => `bullet-${bullet.index}:${bullet.verdict}`)
903
+ ],
904
+ pass,
905
+ // 3, not 1, when the scenario carries an unscored bullet and no failed
906
+ // one: a reader who sees exitCode 1 with failureClass verifier_failed
907
+ // reads "this skill failed its rubric", and an unscored bullet is the
908
+ // judge's silence, not the skill's answer.
909
+ exitCode: pass ? 0 : failed ? 1 : 3,
910
+ tokens: outcome.usage.tokens,
911
+ costUsd: outcome.usage.costUsd,
912
+ wallTimeMs: outcome.wallTimeMs,
913
+ harness: outcome.usage.harness,
914
+ commands: []
915
+ };
916
+ if (failed) record.failureClass = "verifier_failed";
917
+ return record;
918
+ });
919
+ return {
920
+ version: 1,
921
+ evalId,
922
+ taskFile: evalsPath,
923
+ taskFileHash: contentHash,
924
+ clioCoder: evalClioProvenance(),
925
+ environment: evalEnvironmentProvenance(),
926
+ target: target ?? null,
927
+ model: null,
928
+ thinking: null,
929
+ paths: { taskFile: evalsPath, receipts: [], sessionLedgers: [] },
930
+ repeat: 1,
931
+ startedAt,
932
+ endedAt,
933
+ summary: summarizeEvalResults(results),
934
+ results
935
+ };
936
+ }
937
+ function sidecar(skillName, evalId, outcomes, allowNetwork) {
938
+ return {
939
+ version: 1,
940
+ schema: "experimental",
941
+ kind: "skill-eval",
942
+ skill: skillName,
943
+ evalId,
944
+ network: networkPolicyLabel(allowNetwork),
945
+ autonomy: ARM_AUTONOMY,
946
+ deltas: [
947
+ "bullet verdicts are judge-scored from run transcripts, not command exit codes; the evals-domain artifact carries scenario-level records with empty command lists",
948
+ "a bullet the judge never scored is recorded unmeasured, not failed: its scenario record is pass:false with exitCode 3 and no failureClass",
949
+ "an arm whose transcript carries the headless permission wall is recorded unmeasured with an infraError: the harness's own gate is not a verdict about the skill",
950
+ "tokens and cost are rolled up from headless main-agent receipts when those receipts are present",
951
+ "this sidecar is additive and is registered in overview.json files[]"
952
+ ],
953
+ scenarios: outcomes.map((outcome) => ({
954
+ id: outcome.scenario.id,
955
+ title: outcome.scenario.title,
956
+ setup: outcome.scenario.setup,
957
+ fixtureCommands: outcome.scenario.fixtureCommands ?? null,
958
+ infraError: outcome.infraError,
959
+ usage: outcome.usage,
960
+ bullets: outcome.bullets,
961
+ baseline: sidecarRun(outcome.baseline),
962
+ treatment: sidecarRun(outcome.treatment),
963
+ judge: sidecarRun(outcome.judge)
964
+ }))
965
+ };
966
+ }
967
+ function sidecarRun(run) {
968
+ if (run === null) return null;
969
+ return {
970
+ sessionId: run.sessionId,
971
+ exitCode: run.exitCode,
972
+ timedOut: run.timedOut,
973
+ wallTimeMs: run.wallTimeMs,
974
+ transcript: run.transcript,
975
+ stderrTail: run.stderr.slice(-500)
976
+ };
977
+ }
978
+ function printHumanReport(skillName, outcomes, evalId, evidenceId, evidenceDirectory, allowNetwork) {
979
+ const rows = [["scenario", "bullet", "verdict", "expected"]];
980
+ for (const outcome of outcomes) {
981
+ for (const bullet of outcome.bullets) {
982
+ rows.push([outcome.scenario.id, String(bullet.index), bullet.verdict, truncate(bullet.text, 76)]);
983
+ }
984
+ }
985
+ process.stdout.write(formatColumns(rows));
986
+ const total = outcomes.reduce((sum, outcome) => sum + outcome.bullets.length, 0);
987
+ const passed = outcomes.reduce(
988
+ (sum, outcome) => sum + outcome.bullets.filter((bullet) => bullet.verdict === "pass").length,
989
+ 0
990
+ );
991
+ const unmeasured = outcomes.reduce(
992
+ (sum, outcome) => sum + outcome.bullets.filter((bullet) => bullet.verdict === "unmeasured").length,
993
+ 0
994
+ );
995
+ const unmeasuredNote = unmeasured > 0 ? `, ${unmeasured} unmeasured` : "";
996
+ process.stdout.write(
997
+ `
998
+ ${skillName}: ${passed}/${total} bullets passed${unmeasuredNote} (judge-scored, experimental)
999
+ `
1000
+ );
1001
+ if (unmeasured > 0) {
1002
+ process.stdout.write(
1003
+ unmeasured === total ? "no bullet was scored, so this run is not evidence about the skill either way\n" : `${unmeasured} of ${total} bullets were never scored; unmeasured is not a failed bullet
1004
+ `
1005
+ );
1006
+ }
1007
+ for (const outcome of outcomes) {
1008
+ if (outcome.infraError !== null) {
1009
+ process.stdout.write(`${outcome.scenario.id}: infra error: ${outcome.infraError}
1010
+ `);
1011
+ continue;
1012
+ }
1013
+ for (const bullet of outcome.bullets.filter((item) => item.verdict !== "pass")) {
1014
+ process.stdout.write(
1015
+ `${outcome.scenario.id} bullet ${bullet.index} ${bullet.verdict}${bullet.reason.length > 0 ? `: ${bullet.reason}` : ""}
1016
+ `
1017
+ );
1018
+ }
1019
+ }
1020
+ process.stdout.write(`${describeArmPolicyOutcome(allowNetwork)}
1021
+ `);
1022
+ process.stdout.write(`eval artifact: ${evalId}
1023
+ `);
1024
+ if (evidenceId !== null && evidenceDirectory !== null) {
1025
+ process.stdout.write(`evidence: ${evidenceId} at ${evidenceDirectory} (per-bullet detail in skill-eval.json)
1026
+ `);
1027
+ }
1028
+ }
1029
+ function preview(value) {
1030
+ if (value === void 0) return "";
1031
+ const text = typeof value === "string" ? value : safeStringify(value);
1032
+ return truncate(text.replace(/\s+/g, " ").trim(), PREVIEW_MAX_CHARS);
1033
+ }
1034
+ function safeStringify(value) {
1035
+ try {
1036
+ return JSON.stringify(value) ?? "";
1037
+ } catch {
1038
+ return String(value);
1039
+ }
1040
+ }
1041
+ function elide(text) {
1042
+ if (text.length <= TRANSCRIPT_HEAD_CHARS + TRANSCRIPT_TAIL_CHARS) return text;
1043
+ return `${text.slice(0, TRANSCRIPT_HEAD_CHARS)}
1044
+ [... transcript elided ...]
1045
+ ${text.slice(-TRANSCRIPT_TAIL_CHARS)}`;
1046
+ }
1047
+ function truncate(text, maxChars) {
1048
+ if (text.length <= maxChars) return text;
1049
+ return `${text.slice(0, Math.max(0, maxChars - 3))}...`;
1050
+ }
1051
+ function readString(value) {
1052
+ return typeof value === "string" && value.length > 0 ? value : null;
1053
+ }
1054
+ function readNumber(value) {
1055
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
1056
+ }
1057
+ function isRecord(value) {
1058
+ return typeof value === "object" && value !== null && !Array.isArray(value);
1059
+ }
1060
+ async function runSkillEvalCli(args) {
1061
+ const options = { json: false, trustFixtures: false, allowNetwork: false };
1062
+ let source;
1063
+ try {
1064
+ for (let i = 0; i < args.length; i++) {
1065
+ const arg = args[i];
1066
+ if (!arg) continue;
1067
+ if (arg === "--json") options.json = true;
1068
+ else if (arg === "--trust-fixtures") options.trustFixtures = true;
1069
+ else if (arg === "--allow-network") options.allowNetwork = true;
1070
+ else if (["--scenario", "--target", "--workspace", "--timeout"].includes(arg)) {
1071
+ const value = args[++i];
1072
+ if (!value || value.startsWith("-")) throw new Error(`${arg} requires a value`);
1073
+ if (arg === "--timeout") {
1074
+ const seconds = Number(value);
1075
+ if (!Number.isInteger(seconds) || seconds <= 0) throw new Error("--timeout requires a positive integer");
1076
+ options.timeoutSeconds = seconds;
1077
+ } else if (arg === "--scenario") options.scenario = value;
1078
+ else if (arg === "--target") options.target = value;
1079
+ else options.workspace = value;
1080
+ } else if (arg === "--help" || arg === "-h") {
1081
+ process.stdout.write(
1082
+ "clio-coder eval skill <name|path> [--scenario <id>] [--target <id>] [--workspace <path>] [--timeout <seconds>] [--trust-fixtures] [--allow-network] [--json]\n"
1083
+ );
1084
+ return 0;
1085
+ } else if (arg.startsWith("-") || source) throw new Error(`unexpected skill eval argument: ${arg}`);
1086
+ else source = arg;
1087
+ }
1088
+ if (!source) throw new Error("eval skill requires a skill name or path");
1089
+ return await runSkillsEvalCommand(source, options);
1090
+ } catch (error) {
1091
+ printError(error instanceof Error ? error.message : String(error));
1092
+ return 2;
1093
+ }
1094
+ }
1095
+ export {
1096
+ evalChildEnv,
1097
+ runSkillEvalCli
1098
+ };
1099
+ //# sourceMappingURL=skills-eval-CQ23MYQK.js.map