@iowarp/clio-coder 0.4.9 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1172) hide show
  1. package/.claude-plugin/marketplace.json +11 -3
  2. package/CHANGELOG.md +153 -0
  3. package/CODE_OF_CONDUCT.md +10 -0
  4. package/CONTRIBUTING.md +208 -382
  5. package/NOTICE +8 -2
  6. package/README.md +199 -418
  7. package/ROADMAP.md +82 -0
  8. package/SECURITY.md +14 -11
  9. package/dist/acp-KS7ARGV6.js +132 -0
  10. package/dist/agents-YOGJ2YEJ.js +163 -0
  11. package/dist/assets/codewiki.json +1 -1
  12. package/dist/auth-CEDCO6O6.js +557 -0
  13. package/dist/background-YWTBPSQU.js +39 -0
  14. package/dist/builtins-GDYO4RTR.js +23 -0
  15. package/dist/chunk-27YTM2CV.js +175 -0
  16. package/dist/chunk-2AF6YC7Q.js +75 -0
  17. package/dist/chunk-2DTIWSAW.js +381 -0
  18. package/dist/chunk-2EMLKSCX.js +262 -0
  19. package/dist/chunk-2OJ3YZQP.js +665 -0
  20. package/dist/chunk-2VLYHHFT.js +35 -0
  21. package/dist/chunk-2WVPJF3Z.js +204 -0
  22. package/dist/chunk-33OASOS6.js +176 -0
  23. package/dist/chunk-3BD2LXYJ.js +19 -0
  24. package/dist/chunk-3JHUFKG7.js +30 -0
  25. package/dist/chunk-3JLTRPN7.js +711 -0
  26. package/dist/chunk-3LT34CAM.js +2796 -0
  27. package/dist/chunk-3O5JWP4L.js +1670 -0
  28. package/dist/chunk-3UW3KU4A.js +21 -0
  29. package/dist/chunk-4A6YRGV4.js +569 -0
  30. package/dist/chunk-4D2BRCZ3.js +67 -0
  31. package/dist/chunk-4SYHGVDE.js +668 -0
  32. package/dist/chunk-4VDHLCF5.js +66 -0
  33. package/dist/chunk-4WOOTKFD.js +637 -0
  34. package/dist/chunk-4WV4PI66.js +80 -0
  35. package/dist/chunk-53OXPRI6.js +195 -0
  36. package/dist/chunk-55RMDDFM.js +1347 -0
  37. package/dist/chunk-56XP4FJU.js +2025 -0
  38. package/dist/chunk-5B3RTYAK.js +123 -0
  39. package/dist/chunk-5CD243WE.js +45 -0
  40. package/dist/chunk-5JQR5B4D.js +709 -0
  41. package/dist/chunk-5KQEUIWM.js +597 -0
  42. package/dist/chunk-5LP5FNNR.js +915 -0
  43. package/dist/chunk-62UK7AGW.js +9344 -0
  44. package/dist/chunk-6CTHLZFB.js +563 -0
  45. package/dist/chunk-6EJYVCTN.js +23 -0
  46. package/dist/chunk-6OWUM2NC.js +12289 -0
  47. package/dist/chunk-6RJMYYIE.js +1023 -0
  48. package/dist/chunk-6W75D37F.js +643 -0
  49. package/dist/chunk-733ZBT5P.js +1721 -0
  50. package/dist/chunk-77DCC6JZ.js +3710 -0
  51. package/dist/chunk-7QXCO3AF.js +156 -0
  52. package/dist/chunk-7RET77VB.js +481 -0
  53. package/dist/chunk-A4MVRV4C.js +65 -0
  54. package/dist/chunk-ALJWT6O6.js +93 -0
  55. package/dist/chunk-AVSR2HKI.js +232 -0
  56. package/dist/chunk-B7GY6QER.js +42 -0
  57. package/dist/chunk-BFOSV5EZ.js +178 -0
  58. package/dist/chunk-BGOIM7NB.js +103 -0
  59. package/dist/chunk-BJH6WFIB.js +372 -0
  60. package/dist/chunk-BOBCCDJ6.js +1533 -0
  61. package/dist/chunk-BRCOSE7O.js +117 -0
  62. package/dist/chunk-BYFHHCFV.js +601 -0
  63. package/dist/chunk-C2CPOIH2.js +83 -0
  64. package/dist/chunk-C7AQTPCE.js +694 -0
  65. package/dist/chunk-CBAQPTDU.js +165 -0
  66. package/dist/chunk-CDQ2UC6W.js +125 -0
  67. package/dist/chunk-CN6SW5DC.js +177 -0
  68. package/dist/chunk-CRHPCPZP.js +132 -0
  69. package/dist/chunk-CTFPFW3H.js +44 -0
  70. package/dist/chunk-D3KWFOUT.js +103 -0
  71. package/dist/chunk-D65E25JG.js +185 -0
  72. package/dist/chunk-DCGHJQ2U.js +236 -0
  73. package/dist/chunk-DE2LU267.js +106 -0
  74. package/dist/chunk-DF6PI6GN.js +97 -0
  75. package/dist/chunk-DGC6X6XR.js +53 -0
  76. package/dist/chunk-DOUISWEE.js +526 -0
  77. package/dist/chunk-DR3TAEUA.js +188 -0
  78. package/dist/chunk-DVTBERFY.js +33 -0
  79. package/dist/chunk-DXSETN72.js +1051 -0
  80. package/dist/chunk-DZLR4UEH.js +128 -0
  81. package/dist/chunk-E6IPKW2E.js +77 -0
  82. package/dist/chunk-EG4ARXPC.js +139 -0
  83. package/dist/chunk-EKV4UBCM.js +652 -0
  84. package/dist/chunk-EOJPDNUP.js +1325 -0
  85. package/dist/chunk-EX57VVWW.js +4157 -0
  86. package/dist/chunk-EYTLV3W3.js +5937 -0
  87. package/dist/chunk-EZD2BXGP.js +475 -0
  88. package/dist/chunk-EZDCA34W.js +314 -0
  89. package/dist/chunk-FD2I4KBR.js +33 -0
  90. package/dist/chunk-FD3IAHQM.js +27 -0
  91. package/dist/chunk-FFYTC2KQ.js +416 -0
  92. package/dist/chunk-FGSQHUCK.js +110 -0
  93. package/dist/chunk-GCQFN7YI.js +32 -0
  94. package/dist/chunk-GGPF6LLE.js +38 -0
  95. package/dist/chunk-GGWI3OVM.js +215 -0
  96. package/dist/chunk-GLIQT7SU.js +172 -0
  97. package/dist/chunk-GN7QBEEI.js +95 -0
  98. package/dist/chunk-GRHOXDKB.js +1104 -0
  99. package/dist/chunk-HMN2C6YL.js +54 -0
  100. package/dist/chunk-HOEDA42N.js +310 -0
  101. package/dist/chunk-HOYZUKG7.js +192 -0
  102. package/dist/chunk-HQVN7G4F.js +1021 -0
  103. package/dist/chunk-HSQQFDB3.js +519 -0
  104. package/dist/chunk-I4ELN5BX.js +47 -0
  105. package/dist/chunk-I4Y4WKZR.js +386 -0
  106. package/dist/chunk-IFPDAD7R.js +797 -0
  107. package/dist/chunk-IN7DGBVS.js +582 -0
  108. package/dist/chunk-ISHUS7HC.js +396 -0
  109. package/dist/chunk-JPXLJSGR.js +191 -0
  110. package/dist/chunk-JQCLXSFI.js +69 -0
  111. package/dist/chunk-KBUTSJSR.js +61 -0
  112. package/dist/chunk-KW5HXKLJ.js +56 -0
  113. package/dist/chunk-L4APUGCT.js +139 -0
  114. package/dist/chunk-L7G7K4I2.js +505 -0
  115. package/dist/chunk-LAR7DX5E.js +1840 -0
  116. package/dist/chunk-LAVUQX3B.js +462 -0
  117. package/dist/chunk-LJRBX7QR.js +116 -0
  118. package/dist/chunk-LNOXCGN2.js +1864 -0
  119. package/dist/chunk-LTWH2ACR.js +23002 -0
  120. package/dist/chunk-LYJJ6546.js +661 -0
  121. package/dist/chunk-M2IPMWCN.js +457 -0
  122. package/dist/chunk-MGLRTOCK.js +101 -0
  123. package/dist/chunk-MZF5IKZT.js +160 -0
  124. package/dist/chunk-N24R6KWS.js +386 -0
  125. package/dist/chunk-NASYVWDB.js +604 -0
  126. package/dist/chunk-NBXFPI7U.js +195 -0
  127. package/dist/chunk-NDPF2N2L.js +400 -0
  128. package/dist/chunk-NFSK2VNU.js +446 -0
  129. package/dist/chunk-NG3QQSXY.js +43 -0
  130. package/dist/chunk-NOCSM22Y.js +63 -0
  131. package/dist/chunk-NVPXXW2H.js +1143 -0
  132. package/dist/chunk-O63U2I6I.js +30 -0
  133. package/dist/chunk-OJXOA6YU.js +98 -0
  134. package/dist/chunk-OPD7GL6F.js +1196 -0
  135. package/dist/chunk-OQ2EOAHA.js +14399 -0
  136. package/dist/chunk-OV62D6KO.js +688 -0
  137. package/dist/chunk-OZ76TLGU.js +740 -0
  138. package/dist/chunk-P4GNZPXO.js +1156 -0
  139. package/dist/chunk-PS6JAWJZ.js +78 -0
  140. package/dist/chunk-PXRCXGLK.js +1865 -0
  141. package/dist/chunk-QDUUOZ3S.js +108 -0
  142. package/dist/chunk-QG6I2T5E.js +1416 -0
  143. package/dist/chunk-QHSBROEW.js +308 -0
  144. package/dist/chunk-QNUQ7K7D.js +46 -0
  145. package/dist/chunk-QZTTRSJE.js +333 -0
  146. package/dist/chunk-R2UUNSNQ.js +1605 -0
  147. package/dist/chunk-R7FGRZNF.js +1794 -0
  148. package/dist/chunk-RNDCROSG.js +199 -0
  149. package/dist/chunk-S36CXHO2.js +302 -0
  150. package/dist/chunk-SJGS3GDI.js +575 -0
  151. package/dist/chunk-SQZHXUB3.js +510 -0
  152. package/dist/chunk-SUTLW6ND.js +686 -0
  153. package/dist/chunk-SYF7FVBL.js +179 -0
  154. package/dist/chunk-T2MDZES3.js +1577 -0
  155. package/dist/chunk-T33IYTZM.js +1146 -0
  156. package/dist/chunk-TDGYTWM6.js +49 -0
  157. package/dist/chunk-TGL5FZVD.js +132 -0
  158. package/dist/chunk-TGWZXJ7L.js +1205 -0
  159. package/dist/chunk-TKDRT2DF.js +114 -0
  160. package/dist/chunk-TV2EBCSQ.js +152 -0
  161. package/dist/chunk-U26XXPJS.js +367 -0
  162. package/dist/chunk-U5QU5ZOD.js +419 -0
  163. package/dist/chunk-U6YTUVOX.js +1011 -0
  164. package/dist/chunk-UCINIRHW.js +188 -0
  165. package/dist/chunk-UJD5MPP6.js +52 -0
  166. package/dist/chunk-URCXX7WJ.js +146 -0
  167. package/dist/chunk-UX2L5CUD.js +898 -0
  168. package/dist/chunk-UZVYEF57.js +114 -0
  169. package/dist/chunk-V35KZDUZ.js +218 -0
  170. package/dist/chunk-VESL6DQY.js +1058 -0
  171. package/dist/chunk-VKHLUZNO.js +986 -0
  172. package/dist/chunk-VOYUCAQF.js +584 -0
  173. package/dist/chunk-VYRQHORQ.js +414 -0
  174. package/dist/chunk-W53XSRQE.js +245 -0
  175. package/dist/chunk-X4CEFOSG.js +226 -0
  176. package/dist/chunk-XDHUDE5K.js +380 -0
  177. package/dist/chunk-XISLDHEL.js +1290 -0
  178. package/dist/chunk-XM34YQ2Y.js +169 -0
  179. package/dist/chunk-XMDBTYCH.js +661 -0
  180. package/dist/chunk-XS2QPZJE.js +449 -0
  181. package/dist/chunk-YBUECLAF.js +618 -0
  182. package/dist/chunk-YQ6XEFVK.js +332 -0
  183. package/dist/chunk-YYLCPDCC.js +990 -0
  184. package/dist/chunk-Z4GLJ6J4.js +1035 -0
  185. package/dist/chunk-ZARZ4POR.js +210 -0
  186. package/dist/chunk-ZJPORZTC.js +119 -0
  187. package/dist/chunk-ZNUZ3EXD.js +243 -0
  188. package/dist/chunk-ZPST2KQO.js +49 -0
  189. package/dist/chunk-ZR5YA6ZF.js +512 -0
  190. package/dist/chunk-ZU4JPCPR.js +319 -0
  191. package/dist/chunk-ZUKUCZYZ.js +39 -0
  192. package/dist/cli/index.js +56 -45
  193. package/dist/clio-K2PBVCEM.js +27 -0
  194. package/dist/clio-context-tools-GR4OHFSO.js +145 -0
  195. package/dist/code-nav-4X3OI6DK.js +715 -0
  196. package/dist/codewiki/build-worker.js +4 -4
  197. package/dist/compile-cache-YRB6QRO7.js +18 -0
  198. package/dist/components-RQOJ6NUR.js +675 -0
  199. package/dist/config-Q5J7UBAB.js +291 -0
  200. package/dist/config-XE7XYZLU.js +38 -0
  201. package/dist/config-graph-P3555574.js +175 -0
  202. package/dist/configure-KIJ32ZO6.js +104 -0
  203. package/dist/context-LFBQOSXT.js +344 -0
  204. package/dist/context-NNLBES2Y.js +82 -0
  205. package/dist/context-WBH3KSVR.js +302 -0
  206. package/dist/context-clear-YOHMQ6SQ.js +208 -0
  207. package/dist/context-index-X2N5UAIF.js +120 -0
  208. package/dist/context-map-HOSMGUG2.js +555 -0
  209. package/dist/context-working-set-MRAEVDNV.js +1564 -0
  210. package/dist/data-tool-JJPBGMQJ.js +2986 -0
  211. package/dist/detail-RHJOTGN4.js +139 -0
  212. package/dist/dispatch-runner-NC7PYNIO.js +2477 -0
  213. package/dist/docs-K4GBWRUX.js +342 -0
  214. package/dist/doctor-S5KZ2GTN.js +1138 -0
  215. package/dist/doctor-deep-2EJQSHIZ.js +130 -0
  216. package/dist/domain-loader-MB34FDPD.js +13 -0
  217. package/dist/eval-3D6M36N7.js +5220 -0
  218. package/dist/eval-inventory-SM3HNM47.js +260 -0
  219. package/dist/evals-FO6JEUCN.js +104 -0
  220. package/dist/evidence-6IYN52ET.js +262 -0
  221. package/dist/evidence-JVECPI3F.js +250 -0
  222. package/dist/evidence-XNVPPLVK.js +410 -0
  223. package/dist/evolve-TLPUDJDM.js +634 -0
  224. package/dist/extensions-ROZJ5X3J.js +311 -0
  225. package/dist/fleet-6RJWIOEO.js +284 -0
  226. package/dist/fleet-WKVBF5SZ.js +942 -0
  227. package/dist/fleet-commands-L6WFT7KZ.js +76 -0
  228. package/dist/fleet-decisions-BTQMWU5A.js +55 -0
  229. package/dist/fleet-graph-553DZ67Q.js +141 -0
  230. package/dist/fleet-inspect-236FZPRB.js +329 -0
  231. package/dist/fleet-new-CKUXP3CO.js +48 -0
  232. package/dist/fleet-preflight-NZQHABWO.js +95 -0
  233. package/dist/fleet-validate-7NLAE26R.js +96 -0
  234. package/dist/fleet-verify-E3RO6A5W.js +226 -0
  235. package/dist/fleet-view-KMZQY7YJ.js +144 -0
  236. package/dist/gui/client/assets/abnfDiagram-VCTEODGH-DPBWQwNn.js +1 -0
  237. package/dist/gui/client/assets/architecture-7GRP2DOG-D1w8FrFW.js +1 -0
  238. package/dist/gui/client/assets/architectureDiagram-5GKGNRK7-CVPgKd1-.js +36 -0
  239. package/dist/gui/client/assets/blockDiagram-I7D4REHJ-BLmnqkK5.js +129 -0
  240. package/dist/gui/client/assets/c4Diagram-7LVT6UL2-4AU9cfM7.js +38 -0
  241. package/dist/gui/client/assets/channel-DwFZ0m8S.js +1 -0
  242. package/dist/gui/client/assets/chunk-4HAMMTFA-EOWkKCav.js +62 -0
  243. package/dist/gui/client/assets/chunk-75Z2AOVW-CygeoIMl.js +2 -0
  244. package/dist/gui/client/assets/chunk-DU6HZSFF-s27fViLb.js +125 -0
  245. package/dist/gui/client/assets/chunk-F27PBJKO-BrHvwLsZ.js +1 -0
  246. package/dist/gui/client/assets/chunk-GMAD6QVW-DzPh-7jt.js +72 -0
  247. package/dist/gui/client/assets/chunk-GVQU2GXP-pIaQkIzm.js +1 -0
  248. package/dist/gui/client/assets/chunk-IMKFNOWR-BGJVE_Br.js +231 -0
  249. package/dist/gui/client/assets/chunk-L3NEJ4N5-B3YLuhww.js +1 -0
  250. package/dist/gui/client/assets/chunk-OSK3NFVY-BRj61HHU.js +10 -0
  251. package/dist/gui/client/assets/chunk-P2QGCYS3-Sno90KxP.js +1 -0
  252. package/dist/gui/client/assets/chunk-POPQ4Y6H-Cw8NTbxr.js +1 -0
  253. package/dist/gui/client/assets/chunk-PWAF6VOD-BIhHgz37.js +1 -0
  254. package/dist/gui/client/assets/chunk-SHT3W25Y-Cqv7npBj.js +168 -0
  255. package/dist/gui/client/assets/chunk-SVP7TREG-Hxzl6Dee.js +88 -0
  256. package/dist/gui/client/assets/chunk-TICWLB2K-CIFVyVP2.js +206 -0
  257. package/dist/gui/client/assets/classDiagram-ZZMXUADV-BJbAiI_w.js +1 -0
  258. package/dist/gui/client/assets/classDiagram-v2-VYDZK3BY-BJbAiI_w.js +1 -0
  259. package/dist/gui/client/assets/cynefin-OW5HDTMX-DecLWZ-y.js +1 -0
  260. package/dist/gui/client/assets/cynefinDiagram-5FMLGOSQ-CK-T2N-D.js +62 -0
  261. package/dist/gui/client/assets/dagre-GXQ25YYZ-C0dfg-OS.js +4 -0
  262. package/dist/gui/client/assets/diagram-S7CK7UJ4-EaJukVh-.js +30 -0
  263. package/dist/gui/client/assets/diagram-UQ7AKVKN-xcOucEtP.js +41 -0
  264. package/dist/gui/client/assets/diagram-VSXAHHWV-3AUJACMf.js +3 -0
  265. package/dist/gui/client/assets/diagram-VX7I27RA-TPknLqam.js +24 -0
  266. package/dist/gui/client/assets/diagram-Z3DM3KII-wa1q3YMF.js +24 -0
  267. package/dist/gui/client/assets/ebnfDiagram-PWID7BFC-JBCF2-s7.js +1 -0
  268. package/dist/gui/client/assets/erDiagram-RLTQ6QDP-CmXjXPc4.js +99 -0
  269. package/dist/gui/client/assets/eventmodeling-NTZA5JFV-D_1aJWYl.js +1 -0
  270. package/dist/gui/client/assets/flowDiagram-HODETNUW-BQtZlael.js +1 -0
  271. package/dist/gui/client/assets/framework-Bq-znqwW.js +9 -0
  272. package/dist/gui/client/assets/ganttDiagram-EL5Y4UJY-IPaL_kaa.js +292 -0
  273. package/dist/gui/client/assets/gitGraph-4MIJSDKK-Oy0Q3hoc.js +1 -0
  274. package/dist/gui/client/assets/gitGraphDiagram-WWUBYQGX-jtAuBmbc.js +106 -0
  275. package/dist/gui/client/assets/index-CuFuBEdL.css +1 -0
  276. package/dist/gui/client/assets/index-hMbEIsX0.js +87 -0
  277. package/dist/gui/client/assets/info-A6RAGUB7-UtEs1tv7.js +1 -0
  278. package/dist/gui/client/assets/infoDiagram-27XIBGKW-hlwR1pBW.js +2 -0
  279. package/dist/gui/client/assets/ishikawaDiagram-5VMMS53U-C6vMtfsd.js +70 -0
  280. package/dist/gui/client/assets/journeyDiagram-3NMN7TZE-EAwAl_PS.js +139 -0
  281. package/dist/gui/client/assets/kanban-definition-UXKFOSKX-CQOhRKHW.js +89 -0
  282. package/dist/gui/client/assets/line-DbcwGZTW.js +1 -0
  283. package/dist/gui/client/assets/mermaid-parser.core-C2QfVcHd.js +7 -0
  284. package/dist/gui/client/assets/mermaid.core-N9qUTre1.js +44 -0
  285. package/dist/gui/client/assets/mindmap-definition-YA3MSWOX-BR_FL9gK.js +96 -0
  286. package/dist/gui/client/assets/packet-AYTQ26CC-CbBJ2oAa.js +1 -0
  287. package/dist/gui/client/assets/pegDiagram-XKGWAZYB-BruU0IHM.js +1 -0
  288. package/dist/gui/client/assets/pie-WAS4IAKB-BWdSng4H.js +1 -0
  289. package/dist/gui/client/assets/pieDiagram-E7YTZNPT-CR3ljgdU.js +39 -0
  290. package/dist/gui/client/assets/quadrantDiagram-AXDQQJYC-C-boKslr.js +7 -0
  291. package/dist/gui/client/assets/radar-RG4KPBEZ-CGlOnAKG.js +1 -0
  292. package/dist/gui/client/assets/railroad-74A4TZTK-CDvuAlyC.js +1 -0
  293. package/dist/gui/client/assets/railroad-abnf-HS5TGJTU-CQUA9crC.js +1 -0
  294. package/dist/gui/client/assets/railroad-ebnf-LZEXJU2U-CD857gxq.js +1 -0
  295. package/dist/gui/client/assets/railroad-peg-WCYAUIDC-DUV4k35E.js +1 -0
  296. package/dist/gui/client/assets/railroadDiagram-O6MQD6OU-DMR4LXmA.js +1 -0
  297. package/dist/gui/client/assets/requirementDiagram-BXWQKSXE-DVltaF6c.js +84 -0
  298. package/dist/gui/client/assets/sankeyDiagram-P5KCCOFB-CHdNz472.js +40 -0
  299. package/dist/gui/client/assets/sequenceDiagram-WJ2MYXX4-DaMafIty.js +162 -0
  300. package/dist/gui/client/assets/stateDiagram-D77RDMKH-CEbBHqn3.js +1 -0
  301. package/dist/gui/client/assets/stateDiagram-v2-MP3YSRHH-B3JgDdFg.js +1 -0
  302. package/dist/gui/client/assets/swimlanes-42K2YHIH-BlPHndnJ.js +1 -0
  303. package/dist/gui/client/assets/swimlanesDiagram-VR7AAH4N-BPabHwsZ.js +8 -0
  304. package/dist/gui/client/assets/timeline-definition-24CTP7MA-E4Y1lPBI.js +120 -0
  305. package/dist/gui/client/assets/treeView-Q6P3EWNA-DrY0uhTN.js +1 -0
  306. package/dist/gui/client/assets/treemap-WGGIJYW6-CVotnLHf.js +1 -0
  307. package/dist/gui/client/assets/vennDiagram-4TSXK5OY-DJNrLIOF.js +34 -0
  308. package/dist/gui/client/assets/wardley-WFR3VGLG-ClOpAp5S.js +1 -0
  309. package/dist/gui/client/assets/wardleyDiagram-VM6X3IG4-qhMoKOXc.js +78 -0
  310. package/dist/gui/client/assets/xychartDiagram-S5SC5T6Z-CTuXoo9R.js +7 -0
  311. package/dist/gui/client/index.html +6 -0
  312. package/dist/gui/ops-worker.js +167 -0
  313. package/dist/gui/reads-worker.js +473 -0
  314. package/dist/gui/server.js +9780 -0
  315. package/dist/gui-QJS7XQMV.js +16 -0
  316. package/dist/init-DV5B6HQG.js +354 -0
  317. package/dist/install-6C45YXFP.js +19 -0
  318. package/dist/install-O7NSRU2W.js +13 -0
  319. package/dist/interactive-OXGYZYAS.js +22381 -0
  320. package/dist/interop-J7UOBOSF.js +254 -0
  321. package/dist/inventory-OEGIL6PY.js +144 -0
  322. package/dist/library-B3UPGY4V.js +83 -0
  323. package/dist/library-MXQA5DLT.js +309 -0
  324. package/dist/library-ROZAMUIL.js +496 -0
  325. package/dist/library-import-2LTWOVBD.js +190 -0
  326. package/dist/library-inventory-LJ3XHLWO.js +60 -0
  327. package/dist/library-validation-DARHHUNW.js +46 -0
  328. package/dist/mcp-2GSPYQ54.js +28 -0
  329. package/dist/memory-J3STUUIK.js +537 -0
  330. package/dist/models-Y3GMFJ2V.js +314 -0
  331. package/dist/monitor-LHNH577J.js +811 -0
  332. package/dist/orchestrator-DTAPXULA.js +12117 -0
  333. package/dist/panes-A743ONZ5.js +103 -0
  334. package/dist/panes-CTNO57ZY.js +76 -0
  335. package/dist/paths-3SBYJQDP.js +68 -0
  336. package/dist/preload-OJBMAIXF.js +140 -0
  337. package/dist/providers-CMETPZNS.js +232 -0
  338. package/dist/registry-37T4U6X2.js +15 -0
  339. package/dist/reset-O7EUCYWO.js +346 -0
  340. package/dist/resources-FY6XYFN2.js +189 -0
  341. package/dist/run-H64MEVTA.js +1067 -0
  342. package/dist/run-script-PQ5NRU3X.js +42 -0
  343. package/dist/settings-SNIQNXCW.js +73 -0
  344. package/dist/settings-controls-X6GMCPVG.js +202 -0
  345. package/dist/share-CAFMMQLM.js +299 -0
  346. package/dist/skills-ERKQUC7L.js +114 -0
  347. package/dist/skills-eval-CQ23MYQK.js +1099 -0
  348. package/dist/skills-inventory-TVUYJDVN.js +142 -0
  349. package/dist/slash-commands-ROG3KIFJ.js +107 -0
  350. package/dist/startup-background-KDWCQMWT.js +247 -0
  351. package/dist/steer-KKYXJSH4.js +77 -0
  352. package/dist/support-M3RCUUEL.js +40 -0
  353. package/dist/system-ZDW44ZGX.js +142 -0
  354. package/dist/target-runtimes-PWA22WVW.js +73 -0
  355. package/dist/targets-AJWA6E7Z.js +1207 -0
  356. package/dist/tasks-6L2JJRC5.js +39 -0
  357. package/dist/terminal-lease-YFUSDPAD.js +432 -0
  358. package/dist/tools-5XJUABRD.js +30 -0
  359. package/dist/trace-LA5MVR4Y.js +527 -0
  360. package/dist/tree-sitter-TQW3Y52T.js +4673 -0
  361. package/dist/tui-primitives-IUCVWLH5.js +19 -0
  362. package/dist/uninstall-SAWGGXAB.js +448 -0
  363. package/dist/upgrade-HSNSVTZG.js +300 -0
  364. package/dist/usage-XSILDHKF.js +1083 -0
  365. package/dist/verifiers-ECA5GIHL.js +633 -0
  366. package/dist/verify-R6QQCCEB.js +31 -0
  367. package/dist/version-PLZYB5KW.js +22 -0
  368. package/dist/web-fetch-PVZNMBOB.js +803 -0
  369. package/dist/wiki-generate-RP22WP5K.js +647 -0
  370. package/dist/with-panes-W3PAZPRF.js +629 -0
  371. package/dist/worker/entry.js +324 -284
  372. package/dist/workspace-check-3764ZKC2.js +83 -0
  373. package/docs/README.md +26 -10
  374. package/docs/architecture/acp.md +179 -12
  375. package/docs/architecture/artifact-placement.md +1 -1
  376. package/docs/architecture/capacity-and-scheduling.md +7 -8
  377. package/docs/architecture/context-engine.md +350 -95
  378. package/docs/architecture/model-catalog.md +18 -11
  379. package/docs/architecture/observability.md +1 -1
  380. package/docs/architecture/pi-boundary.md +59 -6
  381. package/docs/architecture/prompt-envelope-and-tools.md +147 -39
  382. package/docs/architecture/provider-adapter-cookbook.md +2 -2
  383. package/docs/architecture/safety-model.md +18 -4
  384. package/docs/architecture/trace-store.md +2 -2
  385. package/docs/architecture/tui-design.md +41 -81
  386. package/docs/architecture/worker-dispatch-mechanics.md +9 -1
  387. package/docs/gui/README.md +69 -0
  388. package/docs/gui/boundary-doctrine.md +104 -0
  389. package/docs/gui/chat-rendering-spec.md +1440 -0
  390. package/docs/gui/cli-surface-routing.md +148 -0
  391. package/docs/gui/delivery-order.md +53 -0
  392. package/docs/gui/event-bus-coverage.md +103 -0
  393. package/docs/gui/inspector-presentation.md +71 -0
  394. package/docs/gui/parity/01-cli-surface.md +74 -0
  395. package/docs/gui/parity/02-slash-and-surfaces.md +110 -0
  396. package/docs/gui/parity/03-domains-and-plan.md +69 -0
  397. package/docs/gui/performance-baseline.md +76 -0
  398. package/docs/gui/settings-write-surface.md +267 -0
  399. package/docs/gui/workflow-coverage.md +64 -0
  400. package/docs/guide/built-in-agents.md +1 -1
  401. package/docs/guide/commands-and-modes.md +256 -99
  402. package/docs/guide/configuration-and-targets.md +485 -124
  403. package/docs/guide/configuration-reference.md +165 -82
  404. package/docs/guide/doctor.md +127 -0
  405. package/docs/guide/environment-variables.md +1 -1
  406. package/docs/guide/exit-codes-and-output.md +3 -1
  407. package/docs/guide/extensions-and-sharing.md +3 -14
  408. package/docs/guide/fleet-dispatch.md +231 -45
  409. package/docs/guide/glossary.md +1 -1
  410. package/docs/guide/installation-and-lifecycle.md +27 -16
  411. package/docs/guide/interop.md +2 -2
  412. package/docs/guide/proactive-memory.md +154 -68
  413. package/docs/guide/resource-library.md +4 -0
  414. package/docs/guide/skills-marketplace.md +8 -4
  415. package/docs/guide/slurm.md +88 -0
  416. package/docs/guide/tool-usage.md +134 -11
  417. package/docs/guide/troubleshooting.md +4 -2
  418. package/docs/process/battletest-2026-09-20-fixes.md +161 -0
  419. package/docs/process/configure-tree-proposal.md +637 -0
  420. package/docs/process/documentation-coverage.md +8 -0
  421. package/docs/process/documentation-guide.md +18 -1
  422. package/docs/process/eval-runner.md +58 -14
  423. package/docs/process/performance-methodology.md +11 -3
  424. package/docs/process/release-cut-checklist.md +29 -3
  425. package/docs/process/tool-audit-v0.4.9.md +3 -0
  426. package/examples/extensions/README.md +1 -3
  427. package/examples/extensions/lab-status/clio-coder-extension.json +1 -1
  428. package/examples/extensions/measurements/clio-coder-extension.json +1 -1
  429. package/library/registry.yaml +30 -5
  430. package/library/skills/git/fix-issue/SKILL.md +2 -1
  431. package/library/skills/git/fix-issue/plugin.json +1 -1
  432. package/library/skills/git/ship/SKILL.md +2 -1
  433. package/library/skills/git/ship/plugin.json +1 -1
  434. package/library/skills/meta/clio-coder-test/SKILL.md +5 -6
  435. package/library/skills/meta/clio-coder-test/evals.md +2 -2
  436. package/library/skills/meta/clio-coder-test/references/test-map.md +2 -2
  437. package/library/skills/registry.yaml +9 -5
  438. package/library/skills/research/slurm-jobs/SKILL.md +110 -0
  439. package/library/skills/research/slurm-jobs/evals.md +39 -0
  440. package/library/skills/research/slurm-jobs/plugin.json +23 -0
  441. package/library/skills/skill-marketplace.json +18 -2
  442. package/package.json +15 -10
  443. package/src/cli/args.ts +59 -0
  444. package/src/cli/argv.ts +7 -0
  445. package/src/cli/clio.ts +9 -1
  446. package/src/cli/configure-controls.ts +136 -0
  447. package/src/cli/configure-onboarding.ts +24 -7
  448. package/src/cli/configure-quick.ts +32 -7
  449. package/src/cli/configure-target.ts +11 -1
  450. package/src/cli/configure.ts +253 -256
  451. package/src/cli/docs-server.ts +290 -0
  452. package/src/cli/docs.ts +60 -15
  453. package/src/cli/doctor-deep.ts +126 -0
  454. package/src/cli/doctor-hpc.ts +122 -0
  455. package/src/cli/doctor-slurm.ts +130 -0
  456. package/src/cli/doctor-task-worktrees.ts +88 -0
  457. package/src/cli/doctor.ts +165 -16
  458. package/src/cli/fleet-verify.ts +3 -2
  459. package/src/cli/gui.ts +111 -0
  460. package/src/cli/index.ts +14 -4
  461. package/src/cli/library.ts +2 -7
  462. package/src/cli/modes/json-stream.ts +4 -2
  463. package/src/cli/modes/print.ts +252 -25
  464. package/src/cli/run.ts +199 -71
  465. package/src/cli/skills.ts +25 -7
  466. package/src/cli/targets.ts +87 -9
  467. package/src/cli/uninstall.ts +28 -8
  468. package/src/cli/usage.ts +2 -1
  469. package/src/cli/workspace-check.ts +71 -0
  470. package/src/core/bash-exec.ts +8 -2
  471. package/src/core/bus-events.ts +32 -3
  472. package/src/core/cache-telemetry.ts +3 -2
  473. package/src/core/compile-cache.ts +11 -1
  474. package/src/core/config.ts +59 -6
  475. package/src/core/defaults.ts +27 -5
  476. package/src/core/diagnostics.ts +25 -0
  477. package/src/core/event-bus.ts +2 -1
  478. package/src/core/gateway-routing.ts +10 -3
  479. package/src/core/git-commit-attribution.ts +2 -1
  480. package/src/core/naming-compat.ts +6 -4
  481. package/src/core/package-root.ts +0 -9
  482. package/src/core/path-canonical.ts +143 -24
  483. package/src/core/residency-target-key.ts +2 -6
  484. package/src/core/run-overrides.ts +1 -1
  485. package/src/core/settings-awareness.ts +108 -0
  486. package/src/core/settings-controls.ts +673 -0
  487. package/src/core/settings-navigation.ts +116 -0
  488. package/src/core/theme-token-hex.ts +19 -9
  489. package/src/core/turn-constraints.ts +52 -0
  490. package/src/domains/agents/builtins/scout.md +7 -17
  491. package/src/domains/agents/catalog.ts +5 -1
  492. package/src/domains/agents/extension.ts +2 -1
  493. package/src/domains/agents/registry.ts +4 -3
  494. package/src/domains/agents/result-contract.ts +132 -1
  495. package/src/domains/config/classify.ts +11 -7
  496. package/src/domains/config/extension.ts +5 -1
  497. package/src/domains/config/keybindings.ts +2 -2
  498. package/src/domains/context/codewiki/coordinator.ts +10 -0
  499. package/src/domains/context/worker/snapshot.ts +6 -3
  500. package/src/domains/dispatch/active-route-planner.ts +2 -0
  501. package/src/domains/dispatch/agent-candidates.ts +5 -1
  502. package/src/domains/dispatch/capability-match.ts +1 -1
  503. package/src/domains/dispatch/contract.ts +28 -0
  504. package/src/domains/dispatch/event-pump.ts +37 -3
  505. package/src/domains/dispatch/extension.ts +391 -48
  506. package/src/domains/dispatch/failure-classification.ts +37 -2
  507. package/src/domains/dispatch/receipt-integrity.ts +3 -0
  508. package/src/domains/dispatch/run-identity.ts +10 -3
  509. package/src/domains/dispatch/target-breaker.ts +163 -0
  510. package/src/domains/dispatch/types.ts +29 -2
  511. package/src/domains/dispatch/worker-model-loads.ts +66 -0
  512. package/src/domains/dispatch/worker-protocol.ts +20 -1
  513. package/src/domains/dispatch/worker-spawn.ts +28 -2
  514. package/src/domains/eval/artifacts/redact.ts +9 -0
  515. package/src/domains/eval/metrics/noop.ts +61 -0
  516. package/src/domains/eval/reports/junit.ts +5 -1
  517. package/src/domains/eval/reports/text.ts +7 -0
  518. package/src/domains/eval/runners/clio-run.ts +19 -8
  519. package/src/domains/eval/runners/external-command.ts +29 -4
  520. package/src/domains/eval/schema/adapter.ts +6 -2
  521. package/src/domains/eval/schema/suite.ts +2 -0
  522. package/src/domains/eval/schema/validate.ts +3 -0
  523. package/src/domains/eval/suites/run.ts +167 -26
  524. package/src/domains/evidence/detail.ts +3 -2
  525. package/src/domains/extensions/operator-runtime.ts +11 -4
  526. package/src/domains/gateway/mcp/client.ts +1 -1
  527. package/src/domains/lifecycle/doctor.ts +42 -26
  528. package/src/domains/lifecycle/migrations/2026-09-18-ollama-runtime-id.ts +38 -0
  529. package/src/domains/lifecycle/migrations/index.ts +2 -0
  530. package/src/domains/middleware/demo-guidance.ts +36 -0
  531. package/src/domains/middleware/dispatch-nudge.ts +1 -1
  532. package/src/domains/middleware/memory-intervention.ts +51 -4
  533. package/src/domains/middleware/runtime.ts +5 -4
  534. package/src/domains/middleware/skills-reminder.ts +29 -52
  535. package/src/domains/middleware/task-nudge.ts +1 -0
  536. package/src/domains/middleware/watchdog.ts +4 -0
  537. package/src/domains/observability/extension.ts +2 -1
  538. package/src/domains/observability/out-of-turn-usage.ts +3 -2
  539. package/src/domains/observability/projection.ts +3 -2
  540. package/src/domains/observability/worker-progress.ts +48 -0
  541. package/src/domains/prompts/compiler.ts +148 -52
  542. package/src/domains/prompts/contract.ts +3 -3
  543. package/src/domains/prompts/demo-guidance.ts +8 -0
  544. package/src/domains/prompts/extension.ts +12 -7
  545. package/src/domains/prompts/fragments/identity/clio.md +2 -1
  546. package/src/domains/prompts/fragments/identity/docs-routing.md +2 -0
  547. package/src/domains/prompts/fragments/identity/self-awareness.md +4 -0
  548. package/src/domains/prompts/fragments/operating/contract.md +16 -7
  549. package/src/domains/prompts/fragments/operating/delegation.md +29 -13
  550. package/src/domains/prompts/fragments/operating/skills.md +18 -10
  551. package/src/domains/prompts/fragments/operating/worker.md +2 -0
  552. package/src/domains/providers/cache-deployment.ts +45 -2
  553. package/src/domains/providers/contract.ts +52 -11
  554. package/src/domains/providers/extension.ts +230 -53
  555. package/src/domains/providers/model-discovery.ts +22 -8
  556. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +5 -7
  557. package/src/domains/providers/plugins.ts +3 -4
  558. package/src/domains/providers/probe/fingerprint.ts +2 -2
  559. package/src/domains/providers/probe/reasoning.ts +9 -16
  560. package/src/domains/providers/probe/tool-call.ts +236 -0
  561. package/src/domains/providers/registry.ts +51 -8
  562. package/src/domains/providers/runtime-resolution.ts +60 -12
  563. package/src/domains/providers/runtimes/boot-manifest.ts +1 -1
  564. package/src/domains/providers/runtimes/builtins.ts +2 -2
  565. package/src/domains/providers/runtimes/common/lmstudio-http.ts +57 -41
  566. package/src/domains/providers/runtimes/common/local-synth.ts +3 -1
  567. package/src/domains/providers/runtimes/common/ollama-model-ids.ts +11 -0
  568. package/src/domains/providers/runtimes/common/probe-helpers.ts +53 -0
  569. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +3 -1
  570. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +7 -13
  571. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +7 -17
  572. package/src/domains/providers/runtimes/local-native/llamacpp.ts +1 -0
  573. package/src/domains/providers/runtimes/local-native/ollama.ts +211 -0
  574. package/src/domains/providers/runtimes/protocol/litellm.ts +77 -65
  575. package/src/domains/providers/support.ts +1 -1
  576. package/src/domains/providers/types/local-model-quirks.ts +2 -3
  577. package/src/domains/providers/types/runtime-descriptor.ts +23 -3
  578. package/src/domains/providers/types/target-descriptor.ts +15 -3
  579. package/src/domains/resources/collision.ts +7 -2
  580. package/src/domains/resources/index.ts +1 -0
  581. package/src/domains/resources/library-actions.ts +4 -2
  582. package/src/domains/resources/library-inventory.ts +6 -2
  583. package/src/domains/resources/prompts/loader.ts +20 -7
  584. package/src/domains/resources/skills/availability.ts +56 -0
  585. package/src/domains/resources/skills/loader.ts +20 -9
  586. package/src/domains/safety/action-classifier.ts +282 -31
  587. package/src/domains/safety/audit.ts +2 -1
  588. package/src/domains/safety/autonomy.ts +54 -11
  589. package/src/domains/safety/decision-presentation.ts +17 -4
  590. package/src/domains/safety/finish-contract-registration.ts +25 -1
  591. package/src/domains/safety/finish-contract.ts +20 -5
  592. package/src/domains/safety/path-policy.ts +6 -2
  593. package/src/domains/safety/policy-engine.ts +168 -48
  594. package/src/domains/safety/protected-artifacts.ts +527 -16
  595. package/src/domains/safety/read-scope.ts +120 -0
  596. package/src/domains/safety/skill-authority.ts +52 -16
  597. package/src/domains/scheduling/cluster.ts +14 -3
  598. package/src/domains/scheduling/contract.ts +7 -0
  599. package/src/domains/scheduling/extension.ts +20 -9
  600. package/src/domains/scheduling/local-capacity.ts +160 -0
  601. package/src/domains/session/context-accounting.ts +44 -31
  602. package/src/domains/session/context-ledger.ts +10 -3
  603. package/src/domains/session/entries.ts +4 -0
  604. package/src/domains/session/history.ts +1 -1
  605. package/src/domains/session/prompt-cache.ts +1 -0
  606. package/src/domains/session/prompt-manifest.ts +3 -1
  607. package/src/domains/session/retry.ts +4 -6
  608. package/src/domains/session/task-board.ts +19 -4
  609. package/src/domains/session/tree/preview.ts +3 -2
  610. package/src/engine/acp/commands.ts +653 -0
  611. package/src/engine/acp/server.ts +639 -20
  612. package/src/engine/acp/tool-mediator.ts +30 -7
  613. package/src/engine/acp/types.ts +58 -0
  614. package/src/engine/agent.ts +55 -10
  615. package/src/engine/ai.ts +11 -2
  616. package/src/engine/api-registry.ts +5 -4
  617. package/src/engine/apis/degraded-inference.ts +243 -0
  618. package/src/engine/apis/llamacpp-residency.ts +50 -6
  619. package/src/engine/apis/lmstudio-residency.ts +3 -5
  620. package/src/engine/apis/lmstudio.ts +137 -31
  621. package/src/engine/apis/ollama-http.ts +118 -0
  622. package/src/engine/apis/ollama-native.ts +216 -97
  623. package/src/engine/apis/openai-completions.ts +191 -189
  624. package/src/engine/apis/output-budget.ts +3 -1
  625. package/src/engine/apis/residency-lock.ts +2 -1
  626. package/src/engine/apis/residency.ts +339 -89
  627. package/src/engine/apis/sampling-overrides.ts +23 -2
  628. package/src/engine/apis/types.ts +1 -2
  629. package/src/engine/claude/tool-safety.ts +30 -5
  630. package/src/engine/context.ts +13 -0
  631. package/src/engine/env-api-keys.ts +2 -1
  632. package/src/engine/gemma-channel-filter.ts +3 -2
  633. package/src/engine/instrumented-tui.ts +25 -0
  634. package/src/engine/loop-guard.ts +172 -6
  635. package/src/engine/pi-mono-names.ts +16 -0
  636. package/src/engine/prewarm.ts +44 -15
  637. package/src/engine/provider-payload.ts +52 -14
  638. package/src/engine/session.ts +4 -2
  639. package/src/engine/worker-events.ts +9 -1
  640. package/src/engine/worker-runtime.ts +269 -42
  641. package/src/engine/worker-tools.ts +8 -3
  642. package/src/entry/boot-options.ts +23 -0
  643. package/src/entry/orchestrator.ts +207 -36
  644. package/src/interactive/assistant-generation-timing.ts +52 -0
  645. package/src/interactive/chat-loop-messages.ts +4 -1
  646. package/src/interactive/chat-loop.ts +59 -9
  647. package/src/interactive/chat-panel.ts +10 -1
  648. package/src/interactive/clio-editor.ts +51 -79
  649. package/src/interactive/context-meter.ts +1 -0
  650. package/src/interactive/context-overlay.ts +21 -8
  651. package/src/interactive/cost-overlay.ts +1 -1
  652. package/src/interactive/dispatch-board.ts +39 -8
  653. package/src/interactive/editor-bash.ts +0 -34
  654. package/src/interactive/editor-rails.ts +43 -0
  655. package/src/interactive/editor-submit.ts +34 -2
  656. package/src/interactive/footer/dashboard.ts +67 -38
  657. package/src/interactive/footer/demo-hints.ts +40 -0
  658. package/src/interactive/footer/key-hints.ts +21 -0
  659. package/src/interactive/footer/notifications.ts +1 -1
  660. package/src/interactive/footer/pages.ts +486 -0
  661. package/src/interactive/footer/system-metrics.ts +147 -0
  662. package/src/interactive/footer/widgets.ts +158 -63
  663. package/src/interactive/footer-panel.ts +29 -7
  664. package/src/interactive/interactive-application.ts +109 -21
  665. package/src/interactive/interactive-event-projection.ts +6 -2
  666. package/src/interactive/interactive-presentation.ts +25 -29
  667. package/src/interactive/interactive-slash-runtime.ts +32 -18
  668. package/src/interactive/interactive-subscriptions.ts +25 -5
  669. package/src/interactive/interactive-tickers.ts +21 -5
  670. package/src/interactive/keybinding-manager.ts +9 -0
  671. package/src/interactive/overlay-frame.ts +29 -7
  672. package/src/interactive/overlay-lifecycle.ts +5 -3
  673. package/src/interactive/overlay-model-selectors.ts +4 -0
  674. package/src/interactive/overlay-permission-lifecycle.ts +6 -5
  675. package/src/interactive/overlays/ask-user.ts +103 -110
  676. package/src/interactive/overlays/help-reference.ts +1 -0
  677. package/src/interactive/overlays/message-picker.ts +3 -29
  678. package/src/interactive/overlays/session-selector.ts +3 -2
  679. package/src/interactive/overlays/settings-sections.ts +2 -30
  680. package/src/interactive/overlays/settings.ts +310 -607
  681. package/src/interactive/permission-hint.ts +3 -3
  682. package/src/interactive/permission-overlay.ts +45 -27
  683. package/src/interactive/renderers/doctor-report.ts +43 -0
  684. package/src/interactive/renderers/tool-execution.ts +87 -62
  685. package/src/interactive/renderers/worker-entry.ts +76 -3
  686. package/src/interactive/side-question.ts +3 -1
  687. package/src/interactive/slash-commands.ts +78 -23
  688. package/src/interactive/startup-background.ts +131 -0
  689. package/src/interactive/startup-diagnostics.ts +16 -0
  690. package/src/interactive/status/state-machine.ts +16 -3
  691. package/src/interactive/status/types.ts +2 -0
  692. package/src/interactive/status/verbs.ts +1 -1
  693. package/src/interactive/terminal-lease.ts +26 -22
  694. package/src/interactive/theme/components.ts +1 -1
  695. package/src/interactive/theme/rules.ts +1 -1
  696. package/src/interactive/theme/tokens.ts +16 -10
  697. package/src/interactive/transcript-detail.ts +4 -0
  698. package/src/interactive/turn-context.ts +56 -20
  699. package/src/interactive/turn-middleware.ts +57 -9
  700. package/src/interactive/turn-prewarm.ts +121 -18
  701. package/src/interactive/turn-recovery.ts +10 -8
  702. package/src/interactive/turn-runtime.ts +74 -29
  703. package/src/interactive/turn-state.ts +3 -0
  704. package/src/interactive/welcome-art.ts +36 -0
  705. package/src/interactive/welcome-dashboard.ts +209 -49
  706. package/src/interactive/worker-replay.ts +4 -0
  707. package/src/interactive/worker-stream.ts +17 -2
  708. package/src/tools/agent-tools.ts +22 -1
  709. package/src/tools/builtin-tool-catalog.ts +2 -2
  710. package/src/tools/codewiki/code-nav.ts +1 -1
  711. package/src/tools/codewiki/shared.ts +39 -1
  712. package/src/tools/compete-worktrees.ts +8 -91
  713. package/src/tools/context/docs-engine.ts +44 -12
  714. package/src/tools/context/index.ts +126 -22
  715. package/src/tools/context/library.ts +1 -1
  716. package/src/tools/context/surface.ts +12 -7
  717. package/src/tools/core-bootstrap.ts +3 -0
  718. package/src/tools/dispatch-runner.ts +18 -0
  719. package/src/tools/dispatch-schema.ts +187 -206
  720. package/src/tools/edit.ts +46 -42
  721. package/src/tools/file-mutation-queue.ts +25 -26
  722. package/src/tools/gateway/clio-context-surface.ts +1 -1
  723. package/src/tools/gateway/index.ts +7 -3
  724. package/src/tools/gateway/mcp-capabilities.ts +5 -3
  725. package/src/tools/grep.ts +14 -2
  726. package/src/tools/ls.ts +1 -4
  727. package/src/tools/monitor.ts +14 -1
  728. package/src/tools/observation.ts +1 -3
  729. package/src/tools/path-utils.ts +51 -18
  730. package/src/tools/process-lease.ts +99 -0
  731. package/src/tools/read.ts +1 -1
  732. package/src/tools/registry.ts +71 -9
  733. package/src/tools/task-worktree.ts +296 -17
  734. package/src/tools/tasks.ts +29 -7
  735. package/src/tools/worker-evidence.ts +60 -1
  736. package/src/tools/worktree-root.ts +252 -0
  737. package/src/tools/write.ts +34 -30
  738. package/src/worker/entry.ts +18 -1
  739. package/src/worker/protocol.ts +54 -1
  740. package/src/worker/spec-contract.ts +22 -2
  741. package/dist/acp-ZWZCPS2A.js +0 -130
  742. package/dist/agents-LYSOWZUE.js +0 -150
  743. package/dist/auth-WBQGKWQ5.js +0 -551
  744. package/dist/background-BUMOBAQN.js +0 -37
  745. package/dist/builtins-ODRJOEDI.js +0 -22
  746. package/dist/chunk-2DRRZ57Q.js +0 -571
  747. package/dist/chunk-2JBZYUPY.js +0 -105
  748. package/dist/chunk-2VBWFXYE.js +0 -198
  749. package/dist/chunk-2X2R3UTH.js +0 -1018
  750. package/dist/chunk-32KJPXAM.js +0 -75
  751. package/dist/chunk-37LW32LZ.js +0 -32
  752. package/dist/chunk-3A3CUMKA.js +0 -54
  753. package/dist/chunk-3AND2EFU.js +0 -215
  754. package/dist/chunk-3RDHGNU7.js +0 -647
  755. package/dist/chunk-3SUDBGEI.js +0 -1323
  756. package/dist/chunk-3TQN67I2.js +0 -396
  757. package/dist/chunk-3U4BL2EV.js +0 -103
  758. package/dist/chunk-3UQADNG2.js +0 -302
  759. package/dist/chunk-434LRQ6Z.js +0 -13441
  760. package/dist/chunk-4ATBOFRP.js +0 -7802
  761. package/dist/chunk-4DNL43EZ.js +0 -139
  762. package/dist/chunk-4HFJKRGZ.js +0 -5250
  763. package/dist/chunk-555E2WVV.js +0 -322
  764. package/dist/chunk-5GZICIYO.js +0 -462
  765. package/dist/chunk-5PHVPU4G.js +0 -160
  766. package/dist/chunk-5RTEFNBP.js +0 -197
  767. package/dist/chunk-64XJW7NT.js +0 -380
  768. package/dist/chunk-6TKOFFGE.js +0 -1058
  769. package/dist/chunk-6UJ7RDI7.js +0 -1143
  770. package/dist/chunk-7FBCRWVT.js +0 -1801
  771. package/dist/chunk-7JSOSVLP.js +0 -283
  772. package/dist/chunk-7N3OLLSL.js +0 -637
  773. package/dist/chunk-7QQRPB2E.js +0 -915
  774. package/dist/chunk-A6DULIMH.js +0 -986
  775. package/dist/chunk-AB3QXXBC.js +0 -123
  776. package/dist/chunk-ACCECAH4.js +0 -49
  777. package/dist/chunk-AM6CEP2K.js +0 -2120
  778. package/dist/chunk-AUHVBIDW.js +0 -19
  779. package/dist/chunk-AY4XE6GN.js +0 -665
  780. package/dist/chunk-BBA2TAWV.js +0 -667
  781. package/dist/chunk-BFPHMSK7.js +0 -169
  782. package/dist/chunk-BMNVVKEW.js +0 -604
  783. package/dist/chunk-CKK25WN3.js +0 -72
  784. package/dist/chunk-CTGZCEI6.js +0 -33
  785. package/dist/chunk-DIAJYJYG.js +0 -446
  786. package/dist/chunk-DVNAPPXU.js +0 -27
  787. package/dist/chunk-DXVMLM3Z.js +0 -92
  788. package/dist/chunk-E3LEPLQ2.js +0 -68
  789. package/dist/chunk-EHZRAB4U.js +0 -63
  790. package/dist/chunk-EM2DIQAJ.js +0 -179
  791. package/dist/chunk-EM2WNQS2.js +0 -93
  792. package/dist/chunk-ETF4ROKH.js +0 -595
  793. package/dist/chunk-F2YM3JY4.js +0 -22513
  794. package/dist/chunk-FEBQWHJT.js +0 -1023
  795. package/dist/chunk-FPS4R2RN.js +0 -1975
  796. package/dist/chunk-GD55RTIW.js +0 -33
  797. package/dist/chunk-GJDRMBDI.js +0 -573
  798. package/dist/chunk-GREYLTZ5.js +0 -658
  799. package/dist/chunk-H2WSCZZT.js +0 -238
  800. package/dist/chunk-H6IUCY6Q.js +0 -117
  801. package/dist/chunk-H72DCH3E.js +0 -563
  802. package/dist/chunk-H7TXJR23.js +0 -705
  803. package/dist/chunk-HBJQQTKM.js +0 -40
  804. package/dist/chunk-HCVKSGNZ.js +0 -990
  805. package/dist/chunk-HVCAY2FH.js +0 -67
  806. package/dist/chunk-I47EJPYL.js +0 -1377
  807. package/dist/chunk-IALGWTLO.js +0 -36
  808. package/dist/chunk-IALZJE37.js +0 -1710
  809. package/dist/chunk-IC7JXLOM.js +0 -1577
  810. package/dist/chunk-IOSVTTCD.js +0 -108
  811. package/dist/chunk-IPTPMLA6.js +0 -475
  812. package/dist/chunk-IZZI3SKQ.js +0 -128
  813. package/dist/chunk-JABWPKFY.js +0 -27
  814. package/dist/chunk-JIYWMQZ5.js +0 -175
  815. package/dist/chunk-JKU34ACI.js +0 -693
  816. package/dist/chunk-JOBN2YQQ.js +0 -176
  817. package/dist/chunk-JOL2QRLE.js +0 -152
  818. package/dist/chunk-JTR3VSV3.js +0 -44
  819. package/dist/chunk-JU6MAMRJ.js +0 -362
  820. package/dist/chunk-JURMQWVJ.js +0 -15
  821. package/dist/chunk-K2BLQC5E.js +0 -262
  822. package/dist/chunk-K3XN4LZ4.js +0 -402
  823. package/dist/chunk-KIVFXGBM.js +0 -688
  824. package/dist/chunk-KKRXONXG.js +0 -43
  825. package/dist/chunk-KOAHT3N2.js +0 -395
  826. package/dist/chunk-KP5BPXR3.js +0 -73
  827. package/dist/chunk-KQ6IDQIB.js +0 -39
  828. package/dist/chunk-KRJQG47M.js +0 -1289
  829. package/dist/chunk-KW6OJ7IY.js +0 -221
  830. package/dist/chunk-L3NBWLSN.js +0 -314
  831. package/dist/chunk-L4RUTLRL.js +0 -59
  832. package/dist/chunk-LGTVWPRN.js +0 -47
  833. package/dist/chunk-LSQW6KZO.js +0 -200
  834. package/dist/chunk-LTR5QCLS.js +0 -446
  835. package/dist/chunk-LWJYOHT3.js +0 -165
  836. package/dist/chunk-M6YLF66Z.js +0 -2687
  837. package/dist/chunk-MJ4QEJVT.js +0 -185
  838. package/dist/chunk-MO65K5CH.js +0 -1148
  839. package/dist/chunk-MTOZEQHL.js +0 -637
  840. package/dist/chunk-MZDPF35R.js +0 -45
  841. package/dist/chunk-MZKYVIWW.js +0 -188
  842. package/dist/chunk-NBPA5QM6.js +0 -386
  843. package/dist/chunk-NMBEW4PP.js +0 -688
  844. package/dist/chunk-NPLLK3HO.js +0 -3610
  845. package/dist/chunk-NSYGPIVW.js +0 -39
  846. package/dist/chunk-NXTV5OI5.js +0 -1020
  847. package/dist/chunk-NYDG4QP4.js +0 -689
  848. package/dist/chunk-OA2GDACN.js +0 -146
  849. package/dist/chunk-PJI57EC6.js +0 -236
  850. package/dist/chunk-PJJBUGMR.js +0 -4484
  851. package/dist/chunk-PNJE7JPS.js +0 -50
  852. package/dist/chunk-PP23PZEV.js +0 -1347
  853. package/dist/chunk-PPIFDSBK.js +0 -409
  854. package/dist/chunk-PTFISXQO.js +0 -319
  855. package/dist/chunk-QB33Z5S7.js +0 -1865
  856. package/dist/chunk-QGNII5VC.js +0 -110
  857. package/dist/chunk-QH3ZTUOA.js +0 -113
  858. package/dist/chunk-QI72X67S.js +0 -481
  859. package/dist/chunk-QJMRYTCX.js +0 -56
  860. package/dist/chunk-QKHZZFKH.js +0 -98
  861. package/dist/chunk-RDKX2PME.js +0 -66
  862. package/dist/chunk-RL7LJYN4.js +0 -66
  863. package/dist/chunk-RPMNIFRY.js +0 -65
  864. package/dist/chunk-RQROVOV3.js +0 -670
  865. package/dist/chunk-S34A7BSP.js +0 -97
  866. package/dist/chunk-SJETVJHX.js +0 -119
  867. package/dist/chunk-SJMNU4ZS.js +0 -634
  868. package/dist/chunk-SL2RDHKO.js +0 -19
  869. package/dist/chunk-SLLG2G44.js +0 -85
  870. package/dist/chunk-SQAZN2V3.js +0 -2744
  871. package/dist/chunk-SQBT46OF.js +0 -814
  872. package/dist/chunk-SRCEQKQS.js +0 -165
  873. package/dist/chunk-TCUOGIL2.js +0 -52
  874. package/dist/chunk-TIWPKCVO.js +0 -42
  875. package/dist/chunk-U44YYLVV.js +0 -1529
  876. package/dist/chunk-UIU7MGZ3.js +0 -486
  877. package/dist/chunk-USBBEKHW.js +0 -177
  878. package/dist/chunk-VHKTOLEW.js +0 -1416
  879. package/dist/chunk-VPWGADBG.js +0 -3151
  880. package/dist/chunk-VQD7NH7Z.js +0 -356
  881. package/dist/chunk-VWFCAK34.js +0 -697
  882. package/dist/chunk-W5RM7YAH.js +0 -78
  883. package/dist/chunk-W72LLZAV.js +0 -243
  884. package/dist/chunk-WGRDABW7.js +0 -207
  885. package/dist/chunk-WWRV5RJI.js +0 -165
  886. package/dist/chunk-XCUDZQLX.js +0 -195
  887. package/dist/chunk-XFLSL7BT.js +0 -386
  888. package/dist/chunk-XJZEDCNT.js +0 -391
  889. package/dist/chunk-XLLEL3K7.js +0 -709
  890. package/dist/chunk-XNZWWDC3.js +0 -686
  891. package/dist/chunk-XRECG65F.js +0 -308
  892. package/dist/chunk-XTQ7MEJG.js +0 -457
  893. package/dist/chunk-XW2UZICE.js +0 -372
  894. package/dist/chunk-Y3M2T5RO.js +0 -891
  895. package/dist/chunk-YGDMBK7O.js +0 -567
  896. package/dist/chunk-YJCCMYYT.js +0 -125
  897. package/dist/chunk-YPQOPFP7.js +0 -797
  898. package/dist/chunk-YQYINEJI.js +0 -132
  899. package/dist/chunk-ZF6CV4WZ.js +0 -5614
  900. package/dist/chunk-ZKJU55MX.js +0 -326
  901. package/dist/chunk-ZKQ63XZ5.js +0 -1196
  902. package/dist/chunk-ZKVMDNAN.js +0 -962
  903. package/dist/chunk-ZST3FRCV.js +0 -132
  904. package/dist/clio-JUDCLNHC.js +0 -26
  905. package/dist/clio-context-tools-FT672MNZ.js +0 -136
  906. package/dist/code-nav-7OVCTP2Z.js +0 -688
  907. package/dist/compile-cache-WJEPUZEJ.js +0 -16
  908. package/dist/components-OZXZMDWU.js +0 -674
  909. package/dist/config-P3ZQVF63.js +0 -275
  910. package/dist/config-graph-GKAOBAS5.js +0 -160
  911. package/dist/configure-25LRYZJG.js +0 -86
  912. package/dist/context-72VQV7JX.js +0 -73
  913. package/dist/context-COWRWXP3.js +0 -286
  914. package/dist/context-WB3D474G.js +0 -344
  915. package/dist/context-clear-Y4LYMWC6.js +0 -192
  916. package/dist/context-index-W6A4V7OC.js +0 -120
  917. package/dist/context-map-DKL3QT6D.js +0 -555
  918. package/dist/context-working-set-TMZYVC7A.js +0 -1560
  919. package/dist/data-tool-KMBWKKWR.js +0 -2987
  920. package/dist/detail-4GLROGY5.js +0 -123
  921. package/dist/dispatch-runner-TR3LBP5P.js +0 -2446
  922. package/dist/docs-ZK777W2G.js +0 -101
  923. package/dist/doctor-WC4OV2OB.js +0 -814
  924. package/dist/eval-FUNWJNUJ.js +0 -5050
  925. package/dist/eval-inventory-CX24K2JT.js +0 -260
  926. package/dist/evals-L73EBHSU.js +0 -104
  927. package/dist/evidence-AVJ2RTHX.js +0 -392
  928. package/dist/evidence-P4NZOAK7.js +0 -233
  929. package/dist/evidence-Y55WKYHH.js +0 -246
  930. package/dist/evolve-MAWKRYWF.js +0 -617
  931. package/dist/extensions-PYQH3H47.js +0 -308
  932. package/dist/fleet-M4H2QBWT.js +0 -268
  933. package/dist/fleet-ULBXXRDR.js +0 -923
  934. package/dist/fleet-commands-7NNC4JZU.js +0 -76
  935. package/dist/fleet-decisions-EHEY7KPU.js +0 -52
  936. package/dist/fleet-graph-LQ2AHZT3.js +0 -136
  937. package/dist/fleet-inspect-5IGBIIYZ.js +0 -312
  938. package/dist/fleet-new-RCKGSRDV.js +0 -48
  939. package/dist/fleet-preflight-UTTNOKMG.js +0 -27
  940. package/dist/fleet-validate-YGILJKA6.js +0 -91
  941. package/dist/fleet-verify-AUWTCDKR.js +0 -210
  942. package/dist/fleet-view-TGUFCY5A.js +0 -127
  943. package/dist/init-GFN2Z7NF.js +0 -333
  944. package/dist/install-3RZDDP23.js +0 -13
  945. package/dist/install-6PIF6F6W.js +0 -19
  946. package/dist/interop-EF5JUWWK.js +0 -246
  947. package/dist/inventory-I6VJDDYF.js +0 -127
  948. package/dist/library-3J5IO2OJ.js +0 -75
  949. package/dist/library-IJTOFTDS.js +0 -307
  950. package/dist/library-Z3KZSHPE.js +0 -492
  951. package/dist/library-import-IMKFLDHX.js +0 -183
  952. package/dist/library-inventory-CQP5D6GU.js +0 -56
  953. package/dist/library-validation-33UTX7AI.js +0 -42
  954. package/dist/mcp-5FWZKUS6.js +0 -26
  955. package/dist/memory-36CWN67Y.js +0 -520
  956. package/dist/models-KQ6PQJJQ.js +0 -302
  957. package/dist/monitor-XX6ZD6KC.js +0 -785
  958. package/dist/orchestrator-SK6HDAOP.js +0 -42067
  959. package/dist/panes-L27QRXUH.js +0 -74
  960. package/dist/panes-LXZIWNOZ.js +0 -103
  961. package/dist/paths-7DJDU4P4.js +0 -67
  962. package/dist/preload-K2TDYI4Y.js +0 -124
  963. package/dist/registry-DESGAXWK.js +0 -11
  964. package/dist/reset-73VU3XNT.js +0 -345
  965. package/dist/resources-3BYJYVYL.js +0 -181
  966. package/dist/run-AR7PY6GW.js +0 -896
  967. package/dist/run-script-H2KUDIII.js +0 -41
  968. package/dist/settings-3VMBMWID.js +0 -72
  969. package/dist/share-HVWH4FPF.js +0 -293
  970. package/dist/skills-5TYEY75Q.js +0 -100
  971. package/dist/skills-eval-CK3MD63Z.js +0 -1083
  972. package/dist/skills-inventory-KSFYG3I6.js +0 -138
  973. package/dist/slash-commands-DMVHML7P.js +0 -98
  974. package/dist/steer-XCD6V3EW.js +0 -77
  975. package/dist/support-JAZL6VBR.js +0 -38
  976. package/dist/system-3TDQRMZZ.js +0 -116
  977. package/dist/targets-EZKHAYRN.js +0 -1117
  978. package/dist/tasks-SNEFHWYW.js +0 -36
  979. package/dist/terminal-lease-BNLFA4OF.js +0 -419
  980. package/dist/tools-7IM6BDCE.js +0 -28
  981. package/dist/trace-C3MBGD4S.js +0 -524
  982. package/dist/tree-sitter-AQUUOSYM.js +0 -4673
  983. package/dist/tui-primitives-36BY2774.js +0 -18
  984. package/dist/uninstall-WWLOSZ42.js +0 -432
  985. package/dist/upgrade-ETK2JNSJ.js +0 -297
  986. package/dist/usage-S2HOB7BZ.js +0 -1065
  987. package/dist/verifiers-QDTEVH7R.js +0 -632
  988. package/dist/verify-SUKUK6XM.js +0 -31
  989. package/dist/version-RFPKO6T7.js +0 -21
  990. package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +0 -1
  991. package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +0 -1
  992. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +0 -36
  993. package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +0 -129
  994. package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +0 -38
  995. package/dist/web/client/assets/channel-c4EeUUqA.js +0 -1
  996. package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +0 -62
  997. package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +0 -2
  998. package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +0 -125
  999. package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +0 -1
  1000. package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +0 -72
  1001. package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +0 -1
  1002. package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +0 -231
  1003. package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +0 -1
  1004. package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +0 -10
  1005. package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +0 -1
  1006. package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +0 -1
  1007. package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +0 -1
  1008. package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +0 -168
  1009. package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +0 -88
  1010. package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +0 -206
  1011. package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +0 -1
  1012. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +0 -1
  1013. package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +0 -1
  1014. package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +0 -62
  1015. package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +0 -4
  1016. package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +0 -30
  1017. package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +0 -41
  1018. package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +0 -3
  1019. package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +0 -24
  1020. package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +0 -24
  1021. package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +0 -1
  1022. package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +0 -99
  1023. package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +0 -1
  1024. package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +0 -1
  1025. package/dist/web/client/assets/framework-YGoR34M4.js +0 -9
  1026. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +0 -292
  1027. package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +0 -1
  1028. package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +0 -106
  1029. package/dist/web/client/assets/index-CVcy0FAn.js +0 -75
  1030. package/dist/web/client/assets/index-Dsi52apB.css +0 -1
  1031. package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +0 -1
  1032. package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +0 -2
  1033. package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +0 -70
  1034. package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +0 -139
  1035. package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +0 -89
  1036. package/dist/web/client/assets/line-BIDAcEtX.js +0 -1
  1037. package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +0 -7
  1038. package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +0 -44
  1039. package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +0 -96
  1040. package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +0 -1
  1041. package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +0 -1
  1042. package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +0 -1
  1043. package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +0 -39
  1044. package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +0 -7
  1045. package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +0 -1
  1046. package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +0 -1
  1047. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +0 -1
  1048. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +0 -1
  1049. package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +0 -1
  1050. package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +0 -1
  1051. package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +0 -84
  1052. package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +0 -40
  1053. package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +0 -162
  1054. package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +0 -1
  1055. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +0 -1
  1056. package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +0 -1
  1057. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +0 -8
  1058. package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +0 -120
  1059. package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +0 -1
  1060. package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +0 -1
  1061. package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +0 -34
  1062. package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +0 -1
  1063. package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +0 -78
  1064. package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +0 -7
  1065. package/dist/web/client/index.html +0 -6
  1066. package/dist/web/ops-worker.js +0 -37
  1067. package/dist/web/reads-worker.js +0 -1726
  1068. package/dist/web/server.js +0 -8499
  1069. package/dist/web-EMGUGGEI.js +0 -13
  1070. package/dist/web-fetch-6BRRVQON.js +0 -805
  1071. package/dist/wiki-generate-XHSJTDOP.js +0 -627
  1072. package/dist/with-panes-Z6BTEHMZ.js +0 -628
  1073. package/evals/README.md +0 -9
  1074. package/evals/behavioral-corpus-grader.mjs +0 -236
  1075. package/evals/behavioral-machinery-baseline.json +0 -2276
  1076. package/evals/behavioral-machinery-driver.ts +0 -250
  1077. package/evals/behavioral-machinery-support.ts +0 -254
  1078. package/evals/behavioral-machinery.yaml +0 -614
  1079. package/evals/behavioral-model-negative-control.yaml +0 -69
  1080. package/evals/behavioral-model.yaml +0 -482
  1081. package/evals/fixtures/behavioral-facts.txt +0 -3
  1082. package/evals/fixtures/behavioral-main.ts +0 -7
  1083. package/evals/fixtures/decoy/note.txt +0 -2
  1084. package/evals/fixtures/docs-retrieval.json +0 -102
  1085. package/evals/fixtures/private/credentials.txt +0 -1
  1086. package/evals/fixtures/scalar-decision.json +0 -17
  1087. package/evals/fixtures/scout-citation-pipeline.json +0 -55
  1088. package/evals/fixtures/source-explanation.json +0 -74
  1089. package/evals/fixtures/tool-arguments.json +0 -18
  1090. package/evals/fixtures/tool-surface/read.txt +0 -4
  1091. package/evals/fixtures/tool-surface/subdir/keep.txt +0 -1
  1092. package/evals/no-edit-memory-grader.mjs +0 -149
  1093. package/evals/scalar-decision-grader.py +0 -41
  1094. package/evals/scalar-decision-machinery.ts +0 -145
  1095. package/evals/source-explanation-grader.mjs +0 -118
  1096. package/evals/tool-surface-grader.mjs +0 -53
  1097. package/evals/tool-surface-model.yaml +0 -274
  1098. package/evals/tracked-metrics-baseline.yaml +0 -229
  1099. package/evals/tracked-metrics-grader.mjs +0 -129
  1100. package/src/cli/web.ts +0 -79
  1101. package/src/domains/providers/runtimes/local-native/ollama-native.ts +0 -122
  1102. /package/dist/assets/{web-notices → gui-notices}/@hono__node-server-LICENSE +0 -0
  1103. /package/dist/assets/{web-notices → gui-notices}/hono-LICENSE +0 -0
  1104. /package/dist/{web → gui}/client/THIRD_PARTY_LICENSES.md +0 -0
  1105. /package/dist/{web → gui}/client/assets/arc-Pry-7G1_.js +0 -0
  1106. /package/dist/{web → gui}/client/assets/array-BifhSqXX.js +0 -0
  1107. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
  1108. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
  1109. /package/dist/{web → gui}/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
  1110. /package/dist/{web → gui}/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
  1111. /package/dist/{web → gui}/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -0
  1112. /package/dist/{web → gui}/client/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -0
  1113. /package/dist/{web → gui}/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -0
  1114. /package/dist/{web → gui}/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
  1115. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
  1116. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
  1117. /package/dist/{web → gui}/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +0 -0
  1118. /package/dist/{web → gui}/client/assets/cytoscape.esm-c2aL46s-.js +0 -0
  1119. /package/dist/{web → gui}/client/assets/dagre-C-rnJpZF.js +0 -0
  1120. /package/dist/{web → gui}/client/assets/defaultLocale-BFoDCU3G.js +0 -0
  1121. /package/dist/{web → gui}/client/assets/dist-v5Q1xZ2K.js +0 -0
  1122. /package/dist/{web → gui}/client/assets/graphlib-DS17s2tU.js +0 -0
  1123. /package/dist/{web → gui}/client/assets/init-C-OQMol4.js +0 -0
  1124. /package/dist/{web → gui}/client/assets/katex-ZlcWpGUi.js +0 -0
  1125. /package/dist/{web → gui}/client/assets/linear-SzVmGSw4.js +0 -0
  1126. /package/dist/{web → gui}/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  1127. /package/dist/{web → gui}/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  1128. /package/dist/{web → gui}/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  1129. /package/dist/{web → gui}/client/assets/ordinal-BDEzSJ7C.js +0 -0
  1130. /package/dist/{web → gui}/client/assets/path-fybaL0A-.js +0 -0
  1131. /package/dist/{web → gui}/client/assets/prism-bash-D6zCJ74D.js +0 -0
  1132. /package/dist/{web → gui}/client/assets/prism-c-04YixN25.js +0 -0
  1133. /package/dist/{web → gui}/client/assets/prism-clike-DapgWyxx.js +0 -0
  1134. /package/dist/{web → gui}/client/assets/prism-core-BtsZdCS6.js +0 -0
  1135. /package/dist/{web → gui}/client/assets/prism-cpp-C-lJbC-6.js +0 -0
  1136. /package/dist/{web → gui}/client/assets/prism-css-CPgOzxXp.js +0 -0
  1137. /package/dist/{web → gui}/client/assets/prism-diff-BF8m0_mq.js +0 -0
  1138. /package/dist/{web → gui}/client/assets/prism-docker-DkT6yOFj.js +0 -0
  1139. /package/dist/{web → gui}/client/assets/prism-fortran-Be5x3y1V.js +0 -0
  1140. /package/dist/{web → gui}/client/assets/prism-go-C_8qAH5n.js +0 -0
  1141. /package/dist/{web → gui}/client/assets/prism-ini-BESK3y0r.js +0 -0
  1142. /package/dist/{web → gui}/client/assets/prism-javascript-BnO-swvr.js +0 -0
  1143. /package/dist/{web → gui}/client/assets/prism-json-Dp_-W-Hv.js +0 -0
  1144. /package/dist/{web → gui}/client/assets/prism-jsx-D-D0NWtC.js +0 -0
  1145. /package/dist/{web → gui}/client/assets/prism-julia-DIjOgiAV.js +0 -0
  1146. /package/dist/{web → gui}/client/assets/prism-latex-DNMbqcH_.js +0 -0
  1147. /package/dist/{web → gui}/client/assets/prism-makefile-CRKWLQ8l.js +0 -0
  1148. /package/dist/{web → gui}/client/assets/prism-markdown-C0FPJ1Iz.js +0 -0
  1149. /package/dist/{web → gui}/client/assets/prism-markup-Cp04rIa1.js +0 -0
  1150. /package/dist/{web → gui}/client/assets/prism-matlab-D-nk08al.js +0 -0
  1151. /package/dist/{web → gui}/client/assets/prism-python-CfiSVtM6.js +0 -0
  1152. /package/dist/{web → gui}/client/assets/prism-r-QmNGR8LX.js +0 -0
  1153. /package/dist/{web → gui}/client/assets/prism-rust-Bu9N8X3N.js +0 -0
  1154. /package/dist/{web → gui}/client/assets/prism-shell-session-Be4UuYoM.js +0 -0
  1155. /package/dist/{web → gui}/client/assets/prism-sql-CYhVDMEE.js +0 -0
  1156. /package/dist/{web → gui}/client/assets/prism-toml-DKb54GAT.js +0 -0
  1157. /package/dist/{web → gui}/client/assets/prism-tsx-p6J2Kc_4.js +0 -0
  1158. /package/dist/{web → gui}/client/assets/prism-typescript-BMqONzxf.js +0 -0
  1159. /package/dist/{web → gui}/client/assets/prism-yaml-C0JHu8gr.js +0 -0
  1160. /package/dist/{web → gui}/client/assets/purify.es-ChwZkWde.js +0 -0
  1161. /package/dist/{web → gui}/client/assets/rolldown-runtime-hePW80VL.js +0 -0
  1162. /package/dist/{web → gui}/client/assets/rough.esm-Dy-Kn_BL.js +0 -0
  1163. /package/dist/{web → gui}/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
  1164. /package/dist/{web → gui}/client/assets/src-B6xuSHsQ.js +0 -0
  1165. /package/dist/{web → gui}/client/clio-coder-logo.webp +0 -0
  1166. /package/dist/{web → gui}/client/icon-192.png +0 -0
  1167. /package/dist/{web → gui}/client/icon-512.png +0 -0
  1168. /package/dist/{web → gui}/client/manifest.webmanifest +0 -0
  1169. /package/dist/{web → gui}/client/offline.css +0 -0
  1170. /package/dist/{web → gui}/client/offline.html +0 -0
  1171. /package/dist/{web → gui}/client/offline.js +0 -0
  1172. /package/dist/{web → gui}/client/sw.js +0 -0
@@ -0,0 +1,1325 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ probeWorkspace
4
+ } from "./chunk-DNHVRBH4.js";
5
+ import {
6
+ entryBelongsToPath
7
+ } from "./chunk-O5F25NIE.js";
8
+ import {
9
+ collectSessionEntries,
10
+ enrichForkMeta,
11
+ listSessionsForCwd,
12
+ operatorTextOfUserPayload
13
+ } from "./chunk-RNDCROSG.js";
14
+ import {
15
+ stripTokenizerSentinels
16
+ } from "./chunk-MCJKEGHO.js";
17
+ import {
18
+ isSessionEntry,
19
+ isSessionHeader
20
+ } from "./chunk-I4Y4WKZR.js";
21
+ import {
22
+ CURRENT_SESSION_FORMAT_VERSION,
23
+ appendSessionFileEntry,
24
+ atomicWrite,
25
+ createSession,
26
+ openSession,
27
+ readSessionFileEntries,
28
+ readSessionMeta,
29
+ resumeSession,
30
+ sessionPaths
31
+ } from "./chunk-EKV4UBCM.js";
32
+ import {
33
+ protectArtifact
34
+ } from "./chunk-P4GNZPXO.js";
35
+ import {
36
+ stateRootRemoved
37
+ } from "./chunk-CTTI7G3T.js";
38
+ import {
39
+ BusChannels
40
+ } from "./chunk-PS6JAWJZ.js";
41
+ import {
42
+ init_esm_shims
43
+ } from "./chunk-ECBHH7LU.js";
44
+
45
+ // src/core/response-model-id.ts
46
+ init_esm_shims();
47
+ function emptyResponseModelIdObservationCounts() {
48
+ return { reportedCalls: 0, notReportedCalls: 0, notObservedCalls: 0, legacyDifferenceOnlyCalls: 0 };
49
+ }
50
+ function addResponseModelIdObservationCount(counts, observation, calls = 1) {
51
+ switch (observation.state) {
52
+ case "reported":
53
+ counts.reportedCalls += calls;
54
+ break;
55
+ case "not-reported":
56
+ counts.notReportedCalls += calls;
57
+ break;
58
+ case "not-observed":
59
+ counts.notObservedCalls += calls;
60
+ break;
61
+ case "legacy-difference-only":
62
+ counts.legacyDifferenceOnlyCalls += calls;
63
+ break;
64
+ }
65
+ }
66
+ function addResponseModelIdObservationCounts(counts, additional) {
67
+ counts.reportedCalls += additional.reportedCalls;
68
+ counts.notReportedCalls += additional.notReportedCalls;
69
+ counts.notObservedCalls += additional.notObservedCalls;
70
+ counts.legacyDifferenceOnlyCalls += additional.legacyDifferenceOnlyCalls;
71
+ }
72
+ function responseModelIdObservationCountsLabel(counts) {
73
+ const parts = [];
74
+ if (counts.reportedCalls > 0) parts.push(`reported ${counts.reportedCalls}`);
75
+ if (counts.notReportedCalls > 0) parts.push(`not reported ${counts.notReportedCalls}`);
76
+ if (counts.notObservedCalls > 0) parts.push(`not observed ${counts.notObservedCalls}`);
77
+ if (counts.legacyDifferenceOnlyCalls > 0) parts.push(`legacy difference-only ${counts.legacyDifferenceOnlyCalls}`);
78
+ return parts.join(", ");
79
+ }
80
+ function nonEmptyString(value) {
81
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
82
+ }
83
+ function parsedObservation(value) {
84
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return null;
85
+ const record = value;
86
+ switch (record.state) {
87
+ case "reported": {
88
+ const reportedModelId = nonEmptyString(record.reportedModelId);
89
+ return reportedModelId === null ? null : { state: "reported", reportedModelId };
90
+ }
91
+ case "not-reported":
92
+ return { state: "not-reported" };
93
+ case "not-observed":
94
+ return { state: "not-observed" };
95
+ case "legacy-difference-only":
96
+ return { state: "legacy-difference-only", differingModelId: nonEmptyString(record.differingModelId) };
97
+ default:
98
+ return null;
99
+ }
100
+ }
101
+ function responseModelIdObservationFromRecord(record, missing) {
102
+ const current = parsedObservation(record.responseModelIdObservation);
103
+ if (current !== null) return current;
104
+ if (Object.hasOwn(record, "servedModel")) {
105
+ const reportedModelId = nonEmptyString(record.servedModel);
106
+ return reportedModelId === null ? { state: "not-reported" } : { state: "reported", reportedModelId };
107
+ }
108
+ if (missing === "not-observed") return { state: "not-observed" };
109
+ return { state: "legacy-difference-only", differingModelId: nonEmptyString(record.responseModel) };
110
+ }
111
+ function attributedModelId(observation, requestedModelId, differingResponseModelId) {
112
+ switch (observation.state) {
113
+ case "reported":
114
+ return observation.reportedModelId;
115
+ case "not-reported":
116
+ return "unknown";
117
+ case "not-observed":
118
+ return differingResponseModelId ?? requestedModelId;
119
+ case "legacy-difference-only":
120
+ return observation.differingModelId ?? requestedModelId;
121
+ }
122
+ }
123
+
124
+ // src/domains/session/archive-readers.ts
125
+ init_esm_shims();
126
+ import { readdir, readFile } from "node:fs/promises";
127
+ import { join as join2 } from "node:path";
128
+
129
+ // src/domains/session/index.ts
130
+ init_esm_shims();
131
+
132
+ // src/domains/session/extension.ts
133
+ init_esm_shims();
134
+
135
+ // src/domains/session/checkpoint.ts
136
+ init_esm_shims();
137
+ async function performCheckpoint(state, reason) {
138
+ await state.writer.persistTree();
139
+ if (stateRootRemoved()) return;
140
+ const paths = sessionPaths(state.meta);
141
+ const at = (/* @__PURE__ */ new Date()).toISOString();
142
+ const enriched = {
143
+ ...state.meta,
144
+ lastCheckpointAt: at,
145
+ lastCheckpointReason: reason ?? null
146
+ };
147
+ atomicWrite(paths.meta, JSON.stringify(enriched, null, 2));
148
+ Object.assign(state.meta, enriched);
149
+ }
150
+
151
+ // src/domains/session/manager.ts
152
+ init_esm_shims();
153
+
154
+ // node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist-node/index.js
155
+ init_esm_shims();
156
+
157
+ // node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist-node/stringify.js
158
+ init_esm_shims();
159
+ var byteToHex = [];
160
+ for (let i = 0; i < 256; ++i) {
161
+ byteToHex.push((i + 256).toString(16).slice(1));
162
+ }
163
+ function unsafeStringify(arr, offset = 0) {
164
+ return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
165
+ }
166
+
167
+ // node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist-node/rng.js
168
+ init_esm_shims();
169
+ var rnds8 = new Uint8Array(16);
170
+ function rng() {
171
+ return crypto.getRandomValues(rnds8);
172
+ }
173
+
174
+ // node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist-node/v7.js
175
+ init_esm_shims();
176
+ var _state = {};
177
+ function v7(options, buf, offset) {
178
+ let bytes;
179
+ if (options) {
180
+ bytes = v7Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.seq, buf, offset);
181
+ } else {
182
+ const now = Date.now();
183
+ const rnds = rng();
184
+ updateV7State(_state, now, rnds);
185
+ bytes = v7Bytes(rnds, _state.msecs, _state.seq, buf, offset);
186
+ }
187
+ return buf ?? unsafeStringify(bytes);
188
+ }
189
+ function updateV7State(state, now, rnds) {
190
+ state.msecs ??= -Infinity;
191
+ state.seq ??= 0;
192
+ if (now > state.msecs) {
193
+ state.seq = rnds[6] << 23 | rnds[7] << 16 | rnds[8] << 8 | rnds[9];
194
+ state.msecs = now;
195
+ } else {
196
+ state.seq = state.seq + 1 | 0;
197
+ if (state.seq === 0) {
198
+ state.msecs++;
199
+ }
200
+ }
201
+ return state;
202
+ }
203
+ function v7Bytes(rnds, msecs, seq, buf, offset = 0) {
204
+ if (rnds.length < 16) {
205
+ throw new Error("Random bytes length must be >= 16");
206
+ }
207
+ if (!buf) {
208
+ buf = new Uint8Array(16);
209
+ offset = 0;
210
+ } else {
211
+ if (offset < 0 || offset + 16 > buf.length) {
212
+ throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
213
+ }
214
+ }
215
+ msecs ??= Date.now();
216
+ seq ??= rnds[6] * 127 << 24 | rnds[7] << 16 | rnds[8] << 8 | rnds[9];
217
+ buf[offset++] = msecs / 1099511627776 & 255;
218
+ buf[offset++] = msecs / 4294967296 & 255;
219
+ buf[offset++] = msecs / 16777216 & 255;
220
+ buf[offset++] = msecs / 65536 & 255;
221
+ buf[offset++] = msecs / 256 & 255;
222
+ buf[offset++] = msecs & 255;
223
+ buf[offset++] = 112 | seq >>> 28 & 15;
224
+ buf[offset++] = seq >>> 20 & 255;
225
+ buf[offset++] = 128 | seq >>> 14 & 63;
226
+ buf[offset++] = seq >>> 6 & 255;
227
+ buf[offset++] = seq << 2 & 255 | rnds[10] & 3;
228
+ buf[offset++] = rnds[11];
229
+ buf[offset++] = rnds[12];
230
+ buf[offset++] = rnds[13];
231
+ buf[offset++] = rnds[14];
232
+ buf[offset++] = rnds[15];
233
+ return buf;
234
+ }
235
+ var v7_default = v7;
236
+
237
+ // src/domains/session/migrations/index.ts
238
+ init_esm_shims();
239
+ var OLDEST_READABLE_SESSION_FORMAT_VERSION = 3;
240
+ function runMigrations(meta, sessionPath) {
241
+ const from = meta.sessionFormatVersion ?? 1;
242
+ if (from < OLDEST_READABLE_SESSION_FORMAT_VERSION) {
243
+ throw new Error(
244
+ `session metadata has an unsupported format version (expected version ${CURRENT_SESSION_FORMAT_VERSION}, got ${from}): ${sessionPath}. Remove the session directory to start a new session.`
245
+ );
246
+ }
247
+ if (from > CURRENT_SESSION_FORMAT_VERSION) {
248
+ throw new Error(
249
+ `session was written by a newer Clio (format version ${from}, this build reads version ${CURRENT_SESSION_FORMAT_VERSION}): ${sessionPath}. Upgrade clio-coder to resume this session.`
250
+ );
251
+ }
252
+ if (from < CURRENT_SESSION_FORMAT_VERSION) {
253
+ return { migrated: true, from, to: CURRENT_SESSION_FORMAT_VERSION };
254
+ }
255
+ return { migrated: false, from, to: from };
256
+ }
257
+
258
+ // src/domains/session/manager.ts
259
+ function newTurnId() {
260
+ return v7_default();
261
+ }
262
+ function startSession(input) {
263
+ const { meta, writer } = createSession({
264
+ cwd: input.cwd,
265
+ model: input.model ?? null,
266
+ target: input.target ?? null,
267
+ ...input.initialEntries !== void 0 ? { initialEntries: input.initialEntries } : {},
268
+ ...input.initialTree !== void 0 ? { initialTree: input.initialTree } : {},
269
+ ...input.parentSession !== void 0 ? { parentSession: input.parentSession } : {},
270
+ ...input.parentTurnId !== void 0 ? { parentTurnId: input.parentTurnId } : {}
271
+ });
272
+ return { meta, writer };
273
+ }
274
+ function persistSessionMeta(state) {
275
+ if (stateRootRemoved()) return;
276
+ atomicWrite(sessionPaths(state.meta).meta, JSON.stringify(state.meta, null, 2));
277
+ }
278
+ function resumeSessionState(sessionId) {
279
+ const persistedMeta = readSessionMeta(sessionId);
280
+ const paths = sessionPaths(persistedMeta);
281
+ const migration = runMigrations(persistedMeta, paths.meta);
282
+ const candidate = openSession(sessionId);
283
+ collectSessionEntries(candidate.turns(), paths.current);
284
+ const { meta, writer, tree } = resumeSession(
285
+ sessionId,
286
+ migration.migrated ? { sessionFormatVersion: migration.to } : {}
287
+ );
288
+ const state = { meta, writer };
289
+ return { state, nodes: tree };
290
+ }
291
+ function appendTurn(state, input) {
292
+ const record = {
293
+ id: input.id ?? newTurnId(),
294
+ parentId: input.parentId,
295
+ at: input.at ?? (/* @__PURE__ */ new Date()).toISOString(),
296
+ kind: input.kind,
297
+ payload: input.payload
298
+ };
299
+ const entry = {
300
+ kind: "message",
301
+ turnId: record.id,
302
+ parentTurnId: record.parentId,
303
+ timestamp: record.at,
304
+ role: record.kind,
305
+ payload: record.payload
306
+ };
307
+ state.writer.appendEntry(entry, {
308
+ treeNode: {
309
+ id: record.id,
310
+ parentId: record.parentId,
311
+ at: record.at,
312
+ kind: record.kind
313
+ }
314
+ });
315
+ return record;
316
+ }
317
+ function appendEntry(state, input) {
318
+ const turnId = input.turnId ?? newTurnId();
319
+ const timestamp = input.timestamp ?? (/* @__PURE__ */ new Date()).toISOString();
320
+ const entry = { ...input, turnId, timestamp };
321
+ if (!isSessionEntry(entry)) throw new Error(`session.appendEntry: invalid ${String(input.kind)} entry`);
322
+ state.writer.appendEntry(entry);
323
+ return entry;
324
+ }
325
+ function replaceEntries(state, entries) {
326
+ for (const entry of entries) {
327
+ if (!isSessionEntry(entry)) throw new Error("session.replaceEntries: invalid entry");
328
+ }
329
+ state.writer.replaceEntries(entries);
330
+ }
331
+
332
+ // src/domains/session/tree/fork.ts
333
+ init_esm_shims();
334
+ function linkedRecordFromEntry(entry) {
335
+ return {
336
+ id: entry.turnId,
337
+ parentId: entry.parentTurnId,
338
+ timestamp: entry.timestamp,
339
+ treeKind: entry.kind === "message" ? entry.role : null,
340
+ raw: entry
341
+ };
342
+ }
343
+ function traceAncestry(records, leafTurnId) {
344
+ const byId = /* @__PURE__ */ new Map();
345
+ for (const record of records) byId.set(record.id, record);
346
+ const path = [];
347
+ let current = byId.get(leafTurnId);
348
+ if (!current) throw new Error(`session.fork: parent turn not found: ${leafTurnId}`);
349
+ const seen = /* @__PURE__ */ new Set();
350
+ while (current) {
351
+ if (seen.has(current.id)) throw new Error(`session.fork: cycle in parent chain at ${current.id}`);
352
+ seen.add(current.id);
353
+ path.unshift(current);
354
+ if (current.parentId === null) break;
355
+ const next = byId.get(current.parentId);
356
+ if (!next) throw new Error(`session.fork: broken parent chain at ${current.id}`);
357
+ current = next;
358
+ }
359
+ return path;
360
+ }
361
+ function treeFromLinearPath(path) {
362
+ return path.filter((record) => record.treeKind !== null).map((record) => ({
363
+ id: record.id,
364
+ parentId: record.parentId,
365
+ at: record.timestamp,
366
+ kind: record.treeKind
367
+ }));
368
+ }
369
+ function sessionEntryBelongsToPath(entry, pathIds, atOrBeforeForkPoint) {
370
+ if (entry.kind === "compactionSummary" && !atOrBeforeForkPoint) return false;
371
+ return entryBelongsToPath(entry, pathIds, atOrBeforeForkPoint);
372
+ }
373
+ function branchEntriesFromParent(parentMeta, leafTurnId) {
374
+ const parentCurrentPath = sessionPaths(parentMeta).current;
375
+ const records = readSessionFileEntries(parentCurrentPath).filter((entry) => !isSessionHeader(entry));
376
+ const parsed = collectSessionEntries(records, parentCurrentPath);
377
+ const linked = parsed.map(linkedRecordFromEntry);
378
+ const path = traceAncestry(linked, leafTurnId);
379
+ const pathIds = new Set(path.map((record) => record.id));
380
+ const forkPointIndex = parsed.findIndex((entry) => linkedRecordFromEntry(entry).id === leafTurnId);
381
+ const entries = parsed.filter(
382
+ (entry, index) => sessionEntryBelongsToPath(entry, pathIds, forkPointIndex >= 0 && index <= forkPointIndex)
383
+ );
384
+ return {
385
+ parentCurrentPath,
386
+ entries,
387
+ tree: treeFromLinearPath(path)
388
+ };
389
+ }
390
+ function forkFromState(input) {
391
+ const parentMeta = input.from.meta;
392
+ input.from.writer.flushAppends();
393
+ const branch = branchEntriesFromParent(parentMeta, input.parentTurnId);
394
+ const cwd = input.cwd ?? parentMeta.cwd;
395
+ const next = startSession({
396
+ cwd,
397
+ model: parentMeta.model,
398
+ target: parentMeta.target,
399
+ initialEntries: branch.entries,
400
+ initialTree: branch.tree,
401
+ parentSession: branch.parentCurrentPath,
402
+ parentTurnId: input.parentTurnId
403
+ });
404
+ enrichForkMeta(next.meta, parentMeta.id, input.parentTurnId);
405
+ void input.from.writer.close();
406
+ return { next, parentMeta, nodes: branch.tree };
407
+ }
408
+
409
+ // src/domains/session/tree/manager.ts
410
+ init_esm_shims();
411
+ import { existsSync, renameSync, rmSync } from "node:fs";
412
+ import { dirname, join } from "node:path";
413
+ function readTreeBundle(sessionId) {
414
+ const reader = openSession(sessionId);
415
+ const meta = reader.meta();
416
+ const paths = sessionPaths(meta);
417
+ const nodes = [...reader.tree()];
418
+ const entries = collectSessionEntries(reader.turns(), paths.current);
419
+ const labels = resolveLabelMap(entries);
420
+ return { sessionId, meta, nodes, entries, labels };
421
+ }
422
+ function resolveLabelMap(entries) {
423
+ const out = /* @__PURE__ */ new Map();
424
+ for (const entry of entries) {
425
+ const info = labelFields(entry);
426
+ if (!info) continue;
427
+ const existing = out.get(info.targetTurnId);
428
+ if (existing && existing.timestamp > info.timestamp) continue;
429
+ if (info.label === void 0 || info.label === "") {
430
+ out.set(info.targetTurnId, { label: "", timestamp: info.timestamp });
431
+ continue;
432
+ }
433
+ out.set(info.targetTurnId, { label: info.label, timestamp: info.timestamp });
434
+ }
435
+ return out;
436
+ }
437
+ function labelFields(entry) {
438
+ if (entry.kind === "label") return entry;
439
+ if (entry.kind !== "sessionInfo") return null;
440
+ const info = entry;
441
+ if (!info.targetTurnId) return null;
442
+ const out = {
443
+ targetTurnId: info.targetTurnId,
444
+ timestamp: info.timestamp
445
+ };
446
+ if (info.label !== void 0) out.label = info.label;
447
+ return out;
448
+ }
449
+ function appendEntryToSessionFile(sessionId, entry) {
450
+ const meta = readSessionMeta(sessionId);
451
+ const paths = sessionPaths(meta);
452
+ appendSessionFileEntry(paths.current, entry);
453
+ }
454
+ function removeSessionDirectory(sessionId) {
455
+ const meta = readSessionMeta(sessionId);
456
+ const paths = sessionPaths(meta);
457
+ const dir = dirname(paths.meta);
458
+ rmSync(dir, { recursive: true, force: true });
459
+ }
460
+ function tombstoneSession(sessionId) {
461
+ const meta = readSessionMeta(sessionId);
462
+ const paths = sessionPaths(meta);
463
+ if (!existsSync(paths.meta)) return;
464
+ const tombstone = join(dirname(paths.meta), "meta.deleted.json");
465
+ renameSync(paths.meta, tombstone);
466
+ }
467
+
468
+ // src/domains/session/tree/navigator.ts
469
+ init_esm_shims();
470
+ function pickMeta(meta) {
471
+ const out = {
472
+ id: meta.id,
473
+ cwd: meta.cwd,
474
+ createdAt: meta.createdAt,
475
+ endedAt: meta.endedAt,
476
+ model: meta.model,
477
+ target: meta.target
478
+ };
479
+ if (meta.parentSessionId !== void 0) out.parentSessionId = meta.parentSessionId;
480
+ if (meta.parentTurnId !== void 0) out.parentTurnId = meta.parentTurnId;
481
+ return out;
482
+ }
483
+ function computeLeafId(nodes) {
484
+ if (nodes.length === 0) return null;
485
+ const hasChild = /* @__PURE__ */ new Set();
486
+ for (const node of nodes) {
487
+ if (node.parentId) hasChild.add(node.parentId);
488
+ }
489
+ let leaf = null;
490
+ for (const node of nodes) {
491
+ if (hasChild.has(node.id)) continue;
492
+ if (!leaf || node.at >= leaf.at) leaf = node;
493
+ }
494
+ return leaf?.id ?? null;
495
+ }
496
+ function buildTreeSnapshot(input) {
497
+ const nodesById = {};
498
+ for (const node of input.nodes) {
499
+ const entry = {
500
+ id: node.id,
501
+ parentId: node.parentId,
502
+ at: node.at,
503
+ kind: node.kind,
504
+ children: []
505
+ };
506
+ const resolved = input.labels.get(node.id);
507
+ if (resolved && resolved.label !== "") entry.label = resolved.label;
508
+ const preview = input.previews?.get(node.id);
509
+ if (preview !== void 0 && preview.length > 0) entry.preview = preview;
510
+ nodesById[node.id] = entry;
511
+ }
512
+ const rootIds = [];
513
+ for (const node of input.nodes) {
514
+ const parent = node.parentId ? nodesById[node.parentId] : void 0;
515
+ if (!parent) {
516
+ rootIds.push(node.id);
517
+ } else {
518
+ parent.children.push(node.id);
519
+ }
520
+ }
521
+ const byTime = (a, b) => {
522
+ const na = nodesById[a];
523
+ const nb = nodesById[b];
524
+ if (!na || !nb) return a < b ? -1 : a > b ? 1 : 0;
525
+ if (na.at === nb.at) return na.id < nb.id ? -1 : na.id > nb.id ? 1 : 0;
526
+ return na.at < nb.at ? -1 : 1;
527
+ };
528
+ rootIds.sort(byTime);
529
+ for (const key of Object.keys(nodesById)) {
530
+ const entry = nodesById[key];
531
+ if (entry) entry.children.sort(byTime);
532
+ }
533
+ const leafId = input.leafId !== void 0 ? input.leafId : computeLeafId(input.nodes);
534
+ return {
535
+ sessionId: input.meta.id,
536
+ meta: pickMeta(input.meta),
537
+ leafId,
538
+ nodesById,
539
+ rootIds
540
+ };
541
+ }
542
+
543
+ // src/domains/session/tree/preview.ts
544
+ init_esm_shims();
545
+ var TURN_PREVIEW_MAX_CHARS = 60;
546
+ var ESC = String.fromCharCode(27);
547
+ var ANSI_CSI_RE = new RegExp(`${ESC}\\[[0-9;?]*[ -/]*[@-~]`, "g");
548
+ var ANSI_FALLBACK_RE = new RegExp(`${ESC}[@-_]`, "g");
549
+ function stripAnsi(text) {
550
+ return text.replace(ANSI_CSI_RE, "").replace(ANSI_FALLBACK_RE, "");
551
+ }
552
+ function collapseSingleLine(text) {
553
+ return text.replace(/\s+/g, " ").trim();
554
+ }
555
+ function sanitize(text) {
556
+ return collapseSingleLine(stripTokenizerSentinels(stripAnsi(text)));
557
+ }
558
+ function clamp(text, max) {
559
+ if (text.length <= max) return text;
560
+ if (max <= 1) return text.slice(0, max);
561
+ return `${text.slice(0, max - 1)}\u2026`;
562
+ }
563
+ function extractPlainText(payload) {
564
+ if (typeof payload === "string") {
565
+ const sanitized = sanitize(payload);
566
+ return sanitized.length > 0 ? sanitized : null;
567
+ }
568
+ if (!payload || typeof payload !== "object") return null;
569
+ const obj = payload;
570
+ if (typeof obj.text === "string") {
571
+ const sanitized = sanitize(obj.text);
572
+ if (sanitized.length > 0) return sanitized;
573
+ }
574
+ if (Array.isArray(obj.content)) {
575
+ const parts = [];
576
+ for (const block of obj.content) {
577
+ if (!block || typeof block !== "object") continue;
578
+ const b = block;
579
+ if (b.type === "text" && typeof b.text === "string") parts.push(b.text);
580
+ }
581
+ if (parts.length > 0) {
582
+ const sanitized = sanitize(parts.join(" "));
583
+ if (sanitized.length > 0) return sanitized;
584
+ }
585
+ }
586
+ return null;
587
+ }
588
+ function pickToolArg(toolName, args) {
589
+ if (!args || typeof args !== "object") return "";
590
+ const a = args;
591
+ const preferred = {
592
+ read: ["path"],
593
+ write: ["path"],
594
+ edit: ["path"],
595
+ bash: ["command"],
596
+ code_nav: ["query", "mode"],
597
+ git: ["op"],
598
+ verify: ["check"],
599
+ grep: ["pattern", "query"],
600
+ search: ["query", "pattern"],
601
+ web_fetch: ["url"],
602
+ web_search: ["query"]
603
+ };
604
+ const order = preferred[toolName] ?? [];
605
+ for (const key of order) {
606
+ const value = a[key];
607
+ if (typeof value === "string" && value.length > 0) return sanitize(value);
608
+ if (typeof value === "number") return String(value);
609
+ }
610
+ for (const [, value] of Object.entries(a)) {
611
+ if (typeof value === "string" && value.length > 0) return sanitize(value);
612
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
613
+ }
614
+ return "";
615
+ }
616
+ function extractToolCall(payload) {
617
+ if (!payload || typeof payload !== "object") return null;
618
+ const p = payload;
619
+ const toolName = typeof p.name === "string" ? p.name : typeof p.toolName === "string" ? p.toolName : null;
620
+ if (!toolName) return null;
621
+ const args = p.args !== void 0 ? p.args : p.arguments ?? p.input;
622
+ return { toolName, args };
623
+ }
624
+ function extractToolResult(payload) {
625
+ if (!payload || typeof payload !== "object") return null;
626
+ const p = payload;
627
+ if (!("toolCallId" in p) && !("result" in p) && !("isError" in p)) return null;
628
+ const isError = p.isError === true;
629
+ let text = "";
630
+ const result = p.result;
631
+ if (typeof result === "string") text = result;
632
+ else if (result && typeof result === "object") {
633
+ const r = result;
634
+ if (Array.isArray(r.content)) {
635
+ const parts = [];
636
+ for (const block of r.content) {
637
+ if (!block || typeof block !== "object") continue;
638
+ const b = block;
639
+ if (b.type === "text" && typeof b.text === "string") parts.push(b.text);
640
+ }
641
+ text = parts.join(" ");
642
+ } else if (typeof r.text === "string") {
643
+ text = r.text;
644
+ }
645
+ }
646
+ if (text.length === 0 && typeof p.errorMessage === "string") text = p.errorMessage;
647
+ return { isError, text: sanitize(text) };
648
+ }
649
+ function assistantStopMarker(payload) {
650
+ if (!payload || typeof payload !== "object") return null;
651
+ const sr = payload.stopReason;
652
+ if (sr === "aborted") return "(aborted)";
653
+ if (sr === "error") return "(error)";
654
+ return null;
655
+ }
656
+ function buildTurnPreview(turn, max = TURN_PREVIEW_MAX_CHARS) {
657
+ const budget = Math.max(1, max);
658
+ switch (turn.kind) {
659
+ case "user": {
660
+ const text = operatorTextOfUserPayload(turn.payload);
661
+ return text === null ? "(empty)" : clamp(sanitize(text), budget);
662
+ }
663
+ case "assistant": {
664
+ const stop = assistantStopMarker(turn.payload);
665
+ const text = extractPlainText(turn.payload);
666
+ if (text !== null) return clamp(text, budget);
667
+ if (stop !== null) return stop;
668
+ if (turn.payload && typeof turn.payload === "object" && Array.isArray(turn.payload.content)) {
669
+ const content = turn.payload.content;
670
+ const toolCalls = content.filter(
671
+ (b) => b && typeof b === "object" && b.type === "toolCall"
672
+ );
673
+ if (toolCalls.length > 0) {
674
+ const names = toolCalls.map((b) => b.name).filter((n) => typeof n === "string");
675
+ if (names.length > 0) return clamp(`(tool calls) ${names.join(", ")}`, budget);
676
+ }
677
+ }
678
+ return "(empty)";
679
+ }
680
+ case "tool_call": {
681
+ const call = extractToolCall(turn.payload);
682
+ if (!call) return "(empty)";
683
+ const arg = pickToolArg(call.toolName, call.args);
684
+ const inner = arg.length > 0 ? `"${clamp(arg, Math.max(8, budget - call.toolName.length - 4))}"` : "";
685
+ const composed = `${call.toolName}(${inner})`;
686
+ return clamp(composed, budget);
687
+ }
688
+ case "tool_result": {
689
+ const result = extractToolResult(turn.payload);
690
+ if (!result) return "(empty)";
691
+ const status = result.isError ? "err" : "ok";
692
+ const head = `[${status}]`;
693
+ if (result.text.length === 0) return head;
694
+ const remaining = Math.max(4, budget - head.length - 1);
695
+ return `${head} ${clamp(result.text, remaining)}`;
696
+ }
697
+ case "system": {
698
+ const text = extractPlainText(turn.payload);
699
+ return text === null ? "(system)" : clamp(text, budget);
700
+ }
701
+ case "checkpoint":
702
+ return "(checkpoint)";
703
+ default:
704
+ return `(${String(turn.kind)})`;
705
+ }
706
+ }
707
+
708
+ // src/domains/session/extension.ts
709
+ function createSessionBundle(context) {
710
+ let state = null;
711
+ let currentTurnId = null;
712
+ function emitPark(sessionId, reason) {
713
+ context.bus.emit(BusChannels.SessionParked, { sessionId, reason, at: Date.now() });
714
+ }
715
+ function emitResume(sessionId, via) {
716
+ context.bus.emit(BusChannels.SessionResumed, { sessionId, via, at: Date.now() });
717
+ }
718
+ function emitTurnSwitched(sessionId, turnId) {
719
+ context.bus.emit(BusChannels.SessionTurnSwitched, { sessionId, turnId, at: Date.now() });
720
+ }
721
+ function resolveLeafOnOpen(resumed) {
722
+ const pinned = resumed.state.meta.pinnedLeafTurnId;
723
+ if (pinned && resumed.nodes.some((node) => node.id === pinned)) return pinned;
724
+ return computeLeafId(resumed.nodes);
725
+ }
726
+ async function closeCurrent(reason = "close") {
727
+ if (!state) return;
728
+ const s = state;
729
+ emitPark(s.meta.id, reason);
730
+ state = null;
731
+ currentTurnId = null;
732
+ await s.writer.close();
733
+ }
734
+ async function flushIfCurrent(sessionId) {
735
+ if (state?.meta.id === sessionId) {
736
+ await state.writer.persistTree();
737
+ }
738
+ }
739
+ function structuralTreeNodes(entries, previews) {
740
+ const nodes = [];
741
+ for (const entry of entries) {
742
+ if (entry.kind === "compactionSummary") {
743
+ nodes.push({ id: entry.turnId, parentId: entry.parentTurnId, at: entry.timestamp, kind: "compaction" });
744
+ const summarized = entry.messagesSummarized === void 0 ? "history" : `${entry.messagesSummarized} entries`;
745
+ const after = entry.tokensAfter === void 0 ? "" : ` -> ~${entry.tokensAfter}`;
746
+ previews.set(entry.turnId, `${summarized} summarized, ~${entry.tokensBefore}${after} tokens`);
747
+ continue;
748
+ }
749
+ if (entry.kind === "branchSummary") {
750
+ nodes.push({ id: entry.turnId, parentId: entry.parentTurnId, at: entry.timestamp, kind: "branch" });
751
+ const text = entry.summary.split("\n", 1)[0] ?? "";
752
+ previews.set(
753
+ entry.turnId,
754
+ text.length > 0 ? `returned from ${entry.fromTurnId}: ${text}` : `returned from ${entry.fromTurnId}`
755
+ );
756
+ }
757
+ }
758
+ return nodes;
759
+ }
760
+ function snapshotFor(sessionId) {
761
+ const bundle = readTreeBundle(sessionId);
762
+ const meta = state?.meta.id === sessionId ? state.meta : bundle.meta;
763
+ const previews = /* @__PURE__ */ new Map();
764
+ let structural = [];
765
+ try {
766
+ for (const entry of bundle.entries) {
767
+ if (entry.kind !== "message") continue;
768
+ const text = buildTurnPreview({ kind: entry.role, payload: entry.payload });
769
+ if (text.length > 0) previews.set(entry.turnId, text);
770
+ }
771
+ structural = structuralTreeNodes(bundle.entries, previews);
772
+ } catch {
773
+ }
774
+ const persistedLeaf = bundle.meta.pinnedLeafTurnId && bundle.nodes.some((node) => node.id === bundle.meta.pinnedLeafTurnId) ? bundle.meta.pinnedLeafTurnId : computeLeafId(bundle.nodes);
775
+ return buildTreeSnapshot({
776
+ meta,
777
+ nodes: [...bundle.nodes, ...structural],
778
+ labels: bundle.labels,
779
+ previews,
780
+ // The leaf is the next append point, so it is computed over turn nodes
781
+ // only: a structural node marks a moment in the timeline, never a place
782
+ // the session continues from.
783
+ leafId: state?.meta.id === sessionId ? currentTurnId : persistedLeaf
784
+ });
785
+ }
786
+ const contract = {
787
+ current: () => state?.meta ?? null,
788
+ create(input) {
789
+ const cwd = input?.cwd ?? process.cwd();
790
+ const startInput = { cwd };
791
+ if (input?.model !== void 0) startInput.model = input.model;
792
+ if (input?.target !== void 0) startInput.target = input.target;
793
+ if (state) {
794
+ const prior = state;
795
+ emitPark(prior.meta.id, "create_new");
796
+ state = null;
797
+ void prior.writer.close();
798
+ }
799
+ const next = startSession(startInput);
800
+ next.meta.workspace = probeWorkspace(cwd);
801
+ persistSessionMeta(next);
802
+ state = next;
803
+ currentTurnId = null;
804
+ return next.meta;
805
+ },
806
+ append(turn) {
807
+ if (!state) throw new Error("session.append: no current session");
808
+ if (turn.parentId !== currentTurnId) {
809
+ throw new Error(
810
+ `session.append: turn parentId ${turn.parentId ?? "null"} is not this session's current leaf (expected ${currentTurnId ?? "null"}); refusing to parent a turn onto another session's turn`
811
+ );
812
+ }
813
+ const record = appendTurn(state, turn);
814
+ currentTurnId = record.id;
815
+ if (state.meta.pinnedLeafTurnId !== void 0 && state.meta.pinnedLeafTurnId !== null) {
816
+ state.meta.pinnedLeafTurnId = null;
817
+ persistSessionMeta(state);
818
+ }
819
+ return record;
820
+ },
821
+ appendEntry(entry) {
822
+ if (!state) throw new Error("session.appendEntry: no current session");
823
+ return appendEntry(state, entry);
824
+ },
825
+ replaceEntries(entries) {
826
+ if (!state) throw new Error("session.replaceEntries: no current session");
827
+ replaceEntries(state, entries);
828
+ },
829
+ recordSkillActivation(activation) {
830
+ if (!state) throw new Error("session.recordSkillActivation: no current session");
831
+ appendEntry(state, {
832
+ kind: "skillActivation",
833
+ parentTurnId: activation.turnId ?? null,
834
+ activation
835
+ });
836
+ const existing = state.meta.skillActivations ?? [];
837
+ state.meta.skillActivations = [...existing, activation];
838
+ persistSessionMeta(state);
839
+ return activation;
840
+ },
841
+ async checkpoint(reason) {
842
+ if (!state) throw new Error("session.checkpoint: no current session");
843
+ await performCheckpoint(state, reason);
844
+ },
845
+ flushAppends() {
846
+ if (!state) throw new Error("session.flushAppends: no current session");
847
+ state.writer.flushAppends();
848
+ },
849
+ resume(sessionId) {
850
+ if (state && state.meta.id === sessionId) return state.meta;
851
+ const resumed = resumeSessionState(sessionId);
852
+ if (state) {
853
+ const prior = state;
854
+ emitPark(prior.meta.id, "resume_other");
855
+ void prior.writer.close();
856
+ }
857
+ state = resumed.state;
858
+ currentTurnId = resolveLeafOnOpen(resumed);
859
+ emitResume(resumed.state.meta.id, "resume");
860
+ return resumed.state.meta;
861
+ },
862
+ fork(parentTurnId, input) {
863
+ if (!state) throw new Error("session.fork: no current session to fork from");
864
+ const prior = state;
865
+ const { next, nodes } = forkFromState({
866
+ from: prior,
867
+ parentTurnId,
868
+ ...input?.cwd !== void 0 ? { cwd: input.cwd } : {}
869
+ });
870
+ emitPark(prior.meta.id, "fork");
871
+ state = next;
872
+ currentTurnId = computeLeafId(nodes);
873
+ return next.meta;
874
+ },
875
+ tree(sessionId) {
876
+ const id = sessionId ?? state?.meta.id;
877
+ if (!id) throw new Error("session.tree: no sessionId provided and no current session");
878
+ if (state?.meta.id === id) void flushIfCurrent(id);
879
+ return snapshotFor(id);
880
+ },
881
+ switchBranch(sessionId) {
882
+ if (state?.meta.id === sessionId) return state.meta;
883
+ const resumed = resumeSessionState(sessionId);
884
+ if (state) {
885
+ const prior = state;
886
+ emitPark(prior.meta.id, "switch_branch");
887
+ void prior.writer.close();
888
+ }
889
+ state = resumed.state;
890
+ currentTurnId = resolveLeafOnOpen(resumed);
891
+ emitResume(resumed.state.meta.id, "switch_branch");
892
+ return resumed.state.meta;
893
+ },
894
+ switchTurn(turnId) {
895
+ if (!state) throw new Error("session.switchTurn: no current session");
896
+ void flushIfCurrent(state.meta.id);
897
+ const nodes = readTreeBundle(state.meta.id).nodes;
898
+ if (!nodes.some((node) => node.id === turnId)) {
899
+ throw new Error(`session.switchTurn: turn not found: ${turnId}`);
900
+ }
901
+ currentTurnId = turnId;
902
+ state.meta.pinnedLeafTurnId = turnId;
903
+ persistSessionMeta(state);
904
+ emitTurnSwitched(state.meta.id, turnId);
905
+ return state.meta;
906
+ },
907
+ editLabel(turnId, label, sessionId) {
908
+ const targetId = sessionId ?? state?.meta.id;
909
+ if (!targetId) throw new Error("session.editLabel: no sessionId provided and no current session");
910
+ if (state && state.meta.id === targetId) {
911
+ appendEntry(state, {
912
+ kind: "label",
913
+ parentTurnId: null,
914
+ targetTurnId: turnId,
915
+ label
916
+ });
917
+ return;
918
+ }
919
+ const entry = {
920
+ kind: "label",
921
+ turnId: newTurnId(),
922
+ parentTurnId: null,
923
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
924
+ targetTurnId: turnId,
925
+ label
926
+ };
927
+ appendEntryToSessionFile(targetId, entry);
928
+ },
929
+ setName(name, sessionId) {
930
+ const targetId = sessionId ?? state?.meta.id;
931
+ if (!targetId) throw new Error("session.setName: no sessionId provided and no current session");
932
+ if (state && state.meta.id === targetId) {
933
+ appendEntry(state, {
934
+ kind: "sessionInfo",
935
+ parentTurnId: null,
936
+ name
937
+ });
938
+ return;
939
+ }
940
+ const entry = {
941
+ kind: "sessionInfo",
942
+ turnId: newTurnId(),
943
+ parentTurnId: null,
944
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
945
+ name
946
+ };
947
+ appendEntryToSessionFile(targetId, entry);
948
+ },
949
+ deleteSession(id, opts) {
950
+ if (state?.meta.id === id) {
951
+ throw new Error("session.deleteSession: refusing to delete the currently open session; close() first");
952
+ }
953
+ const options = opts ?? {};
954
+ if (options.keepFiles) {
955
+ tombstoneSession(id);
956
+ } else {
957
+ removeSessionDirectory(id);
958
+ }
959
+ },
960
+ history() {
961
+ const cwd = state?.meta.cwd ?? process.cwd();
962
+ return listSessionsForCwd(cwd);
963
+ },
964
+ async close() {
965
+ await closeCurrent();
966
+ }
967
+ };
968
+ const extension = {
969
+ async start() {
970
+ },
971
+ async stop() {
972
+ if (!state) return;
973
+ try {
974
+ await performCheckpoint(state, "shutdown");
975
+ } catch (err) {
976
+ process.stderr.write(
977
+ `[clio-coder:session] shutdown checkpoint failed: ${err instanceof Error ? err.message : String(err)}
978
+ `
979
+ );
980
+ }
981
+ await closeCurrent("shutdown");
982
+ }
983
+ };
984
+ return { extension, contract };
985
+ }
986
+
987
+ // src/domains/session/manifest.ts
988
+ init_esm_shims();
989
+ var SessionManifest = {
990
+ name: "session",
991
+ dependsOn: ["config"]
992
+ };
993
+
994
+ // src/domains/session/protected-artifacts.ts
995
+ init_esm_shims();
996
+ function protectedArtifactEntryFromArtifact(artifact, context) {
997
+ const entry = {
998
+ kind: "protectedArtifact",
999
+ parentTurnId: context.parentTurnId,
1000
+ action: "protect",
1001
+ artifact: artifactSnapshot(artifact)
1002
+ };
1003
+ if (context.toolName !== void 0) entry.toolName = context.toolName;
1004
+ if (context.toolCallId !== void 0) entry.toolCallId = context.toolCallId;
1005
+ if (context.runId !== void 0) entry.runId = context.runId;
1006
+ if (context.correlationId !== void 0) entry.correlationId = context.correlationId;
1007
+ return entry;
1008
+ }
1009
+ function protectedArtifactFromSessionEntry(entry) {
1010
+ return protectedArtifactFromSnapshot(entry.artifact);
1011
+ }
1012
+ function protectedArtifactStateFromSessionEntries(entries) {
1013
+ let state = { artifacts: [] };
1014
+ const protectedEntries = entries.map((entry, index) => ({ entry, index })).filter((item) => item.entry.kind === "protectedArtifact").sort(compareProtectedEntryPositions);
1015
+ for (const item of protectedEntries) {
1016
+ if (item.entry.action !== "protect") continue;
1017
+ state = protectArtifact(state, protectedArtifactFromSessionEntry(item.entry));
1018
+ }
1019
+ return state;
1020
+ }
1021
+ function artifactSnapshot(artifact) {
1022
+ const snapshot = {
1023
+ path: artifact.path,
1024
+ protectedAt: artifact.protectedAt,
1025
+ reason: artifact.reason,
1026
+ source: artifact.source
1027
+ };
1028
+ if (artifact.validationCommand !== void 0) snapshot.validationCommand = artifact.validationCommand;
1029
+ if (artifact.validationExitCode !== void 0) snapshot.validationExitCode = artifact.validationExitCode;
1030
+ return snapshot;
1031
+ }
1032
+ function protectedArtifactFromSnapshot(snapshot) {
1033
+ const artifact = {
1034
+ path: snapshot.path,
1035
+ protectedAt: snapshot.protectedAt,
1036
+ reason: snapshot.reason,
1037
+ source: snapshot.source
1038
+ };
1039
+ if (snapshot.validationCommand !== void 0) artifact.validationCommand = snapshot.validationCommand;
1040
+ if (snapshot.validationExitCode !== void 0) artifact.validationExitCode = snapshot.validationExitCode;
1041
+ return artifact;
1042
+ }
1043
+ function compareProtectedEntryPositions(left, right) {
1044
+ return compareStrings(left.entry.timestamp, right.entry.timestamp) || compareStrings(left.entry.turnId, right.entry.turnId) || left.index - right.index;
1045
+ }
1046
+ function compareStrings(left, right) {
1047
+ if (left < right) return -1;
1048
+ if (left > right) return 1;
1049
+ return 0;
1050
+ }
1051
+
1052
+ // src/domains/session/usage.ts
1053
+ init_esm_shims();
1054
+ function numberAt(source, key) {
1055
+ const value = source[key];
1056
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : 0;
1057
+ }
1058
+ function reasoningTokensOf(usage) {
1059
+ const direct = numberAt(usage, "reasoning") || numberAt(usage, "reasoningTokens");
1060
+ if (direct > 0) return direct;
1061
+ const details = usage.outputTokensDetails ?? usage.completionTokensDetails;
1062
+ if (details && typeof details === "object") return numberAt(details, "reasoningTokens");
1063
+ return 0;
1064
+ }
1065
+ function stringAt(source, ...keys) {
1066
+ for (const key of keys) {
1067
+ const value = source[key];
1068
+ if (typeof value === "string" && value.trim().length > 0) return value;
1069
+ }
1070
+ return null;
1071
+ }
1072
+ function ledgerUsageCalls(entries, defaults = {}) {
1073
+ const calls = [];
1074
+ let currentTarget = defaults.target ?? null;
1075
+ let currentModel = defaults.model ?? null;
1076
+ for (const entry of entries) {
1077
+ if (entry?.kind === "compactionSummary") {
1078
+ const usage2 = entry.usage;
1079
+ if (!usage2 || usage2.totalTokens <= 0) continue;
1080
+ calls.push({
1081
+ providerId: usage2.targetId ?? currentTarget ?? "unknown",
1082
+ attributedModelId: usage2.modelId ?? currentModel ?? "unknown",
1083
+ requestedModelId: usage2.modelId ?? currentModel ?? "unknown",
1084
+ responseModelIdObservation: { state: "not-observed" },
1085
+ input: usage2.input,
1086
+ output: usage2.output,
1087
+ cacheRead: usage2.cacheRead,
1088
+ cacheWrite: usage2.cacheWrite,
1089
+ ...usage2.cacheWrite1h === void 0 ? {} : { cacheWrite1h: usage2.cacheWrite1h },
1090
+ reasoningTokens: usage2.reasoning,
1091
+ totalTokens: usage2.totalTokens,
1092
+ costUsd: usage2.cost.total,
1093
+ // A split turn runs two summarization streams under one entry; the
1094
+ // provider served that many calls even though one row records them.
1095
+ apiCalls: Math.max(1, Math.round(usage2.apiCalls))
1096
+ });
1097
+ continue;
1098
+ }
1099
+ if (entry?.kind === "modelChange") {
1100
+ const change = entry;
1101
+ if (typeof change.target === "string" && change.target.length > 0) currentTarget = change.target;
1102
+ else if (typeof change.provider === "string" && change.provider.length > 0) currentTarget = change.provider;
1103
+ if (typeof change.modelId === "string" && change.modelId.length > 0) currentModel = change.modelId;
1104
+ continue;
1105
+ }
1106
+ if (entry?.kind !== "message" || entry.role !== "assistant") continue;
1107
+ const payload = entry.payload;
1108
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) continue;
1109
+ const record = payload;
1110
+ const rawUsage = record.usage;
1111
+ if (!rawUsage || typeof rawUsage !== "object" || Array.isArray(rawUsage)) continue;
1112
+ const usage = rawUsage;
1113
+ const input = numberAt(usage, "input");
1114
+ const output = numberAt(usage, "output");
1115
+ const cacheRead = numberAt(usage, "cacheRead");
1116
+ const cacheWrite = numberAt(usage, "cacheWrite");
1117
+ const totalTokens = numberAt(usage, "totalTokens") || input + output + cacheRead + cacheWrite;
1118
+ if (totalTokens === 0) continue;
1119
+ const cost = usage.cost;
1120
+ const costUsd = cost && typeof cost === "object" ? numberAt(cost, "total") : 0;
1121
+ const requestedModelId = currentModel ?? stringAt(record, "model") ?? "unknown";
1122
+ const differingResponseModelId = stringAt(record, "responseModel");
1123
+ const responseModelIdObservation = responseModelIdObservationFromRecord(record, "legacy-difference-only");
1124
+ calls.push({
1125
+ providerId: currentTarget ?? stringAt(record, "provider", "api") ?? "unknown",
1126
+ attributedModelId: attributedModelId(responseModelIdObservation, requestedModelId, differingResponseModelId),
1127
+ requestedModelId,
1128
+ responseModelIdObservation,
1129
+ input,
1130
+ output,
1131
+ cacheRead,
1132
+ cacheWrite,
1133
+ ...typeof usage.cacheWrite1h === "number" ? { cacheWrite1h: numberAt(usage, "cacheWrite1h") } : {},
1134
+ reasoningTokens: reasoningTokensOf(usage),
1135
+ totalTokens,
1136
+ costUsd
1137
+ });
1138
+ }
1139
+ return calls;
1140
+ }
1141
+
1142
+ // src/domains/session/index.ts
1143
+ var SessionDomainModule = {
1144
+ manifest: SessionManifest,
1145
+ createExtension: createSessionBundle
1146
+ };
1147
+
1148
+ // src/domains/session/archive-readers.ts
1149
+ var ROUTING_NOTICE_CUSTOM_TYPE = "clio-coder.routing-notice";
1150
+ var LEGACY_ROUTING_NOTICE_CUSTOM_TYPE = "clio.routing-notice";
1151
+ function normalizeReleasedCustomType(entry) {
1152
+ if (entry.kind !== "custom" || entry.customType !== LEGACY_ROUTING_NOTICE_CUSTOM_TYPE) return entry;
1153
+ return { ...entry, customType: ROUTING_NOTICE_CUSTOM_TYPE };
1154
+ }
1155
+ async function readAuditRows(stateDir) {
1156
+ const root = join2(stateDir, "audit");
1157
+ let files;
1158
+ try {
1159
+ files = await readdir(root);
1160
+ } catch (error) {
1161
+ const err = error;
1162
+ if (err.code === "ENOENT") return { rows: [], errors: [] };
1163
+ return { rows: [], errors: [`audit root read error: ${err.message ?? String(err)}`] };
1164
+ }
1165
+ const rows = [];
1166
+ const errors = [];
1167
+ for (const file of files.filter((name) => name.endsWith(".jsonl")).sort(compareStrings2)) {
1168
+ const path = join2(root, file);
1169
+ let raw;
1170
+ try {
1171
+ raw = await readFile(path, "utf8");
1172
+ } catch (error) {
1173
+ const err = error;
1174
+ errors.push(`${path}: ${err.message ?? String(err)}`);
1175
+ continue;
1176
+ }
1177
+ const lines = raw.split("\n");
1178
+ for (let index = 0; index < lines.length; index += 1) {
1179
+ const line = lines[index];
1180
+ if (line === void 0 || line.length === 0) continue;
1181
+ let parsed;
1182
+ try {
1183
+ parsed = JSON.parse(line);
1184
+ } catch (error) {
1185
+ const message = error instanceof Error ? error.message : String(error);
1186
+ errors.push(`${path}:${index + 1}: invalid JSON: ${message}`);
1187
+ continue;
1188
+ }
1189
+ if (!isRecord(parsed)) {
1190
+ errors.push(`${path}:${index + 1}: expected object`);
1191
+ continue;
1192
+ }
1193
+ const auditKind = readOptionalString(parsed.kind) ?? "tool_call";
1194
+ rows.push({
1195
+ file,
1196
+ line: index + 1,
1197
+ row: parsed,
1198
+ ts: readOptionalString(parsed.ts),
1199
+ auditKind,
1200
+ correlationId: readOptionalString(parsed.correlationId) ?? ""
1201
+ });
1202
+ }
1203
+ }
1204
+ return { rows, errors };
1205
+ }
1206
+ async function readSessionEntriesForId(stateDir, sessionId) {
1207
+ const root = join2(stateDir, "sessions");
1208
+ let cwdHashes;
1209
+ try {
1210
+ cwdHashes = await readdir(root);
1211
+ } catch (error) {
1212
+ const err = error;
1213
+ if (err.code === "ENOENT") return { entries: [], missing: true, errors: [] };
1214
+ return { entries: [], missing: false, errors: [`session root read error: ${err.message ?? String(err)}`] };
1215
+ }
1216
+ for (const cwdHash of cwdHashes.sort(compareStrings2)) {
1217
+ const currentPath = join2(root, cwdHash, sessionId, "current.jsonl");
1218
+ let raw;
1219
+ let source = currentPath;
1220
+ try {
1221
+ raw = await readFile(currentPath, "utf8");
1222
+ } catch (error) {
1223
+ const err = error;
1224
+ if (err.code === "ENOENT") {
1225
+ const tmpPath = `${currentPath}.tmp`;
1226
+ try {
1227
+ raw = await readFile(tmpPath, "utf8");
1228
+ source = tmpPath;
1229
+ } catch {
1230
+ continue;
1231
+ }
1232
+ } else if (err.code === "ENOTDIR") {
1233
+ continue;
1234
+ } else {
1235
+ return { entries: [], missing: false, errors: [`${currentPath}: ${err.message ?? String(err)}`] };
1236
+ }
1237
+ }
1238
+ const result = parseSessionEntries(raw, source);
1239
+ try {
1240
+ const meta = JSON.parse(await readFile(join2(root, cwdHash, sessionId, "meta.json"), "utf8"));
1241
+ if (isRecord(meta) && typeof meta.pinnedLeafTurnId === "string") result.leafTurnId = meta.pinnedLeafTurnId;
1242
+ } catch {
1243
+ }
1244
+ return result;
1245
+ }
1246
+ return { entries: [], missing: true, errors: [] };
1247
+ }
1248
+ function parseSessionEntries(raw, source) {
1249
+ const entries = [];
1250
+ const errors = [];
1251
+ const lines = raw.split("\n");
1252
+ for (let index = 0; index < lines.length; index += 1) {
1253
+ const line = lines[index];
1254
+ if (line === void 0 || line.trim().length === 0) continue;
1255
+ let parsed;
1256
+ try {
1257
+ parsed = JSON.parse(line);
1258
+ } catch (error) {
1259
+ const message = error instanceof Error ? error.message : String(error);
1260
+ errors.push(`${source}:${index + 1}: invalid JSON: ${message}`);
1261
+ continue;
1262
+ }
1263
+ if (isSessionHeader(parsed)) continue;
1264
+ if (isSessionEntry(parsed)) {
1265
+ entries.push(normalizeReleasedCustomType(parsed));
1266
+ continue;
1267
+ }
1268
+ errors.push(
1269
+ `session ledger contains an unreadable entry (missing kind discriminant): ${source}. Remove or compact the session to reset.`
1270
+ );
1271
+ }
1272
+ return { entries, missing: false, errors };
1273
+ }
1274
+ async function listSessionLedgerRefs(stateDir, onlyCwdHash) {
1275
+ const root = join2(stateDir, "sessions");
1276
+ let cwdHashes;
1277
+ try {
1278
+ cwdHashes = await readdir(root);
1279
+ } catch {
1280
+ return [];
1281
+ }
1282
+ const refs = [];
1283
+ for (const cwdHash of cwdHashes.sort(compareStrings2)) {
1284
+ if (onlyCwdHash !== void 0 && cwdHash !== onlyCwdHash) continue;
1285
+ let sessionIds;
1286
+ try {
1287
+ sessionIds = await readdir(join2(root, cwdHash));
1288
+ } catch {
1289
+ continue;
1290
+ }
1291
+ for (const sessionId of sessionIds.sort(compareStrings2)) {
1292
+ refs.push({ cwdHash, sessionId, path: join2(root, cwdHash, sessionId, "current.jsonl") });
1293
+ }
1294
+ }
1295
+ return refs;
1296
+ }
1297
+ function readOptionalString(value) {
1298
+ return typeof value === "string" && value.length > 0 ? value : null;
1299
+ }
1300
+ function isRecord(value) {
1301
+ return typeof value === "object" && value !== null && !Array.isArray(value);
1302
+ }
1303
+ function compareStrings2(a, b) {
1304
+ return a.localeCompare(b);
1305
+ }
1306
+
1307
+ export {
1308
+ emptyResponseModelIdObservationCounts,
1309
+ addResponseModelIdObservationCount,
1310
+ addResponseModelIdObservationCounts,
1311
+ responseModelIdObservationCountsLabel,
1312
+ responseModelIdObservationFromRecord,
1313
+ attributedModelId,
1314
+ buildTurnPreview,
1315
+ readAuditRows,
1316
+ readSessionEntriesForId,
1317
+ parseSessionEntries,
1318
+ listSessionLedgerRefs,
1319
+ protectedArtifactEntryFromArtifact,
1320
+ protectedArtifactFromSessionEntry,
1321
+ protectedArtifactStateFromSessionEntries,
1322
+ ledgerUsageCalls,
1323
+ SessionDomainModule
1324
+ };
1325
+ //# sourceMappingURL=chunk-EOJPDNUP.js.map