@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,990 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ isSecretArgKey
4
+ } from "./chunk-EFSEIZE6.js";
5
+ import {
6
+ formatSize
7
+ } from "./chunk-KECNXMDE.js";
8
+ import {
9
+ byteLength
10
+ } from "./chunk-MYI32N4R.js";
11
+ import {
12
+ StringEnum
13
+ } from "./chunk-L7G7K4I2.js";
14
+ import {
15
+ SAFE_EXEC_GROUP_TEARDOWN_BOUND_MS,
16
+ createRetainedStreamWindow,
17
+ resolveSafeCwd,
18
+ runCommandVector
19
+ } from "./chunk-M2IPMWCN.js";
20
+ import {
21
+ findExecutableOnPath
22
+ } from "./chunk-53OXPRI6.js";
23
+ import {
24
+ typebox_exports
25
+ } from "./chunk-GH5ZR6JP.js";
26
+ import {
27
+ init_esm_shims
28
+ } from "./chunk-ECBHH7LU.js";
29
+
30
+ // src/tools/run-script.ts
31
+ init_esm_shims();
32
+ import { closeSync as closeSync2, openSync as openSync2, realpathSync, statSync as statSync2, writeSync } from "node:fs";
33
+ import path2 from "node:path";
34
+
35
+ // src/core/run-records.ts
36
+ init_esm_shims();
37
+ import { createHash, randomBytes } from "node:crypto";
38
+ import {
39
+ closeSync,
40
+ constants,
41
+ existsSync,
42
+ fstatSync,
43
+ lstatSync,
44
+ mkdirSync,
45
+ openSync,
46
+ readdirSync,
47
+ readSync,
48
+ renameSync,
49
+ rmSync,
50
+ statSync,
51
+ writeFileSync
52
+ } from "node:fs";
53
+ import { open } from "node:fs/promises";
54
+ import path from "node:path";
55
+ var RUN_RECORDS_RELATIVE_DIR = ".clio-coder/runs";
56
+ var RUN_MANIFEST_FILENAME = "run.json";
57
+ var RUN_STDOUT_FILENAME = "stdout.log";
58
+ var RUN_STDERR_FILENAME = "stderr.log";
59
+ var RUN_SWEEP_MANIFEST_MAX_BYTES = 64 * 1024;
60
+ var RUN_FILE_HASH_MAX_BYTES = 64 * 1024 * 1024;
61
+ var RUN_FILE_HASH_CHUNK_BYTES = 1024 * 1024;
62
+ var RUN_RECORDS_DEFAULT_KEEP = 100;
63
+ var RUN_RECORDS_ORPHAN_AFTER_MS = 24 * 60 * 60 * 1e3;
64
+ var RUN_ID_PATTERN = /^\d{8}T\d{6}Z-[0-9a-f]{6}$/u;
65
+ function compactUtc(now) {
66
+ return now.toISOString().replace(/[-:]/gu, "").replace(/\.\d{3}Z$/u, "Z");
67
+ }
68
+ function newRunId(now = /* @__PURE__ */ new Date()) {
69
+ return `${compactUtc(now)}-${randomBytes(3).toString("hex")}`;
70
+ }
71
+ function isRunId(value) {
72
+ return RUN_ID_PATTERN.test(value);
73
+ }
74
+ function runRecordsDir(workspaceRoot) {
75
+ return path.join(path.resolve(workspaceRoot), ...RUN_RECORDS_RELATIVE_DIR.split("/"));
76
+ }
77
+ function runRecordPaths(workspaceRoot, runId) {
78
+ const dir = path.join(runRecordsDir(workspaceRoot), runId);
79
+ return {
80
+ runId,
81
+ dir,
82
+ manifestPath: path.join(dir, RUN_MANIFEST_FILENAME),
83
+ stdoutPath: path.join(dir, RUN_STDOUT_FILENAME),
84
+ stderrPath: path.join(dir, RUN_STDERR_FILENAME)
85
+ };
86
+ }
87
+ function createRunRecord(workspaceRoot, runId = newRunId()) {
88
+ const paths = runRecordPaths(workspaceRoot, runId);
89
+ if (existsSync(paths.dir)) throw new Error(`run record already exists: ${paths.dir}`);
90
+ mkdirSync(paths.dir, { recursive: true });
91
+ return paths;
92
+ }
93
+ function workspaceRelativePath(workspaceRoot, target) {
94
+ const root = path.resolve(workspaceRoot);
95
+ const absolute = path.isAbsolute(target) ? path.resolve(target) : path.resolve(root, target);
96
+ const relative = path.relative(root, absolute);
97
+ if (relative.startsWith("..") || path.isAbsolute(relative)) return null;
98
+ return relative.length === 0 ? "." : relative.split(path.sep).join("/");
99
+ }
100
+ function abortError(signal) {
101
+ const error = new Error("file hashing cancelled", { cause: signal.reason });
102
+ error.name = "AbortError";
103
+ return error;
104
+ }
105
+ function isAbortError(error) {
106
+ return error instanceof Error && error.name === "AbortError";
107
+ }
108
+ async function hashFile(filePath, options = {}) {
109
+ const signal = options.signal;
110
+ if (signal?.aborted) throw abortError(signal);
111
+ const chunkBytes = Math.max(4096, Math.floor(options.chunkBytes ?? RUN_FILE_HASH_CHUNK_BYTES));
112
+ const hash = createHash("sha256");
113
+ const handle = await open(filePath, "r");
114
+ try {
115
+ const buffer = Buffer.allocUnsafe(chunkBytes);
116
+ for (; ; ) {
117
+ if (signal?.aborted) throw abortError(signal);
118
+ const { bytesRead } = await handle.read(buffer, 0, buffer.byteLength, null);
119
+ if (bytesRead === 0) break;
120
+ hash.update(buffer.subarray(0, bytesRead));
121
+ }
122
+ } finally {
123
+ await handle.close();
124
+ }
125
+ return hash.digest("hex");
126
+ }
127
+ async function observeFileHash(filePath, bytes, signal) {
128
+ if (bytes > RUN_FILE_HASH_MAX_BYTES) return { sha256: null, hashOmitted: "too-large" };
129
+ if (signal?.aborted) return { sha256: null, hashOmitted: "cancelled" };
130
+ try {
131
+ return { sha256: await hashFile(filePath, { signal }) };
132
+ } catch (error) {
133
+ return { sha256: null, hashOmitted: isAbortError(error) ? "cancelled" : "unreadable" };
134
+ }
135
+ }
136
+ async function captureFileRef(workspaceRoot, declaredPath, options = {}) {
137
+ const relative = workspaceRelativePath(workspaceRoot, declaredPath);
138
+ const rendered = relative ?? declaredPath.split(path.sep).join("/");
139
+ const absolute = path.resolve(workspaceRoot, declaredPath);
140
+ let stat;
141
+ try {
142
+ stat = statSync(absolute);
143
+ } catch {
144
+ return { path: rendered, exists: false };
145
+ }
146
+ if (!stat.isFile()) return { path: rendered, exists: true, mtimeMs: stat.mtimeMs };
147
+ const observation = await observeFileHash(absolute, stat.size, options.signal);
148
+ return { path: rendered, exists: true, bytes: stat.size, mtimeMs: stat.mtimeMs, ...observation };
149
+ }
150
+ async function captureOutputRef(workspaceRoot, declaredPath, before, options = {}) {
151
+ const after = await captureFileRef(workspaceRoot, declaredPath, options);
152
+ if (!after.exists) return { ...after, status: "absent" };
153
+ if (!before.exists) return { ...after, status: "created" };
154
+ const unchanged = typeof before.sha256 === "string" && typeof after.sha256 === "string" ? before.sha256 === after.sha256 : before.bytes === after.bytes && before.mtimeMs === after.mtimeMs;
155
+ return { ...after, status: unchanged ? "unchanged" : "modified" };
156
+ }
157
+ function writeRunManifest(paths, manifest) {
158
+ const temp = path.join(paths.dir, `${RUN_MANIFEST_FILENAME}.${process.pid}.tmp`);
159
+ writeFileSync(temp, `${JSON.stringify(manifest, null, 2)}
160
+ `, "utf8");
161
+ renameSync(temp, paths.manifestPath);
162
+ }
163
+ function manifestCompletionMs(manifestPath) {
164
+ let before;
165
+ try {
166
+ before = lstatSync(manifestPath);
167
+ } catch (error) {
168
+ return error.code === "ENOENT" ? null : void 0;
169
+ }
170
+ if (!before.isFile()) return void 0;
171
+ let fd;
172
+ try {
173
+ fd = openSync(manifestPath, constants.O_RDONLY | constants.O_NONBLOCK | (constants.O_NOFOLLOW ?? 0));
174
+ const stat = fstatSync(fd);
175
+ if (!stat.isFile() || stat.dev !== before.dev || stat.ino !== before.ino) return void 0;
176
+ if (stat.size > RUN_SWEEP_MANIFEST_MAX_BYTES) return stat.mtimeMs;
177
+ const buffer = Buffer.alloc(stat.size);
178
+ let offset = 0;
179
+ while (offset < buffer.length) {
180
+ const count = readSync(fd, buffer, offset, Math.min(8192, buffer.length - offset), offset);
181
+ if (count === 0) break;
182
+ offset += count;
183
+ }
184
+ const after = fstatSync(fd);
185
+ if (after.size !== stat.size || after.mtimeMs !== stat.mtimeMs || offset !== stat.size) return stat.mtimeMs;
186
+ try {
187
+ const parsed = JSON.parse(buffer.toString("utf8"));
188
+ if (parsed !== null && typeof parsed === "object" && "finishedAt" in parsed && typeof parsed.finishedAt === "string") {
189
+ const finished = Date.parse(parsed.finishedAt);
190
+ if (Number.isFinite(finished)) return finished;
191
+ }
192
+ } catch {
193
+ }
194
+ return stat.mtimeMs;
195
+ } catch {
196
+ return void 0;
197
+ } finally {
198
+ if (fd !== void 0) closeSync(fd);
199
+ }
200
+ }
201
+ function sweepRunRecords(workspaceRoot, options = {}) {
202
+ const keep = Math.max(0, Math.floor(options.keep ?? RUN_RECORDS_DEFAULT_KEEP));
203
+ const root = runRecordsDir(workspaceRoot);
204
+ let entries;
205
+ try {
206
+ entries = readdirSync(root);
207
+ } catch {
208
+ return { removed: 0, kept: 0, active: 0, skipped: 0 };
209
+ }
210
+ const now = Date.now();
211
+ let skipped = 0;
212
+ let active = 0;
213
+ const completed = [];
214
+ for (const entry of entries) {
215
+ if (!isRunId(entry)) {
216
+ skipped += 1;
217
+ continue;
218
+ }
219
+ const dir = path.join(root, entry);
220
+ let dirStat;
221
+ try {
222
+ dirStat = lstatSync(dir);
223
+ } catch {
224
+ skipped += 1;
225
+ continue;
226
+ }
227
+ if (!dirStat.isDirectory()) {
228
+ skipped += 1;
229
+ continue;
230
+ }
231
+ const finishedMs = manifestCompletionMs(path.join(dir, RUN_MANIFEST_FILENAME));
232
+ if (finishedMs === void 0) {
233
+ skipped += 1;
234
+ continue;
235
+ }
236
+ if (finishedMs !== null) {
237
+ completed.push({ entry, finishedMs });
238
+ continue;
239
+ }
240
+ if (now - dirStat.mtimeMs < RUN_RECORDS_ORPHAN_AFTER_MS) {
241
+ active += 1;
242
+ continue;
243
+ }
244
+ completed.push({ entry, finishedMs: dirStat.mtimeMs });
245
+ }
246
+ completed.sort((a, b) => a.finishedMs - b.finishedMs || a.entry.localeCompare(b.entry));
247
+ const excess = Math.max(0, completed.length - keep);
248
+ let removed = 0;
249
+ for (const { entry } of completed.slice(0, excess)) {
250
+ try {
251
+ rmSync(path.join(root, entry), { recursive: true, force: true });
252
+ removed += 1;
253
+ } catch {
254
+ skipped += 1;
255
+ }
256
+ }
257
+ return { removed, kept: completed.length - removed, active, skipped };
258
+ }
259
+
260
+ // src/tools/run-script.ts
261
+ var RUN_SCRIPT_INTERPRETERS = [
262
+ "python3",
263
+ "python",
264
+ "node",
265
+ "bash",
266
+ "sh",
267
+ "Rscript",
268
+ "julia",
269
+ "perl",
270
+ "ruby",
271
+ "octave"
272
+ ];
273
+ var RUN_SCRIPT_CAPS = Object.freeze({
274
+ argEntries: 64,
275
+ argBytes: 4096,
276
+ declaredRefs: 64,
277
+ envEntries: 32,
278
+ envValueBytes: 4096,
279
+ defaultTimeoutMs: 6e5,
280
+ maxTimeoutMs: 216e5,
281
+ /** Bytes of each stream kept in memory for the result tail. */
282
+ resultTailBytes: 8 * 1024,
283
+ /** Bytes of each stream shown in a live progress snapshot. */
284
+ progressTailBytes: 2 * 1024,
285
+ progressThrottleMs: 250
286
+ });
287
+ var RUN_SCRIPT_DEFAULT_INTERPRETER_ARGS = {
288
+ python3: ["-u"],
289
+ python: ["-u"],
290
+ node: [],
291
+ bash: [],
292
+ sh: [],
293
+ Rscript: [],
294
+ julia: [],
295
+ perl: [],
296
+ ruby: [],
297
+ octave: []
298
+ };
299
+ var RUN_SCRIPT_TOOL_NAME = "run_script";
300
+ var ENV_KEY_PATTERN = /^[A-Z_][A-Z0-9_]*$/u;
301
+ function parseStringArray(value) {
302
+ if (value === void 0 || value === null) return [];
303
+ if (!Array.isArray(value)) return null;
304
+ const out = [];
305
+ for (const entry of value) {
306
+ if (typeof entry !== "string") return null;
307
+ out.push(entry);
308
+ }
309
+ return out;
310
+ }
311
+ function prepareRunScriptArguments(args) {
312
+ if (!args || typeof args !== "object" || Array.isArray(args)) return args;
313
+ const next = { ...args };
314
+ for (const key of ["args", "interpreter_args", "inputs", "outputs"]) {
315
+ const value = next[key];
316
+ if (typeof value !== "string") continue;
317
+ const trimmed = value.trim();
318
+ if (trimmed.startsWith("[")) {
319
+ try {
320
+ const parsed = JSON.parse(trimmed);
321
+ if (Array.isArray(parsed)) {
322
+ next[key] = parsed;
323
+ continue;
324
+ }
325
+ } catch {
326
+ }
327
+ }
328
+ next[key] = trimmed.length === 0 ? [] : [value];
329
+ }
330
+ if (typeof next.env === "string") {
331
+ try {
332
+ const parsed = JSON.parse(next.env);
333
+ if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) next.env = parsed;
334
+ } catch {
335
+ }
336
+ }
337
+ return next;
338
+ }
339
+ function invalid(message) {
340
+ return { ok: false, message: `run_script: ${message}` };
341
+ }
342
+ function isInterpreter(value) {
343
+ return RUN_SCRIPT_INTERPRETERS.includes(value);
344
+ }
345
+ function validateArgVector(value, field) {
346
+ const entries = parseStringArray(value);
347
+ if (entries === null) return `${field} must be an array of strings`;
348
+ if (entries.length > RUN_SCRIPT_CAPS.argEntries) {
349
+ return `${field} exceeds the ${RUN_SCRIPT_CAPS.argEntries}-entry cap`;
350
+ }
351
+ for (const [index, entry] of entries.entries()) {
352
+ if (entry.includes("\0")) return `${field}[${index}] must not contain a NUL byte`;
353
+ if (byteLength(entry) > RUN_SCRIPT_CAPS.argBytes) {
354
+ return `${field}[${index}] exceeds the ${RUN_SCRIPT_CAPS.argBytes}-byte cap`;
355
+ }
356
+ }
357
+ return entries;
358
+ }
359
+ function validateDeclaredRefs(value, field, workspaceRoot) {
360
+ const entries = parseStringArray(value);
361
+ if (entries === null) return `${field} must be an array of workspace-relative path strings`;
362
+ if (entries.length > RUN_SCRIPT_CAPS.declaredRefs) {
363
+ return `${field} exceeds the ${RUN_SCRIPT_CAPS.declaredRefs}-entry cap`;
364
+ }
365
+ const refs = [];
366
+ const seen = /* @__PURE__ */ new Set();
367
+ for (const [index, entry] of entries.entries()) {
368
+ const location = `${field}[${index}]`;
369
+ if (entry.trim().length === 0) return `${location} must be a non-empty path`;
370
+ if (entry.includes("\0")) return `${location} must not contain a NUL byte`;
371
+ if (path2.isAbsolute(entry) || path2.win32.isAbsolute(entry)) {
372
+ return `${location} must be workspace-relative; absolute path '${entry}' is not allowed`;
373
+ }
374
+ const relative = workspaceRelativePath(workspaceRoot, entry);
375
+ if (relative === null) return `${location} escapes the workspace root: '${entry}'`;
376
+ if (seen.has(relative)) continue;
377
+ seen.add(relative);
378
+ refs.push({ declared: entry, relative });
379
+ }
380
+ return refs;
381
+ }
382
+ function validateEnv(value) {
383
+ if (value === void 0 || value === null) return {};
384
+ if (typeof value !== "object" || Array.isArray(value)) return "env must be an object of string values";
385
+ const entries = Object.entries(value);
386
+ if (entries.length > RUN_SCRIPT_CAPS.envEntries) return `env exceeds the ${RUN_SCRIPT_CAPS.envEntries}-entry cap`;
387
+ const env = {};
388
+ for (const [key, raw] of entries) {
389
+ if (!ENV_KEY_PATTERN.test(key)) return `env key '${key}' must match /^[A-Z_][A-Z0-9_]*$/`;
390
+ if (typeof raw !== "string") return `env.${key} must be a string`;
391
+ if (raw.includes("\0")) return `env.${key} must not contain a NUL byte`;
392
+ if (byteLength(raw) > RUN_SCRIPT_CAPS.envValueBytes) {
393
+ return `env.${key} exceeds the ${RUN_SCRIPT_CAPS.envValueBytes}-byte cap`;
394
+ }
395
+ env[key] = raw;
396
+ }
397
+ return env;
398
+ }
399
+ function insideRoot(realRoot, candidate) {
400
+ const relative = path2.relative(realRoot, candidate);
401
+ return relative === "" || !relative.startsWith("..") && !path2.isAbsolute(relative);
402
+ }
403
+ function validateRequest(args, workspaceRoot) {
404
+ const interpreterArg = typeof args.interpreter === "string" ? args.interpreter.trim() : "";
405
+ if (interpreterArg.length === 0) return invalid("missing interpreter argument");
406
+ if (!isInterpreter(interpreterArg)) {
407
+ return invalid(
408
+ `interpreter must be one of ${RUN_SCRIPT_INTERPRETERS.join(", ")}; got '${interpreterArg}'. Paths and other executables are not accepted.`
409
+ );
410
+ }
411
+ const interpreter = interpreterArg;
412
+ const interpreterPath = findExecutableOnPath(interpreter);
413
+ if (interpreterPath === null) return invalid(`interpreter '${interpreter}' was not found on PATH`);
414
+ const scriptArg = typeof args.script === "string" ? args.script.trim() : "";
415
+ if (scriptArg.length === 0) return invalid("missing script argument");
416
+ if (scriptArg.includes("\0")) return invalid("script must not contain a NUL byte");
417
+ let realRoot;
418
+ try {
419
+ realRoot = realpathSync(workspaceRoot);
420
+ } catch (error) {
421
+ return invalid(`workspace root cannot be resolved (${error instanceof Error ? error.message : String(error)})`);
422
+ }
423
+ const scriptAbsolute = path2.isAbsolute(scriptArg) ? path2.resolve(scriptArg) : path2.resolve(realRoot, scriptArg);
424
+ let scriptRealPath;
425
+ let scriptBytes;
426
+ try {
427
+ scriptRealPath = realpathSync(scriptAbsolute);
428
+ const stat = statSync2(scriptRealPath);
429
+ if (!stat.isFile()) return invalid(`script is not a regular file: ${scriptArg}`);
430
+ scriptBytes = stat.size;
431
+ } catch (error) {
432
+ const code = error?.code;
433
+ if (code === "ENOENT") return invalid(`script not found: ${scriptArg}`);
434
+ return invalid(`script cannot be resolved: ${error instanceof Error ? error.message : String(error)}`);
435
+ }
436
+ if (!insideRoot(realRoot, scriptRealPath)) {
437
+ return invalid(`script resolves outside the workspace root: ${scriptArg} -> ${scriptRealPath}`);
438
+ }
439
+ const scriptRelative = workspaceRelativePath(realRoot, scriptRealPath) ?? scriptArg;
440
+ const scriptArgs = validateArgVector(args.args, "args");
441
+ if (typeof scriptArgs === "string") return invalid(scriptArgs);
442
+ let interpreterArgs;
443
+ if (args.interpreter_args === void 0 || args.interpreter_args === null) {
444
+ interpreterArgs = [...RUN_SCRIPT_DEFAULT_INTERPRETER_ARGS[interpreter]];
445
+ } else {
446
+ const explicit = validateArgVector(args.interpreter_args, "interpreter_args");
447
+ if (typeof explicit === "string") return invalid(explicit);
448
+ interpreterArgs = explicit;
449
+ }
450
+ const cwdArg = typeof args.cwd === "string" && args.cwd.trim().length > 0 ? args.cwd.trim() : void 0;
451
+ let cwdExecution;
452
+ try {
453
+ const resolved = resolveSafeCwd(cwdArg, realRoot);
454
+ const stat = statSync2(resolved);
455
+ if (!stat.isDirectory()) return invalid(`cwd is not a directory: ${cwdArg ?? "."}`);
456
+ cwdExecution = realpathSync(resolved);
457
+ if (!insideRoot(realRoot, cwdExecution)) {
458
+ return invalid(`cwd escapes the workspace root through a symbolic link: ${cwdArg ?? "."}`);
459
+ }
460
+ } catch (error) {
461
+ const message = error instanceof Error ? error.message : String(error);
462
+ if (message.includes("escapes workspace root")) return invalid(`cwd escapes the workspace root: ${cwdArg ?? "."}`);
463
+ return invalid(`cwd cannot be resolved: ${cwdArg ?? "."} (${message})`);
464
+ }
465
+ const cwdRelative = workspaceRelativePath(realRoot, cwdExecution) ?? ".";
466
+ let timeoutMs = RUN_SCRIPT_CAPS.defaultTimeoutMs;
467
+ if (args.timeout_ms !== void 0 && args.timeout_ms !== null) {
468
+ if (typeof args.timeout_ms !== "number" || !Number.isInteger(args.timeout_ms) || args.timeout_ms < 1) {
469
+ return invalid("timeout_ms must be a positive integer number of milliseconds");
470
+ }
471
+ timeoutMs = Math.min(Math.max(1, args.timeout_ms), RUN_SCRIPT_CAPS.maxTimeoutMs);
472
+ }
473
+ const inputs = validateDeclaredRefs(args.inputs, "inputs", realRoot);
474
+ if (typeof inputs === "string") return invalid(inputs);
475
+ const outputs = validateDeclaredRefs(args.outputs, "outputs", realRoot);
476
+ if (typeof outputs === "string") return invalid(outputs);
477
+ const env = validateEnv(args.env);
478
+ if (typeof env === "string") return invalid(env);
479
+ return {
480
+ ok: true,
481
+ request: {
482
+ workspaceRoot: realRoot,
483
+ interpreter,
484
+ interpreterPath,
485
+ interpreterArgs,
486
+ scriptDeclared: scriptArg,
487
+ scriptRelative,
488
+ scriptRealPath,
489
+ scriptBytes,
490
+ args: scriptArgs,
491
+ cwdRelative,
492
+ cwdExecution,
493
+ timeoutMs,
494
+ inputs,
495
+ outputs,
496
+ env
497
+ }
498
+ };
499
+ }
500
+ function quoted(value) {
501
+ return `'${value.replaceAll("'", "'\\''")}'`;
502
+ }
503
+ function runScriptSafetyProjection(args) {
504
+ const prepared = prepareRunScriptArguments(args);
505
+ const interpreter = typeof prepared.interpreter === "string" ? prepared.interpreter.trim() : "";
506
+ const script = typeof prepared.script === "string" ? prepared.script.trim() : "";
507
+ const interpreterArgs = prepared.interpreter_args === void 0 || prepared.interpreter_args === null ? isInterpreter(interpreter) ? [...RUN_SCRIPT_DEFAULT_INTERPRETER_ARGS[interpreter]] : [] : parseStringArray(prepared.interpreter_args) ?? [];
508
+ const scriptArgs = parseStringArray(prepared.args) ?? [];
509
+ const vector = [
510
+ ...interpreter.length > 0 ? [interpreter] : [],
511
+ ...interpreterArgs,
512
+ ...script.length > 0 ? [script] : [],
513
+ ...scriptArgs
514
+ ];
515
+ const command = vector.map(quoted).join(" ");
516
+ const cwd = typeof prepared.cwd === "string" && prepared.cwd.trim().length > 0 ? prepared.cwd.trim() : void 0;
517
+ return cwd === void 0 ? { command } : { command, cwd };
518
+ }
519
+ var SYSTEM_SCHEDULER = {
520
+ now: Date.now,
521
+ setTimeout: (callback, delayMs) => setTimeout(callback, delayMs),
522
+ clearTimeout: (timer) => clearTimeout(timer)
523
+ };
524
+ function createRunScriptProgressController(input) {
525
+ const scheduler = input.scheduler ?? SYSTEM_SCHEDULER;
526
+ const throttleMs = input.throttleMs ?? RUN_SCRIPT_CAPS.progressThrottleMs;
527
+ const tailBytes = input.tailBytes ?? RUN_SCRIPT_CAPS.progressTailBytes;
528
+ const stdoutTail = createRetainedStreamWindow(0, tailBytes);
529
+ const stderrTail = createRetainedStreamWindow(0, tailBytes);
530
+ let phase = "idle";
531
+ let startedAt = 0;
532
+ let lastEmitAt = Number.NEGATIVE_INFINITY;
533
+ let dirty = false;
534
+ let timer = null;
535
+ const snapshot = () => {
536
+ const elapsedMs = Math.max(0, scheduler.now() - startedAt);
537
+ const out = stdoutTail.render();
538
+ const err = stderrTail.render();
539
+ const lines = [
540
+ `run_script: running ${input.label} (${formatElapsed(elapsedMs)} elapsed)`,
541
+ `stdout: ${out.totalBytes} bytes | stderr: ${err.totalBytes} bytes`,
542
+ "--- stdout tail ---",
543
+ out.text.length > 0 ? out.text : "(no output yet)",
544
+ "--- stderr tail ---",
545
+ err.text.length > 0 ? err.text : "(no output yet)"
546
+ ];
547
+ return {
548
+ kind: "ok",
549
+ output: lines.join("\n"),
550
+ details: { progress: { elapsedMs, stdoutBytes: out.totalBytes, stderrBytes: err.totalBytes } }
551
+ };
552
+ };
553
+ const emit = () => {
554
+ if (!dirty) return;
555
+ dirty = false;
556
+ lastEmitAt = scheduler.now();
557
+ try {
558
+ input.onUpdate(snapshot());
559
+ } catch {
560
+ }
561
+ };
562
+ const clearTimer = () => {
563
+ if (timer === null) return;
564
+ scheduler.clearTimeout(timer);
565
+ timer = null;
566
+ };
567
+ const schedule = () => {
568
+ if (phase !== "active") return;
569
+ dirty = true;
570
+ const delay = throttleMs - (scheduler.now() - lastEmitAt);
571
+ if (delay <= 0) {
572
+ clearTimer();
573
+ emit();
574
+ return;
575
+ }
576
+ timer ??= scheduler.setTimeout(() => {
577
+ timer = null;
578
+ if (phase === "active") emit();
579
+ }, delay);
580
+ };
581
+ return {
582
+ start() {
583
+ if (phase !== "idle") return;
584
+ phase = "active";
585
+ startedAt = scheduler.now();
586
+ dirty = true;
587
+ emit();
588
+ },
589
+ append(target, chunk) {
590
+ if (phase !== "active") return;
591
+ (target === "stdout" ? stdoutTail : stderrTail).append(chunk);
592
+ schedule();
593
+ },
594
+ settle() {
595
+ if (phase !== "active") return;
596
+ clearTimer();
597
+ emit();
598
+ phase = "settled";
599
+ }
600
+ };
601
+ }
602
+ function formatElapsed(ms) {
603
+ if (ms < 1e3) return `${Math.round(ms)}ms`;
604
+ const seconds = ms / 1e3;
605
+ if (seconds < 60) return `${seconds.toFixed(1)}s`;
606
+ const minutes = Math.floor(seconds / 60);
607
+ return `${minutes}m${Math.round(seconds - minutes * 60)}s`;
608
+ }
609
+ function classifyOutcome(result) {
610
+ if (result.aborted) return "aborted";
611
+ if (result.timedOut) return "timed-out";
612
+ if (result.pipeDrainIncomplete) return "pipe-drain-incomplete";
613
+ if (result.sinkError !== void 0) return "failed";
614
+ if (result.exitCode === null && result.signal === null) return "spawn-failed";
615
+ if (result.cleanupIncomplete && result.leaderExit?.code === 0) return "cleanup-incomplete";
616
+ if (result.exitCode !== 0) return "failed";
617
+ return result.cleanupIncomplete === true ? "cleanup-incomplete" : "succeeded";
618
+ }
619
+ function runnerFailureResult(file, args, cwd, startedAt, written, aborted) {
620
+ return {
621
+ file,
622
+ args,
623
+ cwd,
624
+ stdout: "",
625
+ stderr: "",
626
+ exitCode: null,
627
+ signal: null,
628
+ aborted,
629
+ timedOut: false,
630
+ outputCapped: false,
631
+ durationMs: Math.max(0, Date.now() - startedAt.getTime()),
632
+ startedAt: startedAt.getTime(),
633
+ stdoutBytes: written.stdout,
634
+ stderrBytes: written.stderr,
635
+ stdoutRetained: written.stdout === 0,
636
+ stderrRetained: written.stderr === 0,
637
+ descendantsCleaned: false,
638
+ cleanupIncomplete: false,
639
+ failure: null
640
+ };
641
+ }
642
+ function streamLine(name, bytes, retained, logRelative, tailBytes) {
643
+ if (bytes === 0) return `${name}: 0 bytes (empty)`;
644
+ if (retained) return `${name}: ${bytes} bytes (complete below)`;
645
+ return `${name}: ${bytes} bytes (last ${formatSize(tailBytes)} below; full log: ${logRelative})`;
646
+ }
647
+ function refsTable(heading, refs) {
648
+ if (refs.length === 0) return [];
649
+ const lines = [`${heading}:`];
650
+ for (const ref of refs) {
651
+ const status = "status" in ref ? ref.status : ref.exists ? "present" : "absent";
652
+ const size = ref.bytes === void 0 ? "" : ` ${ref.bytes} bytes`;
653
+ const omission = ref.hashOmitted === void 0 ? "" : ` (hash omitted: ${ref.hashOmitted})`;
654
+ lines.push(` ${ref.path} ${status}${size}${omission}`);
655
+ }
656
+ return lines;
657
+ }
658
+ function tailSection(name, text) {
659
+ return [`--- ${name} tail ---`, text.length > 0 ? text : "(empty)"];
660
+ }
661
+ var DESCRIPTION = `Run one script from the workspace with an explicit interpreter, arguments, and working directory, as an observable scientific step. Complete stdout and stderr stream to .clio-coder/runs/<runId>/stdout.log and stderr.log and a run.json manifest records the script hash, exact argv, cwd, declared env keys, timing, outcome, and the observed state of declared inputs and outputs; the result carries bounded tails of both streams and names the run directory. Declared inputs and outputs are provenance only and do not restrict what the script may touch. No dependency installation, no retries, no hidden environment changes. Default timeout ${RUN_SCRIPT_CAPS.defaultTimeoutMs}ms; a nonzero exit, timeout, or cancellation returns an error that still names the logs and any partial outputs.`;
662
+ var runScriptToolSurface = {
663
+ name: RUN_SCRIPT_TOOL_NAME,
664
+ description: DESCRIPTION,
665
+ parameters: typebox_exports.Object({
666
+ interpreter: StringEnum(RUN_SCRIPT_INTERPRETERS, {
667
+ description: "Interpreter resolved on PATH. Only these names are accepted; never a path."
668
+ }),
669
+ script: typebox_exports.String({
670
+ description: "Script file inside the workspace (relative to the workspace root or absolute)."
671
+ }),
672
+ args: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String(), { description: "Arguments passed to the script, in order." })),
673
+ interpreter_args: typebox_exports.Optional(
674
+ typebox_exports.Array(typebox_exports.String(), {
675
+ description: "Flags placed before the script. Omit for the recorded default (-u for python/python3, none otherwise)."
676
+ })
677
+ ),
678
+ cwd: typebox_exports.Optional(
679
+ typebox_exports.String({ description: "Working directory, relative to the workspace root (default: the root)." })
680
+ ),
681
+ timeout_ms: typebox_exports.Optional(
682
+ typebox_exports.Number({ description: `Wall-clock limit in ms (default ${RUN_SCRIPT_CAPS.defaultTimeoutMs}).` })
683
+ ),
684
+ inputs: typebox_exports.Optional(
685
+ typebox_exports.Array(typebox_exports.String(), {
686
+ description: "Workspace-relative files the script reads; recorded with size and hash before the run."
687
+ })
688
+ ),
689
+ outputs: typebox_exports.Optional(
690
+ typebox_exports.Array(typebox_exports.String(), {
691
+ description: "Workspace-relative files the script should produce; reported as created, modified, unchanged, or absent after the run."
692
+ })
693
+ ),
694
+ env: typebox_exports.Optional(
695
+ typebox_exports.Record(typebox_exports.String(), typebox_exports.String(), {
696
+ description: "Extra environment variables for the script; keys are recorded, values never are."
697
+ })
698
+ )
699
+ }),
700
+ baseActionClass: "execute",
701
+ executionMode: "sequential",
702
+ prepareArguments: prepareRunScriptArguments,
703
+ safetyCall(args) {
704
+ const projection = runScriptSafetyProjection(args);
705
+ return {
706
+ tool: "bash",
707
+ args: { command: projection.command, ...projection.cwd === void 0 ? {} : { cwd: projection.cwd } }
708
+ };
709
+ }
710
+ };
711
+ function openLogs(paths) {
712
+ const stdout = { fd: openSync2(paths.stdoutPath, "w"), path: paths.stdoutPath };
713
+ let stderr;
714
+ try {
715
+ stderr = { fd: openSync2(paths.stderrPath, "w"), path: paths.stderrPath };
716
+ } catch (error) {
717
+ closeSync2(stdout.fd);
718
+ throw error;
719
+ }
720
+ return { stdout, stderr };
721
+ }
722
+ function writeAll(fd, chunk) {
723
+ let offset = 0;
724
+ while (offset < chunk.byteLength) {
725
+ offset += writeSync(fd, chunk, offset, chunk.byteLength - offset, null);
726
+ }
727
+ }
728
+ function closeQuietly(fd) {
729
+ try {
730
+ closeSync2(fd);
731
+ } catch {
732
+ }
733
+ }
734
+ function createRunScriptTool(deps = {}) {
735
+ const getWorkspaceRoot = deps.getWorkspaceRoot ?? (() => process.cwd());
736
+ const now = deps.now ?? (() => /* @__PURE__ */ new Date());
737
+ const runCommand = deps.runCommand ?? runCommandVector;
738
+ return {
739
+ ...runScriptToolSurface,
740
+ async run(rawArgs, options) {
741
+ const args = prepareRunScriptArguments(rawArgs);
742
+ const validation = validateRequest(args, path2.resolve(getWorkspaceRoot()));
743
+ if (!validation.ok) return { kind: "error", message: validation.message };
744
+ const request = validation.request;
745
+ const workspaceRoot = request.workspaceRoot;
746
+ const signal = options?.signal;
747
+ const abortedBeforeExecution = () => ({
748
+ kind: "error",
749
+ message: "run_script: aborted before execution"
750
+ });
751
+ if (signal?.aborted) return abortedBeforeExecution();
752
+ const scriptHash = await observeFileHash(request.scriptRealPath, request.scriptBytes, signal);
753
+ if (scriptHash.hashOmitted === "cancelled") return abortedBeforeExecution();
754
+ if (scriptHash.hashOmitted === "unreadable") {
755
+ return { kind: "error", message: `run_script: script cannot be read: ${request.scriptDeclared}` };
756
+ }
757
+ const inputRefs = [];
758
+ for (const ref of request.inputs) inputRefs.push(await captureFileRef(workspaceRoot, ref.declared, { signal }));
759
+ const outputsBefore = [];
760
+ for (const ref of request.outputs) {
761
+ outputsBefore.push(await captureFileRef(workspaceRoot, ref.declared, { signal }));
762
+ }
763
+ if (signal?.aborted) return abortedBeforeExecution();
764
+ let paths;
765
+ let logs;
766
+ try {
767
+ paths = createRunRecord(workspaceRoot);
768
+ logs = openLogs(paths);
769
+ } catch (error) {
770
+ return {
771
+ kind: "error",
772
+ message: `run_script: cannot create the run record: ${error instanceof Error ? error.message : String(error)}`
773
+ };
774
+ }
775
+ const label = [request.interpreter, ...request.interpreterArgs, request.scriptRelative, ...request.args].join(" ");
776
+ const progress = options?.onUpdate === void 0 ? null : createRunScriptProgressController({
777
+ onUpdate: options.onUpdate,
778
+ label,
779
+ ...deps.scheduler ? { scheduler: deps.scheduler } : {}
780
+ });
781
+ const vector = [...request.interpreterArgs, request.scriptRealPath, ...request.args];
782
+ const written = { stdout: 0, stderr: 0 };
783
+ const startedAt = now();
784
+ let result;
785
+ let failure = null;
786
+ progress?.start();
787
+ try {
788
+ result = await runCommand(request.interpreterPath, vector, {
789
+ cwd: request.cwdExecution,
790
+ workspaceRoot,
791
+ timeoutMs: request.timeoutMs,
792
+ env: request.env,
793
+ ...signal ? { signal } : {},
794
+ output: {
795
+ retainHeadBytes: 0,
796
+ retainTailBytes: RUN_SCRIPT_CAPS.resultTailBytes,
797
+ onStdout(chunk) {
798
+ writeAll(logs.stdout.fd, chunk);
799
+ written.stdout += chunk.byteLength;
800
+ progress?.append("stdout", chunk);
801
+ },
802
+ onStderr(chunk) {
803
+ writeAll(logs.stderr.fd, chunk);
804
+ written.stderr += chunk.byteLength;
805
+ progress?.append("stderr", chunk);
806
+ }
807
+ }
808
+ });
809
+ } catch (error) {
810
+ failure = error instanceof Error ? error.message : String(error);
811
+ result = runnerFailureResult(
812
+ request.interpreterPath,
813
+ vector,
814
+ request.cwdExecution,
815
+ startedAt,
816
+ written,
817
+ signal?.aborted === true
818
+ );
819
+ } finally {
820
+ progress?.settle();
821
+ closeQuietly(logs.stdout.fd);
822
+ closeQuietly(logs.stderr.fd);
823
+ }
824
+ const finishedAt = now();
825
+ const outcome = classifyOutcome(result);
826
+ const outputRefs = [];
827
+ for (const [index, ref] of request.outputs.entries()) {
828
+ outputRefs.push(
829
+ await captureOutputRef(workspaceRoot, ref.declared, outputsBefore[index], { signal })
830
+ );
831
+ }
832
+ const declaredKeys = Object.keys(request.env).sort();
833
+ const manifest = {
834
+ version: 1,
835
+ runId: paths.runId,
836
+ tool: "run_script",
837
+ startedAt: startedAt.toISOString(),
838
+ finishedAt: finishedAt.toISOString(),
839
+ durationMs: result.durationMs,
840
+ script: {
841
+ path: request.scriptRelative,
842
+ realPath: request.scriptRealPath,
843
+ sha256: scriptHash.sha256,
844
+ ...scriptHash.hashOmitted === void 0 ? {} : { hashOmitted: scriptHash.hashOmitted },
845
+ bytes: request.scriptBytes
846
+ },
847
+ interpreter: {
848
+ name: request.interpreter,
849
+ resolvedPath: request.interpreterPath,
850
+ args: [...request.interpreterArgs]
851
+ },
852
+ argv: [result.file, ...result.args],
853
+ cwd: request.cwdRelative,
854
+ env: { declaredKeys, redactedKeys: declaredKeys.filter((key) => isSecretArgKey(key)) },
855
+ timeoutMs: request.timeoutMs,
856
+ outcome,
857
+ exitCode: result.exitCode,
858
+ leaderExit: result.leaderExit ?? null,
859
+ pipeDrainIncomplete: result.pipeDrainIncomplete === true,
860
+ signal: result.signal,
861
+ stdoutBytes: result.stdoutBytes ?? 0,
862
+ stderrBytes: result.stderrBytes ?? 0,
863
+ logs: { stdout: path2.basename(paths.stdoutPath), stderr: path2.basename(paths.stderrPath) },
864
+ inputs: inputRefs,
865
+ outputs: outputRefs,
866
+ cleanup: {
867
+ descendantsCleaned: result.descendantsCleaned === true,
868
+ incomplete: result.cleanupIncomplete === true
869
+ },
870
+ ...failure === null ? {} : { failure }
871
+ };
872
+ let manifestError = null;
873
+ try {
874
+ writeRunManifest(paths, manifest);
875
+ } catch (error) {
876
+ manifestError = error instanceof Error ? error.message : String(error);
877
+ }
878
+ const sweep = sweepRunRecords(workspaceRoot, { keep: deps.keepRuns ?? RUN_RECORDS_DEFAULT_KEEP });
879
+ const runRelative = workspaceRelativePath(workspaceRoot, paths.dir) ?? paths.dir;
880
+ const stdoutRelative = workspaceRelativePath(workspaceRoot, paths.stdoutPath) ?? paths.stdoutPath;
881
+ const stderrRelative = workspaceRelativePath(workspaceRoot, paths.stderrPath) ?? paths.stderrPath;
882
+ const reportedExit = result.leaderExit ?? { code: result.exitCode, signal: result.signal };
883
+ const ending = reportedExit.code !== null ? `exit ${reportedExit.code}` : reportedExit.signal !== null ? `signal ${reportedExit.signal}` : "did not start";
884
+ const headline = `run_script ${outcome}: ${label} (${ending}, ${formatElapsed(result.durationMs)})`;
885
+ const lines = [
886
+ headline,
887
+ `run: ${runRelative}`,
888
+ streamLine(
889
+ "stdout",
890
+ manifest.stdoutBytes,
891
+ result.stdoutRetained === true,
892
+ stdoutRelative,
893
+ RUN_SCRIPT_CAPS.resultTailBytes
894
+ ),
895
+ streamLine(
896
+ "stderr",
897
+ manifest.stderrBytes,
898
+ result.stderrRetained === true,
899
+ stderrRelative,
900
+ RUN_SCRIPT_CAPS.resultTailBytes
901
+ ),
902
+ ...refsTable("inputs", inputRefs),
903
+ ...refsTable("outputs", outputRefs),
904
+ ...tailSection("stdout", result.stdout),
905
+ ...tailSection("stderr", result.stderr)
906
+ ];
907
+ if (outcome === "timed-out") {
908
+ lines.push(
909
+ `the run timed out after ${request.timeoutMs}ms (SIGTERM, then SIGKILL); the logs end where the script was stopped`
910
+ );
911
+ } else if (outcome === "aborted") {
912
+ lines.push("the run was cancelled; the logs end where the script was stopped");
913
+ } else if (outcome === "spawn-failed") {
914
+ lines.push(`the interpreter did not start: ${failure ?? (result.stderr.trim() || "unknown spawn failure")}`);
915
+ }
916
+ if (result.sinkError !== void 0) {
917
+ lines.push(`log write failed (${result.sinkError}); the script was stopped and the logs are incomplete`);
918
+ }
919
+ if (manifest.cleanup.descendantsCleaned) {
920
+ lines.push(
921
+ "processes the script started were still running in its process group after it ended; they were sent SIGTERM, then SIGKILL"
922
+ );
923
+ }
924
+ if (result.pipeDrainIncomplete) {
925
+ lines.push(
926
+ "output pipe draining incomplete after leader exit; logs may be incomplete and escaped processes are not contained"
927
+ );
928
+ }
929
+ if (manifest.cleanup.incomplete) {
930
+ lines.push(
931
+ `${result.failure ?? `process group cleanup incomplete: members were still present ${SAFE_EXEC_GROUP_TEARDOWN_BOUND_MS}ms after SIGKILL`}; check for stuck processes before trusting the outputs`
932
+ );
933
+ }
934
+ if ((outcome === "cleanup-incomplete" || result.pipeDrainIncomplete) && outputRefs.length > 0) {
935
+ lines.push(
936
+ result.pipeDrainIncomplete ? "outputs listed above may still change; processes outside the original group may still be running" : "outputs listed above may still change; processes the script started are still present"
937
+ );
938
+ } else if (outcome !== "succeeded" && outputRefs.length > 0) {
939
+ lines.push(
940
+ reportedExit.code === 0 ? "outputs listed above may be partial; the run did not complete successfully" : "outputs listed above may be partial; the script did not exit 0"
941
+ );
942
+ }
943
+ if (manifestError !== null) lines.push(`manifest write failed: ${manifestError}`);
944
+ const text = lines.join("\n");
945
+ const details = {
946
+ runId: paths.runId,
947
+ runDir: paths.dir,
948
+ manifestPath: paths.manifestPath,
949
+ outcome,
950
+ exitCode: result.exitCode,
951
+ leaderExit: result.leaderExit ?? null,
952
+ pipeDrainIncomplete: result.pipeDrainIncomplete === true,
953
+ signal: result.signal,
954
+ timedOut: result.timedOut,
955
+ aborted: result.aborted,
956
+ durationMs: result.durationMs,
957
+ stdoutBytes: manifest.stdoutBytes,
958
+ stderrBytes: manifest.stderrBytes,
959
+ stdoutPath: paths.stdoutPath,
960
+ stderrPath: paths.stderrPath,
961
+ script: { path: request.scriptRelative, sha256: scriptHash.sha256 },
962
+ argv: manifest.argv,
963
+ cwd: request.cwdRelative,
964
+ inputs: inputRefs,
965
+ outputs: outputRefs,
966
+ cleanup: manifest.cleanup,
967
+ sweep,
968
+ ...failure === null ? {} : { failure },
969
+ ...manifestError === null ? {} : { manifestError }
970
+ };
971
+ if (outcome === "succeeded" && manifestError === null) return { kind: "ok", output: text, details };
972
+ return { kind: "error", message: text, details };
973
+ }
974
+ };
975
+ }
976
+ var runScriptTool = createRunScriptTool();
977
+
978
+ export {
979
+ RUN_SCRIPT_INTERPRETERS,
980
+ RUN_SCRIPT_CAPS,
981
+ RUN_SCRIPT_DEFAULT_INTERPRETER_ARGS,
982
+ RUN_SCRIPT_TOOL_NAME,
983
+ prepareRunScriptArguments,
984
+ runScriptSafetyProjection,
985
+ createRunScriptProgressController,
986
+ runScriptToolSurface,
987
+ createRunScriptTool,
988
+ runScriptTool
989
+ };
990
+ //# sourceMappingURL=chunk-YYLCPDCC.js.map