@iowarp/clio-coder 0.4.9 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1172) hide show
  1. package/.claude-plugin/marketplace.json +11 -3
  2. package/CHANGELOG.md +153 -0
  3. package/CODE_OF_CONDUCT.md +10 -0
  4. package/CONTRIBUTING.md +208 -382
  5. package/NOTICE +8 -2
  6. package/README.md +199 -418
  7. package/ROADMAP.md +82 -0
  8. package/SECURITY.md +14 -11
  9. package/dist/acp-KS7ARGV6.js +132 -0
  10. package/dist/agents-YOGJ2YEJ.js +163 -0
  11. package/dist/assets/codewiki.json +1 -1
  12. package/dist/auth-CEDCO6O6.js +557 -0
  13. package/dist/background-YWTBPSQU.js +39 -0
  14. package/dist/builtins-GDYO4RTR.js +23 -0
  15. package/dist/chunk-27YTM2CV.js +175 -0
  16. package/dist/chunk-2AF6YC7Q.js +75 -0
  17. package/dist/chunk-2DTIWSAW.js +381 -0
  18. package/dist/chunk-2EMLKSCX.js +262 -0
  19. package/dist/chunk-2OJ3YZQP.js +665 -0
  20. package/dist/chunk-2VLYHHFT.js +35 -0
  21. package/dist/chunk-2WVPJF3Z.js +204 -0
  22. package/dist/chunk-33OASOS6.js +176 -0
  23. package/dist/chunk-3BD2LXYJ.js +19 -0
  24. package/dist/chunk-3JHUFKG7.js +30 -0
  25. package/dist/chunk-3JLTRPN7.js +711 -0
  26. package/dist/chunk-3LT34CAM.js +2796 -0
  27. package/dist/chunk-3O5JWP4L.js +1670 -0
  28. package/dist/chunk-3UW3KU4A.js +21 -0
  29. package/dist/chunk-4A6YRGV4.js +569 -0
  30. package/dist/chunk-4D2BRCZ3.js +67 -0
  31. package/dist/chunk-4SYHGVDE.js +668 -0
  32. package/dist/chunk-4VDHLCF5.js +66 -0
  33. package/dist/chunk-4WOOTKFD.js +637 -0
  34. package/dist/chunk-4WV4PI66.js +80 -0
  35. package/dist/chunk-53OXPRI6.js +195 -0
  36. package/dist/chunk-55RMDDFM.js +1347 -0
  37. package/dist/chunk-56XP4FJU.js +2025 -0
  38. package/dist/chunk-5B3RTYAK.js +123 -0
  39. package/dist/chunk-5CD243WE.js +45 -0
  40. package/dist/chunk-5JQR5B4D.js +709 -0
  41. package/dist/chunk-5KQEUIWM.js +597 -0
  42. package/dist/chunk-5LP5FNNR.js +915 -0
  43. package/dist/chunk-62UK7AGW.js +9344 -0
  44. package/dist/chunk-6CTHLZFB.js +563 -0
  45. package/dist/chunk-6EJYVCTN.js +23 -0
  46. package/dist/chunk-6OWUM2NC.js +12289 -0
  47. package/dist/chunk-6RJMYYIE.js +1023 -0
  48. package/dist/chunk-6W75D37F.js +643 -0
  49. package/dist/chunk-733ZBT5P.js +1721 -0
  50. package/dist/chunk-77DCC6JZ.js +3710 -0
  51. package/dist/chunk-7QXCO3AF.js +156 -0
  52. package/dist/chunk-7RET77VB.js +481 -0
  53. package/dist/chunk-A4MVRV4C.js +65 -0
  54. package/dist/chunk-ALJWT6O6.js +93 -0
  55. package/dist/chunk-AVSR2HKI.js +232 -0
  56. package/dist/chunk-B7GY6QER.js +42 -0
  57. package/dist/chunk-BFOSV5EZ.js +178 -0
  58. package/dist/chunk-BGOIM7NB.js +103 -0
  59. package/dist/chunk-BJH6WFIB.js +372 -0
  60. package/dist/chunk-BOBCCDJ6.js +1533 -0
  61. package/dist/chunk-BRCOSE7O.js +117 -0
  62. package/dist/chunk-BYFHHCFV.js +601 -0
  63. package/dist/chunk-C2CPOIH2.js +83 -0
  64. package/dist/chunk-C7AQTPCE.js +694 -0
  65. package/dist/chunk-CBAQPTDU.js +165 -0
  66. package/dist/chunk-CDQ2UC6W.js +125 -0
  67. package/dist/chunk-CN6SW5DC.js +177 -0
  68. package/dist/chunk-CRHPCPZP.js +132 -0
  69. package/dist/chunk-CTFPFW3H.js +44 -0
  70. package/dist/chunk-D3KWFOUT.js +103 -0
  71. package/dist/chunk-D65E25JG.js +185 -0
  72. package/dist/chunk-DCGHJQ2U.js +236 -0
  73. package/dist/chunk-DE2LU267.js +106 -0
  74. package/dist/chunk-DF6PI6GN.js +97 -0
  75. package/dist/chunk-DGC6X6XR.js +53 -0
  76. package/dist/chunk-DOUISWEE.js +526 -0
  77. package/dist/chunk-DR3TAEUA.js +188 -0
  78. package/dist/chunk-DVTBERFY.js +33 -0
  79. package/dist/chunk-DXSETN72.js +1051 -0
  80. package/dist/chunk-DZLR4UEH.js +128 -0
  81. package/dist/chunk-E6IPKW2E.js +77 -0
  82. package/dist/chunk-EG4ARXPC.js +139 -0
  83. package/dist/chunk-EKV4UBCM.js +652 -0
  84. package/dist/chunk-EOJPDNUP.js +1325 -0
  85. package/dist/chunk-EX57VVWW.js +4157 -0
  86. package/dist/chunk-EYTLV3W3.js +5937 -0
  87. package/dist/chunk-EZD2BXGP.js +475 -0
  88. package/dist/chunk-EZDCA34W.js +314 -0
  89. package/dist/chunk-FD2I4KBR.js +33 -0
  90. package/dist/chunk-FD3IAHQM.js +27 -0
  91. package/dist/chunk-FFYTC2KQ.js +416 -0
  92. package/dist/chunk-FGSQHUCK.js +110 -0
  93. package/dist/chunk-GCQFN7YI.js +32 -0
  94. package/dist/chunk-GGPF6LLE.js +38 -0
  95. package/dist/chunk-GGWI3OVM.js +215 -0
  96. package/dist/chunk-GLIQT7SU.js +172 -0
  97. package/dist/chunk-GN7QBEEI.js +95 -0
  98. package/dist/chunk-GRHOXDKB.js +1104 -0
  99. package/dist/chunk-HMN2C6YL.js +54 -0
  100. package/dist/chunk-HOEDA42N.js +310 -0
  101. package/dist/chunk-HOYZUKG7.js +192 -0
  102. package/dist/chunk-HQVN7G4F.js +1021 -0
  103. package/dist/chunk-HSQQFDB3.js +519 -0
  104. package/dist/chunk-I4ELN5BX.js +47 -0
  105. package/dist/chunk-I4Y4WKZR.js +386 -0
  106. package/dist/chunk-IFPDAD7R.js +797 -0
  107. package/dist/chunk-IN7DGBVS.js +582 -0
  108. package/dist/chunk-ISHUS7HC.js +396 -0
  109. package/dist/chunk-JPXLJSGR.js +191 -0
  110. package/dist/chunk-JQCLXSFI.js +69 -0
  111. package/dist/chunk-KBUTSJSR.js +61 -0
  112. package/dist/chunk-KW5HXKLJ.js +56 -0
  113. package/dist/chunk-L4APUGCT.js +139 -0
  114. package/dist/chunk-L7G7K4I2.js +505 -0
  115. package/dist/chunk-LAR7DX5E.js +1840 -0
  116. package/dist/chunk-LAVUQX3B.js +462 -0
  117. package/dist/chunk-LJRBX7QR.js +116 -0
  118. package/dist/chunk-LNOXCGN2.js +1864 -0
  119. package/dist/chunk-LTWH2ACR.js +23002 -0
  120. package/dist/chunk-LYJJ6546.js +661 -0
  121. package/dist/chunk-M2IPMWCN.js +457 -0
  122. package/dist/chunk-MGLRTOCK.js +101 -0
  123. package/dist/chunk-MZF5IKZT.js +160 -0
  124. package/dist/chunk-N24R6KWS.js +386 -0
  125. package/dist/chunk-NASYVWDB.js +604 -0
  126. package/dist/chunk-NBXFPI7U.js +195 -0
  127. package/dist/chunk-NDPF2N2L.js +400 -0
  128. package/dist/chunk-NFSK2VNU.js +446 -0
  129. package/dist/chunk-NG3QQSXY.js +43 -0
  130. package/dist/chunk-NOCSM22Y.js +63 -0
  131. package/dist/chunk-NVPXXW2H.js +1143 -0
  132. package/dist/chunk-O63U2I6I.js +30 -0
  133. package/dist/chunk-OJXOA6YU.js +98 -0
  134. package/dist/chunk-OPD7GL6F.js +1196 -0
  135. package/dist/chunk-OQ2EOAHA.js +14399 -0
  136. package/dist/chunk-OV62D6KO.js +688 -0
  137. package/dist/chunk-OZ76TLGU.js +740 -0
  138. package/dist/chunk-P4GNZPXO.js +1156 -0
  139. package/dist/chunk-PS6JAWJZ.js +78 -0
  140. package/dist/chunk-PXRCXGLK.js +1865 -0
  141. package/dist/chunk-QDUUOZ3S.js +108 -0
  142. package/dist/chunk-QG6I2T5E.js +1416 -0
  143. package/dist/chunk-QHSBROEW.js +308 -0
  144. package/dist/chunk-QNUQ7K7D.js +46 -0
  145. package/dist/chunk-QZTTRSJE.js +333 -0
  146. package/dist/chunk-R2UUNSNQ.js +1605 -0
  147. package/dist/chunk-R7FGRZNF.js +1794 -0
  148. package/dist/chunk-RNDCROSG.js +199 -0
  149. package/dist/chunk-S36CXHO2.js +302 -0
  150. package/dist/chunk-SJGS3GDI.js +575 -0
  151. package/dist/chunk-SQZHXUB3.js +510 -0
  152. package/dist/chunk-SUTLW6ND.js +686 -0
  153. package/dist/chunk-SYF7FVBL.js +179 -0
  154. package/dist/chunk-T2MDZES3.js +1577 -0
  155. package/dist/chunk-T33IYTZM.js +1146 -0
  156. package/dist/chunk-TDGYTWM6.js +49 -0
  157. package/dist/chunk-TGL5FZVD.js +132 -0
  158. package/dist/chunk-TGWZXJ7L.js +1205 -0
  159. package/dist/chunk-TKDRT2DF.js +114 -0
  160. package/dist/chunk-TV2EBCSQ.js +152 -0
  161. package/dist/chunk-U26XXPJS.js +367 -0
  162. package/dist/chunk-U5QU5ZOD.js +419 -0
  163. package/dist/chunk-U6YTUVOX.js +1011 -0
  164. package/dist/chunk-UCINIRHW.js +188 -0
  165. package/dist/chunk-UJD5MPP6.js +52 -0
  166. package/dist/chunk-URCXX7WJ.js +146 -0
  167. package/dist/chunk-UX2L5CUD.js +898 -0
  168. package/dist/chunk-UZVYEF57.js +114 -0
  169. package/dist/chunk-V35KZDUZ.js +218 -0
  170. package/dist/chunk-VESL6DQY.js +1058 -0
  171. package/dist/chunk-VKHLUZNO.js +986 -0
  172. package/dist/chunk-VOYUCAQF.js +584 -0
  173. package/dist/chunk-VYRQHORQ.js +414 -0
  174. package/dist/chunk-W53XSRQE.js +245 -0
  175. package/dist/chunk-X4CEFOSG.js +226 -0
  176. package/dist/chunk-XDHUDE5K.js +380 -0
  177. package/dist/chunk-XISLDHEL.js +1290 -0
  178. package/dist/chunk-XM34YQ2Y.js +169 -0
  179. package/dist/chunk-XMDBTYCH.js +661 -0
  180. package/dist/chunk-XS2QPZJE.js +449 -0
  181. package/dist/chunk-YBUECLAF.js +618 -0
  182. package/dist/chunk-YQ6XEFVK.js +332 -0
  183. package/dist/chunk-YYLCPDCC.js +990 -0
  184. package/dist/chunk-Z4GLJ6J4.js +1035 -0
  185. package/dist/chunk-ZARZ4POR.js +210 -0
  186. package/dist/chunk-ZJPORZTC.js +119 -0
  187. package/dist/chunk-ZNUZ3EXD.js +243 -0
  188. package/dist/chunk-ZPST2KQO.js +49 -0
  189. package/dist/chunk-ZR5YA6ZF.js +512 -0
  190. package/dist/chunk-ZU4JPCPR.js +319 -0
  191. package/dist/chunk-ZUKUCZYZ.js +39 -0
  192. package/dist/cli/index.js +56 -45
  193. package/dist/clio-K2PBVCEM.js +27 -0
  194. package/dist/clio-context-tools-GR4OHFSO.js +145 -0
  195. package/dist/code-nav-4X3OI6DK.js +715 -0
  196. package/dist/codewiki/build-worker.js +4 -4
  197. package/dist/compile-cache-YRB6QRO7.js +18 -0
  198. package/dist/components-RQOJ6NUR.js +675 -0
  199. package/dist/config-Q5J7UBAB.js +291 -0
  200. package/dist/config-XE7XYZLU.js +38 -0
  201. package/dist/config-graph-P3555574.js +175 -0
  202. package/dist/configure-KIJ32ZO6.js +104 -0
  203. package/dist/context-LFBQOSXT.js +344 -0
  204. package/dist/context-NNLBES2Y.js +82 -0
  205. package/dist/context-WBH3KSVR.js +302 -0
  206. package/dist/context-clear-YOHMQ6SQ.js +208 -0
  207. package/dist/context-index-X2N5UAIF.js +120 -0
  208. package/dist/context-map-HOSMGUG2.js +555 -0
  209. package/dist/context-working-set-MRAEVDNV.js +1564 -0
  210. package/dist/data-tool-JJPBGMQJ.js +2986 -0
  211. package/dist/detail-RHJOTGN4.js +139 -0
  212. package/dist/dispatch-runner-NC7PYNIO.js +2477 -0
  213. package/dist/docs-K4GBWRUX.js +342 -0
  214. package/dist/doctor-S5KZ2GTN.js +1138 -0
  215. package/dist/doctor-deep-2EJQSHIZ.js +130 -0
  216. package/dist/domain-loader-MB34FDPD.js +13 -0
  217. package/dist/eval-3D6M36N7.js +5220 -0
  218. package/dist/eval-inventory-SM3HNM47.js +260 -0
  219. package/dist/evals-FO6JEUCN.js +104 -0
  220. package/dist/evidence-6IYN52ET.js +262 -0
  221. package/dist/evidence-JVECPI3F.js +250 -0
  222. package/dist/evidence-XNVPPLVK.js +410 -0
  223. package/dist/evolve-TLPUDJDM.js +634 -0
  224. package/dist/extensions-ROZJ5X3J.js +311 -0
  225. package/dist/fleet-6RJWIOEO.js +284 -0
  226. package/dist/fleet-WKVBF5SZ.js +942 -0
  227. package/dist/fleet-commands-L6WFT7KZ.js +76 -0
  228. package/dist/fleet-decisions-BTQMWU5A.js +55 -0
  229. package/dist/fleet-graph-553DZ67Q.js +141 -0
  230. package/dist/fleet-inspect-236FZPRB.js +329 -0
  231. package/dist/fleet-new-CKUXP3CO.js +48 -0
  232. package/dist/fleet-preflight-NZQHABWO.js +95 -0
  233. package/dist/fleet-validate-7NLAE26R.js +96 -0
  234. package/dist/fleet-verify-E3RO6A5W.js +226 -0
  235. package/dist/fleet-view-KMZQY7YJ.js +144 -0
  236. package/dist/gui/client/assets/abnfDiagram-VCTEODGH-DPBWQwNn.js +1 -0
  237. package/dist/gui/client/assets/architecture-7GRP2DOG-D1w8FrFW.js +1 -0
  238. package/dist/gui/client/assets/architectureDiagram-5GKGNRK7-CVPgKd1-.js +36 -0
  239. package/dist/gui/client/assets/blockDiagram-I7D4REHJ-BLmnqkK5.js +129 -0
  240. package/dist/gui/client/assets/c4Diagram-7LVT6UL2-4AU9cfM7.js +38 -0
  241. package/dist/gui/client/assets/channel-DwFZ0m8S.js +1 -0
  242. package/dist/gui/client/assets/chunk-4HAMMTFA-EOWkKCav.js +62 -0
  243. package/dist/gui/client/assets/chunk-75Z2AOVW-CygeoIMl.js +2 -0
  244. package/dist/gui/client/assets/chunk-DU6HZSFF-s27fViLb.js +125 -0
  245. package/dist/gui/client/assets/chunk-F27PBJKO-BrHvwLsZ.js +1 -0
  246. package/dist/gui/client/assets/chunk-GMAD6QVW-DzPh-7jt.js +72 -0
  247. package/dist/gui/client/assets/chunk-GVQU2GXP-pIaQkIzm.js +1 -0
  248. package/dist/gui/client/assets/chunk-IMKFNOWR-BGJVE_Br.js +231 -0
  249. package/dist/gui/client/assets/chunk-L3NEJ4N5-B3YLuhww.js +1 -0
  250. package/dist/gui/client/assets/chunk-OSK3NFVY-BRj61HHU.js +10 -0
  251. package/dist/gui/client/assets/chunk-P2QGCYS3-Sno90KxP.js +1 -0
  252. package/dist/gui/client/assets/chunk-POPQ4Y6H-Cw8NTbxr.js +1 -0
  253. package/dist/gui/client/assets/chunk-PWAF6VOD-BIhHgz37.js +1 -0
  254. package/dist/gui/client/assets/chunk-SHT3W25Y-Cqv7npBj.js +168 -0
  255. package/dist/gui/client/assets/chunk-SVP7TREG-Hxzl6Dee.js +88 -0
  256. package/dist/gui/client/assets/chunk-TICWLB2K-CIFVyVP2.js +206 -0
  257. package/dist/gui/client/assets/classDiagram-ZZMXUADV-BJbAiI_w.js +1 -0
  258. package/dist/gui/client/assets/classDiagram-v2-VYDZK3BY-BJbAiI_w.js +1 -0
  259. package/dist/gui/client/assets/cynefin-OW5HDTMX-DecLWZ-y.js +1 -0
  260. package/dist/gui/client/assets/cynefinDiagram-5FMLGOSQ-CK-T2N-D.js +62 -0
  261. package/dist/gui/client/assets/dagre-GXQ25YYZ-C0dfg-OS.js +4 -0
  262. package/dist/gui/client/assets/diagram-S7CK7UJ4-EaJukVh-.js +30 -0
  263. package/dist/gui/client/assets/diagram-UQ7AKVKN-xcOucEtP.js +41 -0
  264. package/dist/gui/client/assets/diagram-VSXAHHWV-3AUJACMf.js +3 -0
  265. package/dist/gui/client/assets/diagram-VX7I27RA-TPknLqam.js +24 -0
  266. package/dist/gui/client/assets/diagram-Z3DM3KII-wa1q3YMF.js +24 -0
  267. package/dist/gui/client/assets/ebnfDiagram-PWID7BFC-JBCF2-s7.js +1 -0
  268. package/dist/gui/client/assets/erDiagram-RLTQ6QDP-CmXjXPc4.js +99 -0
  269. package/dist/gui/client/assets/eventmodeling-NTZA5JFV-D_1aJWYl.js +1 -0
  270. package/dist/gui/client/assets/flowDiagram-HODETNUW-BQtZlael.js +1 -0
  271. package/dist/gui/client/assets/framework-Bq-znqwW.js +9 -0
  272. package/dist/gui/client/assets/ganttDiagram-EL5Y4UJY-IPaL_kaa.js +292 -0
  273. package/dist/gui/client/assets/gitGraph-4MIJSDKK-Oy0Q3hoc.js +1 -0
  274. package/dist/gui/client/assets/gitGraphDiagram-WWUBYQGX-jtAuBmbc.js +106 -0
  275. package/dist/gui/client/assets/index-CuFuBEdL.css +1 -0
  276. package/dist/gui/client/assets/index-hMbEIsX0.js +87 -0
  277. package/dist/gui/client/assets/info-A6RAGUB7-UtEs1tv7.js +1 -0
  278. package/dist/gui/client/assets/infoDiagram-27XIBGKW-hlwR1pBW.js +2 -0
  279. package/dist/gui/client/assets/ishikawaDiagram-5VMMS53U-C6vMtfsd.js +70 -0
  280. package/dist/gui/client/assets/journeyDiagram-3NMN7TZE-EAwAl_PS.js +139 -0
  281. package/dist/gui/client/assets/kanban-definition-UXKFOSKX-CQOhRKHW.js +89 -0
  282. package/dist/gui/client/assets/line-DbcwGZTW.js +1 -0
  283. package/dist/gui/client/assets/mermaid-parser.core-C2QfVcHd.js +7 -0
  284. package/dist/gui/client/assets/mermaid.core-N9qUTre1.js +44 -0
  285. package/dist/gui/client/assets/mindmap-definition-YA3MSWOX-BR_FL9gK.js +96 -0
  286. package/dist/gui/client/assets/packet-AYTQ26CC-CbBJ2oAa.js +1 -0
  287. package/dist/gui/client/assets/pegDiagram-XKGWAZYB-BruU0IHM.js +1 -0
  288. package/dist/gui/client/assets/pie-WAS4IAKB-BWdSng4H.js +1 -0
  289. package/dist/gui/client/assets/pieDiagram-E7YTZNPT-CR3ljgdU.js +39 -0
  290. package/dist/gui/client/assets/quadrantDiagram-AXDQQJYC-C-boKslr.js +7 -0
  291. package/dist/gui/client/assets/radar-RG4KPBEZ-CGlOnAKG.js +1 -0
  292. package/dist/gui/client/assets/railroad-74A4TZTK-CDvuAlyC.js +1 -0
  293. package/dist/gui/client/assets/railroad-abnf-HS5TGJTU-CQUA9crC.js +1 -0
  294. package/dist/gui/client/assets/railroad-ebnf-LZEXJU2U-CD857gxq.js +1 -0
  295. package/dist/gui/client/assets/railroad-peg-WCYAUIDC-DUV4k35E.js +1 -0
  296. package/dist/gui/client/assets/railroadDiagram-O6MQD6OU-DMR4LXmA.js +1 -0
  297. package/dist/gui/client/assets/requirementDiagram-BXWQKSXE-DVltaF6c.js +84 -0
  298. package/dist/gui/client/assets/sankeyDiagram-P5KCCOFB-CHdNz472.js +40 -0
  299. package/dist/gui/client/assets/sequenceDiagram-WJ2MYXX4-DaMafIty.js +162 -0
  300. package/dist/gui/client/assets/stateDiagram-D77RDMKH-CEbBHqn3.js +1 -0
  301. package/dist/gui/client/assets/stateDiagram-v2-MP3YSRHH-B3JgDdFg.js +1 -0
  302. package/dist/gui/client/assets/swimlanes-42K2YHIH-BlPHndnJ.js +1 -0
  303. package/dist/gui/client/assets/swimlanesDiagram-VR7AAH4N-BPabHwsZ.js +8 -0
  304. package/dist/gui/client/assets/timeline-definition-24CTP7MA-E4Y1lPBI.js +120 -0
  305. package/dist/gui/client/assets/treeView-Q6P3EWNA-DrY0uhTN.js +1 -0
  306. package/dist/gui/client/assets/treemap-WGGIJYW6-CVotnLHf.js +1 -0
  307. package/dist/gui/client/assets/vennDiagram-4TSXK5OY-DJNrLIOF.js +34 -0
  308. package/dist/gui/client/assets/wardley-WFR3VGLG-ClOpAp5S.js +1 -0
  309. package/dist/gui/client/assets/wardleyDiagram-VM6X3IG4-qhMoKOXc.js +78 -0
  310. package/dist/gui/client/assets/xychartDiagram-S5SC5T6Z-CTuXoo9R.js +7 -0
  311. package/dist/gui/client/index.html +6 -0
  312. package/dist/gui/ops-worker.js +167 -0
  313. package/dist/gui/reads-worker.js +473 -0
  314. package/dist/gui/server.js +9780 -0
  315. package/dist/gui-QJS7XQMV.js +16 -0
  316. package/dist/init-DV5B6HQG.js +354 -0
  317. package/dist/install-6C45YXFP.js +19 -0
  318. package/dist/install-O7NSRU2W.js +13 -0
  319. package/dist/interactive-OXGYZYAS.js +22381 -0
  320. package/dist/interop-J7UOBOSF.js +254 -0
  321. package/dist/inventory-OEGIL6PY.js +144 -0
  322. package/dist/library-B3UPGY4V.js +83 -0
  323. package/dist/library-MXQA5DLT.js +309 -0
  324. package/dist/library-ROZAMUIL.js +496 -0
  325. package/dist/library-import-2LTWOVBD.js +190 -0
  326. package/dist/library-inventory-LJ3XHLWO.js +60 -0
  327. package/dist/library-validation-DARHHUNW.js +46 -0
  328. package/dist/mcp-2GSPYQ54.js +28 -0
  329. package/dist/memory-J3STUUIK.js +537 -0
  330. package/dist/models-Y3GMFJ2V.js +314 -0
  331. package/dist/monitor-LHNH577J.js +811 -0
  332. package/dist/orchestrator-DTAPXULA.js +12117 -0
  333. package/dist/panes-A743ONZ5.js +103 -0
  334. package/dist/panes-CTNO57ZY.js +76 -0
  335. package/dist/paths-3SBYJQDP.js +68 -0
  336. package/dist/preload-OJBMAIXF.js +140 -0
  337. package/dist/providers-CMETPZNS.js +232 -0
  338. package/dist/registry-37T4U6X2.js +15 -0
  339. package/dist/reset-O7EUCYWO.js +346 -0
  340. package/dist/resources-FY6XYFN2.js +189 -0
  341. package/dist/run-H64MEVTA.js +1067 -0
  342. package/dist/run-script-PQ5NRU3X.js +42 -0
  343. package/dist/settings-SNIQNXCW.js +73 -0
  344. package/dist/settings-controls-X6GMCPVG.js +202 -0
  345. package/dist/share-CAFMMQLM.js +299 -0
  346. package/dist/skills-ERKQUC7L.js +114 -0
  347. package/dist/skills-eval-CQ23MYQK.js +1099 -0
  348. package/dist/skills-inventory-TVUYJDVN.js +142 -0
  349. package/dist/slash-commands-ROG3KIFJ.js +107 -0
  350. package/dist/startup-background-KDWCQMWT.js +247 -0
  351. package/dist/steer-KKYXJSH4.js +77 -0
  352. package/dist/support-M3RCUUEL.js +40 -0
  353. package/dist/system-ZDW44ZGX.js +142 -0
  354. package/dist/target-runtimes-PWA22WVW.js +73 -0
  355. package/dist/targets-AJWA6E7Z.js +1207 -0
  356. package/dist/tasks-6L2JJRC5.js +39 -0
  357. package/dist/terminal-lease-YFUSDPAD.js +432 -0
  358. package/dist/tools-5XJUABRD.js +30 -0
  359. package/dist/trace-LA5MVR4Y.js +527 -0
  360. package/dist/tree-sitter-TQW3Y52T.js +4673 -0
  361. package/dist/tui-primitives-IUCVWLH5.js +19 -0
  362. package/dist/uninstall-SAWGGXAB.js +448 -0
  363. package/dist/upgrade-HSNSVTZG.js +300 -0
  364. package/dist/usage-XSILDHKF.js +1083 -0
  365. package/dist/verifiers-ECA5GIHL.js +633 -0
  366. package/dist/verify-R6QQCCEB.js +31 -0
  367. package/dist/version-PLZYB5KW.js +22 -0
  368. package/dist/web-fetch-PVZNMBOB.js +803 -0
  369. package/dist/wiki-generate-RP22WP5K.js +647 -0
  370. package/dist/with-panes-W3PAZPRF.js +629 -0
  371. package/dist/worker/entry.js +324 -284
  372. package/dist/workspace-check-3764ZKC2.js +83 -0
  373. package/docs/README.md +26 -10
  374. package/docs/architecture/acp.md +179 -12
  375. package/docs/architecture/artifact-placement.md +1 -1
  376. package/docs/architecture/capacity-and-scheduling.md +7 -8
  377. package/docs/architecture/context-engine.md +350 -95
  378. package/docs/architecture/model-catalog.md +18 -11
  379. package/docs/architecture/observability.md +1 -1
  380. package/docs/architecture/pi-boundary.md +59 -6
  381. package/docs/architecture/prompt-envelope-and-tools.md +147 -39
  382. package/docs/architecture/provider-adapter-cookbook.md +2 -2
  383. package/docs/architecture/safety-model.md +18 -4
  384. package/docs/architecture/trace-store.md +2 -2
  385. package/docs/architecture/tui-design.md +41 -81
  386. package/docs/architecture/worker-dispatch-mechanics.md +9 -1
  387. package/docs/gui/README.md +69 -0
  388. package/docs/gui/boundary-doctrine.md +104 -0
  389. package/docs/gui/chat-rendering-spec.md +1440 -0
  390. package/docs/gui/cli-surface-routing.md +148 -0
  391. package/docs/gui/delivery-order.md +53 -0
  392. package/docs/gui/event-bus-coverage.md +103 -0
  393. package/docs/gui/inspector-presentation.md +71 -0
  394. package/docs/gui/parity/01-cli-surface.md +74 -0
  395. package/docs/gui/parity/02-slash-and-surfaces.md +110 -0
  396. package/docs/gui/parity/03-domains-and-plan.md +69 -0
  397. package/docs/gui/performance-baseline.md +76 -0
  398. package/docs/gui/settings-write-surface.md +267 -0
  399. package/docs/gui/workflow-coverage.md +64 -0
  400. package/docs/guide/built-in-agents.md +1 -1
  401. package/docs/guide/commands-and-modes.md +256 -99
  402. package/docs/guide/configuration-and-targets.md +485 -124
  403. package/docs/guide/configuration-reference.md +165 -82
  404. package/docs/guide/doctor.md +127 -0
  405. package/docs/guide/environment-variables.md +1 -1
  406. package/docs/guide/exit-codes-and-output.md +3 -1
  407. package/docs/guide/extensions-and-sharing.md +3 -14
  408. package/docs/guide/fleet-dispatch.md +231 -45
  409. package/docs/guide/glossary.md +1 -1
  410. package/docs/guide/installation-and-lifecycle.md +27 -16
  411. package/docs/guide/interop.md +2 -2
  412. package/docs/guide/proactive-memory.md +154 -68
  413. package/docs/guide/resource-library.md +4 -0
  414. package/docs/guide/skills-marketplace.md +8 -4
  415. package/docs/guide/slurm.md +88 -0
  416. package/docs/guide/tool-usage.md +134 -11
  417. package/docs/guide/troubleshooting.md +4 -2
  418. package/docs/process/battletest-2026-09-20-fixes.md +161 -0
  419. package/docs/process/configure-tree-proposal.md +637 -0
  420. package/docs/process/documentation-coverage.md +8 -0
  421. package/docs/process/documentation-guide.md +18 -1
  422. package/docs/process/eval-runner.md +58 -14
  423. package/docs/process/performance-methodology.md +11 -3
  424. package/docs/process/release-cut-checklist.md +29 -3
  425. package/docs/process/tool-audit-v0.4.9.md +3 -0
  426. package/examples/extensions/README.md +1 -3
  427. package/examples/extensions/lab-status/clio-coder-extension.json +1 -1
  428. package/examples/extensions/measurements/clio-coder-extension.json +1 -1
  429. package/library/registry.yaml +30 -5
  430. package/library/skills/git/fix-issue/SKILL.md +2 -1
  431. package/library/skills/git/fix-issue/plugin.json +1 -1
  432. package/library/skills/git/ship/SKILL.md +2 -1
  433. package/library/skills/git/ship/plugin.json +1 -1
  434. package/library/skills/meta/clio-coder-test/SKILL.md +5 -6
  435. package/library/skills/meta/clio-coder-test/evals.md +2 -2
  436. package/library/skills/meta/clio-coder-test/references/test-map.md +2 -2
  437. package/library/skills/registry.yaml +9 -5
  438. package/library/skills/research/slurm-jobs/SKILL.md +110 -0
  439. package/library/skills/research/slurm-jobs/evals.md +39 -0
  440. package/library/skills/research/slurm-jobs/plugin.json +23 -0
  441. package/library/skills/skill-marketplace.json +18 -2
  442. package/package.json +15 -10
  443. package/src/cli/args.ts +59 -0
  444. package/src/cli/argv.ts +7 -0
  445. package/src/cli/clio.ts +9 -1
  446. package/src/cli/configure-controls.ts +136 -0
  447. package/src/cli/configure-onboarding.ts +24 -7
  448. package/src/cli/configure-quick.ts +32 -7
  449. package/src/cli/configure-target.ts +11 -1
  450. package/src/cli/configure.ts +253 -256
  451. package/src/cli/docs-server.ts +290 -0
  452. package/src/cli/docs.ts +60 -15
  453. package/src/cli/doctor-deep.ts +126 -0
  454. package/src/cli/doctor-hpc.ts +122 -0
  455. package/src/cli/doctor-slurm.ts +130 -0
  456. package/src/cli/doctor-task-worktrees.ts +88 -0
  457. package/src/cli/doctor.ts +165 -16
  458. package/src/cli/fleet-verify.ts +3 -2
  459. package/src/cli/gui.ts +111 -0
  460. package/src/cli/index.ts +14 -4
  461. package/src/cli/library.ts +2 -7
  462. package/src/cli/modes/json-stream.ts +4 -2
  463. package/src/cli/modes/print.ts +252 -25
  464. package/src/cli/run.ts +199 -71
  465. package/src/cli/skills.ts +25 -7
  466. package/src/cli/targets.ts +87 -9
  467. package/src/cli/uninstall.ts +28 -8
  468. package/src/cli/usage.ts +2 -1
  469. package/src/cli/workspace-check.ts +71 -0
  470. package/src/core/bash-exec.ts +8 -2
  471. package/src/core/bus-events.ts +32 -3
  472. package/src/core/cache-telemetry.ts +3 -2
  473. package/src/core/compile-cache.ts +11 -1
  474. package/src/core/config.ts +59 -6
  475. package/src/core/defaults.ts +27 -5
  476. package/src/core/diagnostics.ts +25 -0
  477. package/src/core/event-bus.ts +2 -1
  478. package/src/core/gateway-routing.ts +10 -3
  479. package/src/core/git-commit-attribution.ts +2 -1
  480. package/src/core/naming-compat.ts +6 -4
  481. package/src/core/package-root.ts +0 -9
  482. package/src/core/path-canonical.ts +143 -24
  483. package/src/core/residency-target-key.ts +2 -6
  484. package/src/core/run-overrides.ts +1 -1
  485. package/src/core/settings-awareness.ts +108 -0
  486. package/src/core/settings-controls.ts +673 -0
  487. package/src/core/settings-navigation.ts +116 -0
  488. package/src/core/theme-token-hex.ts +19 -9
  489. package/src/core/turn-constraints.ts +52 -0
  490. package/src/domains/agents/builtins/scout.md +7 -17
  491. package/src/domains/agents/catalog.ts +5 -1
  492. package/src/domains/agents/extension.ts +2 -1
  493. package/src/domains/agents/registry.ts +4 -3
  494. package/src/domains/agents/result-contract.ts +132 -1
  495. package/src/domains/config/classify.ts +11 -7
  496. package/src/domains/config/extension.ts +5 -1
  497. package/src/domains/config/keybindings.ts +2 -2
  498. package/src/domains/context/codewiki/coordinator.ts +10 -0
  499. package/src/domains/context/worker/snapshot.ts +6 -3
  500. package/src/domains/dispatch/active-route-planner.ts +2 -0
  501. package/src/domains/dispatch/agent-candidates.ts +5 -1
  502. package/src/domains/dispatch/capability-match.ts +1 -1
  503. package/src/domains/dispatch/contract.ts +28 -0
  504. package/src/domains/dispatch/event-pump.ts +37 -3
  505. package/src/domains/dispatch/extension.ts +391 -48
  506. package/src/domains/dispatch/failure-classification.ts +37 -2
  507. package/src/domains/dispatch/receipt-integrity.ts +3 -0
  508. package/src/domains/dispatch/run-identity.ts +10 -3
  509. package/src/domains/dispatch/target-breaker.ts +163 -0
  510. package/src/domains/dispatch/types.ts +29 -2
  511. package/src/domains/dispatch/worker-model-loads.ts +66 -0
  512. package/src/domains/dispatch/worker-protocol.ts +20 -1
  513. package/src/domains/dispatch/worker-spawn.ts +28 -2
  514. package/src/domains/eval/artifacts/redact.ts +9 -0
  515. package/src/domains/eval/metrics/noop.ts +61 -0
  516. package/src/domains/eval/reports/junit.ts +5 -1
  517. package/src/domains/eval/reports/text.ts +7 -0
  518. package/src/domains/eval/runners/clio-run.ts +19 -8
  519. package/src/domains/eval/runners/external-command.ts +29 -4
  520. package/src/domains/eval/schema/adapter.ts +6 -2
  521. package/src/domains/eval/schema/suite.ts +2 -0
  522. package/src/domains/eval/schema/validate.ts +3 -0
  523. package/src/domains/eval/suites/run.ts +167 -26
  524. package/src/domains/evidence/detail.ts +3 -2
  525. package/src/domains/extensions/operator-runtime.ts +11 -4
  526. package/src/domains/gateway/mcp/client.ts +1 -1
  527. package/src/domains/lifecycle/doctor.ts +42 -26
  528. package/src/domains/lifecycle/migrations/2026-09-18-ollama-runtime-id.ts +38 -0
  529. package/src/domains/lifecycle/migrations/index.ts +2 -0
  530. package/src/domains/middleware/demo-guidance.ts +36 -0
  531. package/src/domains/middleware/dispatch-nudge.ts +1 -1
  532. package/src/domains/middleware/memory-intervention.ts +51 -4
  533. package/src/domains/middleware/runtime.ts +5 -4
  534. package/src/domains/middleware/skills-reminder.ts +29 -52
  535. package/src/domains/middleware/task-nudge.ts +1 -0
  536. package/src/domains/middleware/watchdog.ts +4 -0
  537. package/src/domains/observability/extension.ts +2 -1
  538. package/src/domains/observability/out-of-turn-usage.ts +3 -2
  539. package/src/domains/observability/projection.ts +3 -2
  540. package/src/domains/observability/worker-progress.ts +48 -0
  541. package/src/domains/prompts/compiler.ts +148 -52
  542. package/src/domains/prompts/contract.ts +3 -3
  543. package/src/domains/prompts/demo-guidance.ts +8 -0
  544. package/src/domains/prompts/extension.ts +12 -7
  545. package/src/domains/prompts/fragments/identity/clio.md +2 -1
  546. package/src/domains/prompts/fragments/identity/docs-routing.md +2 -0
  547. package/src/domains/prompts/fragments/identity/self-awareness.md +4 -0
  548. package/src/domains/prompts/fragments/operating/contract.md +16 -7
  549. package/src/domains/prompts/fragments/operating/delegation.md +29 -13
  550. package/src/domains/prompts/fragments/operating/skills.md +18 -10
  551. package/src/domains/prompts/fragments/operating/worker.md +2 -0
  552. package/src/domains/providers/cache-deployment.ts +45 -2
  553. package/src/domains/providers/contract.ts +52 -11
  554. package/src/domains/providers/extension.ts +230 -53
  555. package/src/domains/providers/model-discovery.ts +22 -8
  556. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +5 -7
  557. package/src/domains/providers/plugins.ts +3 -4
  558. package/src/domains/providers/probe/fingerprint.ts +2 -2
  559. package/src/domains/providers/probe/reasoning.ts +9 -16
  560. package/src/domains/providers/probe/tool-call.ts +236 -0
  561. package/src/domains/providers/registry.ts +51 -8
  562. package/src/domains/providers/runtime-resolution.ts +60 -12
  563. package/src/domains/providers/runtimes/boot-manifest.ts +1 -1
  564. package/src/domains/providers/runtimes/builtins.ts +2 -2
  565. package/src/domains/providers/runtimes/common/lmstudio-http.ts +57 -41
  566. package/src/domains/providers/runtimes/common/local-synth.ts +3 -1
  567. package/src/domains/providers/runtimes/common/ollama-model-ids.ts +11 -0
  568. package/src/domains/providers/runtimes/common/probe-helpers.ts +53 -0
  569. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +3 -1
  570. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +7 -13
  571. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +7 -17
  572. package/src/domains/providers/runtimes/local-native/llamacpp.ts +1 -0
  573. package/src/domains/providers/runtimes/local-native/ollama.ts +211 -0
  574. package/src/domains/providers/runtimes/protocol/litellm.ts +77 -65
  575. package/src/domains/providers/support.ts +1 -1
  576. package/src/domains/providers/types/local-model-quirks.ts +2 -3
  577. package/src/domains/providers/types/runtime-descriptor.ts +23 -3
  578. package/src/domains/providers/types/target-descriptor.ts +15 -3
  579. package/src/domains/resources/collision.ts +7 -2
  580. package/src/domains/resources/index.ts +1 -0
  581. package/src/domains/resources/library-actions.ts +4 -2
  582. package/src/domains/resources/library-inventory.ts +6 -2
  583. package/src/domains/resources/prompts/loader.ts +20 -7
  584. package/src/domains/resources/skills/availability.ts +56 -0
  585. package/src/domains/resources/skills/loader.ts +20 -9
  586. package/src/domains/safety/action-classifier.ts +282 -31
  587. package/src/domains/safety/audit.ts +2 -1
  588. package/src/domains/safety/autonomy.ts +54 -11
  589. package/src/domains/safety/decision-presentation.ts +17 -4
  590. package/src/domains/safety/finish-contract-registration.ts +25 -1
  591. package/src/domains/safety/finish-contract.ts +20 -5
  592. package/src/domains/safety/path-policy.ts +6 -2
  593. package/src/domains/safety/policy-engine.ts +168 -48
  594. package/src/domains/safety/protected-artifacts.ts +527 -16
  595. package/src/domains/safety/read-scope.ts +120 -0
  596. package/src/domains/safety/skill-authority.ts +52 -16
  597. package/src/domains/scheduling/cluster.ts +14 -3
  598. package/src/domains/scheduling/contract.ts +7 -0
  599. package/src/domains/scheduling/extension.ts +20 -9
  600. package/src/domains/scheduling/local-capacity.ts +160 -0
  601. package/src/domains/session/context-accounting.ts +44 -31
  602. package/src/domains/session/context-ledger.ts +10 -3
  603. package/src/domains/session/entries.ts +4 -0
  604. package/src/domains/session/history.ts +1 -1
  605. package/src/domains/session/prompt-cache.ts +1 -0
  606. package/src/domains/session/prompt-manifest.ts +3 -1
  607. package/src/domains/session/retry.ts +4 -6
  608. package/src/domains/session/task-board.ts +19 -4
  609. package/src/domains/session/tree/preview.ts +3 -2
  610. package/src/engine/acp/commands.ts +653 -0
  611. package/src/engine/acp/server.ts +639 -20
  612. package/src/engine/acp/tool-mediator.ts +30 -7
  613. package/src/engine/acp/types.ts +58 -0
  614. package/src/engine/agent.ts +55 -10
  615. package/src/engine/ai.ts +11 -2
  616. package/src/engine/api-registry.ts +5 -4
  617. package/src/engine/apis/degraded-inference.ts +243 -0
  618. package/src/engine/apis/llamacpp-residency.ts +50 -6
  619. package/src/engine/apis/lmstudio-residency.ts +3 -5
  620. package/src/engine/apis/lmstudio.ts +137 -31
  621. package/src/engine/apis/ollama-http.ts +118 -0
  622. package/src/engine/apis/ollama-native.ts +216 -97
  623. package/src/engine/apis/openai-completions.ts +191 -189
  624. package/src/engine/apis/output-budget.ts +3 -1
  625. package/src/engine/apis/residency-lock.ts +2 -1
  626. package/src/engine/apis/residency.ts +339 -89
  627. package/src/engine/apis/sampling-overrides.ts +23 -2
  628. package/src/engine/apis/types.ts +1 -2
  629. package/src/engine/claude/tool-safety.ts +30 -5
  630. package/src/engine/context.ts +13 -0
  631. package/src/engine/env-api-keys.ts +2 -1
  632. package/src/engine/gemma-channel-filter.ts +3 -2
  633. package/src/engine/instrumented-tui.ts +25 -0
  634. package/src/engine/loop-guard.ts +172 -6
  635. package/src/engine/pi-mono-names.ts +16 -0
  636. package/src/engine/prewarm.ts +44 -15
  637. package/src/engine/provider-payload.ts +52 -14
  638. package/src/engine/session.ts +4 -2
  639. package/src/engine/worker-events.ts +9 -1
  640. package/src/engine/worker-runtime.ts +269 -42
  641. package/src/engine/worker-tools.ts +8 -3
  642. package/src/entry/boot-options.ts +23 -0
  643. package/src/entry/orchestrator.ts +207 -36
  644. package/src/interactive/assistant-generation-timing.ts +52 -0
  645. package/src/interactive/chat-loop-messages.ts +4 -1
  646. package/src/interactive/chat-loop.ts +59 -9
  647. package/src/interactive/chat-panel.ts +10 -1
  648. package/src/interactive/clio-editor.ts +51 -79
  649. package/src/interactive/context-meter.ts +1 -0
  650. package/src/interactive/context-overlay.ts +21 -8
  651. package/src/interactive/cost-overlay.ts +1 -1
  652. package/src/interactive/dispatch-board.ts +39 -8
  653. package/src/interactive/editor-bash.ts +0 -34
  654. package/src/interactive/editor-rails.ts +43 -0
  655. package/src/interactive/editor-submit.ts +34 -2
  656. package/src/interactive/footer/dashboard.ts +67 -38
  657. package/src/interactive/footer/demo-hints.ts +40 -0
  658. package/src/interactive/footer/key-hints.ts +21 -0
  659. package/src/interactive/footer/notifications.ts +1 -1
  660. package/src/interactive/footer/pages.ts +486 -0
  661. package/src/interactive/footer/system-metrics.ts +147 -0
  662. package/src/interactive/footer/widgets.ts +158 -63
  663. package/src/interactive/footer-panel.ts +29 -7
  664. package/src/interactive/interactive-application.ts +109 -21
  665. package/src/interactive/interactive-event-projection.ts +6 -2
  666. package/src/interactive/interactive-presentation.ts +25 -29
  667. package/src/interactive/interactive-slash-runtime.ts +32 -18
  668. package/src/interactive/interactive-subscriptions.ts +25 -5
  669. package/src/interactive/interactive-tickers.ts +21 -5
  670. package/src/interactive/keybinding-manager.ts +9 -0
  671. package/src/interactive/overlay-frame.ts +29 -7
  672. package/src/interactive/overlay-lifecycle.ts +5 -3
  673. package/src/interactive/overlay-model-selectors.ts +4 -0
  674. package/src/interactive/overlay-permission-lifecycle.ts +6 -5
  675. package/src/interactive/overlays/ask-user.ts +103 -110
  676. package/src/interactive/overlays/help-reference.ts +1 -0
  677. package/src/interactive/overlays/message-picker.ts +3 -29
  678. package/src/interactive/overlays/session-selector.ts +3 -2
  679. package/src/interactive/overlays/settings-sections.ts +2 -30
  680. package/src/interactive/overlays/settings.ts +310 -607
  681. package/src/interactive/permission-hint.ts +3 -3
  682. package/src/interactive/permission-overlay.ts +45 -27
  683. package/src/interactive/renderers/doctor-report.ts +43 -0
  684. package/src/interactive/renderers/tool-execution.ts +87 -62
  685. package/src/interactive/renderers/worker-entry.ts +76 -3
  686. package/src/interactive/side-question.ts +3 -1
  687. package/src/interactive/slash-commands.ts +78 -23
  688. package/src/interactive/startup-background.ts +131 -0
  689. package/src/interactive/startup-diagnostics.ts +16 -0
  690. package/src/interactive/status/state-machine.ts +16 -3
  691. package/src/interactive/status/types.ts +2 -0
  692. package/src/interactive/status/verbs.ts +1 -1
  693. package/src/interactive/terminal-lease.ts +26 -22
  694. package/src/interactive/theme/components.ts +1 -1
  695. package/src/interactive/theme/rules.ts +1 -1
  696. package/src/interactive/theme/tokens.ts +16 -10
  697. package/src/interactive/transcript-detail.ts +4 -0
  698. package/src/interactive/turn-context.ts +56 -20
  699. package/src/interactive/turn-middleware.ts +57 -9
  700. package/src/interactive/turn-prewarm.ts +121 -18
  701. package/src/interactive/turn-recovery.ts +10 -8
  702. package/src/interactive/turn-runtime.ts +74 -29
  703. package/src/interactive/turn-state.ts +3 -0
  704. package/src/interactive/welcome-art.ts +36 -0
  705. package/src/interactive/welcome-dashboard.ts +209 -49
  706. package/src/interactive/worker-replay.ts +4 -0
  707. package/src/interactive/worker-stream.ts +17 -2
  708. package/src/tools/agent-tools.ts +22 -1
  709. package/src/tools/builtin-tool-catalog.ts +2 -2
  710. package/src/tools/codewiki/code-nav.ts +1 -1
  711. package/src/tools/codewiki/shared.ts +39 -1
  712. package/src/tools/compete-worktrees.ts +8 -91
  713. package/src/tools/context/docs-engine.ts +44 -12
  714. package/src/tools/context/index.ts +126 -22
  715. package/src/tools/context/library.ts +1 -1
  716. package/src/tools/context/surface.ts +12 -7
  717. package/src/tools/core-bootstrap.ts +3 -0
  718. package/src/tools/dispatch-runner.ts +18 -0
  719. package/src/tools/dispatch-schema.ts +187 -206
  720. package/src/tools/edit.ts +46 -42
  721. package/src/tools/file-mutation-queue.ts +25 -26
  722. package/src/tools/gateway/clio-context-surface.ts +1 -1
  723. package/src/tools/gateway/index.ts +7 -3
  724. package/src/tools/gateway/mcp-capabilities.ts +5 -3
  725. package/src/tools/grep.ts +14 -2
  726. package/src/tools/ls.ts +1 -4
  727. package/src/tools/monitor.ts +14 -1
  728. package/src/tools/observation.ts +1 -3
  729. package/src/tools/path-utils.ts +51 -18
  730. package/src/tools/process-lease.ts +99 -0
  731. package/src/tools/read.ts +1 -1
  732. package/src/tools/registry.ts +71 -9
  733. package/src/tools/task-worktree.ts +296 -17
  734. package/src/tools/tasks.ts +29 -7
  735. package/src/tools/worker-evidence.ts +60 -1
  736. package/src/tools/worktree-root.ts +252 -0
  737. package/src/tools/write.ts +34 -30
  738. package/src/worker/entry.ts +18 -1
  739. package/src/worker/protocol.ts +54 -1
  740. package/src/worker/spec-contract.ts +22 -2
  741. package/dist/acp-ZWZCPS2A.js +0 -130
  742. package/dist/agents-LYSOWZUE.js +0 -150
  743. package/dist/auth-WBQGKWQ5.js +0 -551
  744. package/dist/background-BUMOBAQN.js +0 -37
  745. package/dist/builtins-ODRJOEDI.js +0 -22
  746. package/dist/chunk-2DRRZ57Q.js +0 -571
  747. package/dist/chunk-2JBZYUPY.js +0 -105
  748. package/dist/chunk-2VBWFXYE.js +0 -198
  749. package/dist/chunk-2X2R3UTH.js +0 -1018
  750. package/dist/chunk-32KJPXAM.js +0 -75
  751. package/dist/chunk-37LW32LZ.js +0 -32
  752. package/dist/chunk-3A3CUMKA.js +0 -54
  753. package/dist/chunk-3AND2EFU.js +0 -215
  754. package/dist/chunk-3RDHGNU7.js +0 -647
  755. package/dist/chunk-3SUDBGEI.js +0 -1323
  756. package/dist/chunk-3TQN67I2.js +0 -396
  757. package/dist/chunk-3U4BL2EV.js +0 -103
  758. package/dist/chunk-3UQADNG2.js +0 -302
  759. package/dist/chunk-434LRQ6Z.js +0 -13441
  760. package/dist/chunk-4ATBOFRP.js +0 -7802
  761. package/dist/chunk-4DNL43EZ.js +0 -139
  762. package/dist/chunk-4HFJKRGZ.js +0 -5250
  763. package/dist/chunk-555E2WVV.js +0 -322
  764. package/dist/chunk-5GZICIYO.js +0 -462
  765. package/dist/chunk-5PHVPU4G.js +0 -160
  766. package/dist/chunk-5RTEFNBP.js +0 -197
  767. package/dist/chunk-64XJW7NT.js +0 -380
  768. package/dist/chunk-6TKOFFGE.js +0 -1058
  769. package/dist/chunk-6UJ7RDI7.js +0 -1143
  770. package/dist/chunk-7FBCRWVT.js +0 -1801
  771. package/dist/chunk-7JSOSVLP.js +0 -283
  772. package/dist/chunk-7N3OLLSL.js +0 -637
  773. package/dist/chunk-7QQRPB2E.js +0 -915
  774. package/dist/chunk-A6DULIMH.js +0 -986
  775. package/dist/chunk-AB3QXXBC.js +0 -123
  776. package/dist/chunk-ACCECAH4.js +0 -49
  777. package/dist/chunk-AM6CEP2K.js +0 -2120
  778. package/dist/chunk-AUHVBIDW.js +0 -19
  779. package/dist/chunk-AY4XE6GN.js +0 -665
  780. package/dist/chunk-BBA2TAWV.js +0 -667
  781. package/dist/chunk-BFPHMSK7.js +0 -169
  782. package/dist/chunk-BMNVVKEW.js +0 -604
  783. package/dist/chunk-CKK25WN3.js +0 -72
  784. package/dist/chunk-CTGZCEI6.js +0 -33
  785. package/dist/chunk-DIAJYJYG.js +0 -446
  786. package/dist/chunk-DVNAPPXU.js +0 -27
  787. package/dist/chunk-DXVMLM3Z.js +0 -92
  788. package/dist/chunk-E3LEPLQ2.js +0 -68
  789. package/dist/chunk-EHZRAB4U.js +0 -63
  790. package/dist/chunk-EM2DIQAJ.js +0 -179
  791. package/dist/chunk-EM2WNQS2.js +0 -93
  792. package/dist/chunk-ETF4ROKH.js +0 -595
  793. package/dist/chunk-F2YM3JY4.js +0 -22513
  794. package/dist/chunk-FEBQWHJT.js +0 -1023
  795. package/dist/chunk-FPS4R2RN.js +0 -1975
  796. package/dist/chunk-GD55RTIW.js +0 -33
  797. package/dist/chunk-GJDRMBDI.js +0 -573
  798. package/dist/chunk-GREYLTZ5.js +0 -658
  799. package/dist/chunk-H2WSCZZT.js +0 -238
  800. package/dist/chunk-H6IUCY6Q.js +0 -117
  801. package/dist/chunk-H72DCH3E.js +0 -563
  802. package/dist/chunk-H7TXJR23.js +0 -705
  803. package/dist/chunk-HBJQQTKM.js +0 -40
  804. package/dist/chunk-HCVKSGNZ.js +0 -990
  805. package/dist/chunk-HVCAY2FH.js +0 -67
  806. package/dist/chunk-I47EJPYL.js +0 -1377
  807. package/dist/chunk-IALGWTLO.js +0 -36
  808. package/dist/chunk-IALZJE37.js +0 -1710
  809. package/dist/chunk-IC7JXLOM.js +0 -1577
  810. package/dist/chunk-IOSVTTCD.js +0 -108
  811. package/dist/chunk-IPTPMLA6.js +0 -475
  812. package/dist/chunk-IZZI3SKQ.js +0 -128
  813. package/dist/chunk-JABWPKFY.js +0 -27
  814. package/dist/chunk-JIYWMQZ5.js +0 -175
  815. package/dist/chunk-JKU34ACI.js +0 -693
  816. package/dist/chunk-JOBN2YQQ.js +0 -176
  817. package/dist/chunk-JOL2QRLE.js +0 -152
  818. package/dist/chunk-JTR3VSV3.js +0 -44
  819. package/dist/chunk-JU6MAMRJ.js +0 -362
  820. package/dist/chunk-JURMQWVJ.js +0 -15
  821. package/dist/chunk-K2BLQC5E.js +0 -262
  822. package/dist/chunk-K3XN4LZ4.js +0 -402
  823. package/dist/chunk-KIVFXGBM.js +0 -688
  824. package/dist/chunk-KKRXONXG.js +0 -43
  825. package/dist/chunk-KOAHT3N2.js +0 -395
  826. package/dist/chunk-KP5BPXR3.js +0 -73
  827. package/dist/chunk-KQ6IDQIB.js +0 -39
  828. package/dist/chunk-KRJQG47M.js +0 -1289
  829. package/dist/chunk-KW6OJ7IY.js +0 -221
  830. package/dist/chunk-L3NBWLSN.js +0 -314
  831. package/dist/chunk-L4RUTLRL.js +0 -59
  832. package/dist/chunk-LGTVWPRN.js +0 -47
  833. package/dist/chunk-LSQW6KZO.js +0 -200
  834. package/dist/chunk-LTR5QCLS.js +0 -446
  835. package/dist/chunk-LWJYOHT3.js +0 -165
  836. package/dist/chunk-M6YLF66Z.js +0 -2687
  837. package/dist/chunk-MJ4QEJVT.js +0 -185
  838. package/dist/chunk-MO65K5CH.js +0 -1148
  839. package/dist/chunk-MTOZEQHL.js +0 -637
  840. package/dist/chunk-MZDPF35R.js +0 -45
  841. package/dist/chunk-MZKYVIWW.js +0 -188
  842. package/dist/chunk-NBPA5QM6.js +0 -386
  843. package/dist/chunk-NMBEW4PP.js +0 -688
  844. package/dist/chunk-NPLLK3HO.js +0 -3610
  845. package/dist/chunk-NSYGPIVW.js +0 -39
  846. package/dist/chunk-NXTV5OI5.js +0 -1020
  847. package/dist/chunk-NYDG4QP4.js +0 -689
  848. package/dist/chunk-OA2GDACN.js +0 -146
  849. package/dist/chunk-PJI57EC6.js +0 -236
  850. package/dist/chunk-PJJBUGMR.js +0 -4484
  851. package/dist/chunk-PNJE7JPS.js +0 -50
  852. package/dist/chunk-PP23PZEV.js +0 -1347
  853. package/dist/chunk-PPIFDSBK.js +0 -409
  854. package/dist/chunk-PTFISXQO.js +0 -319
  855. package/dist/chunk-QB33Z5S7.js +0 -1865
  856. package/dist/chunk-QGNII5VC.js +0 -110
  857. package/dist/chunk-QH3ZTUOA.js +0 -113
  858. package/dist/chunk-QI72X67S.js +0 -481
  859. package/dist/chunk-QJMRYTCX.js +0 -56
  860. package/dist/chunk-QKHZZFKH.js +0 -98
  861. package/dist/chunk-RDKX2PME.js +0 -66
  862. package/dist/chunk-RL7LJYN4.js +0 -66
  863. package/dist/chunk-RPMNIFRY.js +0 -65
  864. package/dist/chunk-RQROVOV3.js +0 -670
  865. package/dist/chunk-S34A7BSP.js +0 -97
  866. package/dist/chunk-SJETVJHX.js +0 -119
  867. package/dist/chunk-SJMNU4ZS.js +0 -634
  868. package/dist/chunk-SL2RDHKO.js +0 -19
  869. package/dist/chunk-SLLG2G44.js +0 -85
  870. package/dist/chunk-SQAZN2V3.js +0 -2744
  871. package/dist/chunk-SQBT46OF.js +0 -814
  872. package/dist/chunk-SRCEQKQS.js +0 -165
  873. package/dist/chunk-TCUOGIL2.js +0 -52
  874. package/dist/chunk-TIWPKCVO.js +0 -42
  875. package/dist/chunk-U44YYLVV.js +0 -1529
  876. package/dist/chunk-UIU7MGZ3.js +0 -486
  877. package/dist/chunk-USBBEKHW.js +0 -177
  878. package/dist/chunk-VHKTOLEW.js +0 -1416
  879. package/dist/chunk-VPWGADBG.js +0 -3151
  880. package/dist/chunk-VQD7NH7Z.js +0 -356
  881. package/dist/chunk-VWFCAK34.js +0 -697
  882. package/dist/chunk-W5RM7YAH.js +0 -78
  883. package/dist/chunk-W72LLZAV.js +0 -243
  884. package/dist/chunk-WGRDABW7.js +0 -207
  885. package/dist/chunk-WWRV5RJI.js +0 -165
  886. package/dist/chunk-XCUDZQLX.js +0 -195
  887. package/dist/chunk-XFLSL7BT.js +0 -386
  888. package/dist/chunk-XJZEDCNT.js +0 -391
  889. package/dist/chunk-XLLEL3K7.js +0 -709
  890. package/dist/chunk-XNZWWDC3.js +0 -686
  891. package/dist/chunk-XRECG65F.js +0 -308
  892. package/dist/chunk-XTQ7MEJG.js +0 -457
  893. package/dist/chunk-XW2UZICE.js +0 -372
  894. package/dist/chunk-Y3M2T5RO.js +0 -891
  895. package/dist/chunk-YGDMBK7O.js +0 -567
  896. package/dist/chunk-YJCCMYYT.js +0 -125
  897. package/dist/chunk-YPQOPFP7.js +0 -797
  898. package/dist/chunk-YQYINEJI.js +0 -132
  899. package/dist/chunk-ZF6CV4WZ.js +0 -5614
  900. package/dist/chunk-ZKJU55MX.js +0 -326
  901. package/dist/chunk-ZKQ63XZ5.js +0 -1196
  902. package/dist/chunk-ZKVMDNAN.js +0 -962
  903. package/dist/chunk-ZST3FRCV.js +0 -132
  904. package/dist/clio-JUDCLNHC.js +0 -26
  905. package/dist/clio-context-tools-FT672MNZ.js +0 -136
  906. package/dist/code-nav-7OVCTP2Z.js +0 -688
  907. package/dist/compile-cache-WJEPUZEJ.js +0 -16
  908. package/dist/components-OZXZMDWU.js +0 -674
  909. package/dist/config-P3ZQVF63.js +0 -275
  910. package/dist/config-graph-GKAOBAS5.js +0 -160
  911. package/dist/configure-25LRYZJG.js +0 -86
  912. package/dist/context-72VQV7JX.js +0 -73
  913. package/dist/context-COWRWXP3.js +0 -286
  914. package/dist/context-WB3D474G.js +0 -344
  915. package/dist/context-clear-Y4LYMWC6.js +0 -192
  916. package/dist/context-index-W6A4V7OC.js +0 -120
  917. package/dist/context-map-DKL3QT6D.js +0 -555
  918. package/dist/context-working-set-TMZYVC7A.js +0 -1560
  919. package/dist/data-tool-KMBWKKWR.js +0 -2987
  920. package/dist/detail-4GLROGY5.js +0 -123
  921. package/dist/dispatch-runner-TR3LBP5P.js +0 -2446
  922. package/dist/docs-ZK777W2G.js +0 -101
  923. package/dist/doctor-WC4OV2OB.js +0 -814
  924. package/dist/eval-FUNWJNUJ.js +0 -5050
  925. package/dist/eval-inventory-CX24K2JT.js +0 -260
  926. package/dist/evals-L73EBHSU.js +0 -104
  927. package/dist/evidence-AVJ2RTHX.js +0 -392
  928. package/dist/evidence-P4NZOAK7.js +0 -233
  929. package/dist/evidence-Y55WKYHH.js +0 -246
  930. package/dist/evolve-MAWKRYWF.js +0 -617
  931. package/dist/extensions-PYQH3H47.js +0 -308
  932. package/dist/fleet-M4H2QBWT.js +0 -268
  933. package/dist/fleet-ULBXXRDR.js +0 -923
  934. package/dist/fleet-commands-7NNC4JZU.js +0 -76
  935. package/dist/fleet-decisions-EHEY7KPU.js +0 -52
  936. package/dist/fleet-graph-LQ2AHZT3.js +0 -136
  937. package/dist/fleet-inspect-5IGBIIYZ.js +0 -312
  938. package/dist/fleet-new-RCKGSRDV.js +0 -48
  939. package/dist/fleet-preflight-UTTNOKMG.js +0 -27
  940. package/dist/fleet-validate-YGILJKA6.js +0 -91
  941. package/dist/fleet-verify-AUWTCDKR.js +0 -210
  942. package/dist/fleet-view-TGUFCY5A.js +0 -127
  943. package/dist/init-GFN2Z7NF.js +0 -333
  944. package/dist/install-3RZDDP23.js +0 -13
  945. package/dist/install-6PIF6F6W.js +0 -19
  946. package/dist/interop-EF5JUWWK.js +0 -246
  947. package/dist/inventory-I6VJDDYF.js +0 -127
  948. package/dist/library-3J5IO2OJ.js +0 -75
  949. package/dist/library-IJTOFTDS.js +0 -307
  950. package/dist/library-Z3KZSHPE.js +0 -492
  951. package/dist/library-import-IMKFLDHX.js +0 -183
  952. package/dist/library-inventory-CQP5D6GU.js +0 -56
  953. package/dist/library-validation-33UTX7AI.js +0 -42
  954. package/dist/mcp-5FWZKUS6.js +0 -26
  955. package/dist/memory-36CWN67Y.js +0 -520
  956. package/dist/models-KQ6PQJJQ.js +0 -302
  957. package/dist/monitor-XX6ZD6KC.js +0 -785
  958. package/dist/orchestrator-SK6HDAOP.js +0 -42067
  959. package/dist/panes-L27QRXUH.js +0 -74
  960. package/dist/panes-LXZIWNOZ.js +0 -103
  961. package/dist/paths-7DJDU4P4.js +0 -67
  962. package/dist/preload-K2TDYI4Y.js +0 -124
  963. package/dist/registry-DESGAXWK.js +0 -11
  964. package/dist/reset-73VU3XNT.js +0 -345
  965. package/dist/resources-3BYJYVYL.js +0 -181
  966. package/dist/run-AR7PY6GW.js +0 -896
  967. package/dist/run-script-H2KUDIII.js +0 -41
  968. package/dist/settings-3VMBMWID.js +0 -72
  969. package/dist/share-HVWH4FPF.js +0 -293
  970. package/dist/skills-5TYEY75Q.js +0 -100
  971. package/dist/skills-eval-CK3MD63Z.js +0 -1083
  972. package/dist/skills-inventory-KSFYG3I6.js +0 -138
  973. package/dist/slash-commands-DMVHML7P.js +0 -98
  974. package/dist/steer-XCD6V3EW.js +0 -77
  975. package/dist/support-JAZL6VBR.js +0 -38
  976. package/dist/system-3TDQRMZZ.js +0 -116
  977. package/dist/targets-EZKHAYRN.js +0 -1117
  978. package/dist/tasks-SNEFHWYW.js +0 -36
  979. package/dist/terminal-lease-BNLFA4OF.js +0 -419
  980. package/dist/tools-7IM6BDCE.js +0 -28
  981. package/dist/trace-C3MBGD4S.js +0 -524
  982. package/dist/tree-sitter-AQUUOSYM.js +0 -4673
  983. package/dist/tui-primitives-36BY2774.js +0 -18
  984. package/dist/uninstall-WWLOSZ42.js +0 -432
  985. package/dist/upgrade-ETK2JNSJ.js +0 -297
  986. package/dist/usage-S2HOB7BZ.js +0 -1065
  987. package/dist/verifiers-QDTEVH7R.js +0 -632
  988. package/dist/verify-SUKUK6XM.js +0 -31
  989. package/dist/version-RFPKO6T7.js +0 -21
  990. package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +0 -1
  991. package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +0 -1
  992. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +0 -36
  993. package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +0 -129
  994. package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +0 -38
  995. package/dist/web/client/assets/channel-c4EeUUqA.js +0 -1
  996. package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +0 -62
  997. package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +0 -2
  998. package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +0 -125
  999. package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +0 -1
  1000. package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +0 -72
  1001. package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +0 -1
  1002. package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +0 -231
  1003. package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +0 -1
  1004. package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +0 -10
  1005. package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +0 -1
  1006. package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +0 -1
  1007. package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +0 -1
  1008. package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +0 -168
  1009. package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +0 -88
  1010. package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +0 -206
  1011. package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +0 -1
  1012. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +0 -1
  1013. package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +0 -1
  1014. package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +0 -62
  1015. package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +0 -4
  1016. package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +0 -30
  1017. package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +0 -41
  1018. package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +0 -3
  1019. package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +0 -24
  1020. package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +0 -24
  1021. package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +0 -1
  1022. package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +0 -99
  1023. package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +0 -1
  1024. package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +0 -1
  1025. package/dist/web/client/assets/framework-YGoR34M4.js +0 -9
  1026. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +0 -292
  1027. package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +0 -1
  1028. package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +0 -106
  1029. package/dist/web/client/assets/index-CVcy0FAn.js +0 -75
  1030. package/dist/web/client/assets/index-Dsi52apB.css +0 -1
  1031. package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +0 -1
  1032. package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +0 -2
  1033. package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +0 -70
  1034. package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +0 -139
  1035. package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +0 -89
  1036. package/dist/web/client/assets/line-BIDAcEtX.js +0 -1
  1037. package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +0 -7
  1038. package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +0 -44
  1039. package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +0 -96
  1040. package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +0 -1
  1041. package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +0 -1
  1042. package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +0 -1
  1043. package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +0 -39
  1044. package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +0 -7
  1045. package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +0 -1
  1046. package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +0 -1
  1047. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +0 -1
  1048. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +0 -1
  1049. package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +0 -1
  1050. package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +0 -1
  1051. package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +0 -84
  1052. package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +0 -40
  1053. package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +0 -162
  1054. package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +0 -1
  1055. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +0 -1
  1056. package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +0 -1
  1057. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +0 -8
  1058. package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +0 -120
  1059. package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +0 -1
  1060. package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +0 -1
  1061. package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +0 -34
  1062. package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +0 -1
  1063. package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +0 -78
  1064. package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +0 -7
  1065. package/dist/web/client/index.html +0 -6
  1066. package/dist/web/ops-worker.js +0 -37
  1067. package/dist/web/reads-worker.js +0 -1726
  1068. package/dist/web/server.js +0 -8499
  1069. package/dist/web-EMGUGGEI.js +0 -13
  1070. package/dist/web-fetch-6BRRVQON.js +0 -805
  1071. package/dist/wiki-generate-XHSJTDOP.js +0 -627
  1072. package/dist/with-panes-Z6BTEHMZ.js +0 -628
  1073. package/evals/README.md +0 -9
  1074. package/evals/behavioral-corpus-grader.mjs +0 -236
  1075. package/evals/behavioral-machinery-baseline.json +0 -2276
  1076. package/evals/behavioral-machinery-driver.ts +0 -250
  1077. package/evals/behavioral-machinery-support.ts +0 -254
  1078. package/evals/behavioral-machinery.yaml +0 -614
  1079. package/evals/behavioral-model-negative-control.yaml +0 -69
  1080. package/evals/behavioral-model.yaml +0 -482
  1081. package/evals/fixtures/behavioral-facts.txt +0 -3
  1082. package/evals/fixtures/behavioral-main.ts +0 -7
  1083. package/evals/fixtures/decoy/note.txt +0 -2
  1084. package/evals/fixtures/docs-retrieval.json +0 -102
  1085. package/evals/fixtures/private/credentials.txt +0 -1
  1086. package/evals/fixtures/scalar-decision.json +0 -17
  1087. package/evals/fixtures/scout-citation-pipeline.json +0 -55
  1088. package/evals/fixtures/source-explanation.json +0 -74
  1089. package/evals/fixtures/tool-arguments.json +0 -18
  1090. package/evals/fixtures/tool-surface/read.txt +0 -4
  1091. package/evals/fixtures/tool-surface/subdir/keep.txt +0 -1
  1092. package/evals/no-edit-memory-grader.mjs +0 -149
  1093. package/evals/scalar-decision-grader.py +0 -41
  1094. package/evals/scalar-decision-machinery.ts +0 -145
  1095. package/evals/source-explanation-grader.mjs +0 -118
  1096. package/evals/tool-surface-grader.mjs +0 -53
  1097. package/evals/tool-surface-model.yaml +0 -274
  1098. package/evals/tracked-metrics-baseline.yaml +0 -229
  1099. package/evals/tracked-metrics-grader.mjs +0 -129
  1100. package/src/cli/web.ts +0 -79
  1101. package/src/domains/providers/runtimes/local-native/ollama-native.ts +0 -122
  1102. /package/dist/assets/{web-notices → gui-notices}/@hono__node-server-LICENSE +0 -0
  1103. /package/dist/assets/{web-notices → gui-notices}/hono-LICENSE +0 -0
  1104. /package/dist/{web → gui}/client/THIRD_PARTY_LICENSES.md +0 -0
  1105. /package/dist/{web → gui}/client/assets/arc-Pry-7G1_.js +0 -0
  1106. /package/dist/{web → gui}/client/assets/array-BifhSqXX.js +0 -0
  1107. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
  1108. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
  1109. /package/dist/{web → gui}/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
  1110. /package/dist/{web → gui}/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
  1111. /package/dist/{web → gui}/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -0
  1112. /package/dist/{web → gui}/client/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -0
  1113. /package/dist/{web → gui}/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -0
  1114. /package/dist/{web → gui}/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
  1115. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
  1116. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
  1117. /package/dist/{web → gui}/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +0 -0
  1118. /package/dist/{web → gui}/client/assets/cytoscape.esm-c2aL46s-.js +0 -0
  1119. /package/dist/{web → gui}/client/assets/dagre-C-rnJpZF.js +0 -0
  1120. /package/dist/{web → gui}/client/assets/defaultLocale-BFoDCU3G.js +0 -0
  1121. /package/dist/{web → gui}/client/assets/dist-v5Q1xZ2K.js +0 -0
  1122. /package/dist/{web → gui}/client/assets/graphlib-DS17s2tU.js +0 -0
  1123. /package/dist/{web → gui}/client/assets/init-C-OQMol4.js +0 -0
  1124. /package/dist/{web → gui}/client/assets/katex-ZlcWpGUi.js +0 -0
  1125. /package/dist/{web → gui}/client/assets/linear-SzVmGSw4.js +0 -0
  1126. /package/dist/{web → gui}/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  1127. /package/dist/{web → gui}/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  1128. /package/dist/{web → gui}/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  1129. /package/dist/{web → gui}/client/assets/ordinal-BDEzSJ7C.js +0 -0
  1130. /package/dist/{web → gui}/client/assets/path-fybaL0A-.js +0 -0
  1131. /package/dist/{web → gui}/client/assets/prism-bash-D6zCJ74D.js +0 -0
  1132. /package/dist/{web → gui}/client/assets/prism-c-04YixN25.js +0 -0
  1133. /package/dist/{web → gui}/client/assets/prism-clike-DapgWyxx.js +0 -0
  1134. /package/dist/{web → gui}/client/assets/prism-core-BtsZdCS6.js +0 -0
  1135. /package/dist/{web → gui}/client/assets/prism-cpp-C-lJbC-6.js +0 -0
  1136. /package/dist/{web → gui}/client/assets/prism-css-CPgOzxXp.js +0 -0
  1137. /package/dist/{web → gui}/client/assets/prism-diff-BF8m0_mq.js +0 -0
  1138. /package/dist/{web → gui}/client/assets/prism-docker-DkT6yOFj.js +0 -0
  1139. /package/dist/{web → gui}/client/assets/prism-fortran-Be5x3y1V.js +0 -0
  1140. /package/dist/{web → gui}/client/assets/prism-go-C_8qAH5n.js +0 -0
  1141. /package/dist/{web → gui}/client/assets/prism-ini-BESK3y0r.js +0 -0
  1142. /package/dist/{web → gui}/client/assets/prism-javascript-BnO-swvr.js +0 -0
  1143. /package/dist/{web → gui}/client/assets/prism-json-Dp_-W-Hv.js +0 -0
  1144. /package/dist/{web → gui}/client/assets/prism-jsx-D-D0NWtC.js +0 -0
  1145. /package/dist/{web → gui}/client/assets/prism-julia-DIjOgiAV.js +0 -0
  1146. /package/dist/{web → gui}/client/assets/prism-latex-DNMbqcH_.js +0 -0
  1147. /package/dist/{web → gui}/client/assets/prism-makefile-CRKWLQ8l.js +0 -0
  1148. /package/dist/{web → gui}/client/assets/prism-markdown-C0FPJ1Iz.js +0 -0
  1149. /package/dist/{web → gui}/client/assets/prism-markup-Cp04rIa1.js +0 -0
  1150. /package/dist/{web → gui}/client/assets/prism-matlab-D-nk08al.js +0 -0
  1151. /package/dist/{web → gui}/client/assets/prism-python-CfiSVtM6.js +0 -0
  1152. /package/dist/{web → gui}/client/assets/prism-r-QmNGR8LX.js +0 -0
  1153. /package/dist/{web → gui}/client/assets/prism-rust-Bu9N8X3N.js +0 -0
  1154. /package/dist/{web → gui}/client/assets/prism-shell-session-Be4UuYoM.js +0 -0
  1155. /package/dist/{web → gui}/client/assets/prism-sql-CYhVDMEE.js +0 -0
  1156. /package/dist/{web → gui}/client/assets/prism-toml-DKb54GAT.js +0 -0
  1157. /package/dist/{web → gui}/client/assets/prism-tsx-p6J2Kc_4.js +0 -0
  1158. /package/dist/{web → gui}/client/assets/prism-typescript-BMqONzxf.js +0 -0
  1159. /package/dist/{web → gui}/client/assets/prism-yaml-C0JHu8gr.js +0 -0
  1160. /package/dist/{web → gui}/client/assets/purify.es-ChwZkWde.js +0 -0
  1161. /package/dist/{web → gui}/client/assets/rolldown-runtime-hePW80VL.js +0 -0
  1162. /package/dist/{web → gui}/client/assets/rough.esm-Dy-Kn_BL.js +0 -0
  1163. /package/dist/{web → gui}/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
  1164. /package/dist/{web → gui}/client/assets/src-B6xuSHsQ.js +0 -0
  1165. /package/dist/{web → gui}/client/clio-coder-logo.webp +0 -0
  1166. /package/dist/{web → gui}/client/icon-192.png +0 -0
  1167. /package/dist/{web → gui}/client/icon-512.png +0 -0
  1168. /package/dist/{web → gui}/client/manifest.webmanifest +0 -0
  1169. /package/dist/{web → gui}/client/offline.css +0 -0
  1170. /package/dist/{web → gui}/client/offline.html +0 -0
  1171. /package/dist/{web → gui}/client/offline.js +0 -0
  1172. /package/dist/{web → gui}/client/sw.js +0 -0
@@ -1,1196 +0,0 @@
1
- import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- createSafetyPolicyEngine
4
- } from "./chunk-IC7JXLOM.js";
5
- import {
6
- DEFAULT_MAX_BYTES,
7
- DEFAULT_MAX_LINES,
8
- truncateTail
9
- } from "./chunk-GHXGMFQ5.js";
10
- import {
11
- formatSize
12
- } from "./chunk-KECNXMDE.js";
13
- import {
14
- INSTRUCTION_SHAPED_WARNING
15
- } from "./chunk-WXA2CFJO.js";
16
- import {
17
- byteLength,
18
- truncateUtf8
19
- } from "./chunk-MYI32N4R.js";
20
- import {
21
- GUARDRAIL_DEFAULTS,
22
- resolveGuardrail
23
- } from "./chunk-C27U2TYG.js";
24
- import {
25
- createRedactionTally,
26
- redactSecretsText
27
- } from "./chunk-O3VV6IVK.js";
28
- import {
29
- clioStateDir
30
- } from "./chunk-CTTI7G3T.js";
31
- import {
32
- init_esm_shims
33
- } from "./chunk-ECBHH7LU.js";
34
-
35
- // src/tools/result-shaping.ts
36
- init_esm_shims();
37
- import { createHash as createHash2 } from "node:crypto";
38
- import { mkdirSync, readdirSync, rmdirSync, rmSync, statSync, writeFileSync } from "node:fs";
39
- import { isAbsolute, join, relative, resolve } from "node:path";
40
-
41
- // src/tools/result-disposition.ts
42
- init_esm_shims();
43
- import { createHash } from "node:crypto";
44
- var TOOL_RESULT_DIGEST_MAX_BYTES = 240;
45
- var ESSENTIAL_DETAIL_KEYS = /* @__PURE__ */ new Set([
46
- "aborted",
47
- "continuation",
48
- "continuationHint",
49
- "decision",
50
- "error",
51
- "errors",
52
- "evidence",
53
- "exitCode",
54
- "exitStatus",
55
- "outputBytes",
56
- "outputCapped",
57
- "next",
58
- "outcome",
59
- "safety",
60
- "safetyDecision",
61
- "status",
62
- "signal",
63
- "terminate",
64
- "timedOut",
65
- "retainedBytes",
66
- "stderrBytes",
67
- "stdoutBytes"
68
- ]);
69
- function positiveByteCap(value, fallback) {
70
- return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback;
71
- }
72
- function normalizeToolResultDisposition(spec, hardMaxBytes, requested = spec.metadata?.resultDisposition) {
73
- const declared = requested;
74
- if (declared === void 0) return null;
75
- const hardCap = positiveByteCap(hardMaxBytes, 1);
76
- const presentationCap = Math.min(positiveByteCap(declared.presentation.maxBytes, hardCap), hardCap);
77
- const contextCap = Math.min(positiveByteCap(declared.context.maxBytes, hardCap), hardCap);
78
- return {
79
- presentation: {
80
- foldDefault: declared.presentation.foldDefault,
81
- showDiffWhenFolded: declared.presentation.showDiffWhenFolded,
82
- failureExcerpt: declared.presentation.failureExcerpt,
83
- maxBytes: presentationCap,
84
- ...declared.presentation.overflow === void 0 ? {} : { overflow: declared.presentation.overflow }
85
- },
86
- context: { ...declared.context, maxBytes: contextCap },
87
- ...declared.fallback === void 0 ? {} : { fallback: declared.fallback }
88
- };
89
- }
90
- function isRecord(value) {
91
- return value !== null && typeof value === "object" && !Array.isArray(value);
92
- }
93
- function stableValue(value, seen) {
94
- if (value === null || typeof value !== "object") return value;
95
- if (seen.has(value)) return "[circular]";
96
- seen.add(value);
97
- if (Array.isArray(value)) {
98
- const items = value.map((item) => stableValue(item, seen));
99
- seen.delete(value);
100
- return items;
101
- }
102
- const record = value;
103
- const out = {};
104
- for (const key of Object.keys(record).sort()) out[key] = stableValue(record[key], seen);
105
- seen.delete(value);
106
- return out;
107
- }
108
- function stableJson(value) {
109
- try {
110
- return JSON.stringify(stableValue(value, /* @__PURE__ */ new Set())) ?? "null";
111
- } catch {
112
- return JSON.stringify(String(value));
113
- }
114
- }
115
- function essentialFacts(details) {
116
- if (details === void 0) return null;
117
- const facts = {};
118
- for (const key of Object.keys(details).sort()) {
119
- if (ESSENTIAL_DETAIL_KEYS.has(key)) facts[key] = details[key];
120
- }
121
- const observation = isRecord(details.observation) ? details.observation : null;
122
- if (observation !== null && observation.next !== void 0) facts.next = observation.next;
123
- return Object.keys(facts).length > 0 ? facts : null;
124
- }
125
- function utf8Prefix(text, maxBytes) {
126
- if (maxBytes <= 0) return "";
127
- const buffer = Buffer.from(text, "utf8");
128
- if (buffer.byteLength <= maxBytes) return text;
129
- let end = Math.min(maxBytes, buffer.byteLength);
130
- while (end > 0 && end < buffer.byteLength && (buffer[end] ?? 0) >>> 6 === 2) end -= 1;
131
- return buffer.subarray(0, end).toString("utf8");
132
- }
133
- function utf8Suffix(text, maxBytes) {
134
- if (maxBytes <= 0) return "";
135
- const buffer = Buffer.from(text, "utf8");
136
- if (buffer.byteLength <= maxBytes) return text;
137
- let start = Math.max(0, buffer.byteLength - maxBytes);
138
- while (start < buffer.byteLength && (buffer[start] ?? 0) >>> 6 === 2) start += 1;
139
- return buffer.subarray(start).toString("utf8");
140
- }
141
- function capUtf8(text, maxBytes) {
142
- return byteLength(text) <= maxBytes ? text : utf8Prefix(text, maxBytes);
143
- }
144
- function capDigestUtf8(text, maxBytes) {
145
- if (byteLength(text) <= maxBytes) return text;
146
- const marker = "\u2026";
147
- const markerBytes = byteLength(marker);
148
- if (markerBytes >= maxBytes) return utf8Prefix(text, maxBytes);
149
- return `${utf8Prefix(text, maxBytes - markerBytes).trimEnd()}${marker}`;
150
- }
151
- function boundedToolResultExcerpt(text, maxBytes, bias = "head-tail") {
152
- if (maxBytes <= 0) return "";
153
- if (byteLength(text) <= maxBytes) return text;
154
- if (bias === "tail") return utf8Suffix(text, maxBytes);
155
- const marker = "\n[\u2026 omitted \u2026]\n";
156
- const markerBytes = byteLength(marker);
157
- if (markerBytes >= maxBytes) return utf8Prefix(text, maxBytes);
158
- const bodyBudget = maxBytes - markerBytes;
159
- const headBudget = Math.floor(bodyBudget / 2);
160
- const tailBudget = bodyBudget - headBudget;
161
- return `${utf8Prefix(text, headBudget)}${marker}${utf8Suffix(text, tailBudget)}`;
162
- }
163
- function sourceLineCount(text) {
164
- if (text.length === 0) return 0;
165
- return text.replace(/\r\n/gu, "\n").replace(/\r/gu, "\n").split("\n").length;
166
- }
167
- function summaryProvenance(text, algorithm = "sha256-head-tail-v1", redactions = 0) {
168
- return {
169
- producer: "code",
170
- algorithm,
171
- sourceSha256: createHash("sha256").update(text).digest("hex"),
172
- sourceLines: sourceLineCount(text),
173
- ...redactions > 0 ? { redactions } : {}
174
- };
175
- }
176
- var ERROR_LIKE_LINE = /(?:\b(?:abort(?:ed)?|assert(?:ion)?|error|exception|fail(?:ed|ure)?|fatal|killed|panic|signal|timed?\s*out|timeout)\b|\bnot ok\b|\bERR!\b)/iu;
177
- var SUMMARY_LINE_MAX_BYTES = 768;
178
- function summaryLine(line) {
179
- return boundedToolResultExcerpt(line, SUMMARY_LINE_MAX_BYTES);
180
- }
181
- function normalizeNewlines(text) {
182
- return text.replace(/\r\n/gu, "\n").replace(/\r/gu, "\n");
183
- }
184
- function contentLines(text) {
185
- return normalizeNewlines(text).split("\n").map((line) => line.trim()).filter((line) => line.length > 0);
186
- }
187
- function deterministicHeadTailSummary(text, redact = true) {
188
- const tally = createRedactionTally();
189
- const safeText = redact ? redactSecretsText(text, tally) : text;
190
- return { text: contentLines(safeText).join("\n"), redactions: tally.count, complete: tally.count === 0 };
191
- }
192
- function renderSummarySection(label, lines) {
193
- return lines.length === 0 ? "" : `[${label}]
194
- ${lines.map(summaryLine).join("\n")}`;
195
- }
196
- function deterministicDiagnosticSummary(text, maxBytes, redact = true) {
197
- if (maxBytes <= 0 || text.length === 0) return { text: "", redactions: 0, complete: text.length === 0 };
198
- const tally = createRedactionTally();
199
- const safeText = redact ? redactSecretsText(text, tally) : text;
200
- const lines = normalizeNewlines(safeText).split("\n");
201
- const nonempty = lines.map((line, index) => ({ line: line.trim(), index })).filter((entry) => entry.line.length > 0);
202
- if (nonempty.length === 0) return { text: "", redactions: tally.count, complete: tally.count === 0 };
203
- if (nonempty.length === 1) {
204
- const only = nonempty[0]?.line ?? "";
205
- return {
206
- text: boundedToolResultExcerpt(only, maxBytes),
207
- redactions: tally.count,
208
- complete: tally.count === 0 && byteLength(only) <= maxBytes
209
- };
210
- }
211
- const head = nonempty.slice(0, 4);
212
- const tail = nonempty.slice(Math.max(head.length, nonempty.length - 6));
213
- const edgeIndexes = new Set([...head, ...tail].map((entry) => entry.index));
214
- const diagnostics = nonempty.filter((entry) => !edgeIndexes.has(entry.index) && ERROR_LIKE_LINE.test(entry.line));
215
- const sections = [
216
- renderSummarySection(
217
- "diagnostic head",
218
- head.map((entry) => entry.line)
219
- ),
220
- renderSummarySection(
221
- "error-like lines",
222
- diagnostics.map((entry) => entry.line)
223
- ),
224
- renderSummarySection(
225
- "diagnostic tail",
226
- tail.map((entry) => entry.line)
227
- )
228
- ].filter((section) => section.length > 0);
229
- const selected = [...head, ...diagnostics, ...tail];
230
- const keepsEveryLine = selected.length === nonempty.length && selected.every((entry) => byteLength(entry.line) <= SUMMARY_LINE_MAX_BYTES);
231
- const rendered = keepsEveryLine ? selected.map((entry) => summaryLine(entry.line)).join("\n") : sections.join("\n");
232
- if (byteLength(rendered) <= maxBytes) {
233
- return { text: rendered, redactions: tally.count, complete: keepsEveryLine && tally.count === 0 };
234
- }
235
- const weights = diagnostics.length > 0 ? [0.25, 0.45, 0.3] : [0.4, 0, 0.6];
236
- const boundedSections = [];
237
- for (const [index, section] of sections.entries()) {
238
- const weight = diagnostics.length > 0 ? weights[index] ?? 0 : index === 0 ? 0.4 : 0.6;
239
- const budget = Math.floor(maxBytes * weight);
240
- if (budget > 0) boundedSections.push(boundedToolResultExcerpt(section ?? "", budget));
241
- }
242
- return { text: capUtf8(boundedSections.join("\n"), maxBytes), redactions: tally.count, complete: false };
243
- }
244
- function retrievalLine(offloadPath, followUpHint2) {
245
- return offloadPath === null ? `retrieve=${JSON.stringify(followUpHint2)}` : `retrieve=${JSON.stringify(`read ${offloadPath} with offset and limit`)}`;
246
- }
247
- function contextHeader(input, appliedMode, truncated, provenance) {
248
- const lines = [
249
- `[tool-result ${appliedMode}]`,
250
- `kind=${input.kind} capturedBytes=${input.capturedBytes} displayedBytes=${input.displayedBytes} truncated=${String(truncated)}`,
251
- retrievalLine(input.offloadPath, input.followUpHint),
252
- `followUp=${JSON.stringify(input.followUpHint)}`
253
- ];
254
- if (provenance !== void 0) {
255
- lines.push(`summary=code/${provenance.algorithm} sha256=${provenance.sourceSha256} lines=${provenance.sourceLines}`);
256
- }
257
- if (input.disposition.fallback !== void 0) {
258
- lines.push(`fallback=${input.disposition.fallback.reason} ${JSON.stringify(input.disposition.fallback.message)}`);
259
- }
260
- const facts = essentialFacts(input.details);
261
- if (facts !== null) lines.push(`facts=${stableJson(facts)}`);
262
- return lines.join("\n");
263
- }
264
- function joinHeaderAndBody(header, body, maxBytes, bias = "head-tail") {
265
- if (body.length === 0) return capUtf8(header, maxBytes);
266
- const separator = "\n";
267
- const headerBytes = byteLength(header);
268
- const separatorBytes = byteLength(separator);
269
- if (headerBytes + separatorBytes >= maxBytes) return capUtf8(header, maxBytes);
270
- const bodyBudget = maxBytes - headerBytes - separatorBytes;
271
- return `${header}${separator}${boundedToolResultExcerpt(body, bodyBudget, bias)}`;
272
- }
273
- function fullTrailer(input) {
274
- const facts = essentialFacts(input.details);
275
- const lines = [];
276
- if (facts !== null) lines.push(`facts=${stableJson(facts)}`);
277
- if (input.followUpHint.length > 0) lines.push(`followUp=${JSON.stringify(input.followUpHint)}`);
278
- return lines.length === 0 ? "" : `[tool-result metadata]
279
- ${lines.join("\n")}`;
280
- }
281
- var NUL = "\0";
282
- function stripNulForContext(text) {
283
- const parts = text.split(NUL);
284
- return parts.length === 1 ? { text, stripped: 0 } : { text: parts.join(""), stripped: parts.length - 1 };
285
- }
286
- function projectToolResultContext(input) {
287
- const requestedMode = input.disposition.context.mode;
288
- const maxBytes = input.disposition.context.maxBytes;
289
- const sanitized = stripNulForContext(input.text);
290
- const body = sanitized.text;
291
- const capturedTextIsComplete = input.capturedBytes <= byteLength(input.text) && sanitized.stripped === 0;
292
- if (requestedMode === "full") {
293
- const trailer = fullTrailer(input);
294
- const candidate = trailer.length === 0 ? body : `${body}
295
-
296
- ${trailer}`;
297
- if (capturedTextIsComplete && byteLength(candidate) <= maxBytes) {
298
- return { text: candidate, appliedMode: "full", truncated: false };
299
- }
300
- const header2 = contextHeader(input, "bounded", true);
301
- return {
302
- text: joinHeaderAndBody(header2, body, maxBytes, input.disposition.context.downgradeExcerpt),
303
- appliedMode: "bounded",
304
- truncated: true,
305
- downgrade: { from: "full", to: "bounded", reason: "hard-budget" }
306
- };
307
- }
308
- if (requestedMode === "metadata-only") {
309
- return {
310
- text: capUtf8(contextHeader(input, "metadata-only", input.capturedBytes > 0), maxBytes),
311
- appliedMode: "metadata-only",
312
- truncated: input.capturedBytes > 0
313
- };
314
- }
315
- if (requestedMode === "summary") {
316
- const diagnostic = input.disposition.context.strategy === "diagnostic";
317
- const algorithm = diagnostic ? "sha256-diagnostic-v1" : "sha256-head-tail-v1";
318
- const redact = input.disposition.context.redact !== false;
319
- const budgetHeader = contextHeader(input, "summary", true, summaryProvenance(input.text, algorithm));
320
- const bodyBudget = Math.max(0, maxBytes - byteLength(budgetHeader) - 1);
321
- const selected = diagnostic ? deterministicDiagnosticSummary(body, bodyBudget, redact) : deterministicHeadTailSummary(body, redact);
322
- const provenance = summaryProvenance(input.text, algorithm, selected.redactions);
323
- const completeHeader = contextHeader(input, "summary", false, provenance);
324
- const fits = byteLength(completeHeader) + 1 + byteLength(selected.text) <= maxBytes;
325
- const truncated = input.capturedBytes > 0 && !(capturedTextIsComplete && selected.complete && fits);
326
- const header2 = contextHeader(input, "summary", truncated, provenance);
327
- return {
328
- text: joinHeaderAndBody(header2, selected.text, maxBytes),
329
- appliedMode: "summary",
330
- truncated,
331
- summaryProvenance: provenance
332
- };
333
- }
334
- const header = contextHeader(input, "bounded", input.capturedBytes > maxBytes);
335
- const text = joinHeaderAndBody(header, body, maxBytes, input.disposition.context.excerpt);
336
- return {
337
- text,
338
- appliedMode: "bounded",
339
- truncated: byteLength(header) + 1 + byteLength(body) > maxBytes || !capturedTextIsComplete
340
- };
341
- }
342
- var DIGEST_FACT_KEYS = [
343
- "outcome",
344
- "exitCode",
345
- "timedOut",
346
- "aborted",
347
- "outputCapped",
348
- "signal",
349
- "status",
350
- "error",
351
- "decision",
352
- "next"
353
- ];
354
- function digestFactText(details) {
355
- if (details === void 0) return "";
356
- const facts = [];
357
- for (const key of DIGEST_FACT_KEYS) {
358
- if (details[key] !== void 0) facts.push(`${key}=${stableJson(details[key])}`);
359
- }
360
- return facts.join(" ");
361
- }
362
- function projectionBody(input, projection) {
363
- if (projection.appliedMode === "metadata-only") return "";
364
- if (projection.appliedMode === "full") {
365
- const trailer = fullTrailer(input);
366
- return trailer.length > 0 && projection.text.endsWith(`
367
-
368
- ${trailer}`) ? projection.text.slice(0, -(trailer.length + 2)) : projection.text;
369
- }
370
- const header = contextHeader(input, projection.appliedMode, projection.truncated, projection.summaryProvenance);
371
- const prefix = `${header}
372
- `;
373
- return projection.text.startsWith(prefix) ? projection.text.slice(prefix.length) : "";
374
- }
375
- function digestText(status, facts, body, redactions, maxBytes) {
376
- const tally = createRedactionTally();
377
- const safeStatus = redactSecretsText(status, tally);
378
- const safeFacts = redactSecretsText(facts, tally);
379
- const statusAndFacts = [safeStatus, safeFacts].filter((value) => value.length > 0).join(" ");
380
- const bodyBudget = Math.max(0, maxBytes - byteLength(statusAndFacts) - 2);
381
- const selected = deterministicDiagnosticSummary(body, bodyBudget, true);
382
- const candidate = [statusAndFacts, selected.text.replace(/\s+/gu, " ").trim()].filter((value) => value.length > 0).join("; ");
383
- return {
384
- text: capDigestUtf8(candidate, maxBytes),
385
- redactions: redactions + tally.count + selected.redactions
386
- };
387
- }
388
- function deterministicToolResultDigest(input, maxBytes = TOOL_RESULT_DIGEST_MAX_BYTES) {
389
- const projection = projectToolResultContext(input);
390
- const status = [
391
- `kind=${input.kind}`,
392
- `mode=${projection.appliedMode}`,
393
- `truncated=${String(projection.truncated)}`,
394
- ...projection.appliedMode === "metadata-only" || projection.truncated ? [`capturedBytes=${input.capturedBytes}`] : []
395
- ].join(" ");
396
- const digest = digestText(
397
- status,
398
- digestFactText(input.details),
399
- projectionBody(input, projection),
400
- projection.summaryProvenance?.redactions ?? 0,
401
- Math.max(1, Math.floor(maxBytes))
402
- );
403
- return {
404
- text: digest.text,
405
- provenance: {
406
- producer: "code",
407
- source: "canonical-result-disposition",
408
- algorithm: "redacted-context-digest-v1",
409
- contextMode: projection.appliedMode,
410
- ...projection.summaryProvenance === void 0 ? {} : { summaryAlgorithm: projection.summaryProvenance.algorithm },
411
- ...digest.redactions > 0 ? { redactions: digest.redactions } : {}
412
- }
413
- };
414
- }
415
- function legacyToolResultDigest(text, options) {
416
- const maxBytes = Math.max(1, Math.floor(options.maxBytes ?? TOOL_RESULT_DIGEST_MAX_BYTES));
417
- const fallback = options.outcome === "error" && text.trim().length === 0 ? "an unknown tool error" : text;
418
- const digest = digestText("", "", fallback, 0, maxBytes);
419
- return {
420
- text: digest.text,
421
- provenance: {
422
- producer: "code",
423
- source: "legacy-fallback",
424
- algorithm: "redacted-legacy-digest-v1",
425
- ...digest.redactions > 0 ? { redactions: digest.redactions } : {}
426
- }
427
- };
428
- }
429
- function sanitizeToolResultDigest(digest, maxBytes = TOOL_RESULT_DIGEST_MAX_BYTES) {
430
- const tally = createRedactionTally();
431
- const safe = redactSecretsText(digest.text, tally).replace(/\s+/gu, " ").trim();
432
- const redactions = (digest.provenance.redactions ?? 0) + tally.count;
433
- return {
434
- text: capDigestUtf8(safe, Math.max(1, Math.floor(maxBytes))),
435
- provenance: {
436
- ...digest.provenance,
437
- ...redactions > 0 ? { redactions } : {}
438
- }
439
- };
440
- }
441
- function toolResultContextText(result) {
442
- if (result.modelContext !== void 0) return result.modelContext;
443
- return result.kind === "ok" ? result.output : result.message;
444
- }
445
- function isDispositionedToolResultError(result) {
446
- if (!isRecord(result)) return false;
447
- const details = isRecord(result.details) ? result.details : null;
448
- const metadata = details !== null && isRecord(details.resultDisposition) ? details.resultDisposition : null;
449
- const kind = result.kind ?? details?.kind;
450
- return kind === "error" && metadata?.version === 1 && metadata.applications === 1;
451
- }
452
- function toolResultPresentationText(result) {
453
- if (!isRecord(result)) return null;
454
- const details = isRecord(result.details) ? result.details : null;
455
- const metadata = details !== null && isRecord(details.resultDisposition) ? details.resultDisposition : null;
456
- const presentation = metadata !== null && isRecord(metadata.presentation) ? metadata.presentation : null;
457
- return presentation !== null && typeof presentation.content === "string" ? presentation.content : null;
458
- }
459
- function toolResultPresentationPolicy(result) {
460
- if (!isRecord(result)) return null;
461
- const details = isRecord(result.details) ? result.details : null;
462
- const metadata = details !== null && isRecord(details.resultDisposition) ? details.resultDisposition : null;
463
- const presentation = metadata !== null && isRecord(metadata.presentation) ? metadata.presentation : null;
464
- if (presentation === null || presentation.foldDefault !== "folded" && presentation.foldDefault !== "expanded" || typeof presentation.showDiffWhenFolded !== "boolean" || typeof presentation.failureExcerpt !== "boolean") {
465
- return null;
466
- }
467
- return {
468
- foldDefault: presentation.foldDefault,
469
- showDiffWhenFolded: presentation.showDiffWhenFolded,
470
- failureExcerpt: presentation.failureExcerpt
471
- };
472
- }
473
-
474
- // src/tools/result-shaping.ts
475
- var DEFAULT_TOOL_RESULT_MAX_BYTES = DEFAULT_MAX_BYTES;
476
- var RESULT_TRUNCATION_MARKER = "\n[tool result truncated]";
477
- var RESULT_OFFLOAD_MAX_BYTES = 10 * 1024 * 1024;
478
- var TAIL_NOTICE_RESERVE_BYTES = 512;
479
- var TOOL_OFFLOAD_MAX_AGE_MS = 14 * 24 * 60 * 60 * 1e3;
480
- function mergeDetails(details, resultSize) {
481
- return { ...details ?? {}, resultSize };
482
- }
483
- function maxBytesFor(spec, context) {
484
- const configured = spec.metadata?.resultSizePolicy?.maxBytes;
485
- const policyMax = typeof configured === "number" && Number.isFinite(configured) && configured > 0 ? Math.floor(configured) : DEFAULT_TOOL_RESULT_MAX_BYTES;
486
- const sessionMax = context?.toolResultMaxBytes;
487
- return typeof sessionMax === "number" && Number.isFinite(sessionMax) && sessionMax > 0 ? Math.min(policyMax, Math.floor(sessionMax)) : policyMax;
488
- }
489
- function followUpHint(spec) {
490
- return spec.metadata?.resultSizePolicy?.followUpHint ?? "Use a narrower query, offset/limit arguments, or a more specific tool call to inspect the omitted content.";
491
- }
492
- function offloadMaxBytesFor(spec) {
493
- const configured = spec.metadata?.resultSizePolicy?.offloadMaxBytes;
494
- return typeof configured === "number" && Number.isFinite(configured) && configured > 0 ? Math.floor(configured) : RESULT_OFFLOAD_MAX_BYTES;
495
- }
496
- function toolResultDigestFor(spec, result, requestedDisposition, context) {
497
- const text = resultText(result);
498
- const disposition = normalizeToolResultDisposition(spec, maxBytesFor(spec, context), requestedDisposition);
499
- if (disposition === null) {
500
- const projected = shapeLegacyToolResult(spec, result, context);
501
- return legacyToolResultDigest(resultText(projected), { outcome: result.kind });
502
- }
503
- const capturedBytes = capturedBytesFor(result, text);
504
- return deterministicToolResultDigest({
505
- text,
506
- kind: result.kind,
507
- details: result.details,
508
- disposition,
509
- capturedBytes,
510
- displayedBytes: Math.min(capturedBytes, disposition.presentation.maxBytes),
511
- offloadPath: existingOffloadPath(result.details),
512
- followUpHint: followUpHint(spec)
513
- });
514
- }
515
- function detailsRecord(details, key) {
516
- const candidate = details?.[key];
517
- return candidate !== null && typeof candidate === "object" && !Array.isArray(candidate) ? candidate : null;
518
- }
519
- function existingOffloadPath(details) {
520
- const fromResultSize = detailsRecord(details, "resultSize")?.offloadPath;
521
- if (typeof fromResultSize === "string" && fromResultSize.length > 0) return fromResultSize;
522
- const fromObservation = detailsRecord(details, "observation")?.offloadPath;
523
- return typeof fromObservation === "string" && fromObservation.length > 0 ? fromObservation : null;
524
- }
525
- function existingDisposition(details) {
526
- const disposition = detailsRecord(details, "resultDisposition");
527
- return disposition?.version === 1 && disposition.applications === 1 ? disposition : null;
528
- }
529
- function safePathSegment(value) {
530
- const safe = value.trim().replace(/[^A-Za-z0-9._-]/g, "_").slice(0, 128);
531
- return safe.length > 0 ? safe : "unnamed";
532
- }
533
- function offloadBody(text, bytes, maxBytes) {
534
- if (bytes <= maxBytes) return text;
535
- const notice = `
536
- [clio-coder scratch output truncated at ${maxBytes} bytes; original size ${bytes} bytes]`;
537
- const prefixBudget = maxBytes - byteLength(notice);
538
- return `${truncateUtf8(text, Math.max(0, prefixBudget), "")}${notice}`;
539
- }
540
- function sweepExpiredToolOffloads(now = Date.now()) {
541
- const root = join(clioStateDir(), "scratch");
542
- const cutoff = now - TOOL_OFFLOAD_MAX_AGE_MS;
543
- let removed = 0;
544
- let skipped = 0;
545
- try {
546
- for (const session of readdirSync(root, { withFileTypes: true })) {
547
- if (!session.isDirectory()) continue;
548
- const sessionDir = join(root, session.name);
549
- for (const entry of readdirSync(sessionDir, { withFileTypes: true })) {
550
- if (!entry.isFile()) continue;
551
- const path = join(sessionDir, entry.name);
552
- try {
553
- if (statSync(path).mtimeMs >= cutoff) continue;
554
- rmSync(path, { force: true });
555
- removed += 1;
556
- } catch (error) {
557
- if (error?.code !== "ENOENT") skipped += 1;
558
- }
559
- }
560
- try {
561
- if (readdirSync(sessionDir).length === 0) rmdirSync(sessionDir);
562
- } catch (error) {
563
- if (error?.code !== "ENOENT") skipped += 1;
564
- }
565
- }
566
- } catch (error) {
567
- if (error?.code !== "ENOENT") skipped += 1;
568
- }
569
- return { removed, skipped };
570
- }
571
- function writeToolOffload(text, context, maxBytes = RESULT_OFFLOAD_MAX_BYTES, digest = createHash2("sha256").update(text).digest("hex")) {
572
- try {
573
- const bytes = byteLength(text);
574
- const sessionId = safePathSegment(context?.sessionId ?? "no-session");
575
- const dir = join(clioStateDir(), "scratch", sessionId);
576
- const path = join(dir, `${digest}.txt`);
577
- mkdirSync(dir, { recursive: true });
578
- writeFileSync(path, offloadBody(text, bytes, maxBytes), "utf8");
579
- return path;
580
- } catch {
581
- return null;
582
- }
583
- }
584
- var OFFLOAD_POINTER_NOTE = "overflow copy, read-only; not the workspace";
585
- function offloadPointer(offloadPath) {
586
- return `full: ${offloadPath} (${OFFLOAD_POINTER_NOTE})`;
587
- }
588
- function isSessionOffloadPath(filePath, sessionId) {
589
- const dir = join(clioStateDir(), "scratch", safePathSegment(sessionId ?? "no-session"));
590
- const rel = relative(dir, resolve(filePath));
591
- return rel.length > 0 && !rel.startsWith("..") && !isAbsolute(rel);
592
- }
593
- function bracketedHint(spec, offloadPath) {
594
- const hint = followUpHint(spec);
595
- if (offloadPath === null) return hint;
596
- return `${hint} ${offloadPointer(offloadPath)}; read it with offset and limit to inspect the rest.`;
597
- }
598
- function shapeJsonOverflow(spec, result, text, bytes, maxBytes, context, offloadMaxBytes) {
599
- const observation = detailsRecord(result.details, "observation");
600
- const offloadPath = writeToolOffload(text, context, offloadMaxBytes);
601
- const next = typeof observation?.next === "string" && observation.next.length > 0 ? observation.next : followUpHint(spec);
602
- const stub = JSON.stringify({
603
- error: `result exceeded ${maxBytes} bytes`,
604
- ...offloadPath !== null ? { offloadPath, offloadPathNote: OFFLOAD_POINTER_NOTE } : {},
605
- next
606
- });
607
- const resultSize = {
608
- bytes,
609
- shownBytes: byteLength(stub),
610
- maxBytes,
611
- truncated: true,
612
- policy: spec.metadata?.resultSizePolicy?.kind ?? "truncate",
613
- followUpHint: followUpHint(spec),
614
- ...offloadPath !== null ? { offloadPath } : {}
615
- };
616
- if (result.kind === "ok") {
617
- return { ...result, output: stub, details: mergeDetails(result.details, resultSize) };
618
- }
619
- return { ...result, message: stub, details: mergeDetails(result.details, resultSize) };
620
- }
621
- function shapeTailOverflow(spec, result, text, bytes, maxBytes, context, offloadMaxBytes) {
622
- const truncation = truncateTail(text, {
623
- maxLines: DEFAULT_MAX_LINES,
624
- maxBytes: Math.max(1, maxBytes - TAIL_NOTICE_RESERVE_BYTES)
625
- });
626
- const offloadPath = writeToolOffload(text, context, offloadMaxBytes);
627
- const startLine = truncation.totalLines - truncation.outputLines + 1;
628
- const scope = truncation.lastLinePartial ? `last ${formatSize(truncation.outputBytes)} of line ${truncation.totalLines} (line is large)` : `lines ${startLine}-${truncation.totalLines} of ${truncation.totalLines}`;
629
- const location = offloadPath === null ? "" : ` Full output saved to ${offloadPath}; ${OFFLOAD_POINTER_NOTE}; read it with offset/limit.`;
630
- const note = `[Output tail-truncated: showing ${scope} (${formatSize(maxBytes)} display limit).${location}]`;
631
- const resultSize = {
632
- bytes,
633
- shownBytes: truncation.outputBytes,
634
- maxBytes,
635
- truncated: true,
636
- policy: "tail",
637
- followUpHint: followUpHint(spec),
638
- ...offloadPath === null ? {} : { offloadPath }
639
- };
640
- const displayed = `${truncation.content}
641
-
642
- ${note}`;
643
- if (result.kind === "ok") return { ...result, output: displayed, details: mergeDetails(result.details, resultSize) };
644
- return { ...result, message: displayed, details: mergeDetails(result.details, resultSize) };
645
- }
646
- function shapeLegacyToolResult(spec, result, context, overflow = "head") {
647
- if (existingOffloadPath(result.details) !== null) return result;
648
- const maxBytes = maxBytesFor(spec, context);
649
- const offloadMaxBytes = offloadMaxBytesFor(spec);
650
- const text = result.kind === "ok" ? result.output : result.message;
651
- const bytes = byteLength(text);
652
- if (bytes <= maxBytes) return result;
653
- const observation = detailsRecord(result.details, "observation");
654
- if (observation?.format === "json") {
655
- return shapeJsonOverflow(spec, result, text, bytes, maxBytes, context, offloadMaxBytes);
656
- }
657
- if (overflow === "tail") {
658
- return shapeTailOverflow(spec, result, text, bytes, maxBytes, context, offloadMaxBytes);
659
- }
660
- const truncated = truncateUtf8(text, maxBytes, RESULT_TRUNCATION_MARKER);
661
- const offloadPath = writeToolOffload(text, context, offloadMaxBytes);
662
- const resultSize = {
663
- bytes,
664
- shownBytes: byteLength(truncated),
665
- maxBytes,
666
- truncated: true,
667
- policy: spec.metadata?.resultSizePolicy?.kind ?? "truncate",
668
- followUpHint: followUpHint(spec),
669
- ...offloadPath !== null ? { offloadPath } : {}
670
- };
671
- if (result.kind === "ok") {
672
- return {
673
- ...result,
674
- output: `${truncated}
675
-
676
- [${bracketedHint(spec, offloadPath)}]`,
677
- details: mergeDetails(result.details, resultSize)
678
- };
679
- }
680
- return {
681
- ...result,
682
- message: `${truncated}
683
-
684
- [${bracketedHint(spec, offloadPath)}]`,
685
- details: mergeDetails(result.details, resultSize)
686
- };
687
- }
688
- function specWithDisplayCap(spec, maxBytes) {
689
- const metadata = spec.metadata;
690
- if (metadata === void 0) return spec;
691
- return {
692
- ...spec,
693
- metadata: {
694
- ...metadata,
695
- resultSizePolicy: { ...metadata.resultSizePolicy, maxBytes }
696
- }
697
- };
698
- }
699
- function resultText(result) {
700
- return result.kind === "ok" ? result.output : result.message;
701
- }
702
- function withFallbackNotice(result, fallback) {
703
- const note = `
704
-
705
- [result disposition fell back to metadata-only: ${fallback.reason} (${fallback.message}); the model received facts and retrieval only]`;
706
- return result.kind === "ok" ? { ...result, output: `${result.output}${note}` } : { ...result, message: `${result.message}${note}` };
707
- }
708
- function numberField(record, key) {
709
- const value = record?.[key];
710
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
711
- }
712
- function capturedBytesFor(result, text) {
713
- const declared = numberField(detailsRecord(result.details, "resultSize"), "bytes");
714
- return Math.max(byteLength(text), declared ?? 0);
715
- }
716
- function resultWasTruncated(result) {
717
- return detailsRecord(result.details, "resultSize")?.truncated === true;
718
- }
719
- function withOffloadMetadata(result, offloadPath, capturedBytes, displayedBytes, maxBytes, hint) {
720
- const current = detailsRecord(result.details, "resultSize") ?? {};
721
- const resultSize = {
722
- bytes: numberField(current, "bytes") ?? capturedBytes,
723
- shownBytes: numberField(current, "shownBytes") ?? displayedBytes,
724
- maxBytes: numberField(current, "maxBytes") ?? maxBytes,
725
- truncated: current.truncated === true,
726
- policy: typeof current.policy === "string" ? current.policy : "disposition",
727
- followUpHint: typeof current.followUpHint === "string" ? current.followUpHint : hint,
728
- ...current,
729
- offloadPath
730
- };
731
- return { ...result, details: mergeDetails(result.details, resultSize) };
732
- }
733
- function shapeTextToolResultBody(spec, result, context, requestedDisposition) {
734
- if (existingDisposition(result.details) !== null) return result;
735
- const hardMaxBytes = maxBytesFor(spec, context);
736
- const disposition = normalizeToolResultDisposition(spec, hardMaxBytes, requestedDisposition);
737
- if (disposition === null) return shapeLegacyToolResult(spec, result, context);
738
- const capturedText = resultText(result);
739
- const capturedBytes = capturedBytesFor(result, capturedText);
740
- let displayed = shapeLegacyToolResult(
741
- specWithDisplayCap(spec, disposition.presentation.maxBytes),
742
- result,
743
- context,
744
- disposition.presentation.overflow
745
- );
746
- if (disposition.fallback !== void 0) displayed = withFallbackNotice(displayed, disposition.fallback);
747
- let displayedText = resultText(displayed);
748
- let displayedBytes = byteLength(displayedText);
749
- let offloadPath = existingOffloadPath(displayed.details);
750
- const projectionInput = {
751
- text: capturedText,
752
- kind: result.kind,
753
- details: displayed.details,
754
- disposition,
755
- capturedBytes,
756
- displayedBytes,
757
- offloadPath,
758
- followUpHint: followUpHint(spec)
759
- };
760
- let projection = projectToolResultContext(projectionInput);
761
- if (offloadPath === null && projection.truncated) {
762
- offloadPath = writeToolOffload(
763
- capturedText,
764
- context,
765
- offloadMaxBytesFor(spec),
766
- projection.summaryProvenance?.sourceSha256
767
- );
768
- if (offloadPath !== null) {
769
- displayed = withOffloadMetadata(
770
- displayed,
771
- offloadPath,
772
- capturedBytes,
773
- displayedBytes,
774
- disposition.presentation.maxBytes,
775
- followUpHint(spec)
776
- );
777
- displayedText = resultText(displayed);
778
- displayedBytes = byteLength(displayedText);
779
- projection = projectToolResultContext({
780
- ...projectionInput,
781
- details: displayed.details,
782
- displayedBytes,
783
- offloadPath
784
- });
785
- }
786
- }
787
- const metadata = {
788
- version: 1,
789
- applications: 1,
790
- presentation: { ...disposition.presentation, content: displayedText },
791
- context: {
792
- requestedMode: disposition.context.mode,
793
- appliedMode: projection.appliedMode,
794
- maxBytes: disposition.context.maxBytes,
795
- ...disposition.context.mode === "bounded" && disposition.context.excerpt !== void 0 ? { excerpt: disposition.context.excerpt } : {},
796
- ...disposition.context.mode === "full" && disposition.context.downgradeExcerpt !== void 0 ? { excerpt: disposition.context.downgradeExcerpt } : {},
797
- ...disposition.context.mode === "summary" && disposition.context.strategy !== void 0 ? { summaryStrategy: disposition.context.strategy } : {}
798
- },
799
- capturedBytes,
800
- displayedBytes,
801
- contextBytes: byteLength(projection.text),
802
- presentationTruncated: resultWasTruncated(displayed),
803
- contextTruncated: projection.truncated,
804
- ...projection.downgrade === void 0 ? {} : { downgrade: projection.downgrade },
805
- ...offloadPath === null ? {} : { offloadPath },
806
- retrieval: offloadPath === null ? followUpHint(spec) : `read ${offloadPath} with offset and limit to retrieve omitted content`,
807
- ...projection.summaryProvenance === void 0 ? {} : { summaryProvenance: projection.summaryProvenance },
808
- ...disposition.fallback === void 0 ? {} : { fallback: disposition.fallback }
809
- };
810
- return {
811
- ...displayed,
812
- details: { ...displayed.details ?? {}, resultDisposition: metadata },
813
- modelContext: projection.text
814
- };
815
- }
816
- function shapeTextToolResult(spec, result, context, requestedDisposition) {
817
- const shaped = shapeTextToolResultBody(spec, result, context, requestedDisposition);
818
- const warning = `[middleware:warn] ${INSTRUCTION_SHAPED_WARNING}`;
819
- if (!resultText(result).includes(warning)) return shaped;
820
- const hardMaxBytes = maxBytesFor(spec, context);
821
- const disposition = normalizeToolResultDisposition(spec, hardMaxBytes, requestedDisposition);
822
- const preserve = (text, cap, tail) => {
823
- if (text.startsWith(warning) && byteLength(text) <= cap) return text;
824
- const prefix = `${warning}
825
-
826
- `;
827
- const remainder = text.split(warning).join("").trimStart();
828
- const allowance = Math.max(0, cap - byteLength(prefix));
829
- if (allowance === 0) return truncateUtf8(warning, cap, "");
830
- const body = tail ? truncateTail(remainder, { maxBytes: allowance, maxLines: Number.MAX_SAFE_INTEGER }).content : truncateUtf8(remainder, allowance, "");
831
- return prefix + body;
832
- };
833
- const output = preserve(
834
- resultText(shaped),
835
- Math.min(hardMaxBytes, disposition?.presentation.maxBytes ?? hardMaxBytes),
836
- disposition?.presentation.overflow === "tail"
837
- );
838
- const modelContext = shaped.modelContext === void 0 ? void 0 : preserve(
839
- shaped.modelContext,
840
- Math.min(hardMaxBytes, disposition?.context.maxBytes ?? hardMaxBytes),
841
- disposition?.context.mode === "bounded" && disposition.context.excerpt === "tail"
842
- );
843
- const previous = existingDisposition(shaped.details);
844
- const details = { ...shaped.details };
845
- if (previous !== null)
846
- details.resultDisposition = {
847
- ...previous,
848
- presentation: { ...previous.presentation, content: output },
849
- displayedBytes: byteLength(output),
850
- contextBytes: byteLength(modelContext ?? output),
851
- presentationTruncated: previous.presentationTruncated || byteLength(resultText(shaped)) > byteLength(output),
852
- contextTruncated: previous.contextTruncated || byteLength(shaped.modelContext ?? "") > byteLength(modelContext ?? "")
853
- };
854
- const size = detailsRecord(shaped.details, "resultSize");
855
- if (size !== null) details.resultSize = { ...size, shownBytes: byteLength(output) };
856
- return {
857
- ...shaped,
858
- ...shaped.kind === "ok" ? { output } : { message: output },
859
- ...modelContext === void 0 ? {} : { modelContext },
860
- details
861
- };
862
- }
863
- function shapeToolResult(spec, result, context, requestedDisposition) {
864
- if (result.kind !== "ok" || !result.images?.length)
865
- return shapeTextToolResult(spec, result, context, requestedDisposition);
866
- const hardMaxBytes = maxBytesFor(spec, context);
867
- const disposition = normalizeToolResultDisposition(spec, hardMaxBytes, requestedDisposition);
868
- const maxBytes = Math.min(hardMaxBytes, disposition?.context.maxBytes ?? hardMaxBytes);
869
- const images = [];
870
- let imageBytes = 0;
871
- for (const image of result.images) {
872
- const bytes = byteLength(image.data);
873
- if (context?.supportsImages === true && disposition?.context.mode !== "metadata-only" && bytes + imageBytes < maxBytes - 512) {
874
- images.push(image);
875
- imageBytes += bytes;
876
- }
877
- }
878
- const omitted = result.images.length - images.length;
879
- const notice = omitted > 0 ? `[${omitted} image(s) omitted: model capability, context policy, or tool result byte cap.]
880
- ` : "";
881
- const remaining = Math.max(1, maxBytes - imageBytes);
882
- const shaped = shapeTextToolResult(
883
- spec,
884
- { ...result, output: notice + result.output, images },
885
- { ...context, toolResultMaxBytes: remaining },
886
- requestedDisposition
887
- );
888
- if (shaped.kind !== "ok") return shaped;
889
- return {
890
- ...shaped,
891
- images,
892
- output: truncateUtf8(shaped.output, remaining, ""),
893
- ...shaped.modelContext === void 0 ? {} : { modelContext: truncateUtf8(shaped.modelContext, remaining, "") }
894
- };
895
- }
896
-
897
- // src/tools/observation.ts
898
- init_esm_shims();
899
- var OBSERVATION_POLICY_SLACK_BYTES = 2 * 1024;
900
- var OBSERVE_SELF_CAPS = {
901
- grepContent: 16 * 1024,
902
- grepFilesCount: 8 * 1024,
903
- find: 8 * 1024,
904
- ls: 8 * 1024,
905
- codeNav: 16 * 1024,
906
- contextDocs: 16 * 1024,
907
- contextSkills: 50 * 1024,
908
- contextWorkspace: 50 * 1024,
909
- // Library rows are metadata: name, owner, origin, availability, invocation.
910
- // A full page of 50 stays well inside this, and a smaller cap than the
911
- // skills catalog is what keeps a catalog read from crowding out the turn.
912
- contextLibrary: 16 * 1024
913
- };
914
- var DEFAULT_OBSERVATION_TURN_BUDGET_BYTES = GUARDRAIL_DEFAULTS.observationTurnBudgetBytes;
915
- var MIN_BUDGET_SLICE_BYTES = 1024;
916
- var BUDGET_TRACK_LIMIT = 256;
917
- var MAX_EXHAUSTED_NOTICES_PER_TURN = 3;
918
- var turnBudgets = /* @__PURE__ */ new Map();
919
- var MAX_CONTINUATION_CHARS = 200;
920
- function boundContinuation(next) {
921
- if (next === void 0 || next.length <= MAX_CONTINUATION_CHARS) return next;
922
- return `${Array.from(next).slice(0, MAX_CONTINUATION_CHARS).join("")}\u2026`;
923
- }
924
- function observationTurnBudgetLimit() {
925
- return Math.max(MIN_BUDGET_SLICE_BYTES, resolveGuardrail("observationTurnBudgetBytes"));
926
- }
927
- function budgetKey(options) {
928
- const turnId = options?.turnId?.trim();
929
- if (!turnId) return null;
930
- const sessionId = options?.sessionId?.trim() || "no-session";
931
- return `${sessionId}:${turnId}`;
932
- }
933
- function pruneBudgetMap() {
934
- while (turnBudgets.size > BUDGET_TRACK_LIMIT) {
935
- let oldestKey = null;
936
- let oldestSeen = Number.POSITIVE_INFINITY;
937
- for (const [key, state] of turnBudgets) {
938
- if (state.lastSeenAt >= oldestSeen) continue;
939
- oldestKey = key;
940
- oldestSeen = state.lastSeenAt;
941
- }
942
- if (oldestKey === null) break;
943
- turnBudgets.delete(oldestKey);
944
- }
945
- }
946
- function reserveObservation(selfCapBytes, options) {
947
- const key = budgetKey(options);
948
- if (key === null) {
949
- return {
950
- key,
951
- limitBytes: observationTurnBudgetLimit(),
952
- usedBeforeBytes: 0,
953
- selfCapBytes,
954
- callCapBytes: selfCapBytes,
955
- limited: false,
956
- exhausted: false,
957
- committed: false,
958
- settled: false
959
- };
960
- }
961
- const limitBytes = observationTurnBudgetLimit();
962
- const state = turnBudgets.get(key) ?? { usedBytes: 0, lastSeenAt: Date.now(), exhaustedStreak: 0 };
963
- state.lastSeenAt = Date.now();
964
- turnBudgets.set(key, state);
965
- pruneBudgetMap();
966
- const remaining = Math.max(0, limitBytes - state.usedBytes);
967
- if (remaining < MIN_BUDGET_SLICE_BYTES) {
968
- return {
969
- key,
970
- limitBytes,
971
- usedBeforeBytes: state.usedBytes,
972
- selfCapBytes,
973
- callCapBytes: 0,
974
- limited: true,
975
- exhausted: true,
976
- committed: false,
977
- settled: false
978
- };
979
- }
980
- state.exhaustedStreak = 0;
981
- const callCapBytes = Math.min(selfCapBytes, remaining);
982
- return {
983
- key,
984
- limitBytes,
985
- usedBeforeBytes: state.usedBytes,
986
- selfCapBytes,
987
- callCapBytes,
988
- limited: callCapBytes < selfCapBytes,
989
- exhausted: false,
990
- committed: false,
991
- settled: false
992
- };
993
- }
994
- function commitObservationReservation(reservation) {
995
- if (reservation.key === null || reservation.committed || reservation.settled) return;
996
- if (reservation.callCapBytes <= 0) return;
997
- reservation.committed = true;
998
- const state = turnBudgets.get(reservation.key) ?? {
999
- usedBytes: reservation.usedBeforeBytes,
1000
- lastSeenAt: Date.now(),
1001
- exhaustedStreak: 0
1002
- };
1003
- state.usedBytes += reservation.callCapBytes;
1004
- state.lastSeenAt = Date.now();
1005
- turnBudgets.set(reservation.key, state);
1006
- }
1007
- function releaseObservation(reservation) {
1008
- if (reservation.key === null || reservation.settled) return;
1009
- reservation.settled = true;
1010
- if (!reservation.committed) return;
1011
- const state = turnBudgets.get(reservation.key);
1012
- if (state === void 0) return;
1013
- state.usedBytes = Math.max(0, state.usedBytes - reservation.callCapBytes);
1014
- state.lastSeenAt = Date.now();
1015
- turnBudgets.set(reservation.key, state);
1016
- }
1017
- function recordSpentBytes(reservation, bytes) {
1018
- if (reservation.key === null || reservation.settled) return;
1019
- reservation.settled = true;
1020
- const committedBytes = reservation.committed ? reservation.callCapBytes : 0;
1021
- const state = turnBudgets.get(reservation.key) ?? {
1022
- usedBytes: reservation.usedBeforeBytes + committedBytes,
1023
- lastSeenAt: Date.now(),
1024
- exhaustedStreak: 0
1025
- };
1026
- state.usedBytes = Math.max(0, state.usedBytes + bytes - committedBytes);
1027
- state.lastSeenAt = Date.now();
1028
- turnBudgets.set(reservation.key, state);
1029
- }
1030
- function budgetDetails(reservation) {
1031
- if (reservation.key === null) return null;
1032
- return {
1033
- limitBytes: reservation.limitBytes,
1034
- usedBeforeBytes: reservation.usedBeforeBytes,
1035
- exhausted: reservation.exhausted
1036
- };
1037
- }
1038
- function bumpExhaustedStreak(key) {
1039
- if (key === null) return 1;
1040
- const state = turnBudgets.get(key);
1041
- if (state === void 0) return 1;
1042
- state.exhaustedStreak += 1;
1043
- state.lastSeenAt = Date.now();
1044
- turnBudgets.set(key, state);
1045
- return state.exhaustedStreak;
1046
- }
1047
- function observationBudgetExhausted(input) {
1048
- const { tool, unit, reservation, subject, hint } = input;
1049
- const streak = bumpExhaustedStreak(reservation.key);
1050
- const spent = `${formatSize(reservation.usedBeforeBytes)} already returned of ${formatSize(reservation.limitBytes)}`;
1051
- if (streak > MAX_EXHAUSTED_NOTICES_PER_TURN) {
1052
- const message = `observation budget exhausted for this turn before ${tool} ${subject}: ${spent}. This is the ${streak}th call to hit it, so no observation tool can return content until the next turn. Do not retry this call and do not substitute another one. Re-plan with what you already have: say what you found, name what is still unread, and propose the next step.`;
1053
- recordSpentBytes(reservation, byteLength(message));
1054
- return { kind: "error", message };
1055
- }
1056
- const output = `[observation budget exhausted for this turn before ${tool} ${subject}: ${spent}. ${hint}]`;
1057
- const shownBytes = byteLength(output);
1058
- recordSpentBytes(reservation, shownBytes);
1059
- const budget = budgetDetails(reservation);
1060
- const observation = {
1061
- tool,
1062
- unit,
1063
- shownCount: 0,
1064
- totalCount: null,
1065
- shownBytes,
1066
- // The notice message is the whole rendering here (the search never ran), so
1067
- // the full size is the message itself; keep totalBytes >= shownBytes.
1068
- totalBytes: shownBytes,
1069
- truncated: true,
1070
- format: "text",
1071
- ...budget !== null ? { budget } : {}
1072
- };
1073
- return { kind: "ok", output, details: { observation } };
1074
- }
1075
- function noticeLine(input, bodyBytes, totalBytes, offloadPath, next) {
1076
- const totalSegment = input.totalCount === null ? `${input.shownCount}+` : String(input.totalCount);
1077
- const parts = [
1078
- `${input.tool}: ${input.shownCount}/${totalSegment} ${input.unit} shown (${formatSize(bodyBytes)} of ${formatSize(totalBytes)})`
1079
- ];
1080
- if (offloadPath !== null) parts.push(offloadPointer(offloadPath));
1081
- if (next !== void 0 && next.length > 0) parts.push(`next: ${next}`);
1082
- return `[${parts.join(" | ")}]`;
1083
- }
1084
- function limitedBudgetNote(reservation) {
1085
- return `[Per-turn observation budget: ${formatSize(reservation.usedBeforeBytes)} already returned of ${formatSize(
1086
- reservation.limitBytes
1087
- )} before this call. Use narrower arguments or continue in a follow-up turn for more content.]`;
1088
- }
1089
- function jsonStubBudgetNote(reservation) {
1090
- return `per-turn observation budget nearly exhausted: ${formatSize(reservation.usedBeforeBytes)} of ${formatSize(reservation.limitBytes)} already returned this turn. Do not retry this call; answer from what you have gathered, or continue in a follow-up turn.`;
1091
- }
1092
- function finalizeObservation(input) {
1093
- const format = input.format ?? "text";
1094
- let output = input.output;
1095
- let truncated = input.truncated;
1096
- let shownCount = input.shownCount;
1097
- let offloadPath = null;
1098
- const bodyBytes = byteLength(output);
1099
- const totalBytes = input.totalBytes ?? byteLength(input.fullOutput ?? input.output);
1100
- const next = boundContinuation(input.next);
1101
- if (format === "json" && bodyBytes > input.reservation.callCapBytes) {
1102
- truncated = true;
1103
- shownCount = 0;
1104
- offloadPath = writeToolOffload(input.fullOutput ?? output, input.options);
1105
- const poolBound = input.reservation.limited;
1106
- output = JSON.stringify({
1107
- error: `result exceeded ${formatSize(input.reservation.callCapBytes)}`,
1108
- ...poolBound ? { budget: jsonStubBudgetNote(input.reservation) } : {},
1109
- ...offloadPath !== null ? { offloadPath } : {},
1110
- ...!poolBound && next !== void 0 && next.length > 0 ? { next } : {}
1111
- });
1112
- } else if (truncated && input.fullOutput !== void 0) {
1113
- offloadPath = writeToolOffload(input.fullOutput, input.options);
1114
- }
1115
- if (format === "text") {
1116
- if (truncated && input.omitNotice !== true)
1117
- output += `
1118
-
1119
- ${noticeLine(input, bodyBytes, totalBytes, offloadPath, next)}`;
1120
- if (input.reservation.limited && !input.reservation.exhausted) {
1121
- output += `
1122
-
1123
- ${limitedBudgetNote(input.reservation)}`;
1124
- }
1125
- }
1126
- if ((input.withheldPaths ?? 0) > 0 && format === "text")
1127
- output += `
1128
-
1129
- [${input.withheldPaths} protected paths withheld by zero-access policy]`;
1130
- const shownBytes = byteLength(output) + (input.images ?? []).reduce((bytes, image) => bytes + byteLength(image.data), 0);
1131
- recordSpentBytes(input.reservation, shownBytes);
1132
- const budget = budgetDetails(input.reservation);
1133
- const observation = {
1134
- tool: input.tool,
1135
- unit: input.unit,
1136
- shownCount,
1137
- totalCount: input.totalCount,
1138
- shownBytes,
1139
- // shownBytes counts the appended notice/limited-budget lines; totalBytes
1140
- // measured only the pre-notice rendering (and equals it when a count-limited
1141
- // tool like ls offloads nothing). Floor the full-rendering size at the bytes
1142
- // actually returned so the envelope invariant totalBytes >= shownBytes holds.
1143
- totalBytes: Math.max(totalBytes, shownBytes),
1144
- truncated,
1145
- format,
1146
- ...next !== void 0 && next.length > 0 ? { next } : {},
1147
- ...offloadPath !== null ? { offloadPath } : {},
1148
- ...budget !== null ? { budget } : {}
1149
- };
1150
- return {
1151
- kind: "ok",
1152
- output,
1153
- ...input.images?.length ? { images: input.images } : {},
1154
- details: { ...input.details ?? {}, observation }
1155
- };
1156
- }
1157
- function createObservationPathFilter(cwd = process.cwd(), allowsPath) {
1158
- const policy = allowsPath ? void 0 : createSafetyPolicyEngine({ cwd });
1159
- const allows = allowsPath ?? ((path) => policy?.evaluate({ tool: "read", args: { path } }).reasonCode !== "path-policy:zeroAccessPaths");
1160
- const withheld = /* @__PURE__ */ new Set();
1161
- return {
1162
- allows(path) {
1163
- if (allows(path)) return true;
1164
- withheld.add(path);
1165
- return false;
1166
- },
1167
- get withheldPaths() {
1168
- return withheld.size;
1169
- }
1170
- };
1171
- }
1172
-
1173
- export {
1174
- deterministicDiagnosticSummary,
1175
- legacyToolResultDigest,
1176
- sanitizeToolResultDigest,
1177
- toolResultContextText,
1178
- isDispositionedToolResultError,
1179
- toolResultPresentationText,
1180
- toolResultPresentationPolicy,
1181
- DEFAULT_TOOL_RESULT_MAX_BYTES,
1182
- toolResultDigestFor,
1183
- sweepExpiredToolOffloads,
1184
- writeToolOffload,
1185
- isSessionOffloadPath,
1186
- shapeToolResult,
1187
- OBSERVATION_POLICY_SLACK_BYTES,
1188
- OBSERVE_SELF_CAPS,
1189
- reserveObservation,
1190
- commitObservationReservation,
1191
- releaseObservation,
1192
- observationBudgetExhausted,
1193
- finalizeObservation,
1194
- createObservationPathFilter
1195
- };
1196
- //# sourceMappingURL=chunk-ZKQ63XZ5.js.map