@iowarp/clio-coder 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1142) hide show
  1. package/.claude-plugin/marketplace.json +283 -0
  2. package/CHANGELOG.md +79 -0
  3. package/CONTRIBUTING.md +178 -96
  4. package/NOTICE +8 -0
  5. package/README.md +100 -47
  6. package/dist/acp-JWPQZM2D.js +130 -0
  7. package/dist/agents-4GCDIRVX.js +149 -0
  8. package/dist/assets/codewiki.json +1 -1
  9. package/dist/assets/tui-notices/get-east-asian-width-LICENSE +9 -0
  10. package/dist/assets/tui-notices/marked-LICENSE +44 -0
  11. package/dist/assets/tui-notices/pi-tui-LICENSE +21 -0
  12. package/dist/assets/web-notices/@hono__node-server-LICENSE +21 -0
  13. package/dist/assets/web-notices/hono-LICENSE +21 -0
  14. package/dist/auth-SYAKTDQE.js +551 -0
  15. package/dist/background-OW67WMYR.js +37 -0
  16. package/dist/builtins-TKS63VNV.js +22 -0
  17. package/dist/chunk-2JSCCEKO.js +85 -0
  18. package/dist/chunk-2SXGG2IV.js +391 -0
  19. package/dist/chunk-2U2U5POA.js +59 -0
  20. package/dist/chunk-2ZWLMA3T.js +658 -0
  21. package/dist/chunk-36XSBPXL.js +579 -0
  22. package/dist/chunk-3IQOZRQ6.js +396 -0
  23. package/dist/chunk-3XE4NRLF.js +324 -0
  24. package/dist/chunk-44U2OUSM.js +243 -0
  25. package/dist/chunk-4P6M2TTE.js +119 -0
  26. package/dist/chunk-526ABLHD.js +1219 -0
  27. package/dist/chunk-5C2OQHLR.js +674 -0
  28. package/dist/chunk-5D2FNBMG.js +185 -0
  29. package/dist/chunk-5EQO5NWP.js +243 -0
  30. package/dist/chunk-5HULHKT2.js +32 -0
  31. package/dist/chunk-5UG6EZI3.js +66 -0
  32. package/dist/chunk-5W4FRA5Q.js +22283 -0
  33. package/dist/chunk-6R5MBXBJ.js +386 -0
  34. package/dist/chunk-6TKOFFGE.js +1058 -0
  35. package/dist/chunk-6UJ7RDI7.js +1143 -0
  36. package/dist/chunk-6X7VOCDY.js +44 -0
  37. package/dist/chunk-7QQRPB2E.js +915 -0
  38. package/dist/chunk-ARRUMZ7X.js +1377 -0
  39. package/dist/chunk-ATB3Q7YO.js +663 -0
  40. package/dist/chunk-AUHVBIDW.js +19 -0
  41. package/dist/chunk-BE4I3UJ2.js +668 -0
  42. package/dist/chunk-BFPHMSK7.js +169 -0
  43. package/dist/chunk-BHJMMCXS.js +466 -0
  44. package/dist/chunk-BIY22UUK.js +1322 -0
  45. package/dist/chunk-D55WO5J7.js +110 -0
  46. package/dist/chunk-DVJL77SO.js +162 -0
  47. package/dist/chunk-E2NSPYLC.js +814 -0
  48. package/dist/chunk-EFXMQYI6.js +4484 -0
  49. package/dist/chunk-EPYATQMG.js +2718 -0
  50. package/dist/chunk-EXKUF426.js +1801 -0
  51. package/dist/chunk-F7Y6QTPL.js +689 -0
  52. package/dist/chunk-FB3KTE2J.js +1710 -0
  53. package/dist/chunk-FNVPQQYT.js +117 -0
  54. package/dist/chunk-GEVQNST4.js +101 -0
  55. package/dist/chunk-GEYX2NZ5.js +697 -0
  56. package/dist/chunk-GJBJHJNY.js +2120 -0
  57. package/dist/chunk-GM4TY6VN.js +1233 -0
  58. package/dist/chunk-GVU4CXPJ.js +5191 -0
  59. package/dist/chunk-H5DPSUBB.js +637 -0
  60. package/dist/chunk-H77XBUBM.js +688 -0
  61. package/dist/chunk-HMGAKB7E.js +380 -0
  62. package/dist/chunk-HP7KJ5O2.js +797 -0
  63. package/dist/chunk-HVCAY2FH.js +67 -0
  64. package/dist/chunk-ICYIUNO4.js +35 -0
  65. package/dist/chunk-IILXVWJY.js +223 -0
  66. package/dist/chunk-JCVIL6TY.js +595 -0
  67. package/dist/chunk-JIMWEYWO.js +63 -0
  68. package/dist/chunk-JLBVCROW.js +562 -0
  69. package/dist/chunk-JOBN2YQQ.js +176 -0
  70. package/dist/chunk-JOL2QRLE.js +152 -0
  71. package/dist/chunk-JRA6OBHY.js +974 -0
  72. package/dist/chunk-JV25I7ID.js +1865 -0
  73. package/dist/chunk-JYKUMHCQ.js +705 -0
  74. package/dist/chunk-K3W6BF5C.js +283 -0
  75. package/dist/chunk-K45LHSCI.js +194 -0
  76. package/dist/chunk-K53E2PTW.js +1289 -0
  77. package/dist/chunk-K5UJD6MM.js +39 -0
  78. package/dist/chunk-KGP3UQGJ.js +200 -0
  79. package/dist/chunk-KKRXONXG.js +43 -0
  80. package/dist/chunk-KWJXCL2X.js +103 -0
  81. package/dist/chunk-L75H5B3B.js +446 -0
  82. package/dist/chunk-LLCGGVSW.js +108 -0
  83. package/dist/chunk-LZCCBLRC.js +57 -0
  84. package/dist/chunk-LZDLYSUN.js +197 -0
  85. package/dist/chunk-MATCRH3M.js +667 -0
  86. package/dist/chunk-MEHBW2SP.js +132 -0
  87. package/dist/chunk-MUXNDNMZ.js +659 -0
  88. package/dist/chunk-MWMW53WW.js +7346 -0
  89. package/dist/chunk-MZDPF35R.js +45 -0
  90. package/dist/chunk-MZKYVIWW.js +188 -0
  91. package/dist/chunk-O2QJDRWP.js +362 -0
  92. package/dist/chunk-O3HSB2YL.js +693 -0
  93. package/dist/chunk-OEMFEL26.js +891 -0
  94. package/dist/chunk-OH3YYA3B.js +15 -0
  95. package/dist/chunk-OPC4DQD6.js +634 -0
  96. package/dist/chunk-ORRNGQDV.js +207 -0
  97. package/dist/chunk-P4JS3MH5.js +165 -0
  98. package/dist/chunk-P7GTE4FX.js +308 -0
  99. package/dist/chunk-PAQVETLA.js +962 -0
  100. package/dist/chunk-PFZJMXIY.js +146 -0
  101. package/dist/chunk-PGEFOTJB.js +1974 -0
  102. package/dist/chunk-PJ5H5B7A.js +3151 -0
  103. package/dist/chunk-PMUUAABD.js +604 -0
  104. package/dist/chunk-Q32C6AWI.js +236 -0
  105. package/dist/chunk-QGIC5SX5.js +139 -0
  106. package/dist/chunk-QLAGXTTV.js +482 -0
  107. package/dist/chunk-QLKCCC2J.js +573 -0
  108. package/dist/chunk-QWUSS2QP.js +3630 -0
  109. package/dist/chunk-QYSAZMSH.js +47 -0
  110. package/dist/chunk-R5NRX5N4.js +123 -0
  111. package/dist/chunk-RAUOKUZV.js +1572 -0
  112. package/dist/chunk-RBES4TCZ.js +302 -0
  113. package/dist/chunk-RFCKPS2V.js +26 -0
  114. package/dist/chunk-RFULVPBX.js +318 -0
  115. package/dist/chunk-RKFNU5UA.js +404 -0
  116. package/dist/chunk-RM3XJX7P.js +1148 -0
  117. package/dist/chunk-RNLAPBJL.js +386 -0
  118. package/dist/chunk-RPMNIFRY.js +65 -0
  119. package/dist/chunk-RRZFRIJP.js +42 -0
  120. package/dist/chunk-RXI7K4J5.js +4493 -0
  121. package/dist/chunk-SER7RRAE.js +4271 -0
  122. package/dist/chunk-STC6CWUZ.js +402 -0
  123. package/dist/chunk-TEHVMHOK.js +97 -0
  124. package/dist/chunk-TOPICHGR.js +33 -0
  125. package/dist/chunk-U3TPUXOQ.js +2653 -0
  126. package/dist/chunk-UB33F3YW.js +709 -0
  127. package/dist/chunk-UDAK6GR2.js +175 -0
  128. package/dist/chunk-USBBEKHW.js +177 -0
  129. package/dist/chunk-V4ZKOKRB.js +13433 -0
  130. package/dist/chunk-W5RM7YAH.js +78 -0
  131. package/dist/chunk-W7KNI3F5.js +215 -0
  132. package/dist/chunk-WFTSK7N3.js +637 -0
  133. package/dist/chunk-WJWNZXRM.js +395 -0
  134. package/dist/chunk-WLHX3MM5.js +63 -0
  135. package/dist/chunk-WS4FOGLY.js +686 -0
  136. package/dist/chunk-WTZVSMQZ.js +52 -0
  137. package/dist/chunk-WWRV5RJI.js +165 -0
  138. package/dist/chunk-X6FLVUM5.js +141 -0
  139. package/dist/chunk-XC5POIL4.js +68 -0
  140. package/dist/chunk-XTLJDC2X.js +1013 -0
  141. package/dist/chunk-XW2UZICE.js +372 -0
  142. package/dist/chunk-Y3JU5RPK.js +8 -0
  143. package/dist/chunk-YGIV24MF.js +1018 -0
  144. package/dist/chunk-YJCCMYYT.js +125 -0
  145. package/dist/chunk-YKIIWURD.js +36 -0
  146. package/dist/chunk-YQ3GFEUY.js +341 -0
  147. package/dist/chunk-YXANQGCX.js +179 -0
  148. package/dist/chunk-YXFKLMX2.js +222 -0
  149. package/dist/chunk-ZST3FRCV.js +132 -0
  150. package/dist/cli/index.js +40 -40
  151. package/dist/clio-BPBAPZGA.js +26 -0
  152. package/dist/code-nav-KBQ3RIFK.js +686 -0
  153. package/dist/components-6DKAXWFN.js +674 -0
  154. package/dist/config-FWL5JK2H.js +270 -0
  155. package/dist/config-graph-ACDB26L2.js +156 -0
  156. package/dist/configure-ZIZ4YV62.js +85 -0
  157. package/dist/context-EZZPT2ZV.js +1074 -0
  158. package/dist/context-VIL5MFRH.js +282 -0
  159. package/dist/context-Z3GOBHDK.js +344 -0
  160. package/dist/context-clear-ZPB3L7MN.js +188 -0
  161. package/dist/context-index-W6A4V7OC.js +120 -0
  162. package/dist/context-map-DKL3QT6D.js +555 -0
  163. package/dist/context-working-set-2GLBVF7L.js +1559 -0
  164. package/dist/detail-VSBWYSGZ.js +119 -0
  165. package/dist/dispatch-runner-EEEHGKX4.js +2442 -0
  166. package/dist/docs-VMMWFVHL.js +101 -0
  167. package/dist/doctor-V5L4IQGP.js +812 -0
  168. package/dist/eval-VJYJ2BV3.js +5050 -0
  169. package/dist/eval-inventory-CX24K2JT.js +260 -0
  170. package/dist/evals-J2H5V6DD.js +104 -0
  171. package/dist/evidence-POWAEBEW.js +229 -0
  172. package/dist/evidence-XCCCLS36.js +242 -0
  173. package/dist/evidence-Y35YSXH6.js +388 -0
  174. package/dist/evolve-GPG72VB6.js +613 -0
  175. package/dist/extensions-YIZ7W3DA.js +308 -0
  176. package/dist/fleet-2MDCQ2VK.js +264 -0
  177. package/dist/fleet-W2AF3TOJ.js +919 -0
  178. package/dist/fleet-commands-WS56G26H.js +75 -0
  179. package/dist/fleet-decisions-MYGZ3JW7.js +52 -0
  180. package/dist/fleet-graph-ELTBXBAV.js +136 -0
  181. package/dist/fleet-inspect-45IK73L4.js +308 -0
  182. package/dist/fleet-preflight-T5NCZKHE.js +22 -0
  183. package/dist/fleet-validate-VG4JBLA4.js +91 -0
  184. package/dist/fleet-verify-VTSABAYO.js +206 -0
  185. package/dist/fleet-view-XC7WMKSS.js +123 -0
  186. package/dist/init-VTJNNTIP.js +329 -0
  187. package/dist/install-6PIF6F6W.js +19 -0
  188. package/dist/interop-IU6BNA7C.js +246 -0
  189. package/dist/inventory-QPQUTUUZ.js +123 -0
  190. package/dist/library-HUTAS57T.js +492 -0
  191. package/dist/library-LF7DLU6S.js +306 -0
  192. package/dist/library-Q3NWL5CM.js +75 -0
  193. package/dist/library-import-PPW4YUC5.js +183 -0
  194. package/dist/library-inventory-DIRVFRZU.js +56 -0
  195. package/dist/library-validation-XHUZ3INE.js +42 -0
  196. package/dist/memory-Z2LSKNV6.js +516 -0
  197. package/dist/models-3FTREYPY.js +302 -0
  198. package/dist/monitor-HF2MQRB3.js +781 -0
  199. package/dist/orchestrator-UYPA6W4S.js +41502 -0
  200. package/dist/panes-736XB73K.js +74 -0
  201. package/dist/panes-C4P3PIWT.js +103 -0
  202. package/dist/paths-JQ4QYIYB.js +67 -0
  203. package/dist/preload-XSLRYH3Y.js +120 -0
  204. package/dist/reset-V7QSPZYE.js +345 -0
  205. package/dist/resources-OJGDFHYT.js +181 -0
  206. package/dist/run-T354SMDW.js +892 -0
  207. package/dist/settings-MWZXO6RV.js +72 -0
  208. package/dist/share-Y5ZKJPND.js +293 -0
  209. package/dist/skills-4GLZC4LN.js +100 -0
  210. package/dist/skills-eval-L5T7GODM.js +1074 -0
  211. package/dist/skills-inventory-LASKXEZI.js +138 -0
  212. package/dist/slash-commands-OIMRU36D.js +95 -0
  213. package/dist/steer-KMAM2Y2C.js +77 -0
  214. package/dist/support-AWC3XKPX.js +38 -0
  215. package/dist/system-CD75NYBU.js +116 -0
  216. package/dist/targets-VSZX2J2S.js +1116 -0
  217. package/dist/tasks-AN567LYH.js +36 -0
  218. package/dist/terminal-lease-6KTWNHVY.js +418 -0
  219. package/dist/tools-AGRK3V5J.js +28 -0
  220. package/dist/trace-P4MQZD33.js +524 -0
  221. package/dist/tui-primitives-A6MUW32V.js +18 -0
  222. package/dist/uninstall-BRUTEPIC.js +432 -0
  223. package/dist/upgrade-SBCGHQGJ.js +307 -0
  224. package/dist/usage-BIDVTO6V.js +1061 -0
  225. package/dist/verifiers-LTGCAMXS.js +630 -0
  226. package/dist/verify-OZU4LLNP.js +30 -0
  227. package/dist/web/client/THIRD_PARTY_LICENSES.md +1809 -0
  228. package/dist/web/client/assets/abnfDiagram-VCTEODGH-C5wfoHm3.js +1 -0
  229. package/dist/web/client/assets/arc-oH91sfLl.js +1 -0
  230. package/dist/web/client/assets/architecture-7GRP2DOG-EGozsYEO.js +1 -0
  231. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-z9FokbJl.js +36 -0
  232. package/dist/web/client/assets/array-BifhSqXX.js +1 -0
  233. package/dist/web/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
  234. package/dist/web/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
  235. package/dist/web/client/assets/blockDiagram-I7D4REHJ-wi0_CYHL.js +129 -0
  236. package/dist/web/client/assets/c4Diagram-7LVT6UL2-DV7NYc2W.js +38 -0
  237. package/dist/web/client/assets/channel-CiUWbHN9.js +1 -0
  238. package/dist/web/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  239. package/dist/web/client/assets/chunk-4HAMMTFA-Bhsegh3F.js +62 -0
  240. package/dist/web/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  241. package/dist/web/client/assets/chunk-75Z2AOVW-RQCckcQG.js +2 -0
  242. package/dist/web/client/assets/chunk-DU6HZSFF-C5USiOAy.js +125 -0
  243. package/dist/web/client/assets/chunk-F27PBJKO-BcNqv2x1.js +1 -0
  244. package/dist/web/client/assets/chunk-FOHPRMQF-CoA4358r.js +161 -0
  245. package/dist/web/client/assets/chunk-GMAD6QVW-Bq8JWiZT.js +72 -0
  246. package/dist/web/client/assets/chunk-GVQU2GXP-DbchrAeJ.js +1 -0
  247. package/dist/web/client/assets/chunk-IMKFNOWR-DrpvjocK.js +231 -0
  248. package/dist/web/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  249. package/dist/web/client/assets/chunk-L3NEJ4N5-DHLmTnCe.js +1 -0
  250. package/dist/web/client/assets/chunk-OSK3NFVY-CsRbtN9n.js +10 -0
  251. package/dist/web/client/assets/chunk-P2QGCYS3-aqPbxoMh.js +1 -0
  252. package/dist/web/client/assets/chunk-POPQ4Y6H-Dl5vw0h0.js +1 -0
  253. package/dist/web/client/assets/chunk-PWAF6VOD-D7OBRSdO.js +1 -0
  254. package/dist/web/client/assets/chunk-SHT3W25Y-CdKCIwuB.js +168 -0
  255. package/dist/web/client/assets/chunk-SVP7TREG-B94Nu_1-.js +88 -0
  256. package/dist/web/client/assets/chunk-TICWLB2K-jjRQI_hk.js +206 -0
  257. package/dist/web/client/assets/chunk-XXDRQBXY-azkbKE37.js +1 -0
  258. package/dist/web/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  259. package/dist/web/client/assets/classDiagram-ZZMXUADV-CMODalmo.js +1 -0
  260. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-CMODalmo.js +1 -0
  261. package/dist/web/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
  262. package/dist/web/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
  263. package/dist/web/client/assets/cose-bilkent-JH36ORCC-RbQL23qS.js +1 -0
  264. package/dist/web/client/assets/cynefin-OW5HDTMX--i9RDU5f.js +1 -0
  265. package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-cRcvyBdp.js +62 -0
  266. package/dist/web/client/assets/cytoscape.esm-c2aL46s-.js +321 -0
  267. package/dist/web/client/assets/dagre-C-rnJpZF.js +1 -0
  268. package/dist/web/client/assets/dagre-GXQ25YYZ-C9mZmAPe.js +4 -0
  269. package/dist/web/client/assets/defaultLocale-BFoDCU3G.js +1 -0
  270. package/dist/web/client/assets/diagram-S7CK7UJ4-Oj_zlLDY.js +30 -0
  271. package/dist/web/client/assets/diagram-UQ7AKVKN-BWKbbfcR.js +41 -0
  272. package/dist/web/client/assets/diagram-VSXAHHWV-C3N3f7DO.js +3 -0
  273. package/dist/web/client/assets/diagram-VX7I27RA-CtDKDAWe.js +24 -0
  274. package/dist/web/client/assets/diagram-Z3DM3KII-B8bkBRCz.js +24 -0
  275. package/dist/web/client/assets/dist-D0_q-A2b.js +1 -0
  276. package/dist/web/client/assets/ebnfDiagram-PWID7BFC-CskW-Whx.js +1 -0
  277. package/dist/web/client/assets/erDiagram-RLTQ6QDP-C-83cgCW.js +99 -0
  278. package/dist/web/client/assets/eventmodeling-NTZA5JFV-DjVq8wKU.js +1 -0
  279. package/dist/web/client/assets/flowDiagram-HODETNUW-BUiCBGXt.js +1 -0
  280. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-B2lb8lvF.js +292 -0
  281. package/dist/web/client/assets/gitGraph-4MIJSDKK-B40cQtBE.js +1 -0
  282. package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CH-7P7Di.js +106 -0
  283. package/dist/web/client/assets/graphlib-DS17s2tU.js +1 -0
  284. package/dist/web/client/assets/index-Dsi52apB.css +1 -0
  285. package/dist/web/client/assets/index-FSIC94pi.js +83 -0
  286. package/dist/web/client/assets/info-A6RAGUB7-eCCE9D_Q.js +1 -0
  287. package/dist/web/client/assets/infoDiagram-27XIBGKW-DRnvqMjM.js +2 -0
  288. package/dist/web/client/assets/init-C-OQMol4.js +1 -0
  289. package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-DBA_55wp.js +70 -0
  290. package/dist/web/client/assets/journeyDiagram-3NMN7TZE-C-ewpNl7.js +139 -0
  291. package/dist/web/client/assets/kanban-definition-UXKFOSKX-B1taGsu0.js +89 -0
  292. package/dist/web/client/assets/katex-ZlcWpGUi.js +257 -0
  293. package/dist/web/client/assets/line-lZ0kyxDI.js +1 -0
  294. package/dist/web/client/assets/linear-DIc8FgZj.js +1 -0
  295. package/dist/web/client/assets/mermaid-parser.core-SXolxpXw.js +7 -0
  296. package/dist/web/client/assets/mermaid.core-DXgQtkNg.js +44 -0
  297. package/dist/web/client/assets/mindmap-definition-YA3MSWOX-DXJas9K7.js +96 -0
  298. package/dist/web/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  299. package/dist/web/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  300. package/dist/web/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  301. package/dist/web/client/assets/ordinal-BDEzSJ7C.js +1 -0
  302. package/dist/web/client/assets/packet-AYTQ26CC-OqVl_07o.js +1 -0
  303. package/dist/web/client/assets/path-fybaL0A-.js +1 -0
  304. package/dist/web/client/assets/pegDiagram-XKGWAZYB-CPE_zdfN.js +1 -0
  305. package/dist/web/client/assets/pie-WAS4IAKB-DAxnMBLe.js +1 -0
  306. package/dist/web/client/assets/pieDiagram-E7YTZNPT-Uwjpufxv.js +39 -0
  307. package/dist/web/client/assets/prism-bash-D6zCJ74D.js +1 -0
  308. package/dist/web/client/assets/prism-c-04YixN25.js +1 -0
  309. package/dist/web/client/assets/prism-clike-DapgWyxx.js +1 -0
  310. package/dist/web/client/assets/prism-core-BngLtbUd.js +1 -0
  311. package/dist/web/client/assets/prism-cpp-C-lJbC-6.js +1 -0
  312. package/dist/web/client/assets/prism-css-CPgOzxXp.js +1 -0
  313. package/dist/web/client/assets/prism-diff-BF8m0_mq.js +3 -0
  314. package/dist/web/client/assets/prism-docker-DkT6yOFj.js +1 -0
  315. package/dist/web/client/assets/prism-fortran-Be5x3y1V.js +1 -0
  316. package/dist/web/client/assets/prism-go-C_8qAH5n.js +1 -0
  317. package/dist/web/client/assets/prism-ini-BESK3y0r.js +1 -0
  318. package/dist/web/client/assets/prism-javascript-BnO-swvr.js +1 -0
  319. package/dist/web/client/assets/prism-json-Dp_-W-Hv.js +1 -0
  320. package/dist/web/client/assets/prism-jsx-D-D0NWtC.js +1 -0
  321. package/dist/web/client/assets/prism-julia-DIjOgiAV.js +1 -0
  322. package/dist/web/client/assets/prism-latex-DNMbqcH_.js +1 -0
  323. package/dist/web/client/assets/prism-makefile-CRKWLQ8l.js +1 -0
  324. package/dist/web/client/assets/prism-markdown-C0FPJ1Iz.js +1 -0
  325. package/dist/web/client/assets/prism-markup-Cp04rIa1.js +1 -0
  326. package/dist/web/client/assets/prism-matlab-D-nk08al.js +1 -0
  327. package/dist/web/client/assets/prism-python-CfiSVtM6.js +1 -0
  328. package/dist/web/client/assets/prism-r-QmNGR8LX.js +1 -0
  329. package/dist/web/client/assets/prism-rust-Bu9N8X3N.js +1 -0
  330. package/dist/web/client/assets/prism-shell-session-Be4UuYoM.js +1 -0
  331. package/dist/web/client/assets/prism-sql-CYhVDMEE.js +1 -0
  332. package/dist/web/client/assets/prism-toml-DKb54GAT.js +1 -0
  333. package/dist/web/client/assets/prism-tsx-p6J2Kc_4.js +1 -0
  334. package/dist/web/client/assets/prism-typescript-BMqONzxf.js +1 -0
  335. package/dist/web/client/assets/prism-yaml-C0JHu8gr.js +1 -0
  336. package/dist/web/client/assets/purify.es-ChwZkWde.js +3 -0
  337. package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-Bjs4yjgs.js +7 -0
  338. package/dist/web/client/assets/radar-RG4KPBEZ-CuCKjHM3.js +1 -0
  339. package/dist/web/client/assets/railroad-74A4TZTK-CnQK-Cc1.js +1 -0
  340. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-BcW01NZG.js +1 -0
  341. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-B7YCEDDd.js +1 -0
  342. package/dist/web/client/assets/railroad-peg-WCYAUIDC-DjNZbSTZ.js +1 -0
  343. package/dist/web/client/assets/railroadDiagram-O6MQD6OU-BDDIPNLL.js +1 -0
  344. package/dist/web/client/assets/requirementDiagram-BXWQKSXE-B5Ydyxc1.js +84 -0
  345. package/dist/web/client/assets/rough.esm-Dy-Kn_BL.js +1 -0
  346. package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-Bw2Qym75.js +40 -0
  347. package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-BZf36nO0.js +162 -0
  348. package/dist/web/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  349. package/dist/web/client/assets/src-yeptRXpt.js +1 -0
  350. package/dist/web/client/assets/stateDiagram-D77RDMKH-DnH6JRkp.js +1 -0
  351. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-C7QtHeK4.js +1 -0
  352. package/dist/web/client/assets/swimlanes-42K2YHIH-D9PZmtZg.js +1 -0
  353. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-CBZlPFky.js +8 -0
  354. package/dist/web/client/assets/timeline-definition-24CTP7MA-CrkZZBo7.js +120 -0
  355. package/dist/web/client/assets/treeView-Q6P3EWNA-C9zDShoC.js +1 -0
  356. package/dist/web/client/assets/treemap-WGGIJYW6-B-plj9yK.js +1 -0
  357. package/dist/web/client/assets/vennDiagram-4TSXK5OY-VeOdaphN.js +34 -0
  358. package/dist/web/client/assets/wardley-WFR3VGLG-Wl1P_m6L.js +1 -0
  359. package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-B85-R9t2.js +78 -0
  360. package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BrD8OW8m.js +7 -0
  361. package/dist/web/client/clio-coder-logo.webp +0 -0
  362. package/dist/web/client/icon-192.png +0 -0
  363. package/dist/web/client/icon-512.png +0 -0
  364. package/dist/web/client/index.html +4 -0
  365. package/dist/web/client/manifest.webmanifest +15 -0
  366. package/dist/web/client/offline.css +55 -0
  367. package/dist/web/client/offline.html +5 -0
  368. package/dist/web/client/offline.js +27 -0
  369. package/dist/web/client/sw.js +34 -0
  370. package/dist/web/ops-worker.js +37 -0
  371. package/dist/web/reads-worker.js +1726 -0
  372. package/dist/web/server.js +8499 -0
  373. package/dist/web-EU6ATJWA.js +13 -0
  374. package/dist/web-fetch-U22Q7HV4.js +788 -0
  375. package/dist/wiki-generate-LZRLFG6I.js +623 -0
  376. package/dist/with-panes-X5CZOGML.js +628 -0
  377. package/dist/worker/entry.js +300 -93
  378. package/docs/README.md +58 -14
  379. package/docs/architecture/acp.md +5 -9
  380. package/docs/architecture/alcf-provider.md +0 -3
  381. package/docs/architecture/architecture.md +8 -10
  382. package/docs/architecture/artifact-placement.md +0 -3
  383. package/docs/architecture/artifact-versions.md +3 -6
  384. package/docs/architecture/capacity-and-scheduling.md +0 -3
  385. package/docs/architecture/context-engine.md +35 -4
  386. package/docs/architecture/context-working-set.md +0 -3
  387. package/docs/architecture/dispatch-architecture-rationale.md +0 -3
  388. package/docs/architecture/dispatch-typed-intent.md +0 -3
  389. package/docs/architecture/evidence-and-memory.md +0 -3
  390. package/docs/architecture/library.md +30 -0
  391. package/docs/architecture/middleware-and-components.md +1 -4
  392. package/docs/architecture/model-catalog.md +21 -4
  393. package/docs/architecture/observability.md +0 -3
  394. package/docs/architecture/pi-boundary.md +23 -8
  395. package/docs/architecture/prompt-envelope-and-tools.md +6 -9
  396. package/docs/architecture/provider-adapter-cookbook.md +1 -4
  397. package/docs/architecture/safety-model.md +21 -5
  398. package/docs/architecture/session-lifecycle.md +12 -4
  399. package/docs/architecture/time-conventions.md +0 -3
  400. package/docs/architecture/trace-store.md +28 -20
  401. package/docs/architecture/tui-design.md +108 -12
  402. package/docs/architecture/worker-context.md +104 -0
  403. package/docs/architecture/worker-dispatch-mechanics.md +1 -4
  404. package/docs/guide/authoring-plugins.md +158 -0
  405. package/docs/guide/built-in-agents.md +5 -8
  406. package/docs/guide/commands-and-modes.md +162 -61
  407. package/docs/guide/configuration-and-targets.md +198 -5
  408. package/docs/guide/configuration-reference.md +36 -38
  409. package/docs/guide/environment-variables.md +2 -5
  410. package/docs/guide/exit-codes-and-output.md +1 -4
  411. package/docs/guide/extensions-and-sharing.md +92 -55
  412. package/docs/guide/fleet-dispatch.md +31 -7
  413. package/docs/guide/glossary.md +1 -4
  414. package/docs/guide/harness-extensions.md +289 -0
  415. package/docs/guide/installation-and-lifecycle.md +10 -13
  416. package/docs/guide/interop.md +241 -0
  417. package/docs/guide/panes-and-files.md +3 -6
  418. package/docs/guide/plugins.md +77 -0
  419. package/docs/guide/proactive-memory.md +0 -3
  420. package/docs/guide/resource-library.md +109 -45
  421. package/docs/guide/skills-marketplace.md +34 -73
  422. package/docs/guide/tool-usage.md +19 -10
  423. package/docs/guide/troubleshooting.md +1 -4
  424. package/docs/history/config-knobs-audit.md +0 -3
  425. package/docs/history/release-cut-checklist.md +0 -3
  426. package/docs/process/development-pipeline.md +14 -17
  427. package/docs/process/documentation-coverage.md +31 -4
  428. package/docs/process/documentation-guide.md +28 -27
  429. package/docs/process/eval-runner.md +8 -6
  430. package/docs/process/evals-internal.md +0 -3
  431. package/docs/process/evolution.md +0 -3
  432. package/docs/process/fleet-demo-runbook.md +0 -3
  433. package/docs/process/git-commit-provenance.md +0 -3
  434. package/docs/process/performance-methodology.md +2 -5
  435. package/docs/process/release-cut-checklist.md +114 -217
  436. package/docs/process/scientific-validation.md +23 -3
  437. package/evals/scalar-decision-machinery.ts +1 -1
  438. package/examples/extensions/README.md +67 -0
  439. package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
  440. package/examples/extensions/lab-status/extension.mjs +68 -0
  441. package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
  442. package/examples/extensions/measurements/clio-coder-extension.json +28 -0
  443. package/examples/extensions/measurements/summarize.cjs +23 -0
  444. package/library/README.md +109 -0
  445. package/library/_authoring/templates/agent/README.md +28 -0
  446. package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
  447. package/library/_authoring/templates/agent/plugin.json +23 -0
  448. package/library/_authoring/templates/fleet/README.md +29 -0
  449. package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
  450. package/library/_authoring/templates/fleet/plugin.json +23 -0
  451. package/library/_authoring/templates/plugin/README.md +37 -0
  452. package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
  453. package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
  454. package/library/_authoring/templates/plugin/plugin.json +42 -0
  455. package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
  456. package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
  457. package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
  458. package/library/_authoring/templates/prompt/README.md +28 -0
  459. package/library/_authoring/templates/prompt/plugin.json +23 -0
  460. package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
  461. package/library/_authoring/templates/skill/README.md +24 -0
  462. package/library/_authoring/templates/skill/SKILL.md +39 -0
  463. package/library/_authoring/templates/skill/evals.md +30 -0
  464. package/library/_authoring/templates/skill/plugin.json +23 -0
  465. package/library/agents/README.md +7 -0
  466. package/library/fleets/README.md +7 -0
  467. package/library/plugins/materio/README.md +137 -0
  468. package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
  469. package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
  470. package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
  471. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
  472. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
  473. package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
  474. package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
  475. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
  476. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
  477. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
  478. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
  479. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
  480. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
  481. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
  482. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
  483. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
  484. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
  485. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
  486. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
  487. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
  488. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
  489. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
  490. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
  491. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
  492. package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
  493. package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
  494. package/library/plugins/materio/assets/actions/add-task.md +86 -0
  495. package/library/plugins/materio/assets/actions/archive-task.md +84 -0
  496. package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
  497. package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
  498. package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
  499. package/library/plugins/materio/assets/actions/execute-task.md +290 -0
  500. package/library/plugins/materio/assets/actions/help.md +140 -0
  501. package/library/plugins/materio/assets/actions/identify-research.md +204 -0
  502. package/library/plugins/materio/assets/actions/literature-review.md +199 -0
  503. package/library/plugins/materio/assets/actions/pause-research.md +34 -0
  504. package/library/plugins/materio/assets/actions/progress.md +125 -0
  505. package/library/plugins/materio/assets/actions/remove-task.md +82 -0
  506. package/library/plugins/materio/assets/actions/resume-research.md +84 -0
  507. package/library/plugins/materio/assets/actions/settings.md +38 -0
  508. package/library/plugins/materio/assets/actions/status.md +112 -0
  509. package/library/plugins/materio/assets/actions/upload-data.md +123 -0
  510. package/library/plugins/materio/assets/actions/wtfp.md +179 -0
  511. package/library/plugins/materio/assets/references/research-domains.md +134 -0
  512. package/library/plugins/materio/assets/references/research-policy.md +77 -0
  513. package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
  514. package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
  515. package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
  516. package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
  517. package/library/plugins/materio/assets/scripts/research_state.py +400 -0
  518. package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
  519. package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
  520. package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
  521. package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
  522. package/library/plugins/materio/assets/templates/config.json +5 -0
  523. package/library/plugins/materio/evals/scripts.yaml +29 -0
  524. package/library/plugins/materio/plugin.json +530 -0
  525. package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
  526. package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
  527. package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
  528. package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
  529. package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
  530. package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
  531. package/library/plugins/materio/tests/test_check_physics.py +139 -0
  532. package/library/plugins/materio/tests/test_check_scripts.py +140 -0
  533. package/library/plugins/materio/tests/test_research_state.py +291 -0
  534. package/library/plugins/materio/tests/test_verify_citations.py +337 -0
  535. package/library/prompts/README.md +7 -0
  536. package/library/registry.yaml +921 -0
  537. package/library/skills/README.md +120 -0
  538. package/library/skills/coding/ast-grep/SKILL.md +213 -0
  539. package/library/skills/coding/ast-grep/evals.md +82 -0
  540. package/library/skills/coding/ast-grep/plugin.json +23 -0
  541. package/library/skills/coding/coding-standards/SKILL.md +164 -0
  542. package/library/skills/coding/coding-standards/evals.md +57 -0
  543. package/library/skills/coding/coding-standards/plugin.json +23 -0
  544. package/library/skills/coding/prototype/SKILL.md +151 -0
  545. package/library/skills/coding/prototype/evals.md +61 -0
  546. package/library/skills/coding/prototype/plugin.json +23 -0
  547. package/library/skills/coding/tdd/SKILL.md +134 -0
  548. package/library/skills/coding/tdd/evals.md +61 -0
  549. package/library/skills/coding/tdd/plugin.json +23 -0
  550. package/library/skills/context/context-handoff/SKILL.md +176 -0
  551. package/library/skills/context/context-handoff/evals.md +101 -0
  552. package/library/skills/context/context-handoff/plugin.json +23 -0
  553. package/library/skills/context/context-prime/SKILL.md +131 -0
  554. package/library/skills/context/context-prime/evals.md +99 -0
  555. package/library/skills/context/context-prime/plugin.json +23 -0
  556. package/library/skills/git/branch-closeout/SKILL.md +132 -0
  557. package/library/skills/git/branch-closeout/plugin.json +23 -0
  558. package/library/skills/git/file-ticket/SKILL.md +126 -0
  559. package/library/skills/git/file-ticket/plugin.json +23 -0
  560. package/library/skills/git/fix-issue/SKILL.md +136 -0
  561. package/library/skills/git/fix-issue/plugin.json +23 -0
  562. package/library/skills/git/resolve-merge-conflicts/SKILL.md +151 -0
  563. package/library/skills/git/resolve-merge-conflicts/evals.md +85 -0
  564. package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
  565. package/library/skills/git/ship/SKILL.md +134 -0
  566. package/library/skills/git/ship/plugin.json +23 -0
  567. package/library/skills/git/worktree-create/SKILL.md +127 -0
  568. package/library/skills/git/worktree-create/plugin.json +23 -0
  569. package/library/skills/git/worktree-merge/SKILL.md +147 -0
  570. package/library/skills/git/worktree-merge/plugin.json +23 -0
  571. package/library/skills/meta/clio-coder-dev/SKILL.md +101 -0
  572. package/library/skills/meta/clio-coder-dev/evals.md +46 -0
  573. package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
  574. package/library/skills/meta/clio-coder-test/SKILL.md +156 -0
  575. package/library/skills/meta/clio-coder-test/evals.md +62 -0
  576. package/library/skills/meta/clio-coder-test/plugin.json +23 -0
  577. package/library/skills/meta/clio-coder-test/references/test-map.md +97 -0
  578. package/library/skills/meta/credentials/SKILL.md +132 -0
  579. package/library/skills/meta/credentials/evals.md +104 -0
  580. package/library/skills/meta/credentials/plugin.json +23 -0
  581. package/library/skills/meta/find-skills/SKILL.md +85 -0
  582. package/library/skills/meta/find-skills/evals.md +65 -0
  583. package/library/skills/meta/find-skills/plugin.json +23 -0
  584. package/library/skills/meta/herdr/SKILL.md +133 -0
  585. package/library/skills/meta/herdr/evals.md +38 -0
  586. package/library/skills/meta/herdr/plugin.json +23 -0
  587. package/library/skills/meta/skill-craft/SKILL.md +139 -0
  588. package/library/skills/meta/skill-craft/evals.md +49 -0
  589. package/library/skills/meta/skill-craft/plugin.json +23 -0
  590. package/library/skills/planning/archify/SKILL.md +196 -0
  591. package/library/skills/planning/archify/plugin.json +23 -0
  592. package/library/skills/planning/architecture/SKILL.md +184 -0
  593. package/library/skills/planning/architecture/evals.md +101 -0
  594. package/library/skills/planning/architecture/plugin.json +23 -0
  595. package/library/skills/planning/backlog/SKILL.md +212 -0
  596. package/library/skills/planning/backlog/evals.md +185 -0
  597. package/library/skills/planning/backlog/plugin.json +23 -0
  598. package/library/skills/planning/prd/SKILL.md +129 -0
  599. package/library/skills/planning/prd/evals.md +103 -0
  600. package/library/skills/planning/prd/plugin.json +23 -0
  601. package/library/skills/planning/product-intent/SKILL.md +173 -0
  602. package/library/skills/planning/product-intent/evals.md +106 -0
  603. package/library/skills/planning/product-intent/plugin.json +23 -0
  604. package/library/skills/planning/tech-spec/SKILL.md +172 -0
  605. package/library/skills/planning/tech-spec/evals.md +120 -0
  606. package/library/skills/planning/tech-spec/plugin.json +23 -0
  607. package/library/skills/registry.yaml +144 -0
  608. package/library/skills/remote.yaml +13 -0
  609. package/library/skills/research/arxiv-literature/SKILL.md +168 -0
  610. package/library/skills/research/arxiv-literature/evals.md +108 -0
  611. package/library/skills/research/arxiv-literature/plugin.json +23 -0
  612. package/library/skills/research/experiment-protocol/SKILL.md +148 -0
  613. package/library/skills/research/experiment-protocol/evals.md +114 -0
  614. package/library/skills/research/experiment-protocol/plugin.json +23 -0
  615. package/library/skills/research/scientific-debugging/SKILL.md +149 -0
  616. package/library/skills/research/scientific-debugging/evals.md +156 -0
  617. package/library/skills/research/scientific-debugging/plugin.json +23 -0
  618. package/library/skills/research/scientific-modernization/SKILL.md +170 -0
  619. package/library/skills/research/scientific-modernization/evals.md +111 -0
  620. package/library/skills/research/scientific-modernization/plugin.json +23 -0
  621. package/library/skills/skill-marketplace.json +507 -0
  622. package/library/skills/workflow/cut-it/SKILL.md +153 -0
  623. package/library/skills/workflow/cut-it/evals.md +143 -0
  624. package/library/skills/workflow/cut-it/plugin.json +23 -0
  625. package/library/skills/workflow/design-council/SKILL.md +233 -0
  626. package/library/skills/workflow/design-council/evals.md +258 -0
  627. package/library/skills/workflow/design-council/plugin.json +23 -0
  628. package/library/skills/workflow/grill-me/SKILL.md +267 -0
  629. package/library/skills/workflow/grill-me/evals.md +231 -0
  630. package/library/skills/workflow/grill-me/plugin.json +23 -0
  631. package/library/skills/workflow/workflow-distiller/SKILL.md +204 -0
  632. package/library/skills/workflow/workflow-distiller/evals.md +233 -0
  633. package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
  634. package/package.json +23 -14
  635. package/src/cli/agents.ts +1 -1
  636. package/src/cli/config-inspect.ts +1 -1
  637. package/src/cli/configure.ts +2 -2
  638. package/src/cli/docs.ts +65 -328
  639. package/src/cli/eval.ts +40 -6
  640. package/src/cli/extensions.ts +74 -8
  641. package/src/cli/fleet-preflight.ts +2 -0
  642. package/src/cli/fleet.ts +2 -0
  643. package/src/cli/index.ts +4 -4
  644. package/src/cli/interop-inspect.ts +61 -33
  645. package/src/cli/interop.ts +79 -9
  646. package/src/cli/library-import.ts +139 -0
  647. package/src/cli/library.ts +418 -120
  648. package/src/cli/run.ts +26 -9
  649. package/src/cli/skills-eval.ts +43 -6
  650. package/src/cli/skills-inventory.ts +6 -2
  651. package/src/cli/skills.ts +44 -491
  652. package/src/cli/trace.ts +4 -65
  653. package/src/cli/uninstall.ts +26 -0
  654. package/src/cli/usage.ts +3 -0
  655. package/src/cli/web.ts +79 -0
  656. package/src/core/bus-events.ts +8 -4
  657. package/src/core/config.ts +71 -0
  658. package/src/core/defaults.ts +1 -1
  659. package/src/core/domain-loader.ts +37 -28
  660. package/src/core/recent-models.ts +2 -2
  661. package/src/core/session-routing.ts +3 -3
  662. package/src/core/state-file-lock.ts +1 -1
  663. package/src/core/termination.ts +13 -9
  664. package/src/core/tool-names.ts +5 -0
  665. package/src/domains/agents/contract.ts +1 -1
  666. package/src/domains/agents/extension.ts +53 -9
  667. package/src/domains/agents/fleet-commands.ts +92 -1
  668. package/src/domains/agents/fleet-contract.ts +87 -19
  669. package/src/domains/agents/recipe.ts +5 -4
  670. package/src/domains/agents/registry.ts +80 -24
  671. package/src/domains/config/extension.ts +5 -4
  672. package/src/domains/config/keybindings.ts +155 -95
  673. package/src/domains/context/worker/contract.ts +91 -0
  674. package/src/domains/context/worker/pressure.ts +120 -0
  675. package/src/domains/context/worker/recall.ts +62 -0
  676. package/src/domains/context/worker/select.ts +164 -0
  677. package/src/domains/context/worker/snapshot.ts +35 -0
  678. package/src/domains/context/worker/store.ts +16 -0
  679. package/src/domains/context/working-set/replay/synthetic.ts +2 -1
  680. package/src/domains/dispatch/active-route-planner.ts +2 -0
  681. package/src/domains/dispatch/backoff.ts +1 -0
  682. package/src/domains/dispatch/code-step.ts +12 -2
  683. package/src/domains/dispatch/contract.ts +3 -0
  684. package/src/domains/dispatch/execution-plan.ts +2 -0
  685. package/src/domains/dispatch/extension.ts +184 -39
  686. package/src/domains/dispatch/fleet-plan.ts +10 -0
  687. package/src/domains/dispatch/fleet-run.ts +1 -0
  688. package/src/domains/dispatch/index.ts +1 -0
  689. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  690. package/src/domains/dispatch/receipt-integrity.ts +7 -0
  691. package/src/domains/dispatch/state.ts +2 -2
  692. package/src/domains/dispatch/types.ts +7 -0
  693. package/src/domains/dispatch/validation.ts +12 -0
  694. package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
  695. package/src/domains/eval/metrics/tracked.ts +22 -2
  696. package/src/domains/evidence/failure-attribution.ts +1 -0
  697. package/src/domains/evidence/trust-status.ts +22 -3
  698. package/src/domains/extensions/command-schema.ts +145 -0
  699. package/src/domains/extensions/command-tools.ts +15 -0
  700. package/src/domains/extensions/compatibility.ts +7 -0
  701. package/src/domains/extensions/contract.ts +0 -4
  702. package/src/domains/extensions/discovery.ts +69 -205
  703. package/src/domains/extensions/extension.ts +0 -4
  704. package/src/domains/extensions/index.ts +1 -5
  705. package/src/domains/extensions/manager.ts +1 -6
  706. package/src/domains/extensions/operator-commands.ts +29 -0
  707. package/src/domains/extensions/operator-runtime.ts +485 -0
  708. package/src/domains/extensions/public-api.ts +53 -0
  709. package/src/domains/extensions/runtime-child.mjs +114 -0
  710. package/src/domains/extensions/runtime-process.ts +306 -0
  711. package/src/domains/extensions/runtime-schema.ts +146 -0
  712. package/src/domains/extensions/snapshot-access.ts +21 -0
  713. package/src/domains/extensions/snapshot.ts +4 -32
  714. package/src/domains/extensions/state.ts +5 -83
  715. package/src/domains/extensions/types.ts +33 -34
  716. package/src/domains/interop/adopt.ts +546 -0
  717. package/src/domains/interop/detect.ts +50 -12
  718. package/src/domains/interop/foreign.ts +554 -0
  719. package/src/domains/interop/import.ts +277 -0
  720. package/src/domains/interop/index.ts +24 -0
  721. package/src/domains/interop/install.ts +6 -0
  722. package/src/domains/interop/inventory.ts +351 -0
  723. package/src/domains/interop/projection.ts +360 -0
  724. package/src/domains/interop/registry.ts +106 -3
  725. package/src/domains/interop/types.ts +51 -0
  726. package/src/domains/lifecycle/migrations/index.ts +0 -2
  727. package/src/domains/lifecycle/naming-resources.ts +1 -1
  728. package/src/domains/middleware/hooks.ts +2 -2
  729. package/src/domains/middleware/marketplace-offer.ts +1 -1
  730. package/src/domains/mux/contract.ts +1 -1
  731. package/src/domains/observability/background-memory-usage.ts +3 -0
  732. package/src/domains/observability/compaction-usage.ts +2 -0
  733. package/src/domains/observability/cost.ts +5 -0
  734. package/src/domains/observability/extension.ts +1 -0
  735. package/src/domains/observability/out-of-turn-usage.ts +2 -0
  736. package/src/domains/observability/trace-store.ts +65 -5
  737. package/src/domains/plugins/catalog.ts +204 -0
  738. package/src/domains/plugins/contract.ts +24 -0
  739. package/src/domains/plugins/discovery.ts +316 -0
  740. package/src/domains/plugins/extension.ts +40 -0
  741. package/src/domains/plugins/index.ts +77 -0
  742. package/src/domains/plugins/integrity.ts +6 -0
  743. package/src/domains/plugins/manifest.ts +3 -0
  744. package/src/domains/plugins/resources.ts +102 -0
  745. package/src/domains/plugins/state.ts +753 -0
  746. package/src/domains/plugins/types.ts +217 -0
  747. package/src/domains/prompts/extension.ts +4 -10
  748. package/src/domains/prompts/fragments/operating/skills.md +10 -10
  749. package/src/domains/providers/cache-deployment.ts +147 -0
  750. package/src/domains/providers/catalog.ts +12 -7
  751. package/src/domains/providers/extension.ts +27 -5
  752. package/src/domains/providers/index.ts +1 -0
  753. package/src/domains/providers/plugins.ts +3 -13
  754. package/src/domains/providers/runtimes/common/local-synth.ts +4 -0
  755. package/src/domains/providers/types/target-descriptor.ts +17 -0
  756. package/src/domains/resources/common-loader.ts +9 -6
  757. package/src/domains/resources/index.ts +67 -0
  758. package/src/domains/resources/library-actions.ts +836 -0
  759. package/src/domains/resources/library-evals.ts +38 -0
  760. package/src/domains/resources/library-inventory.ts +1048 -0
  761. package/src/domains/resources/library-types.ts +50 -0
  762. package/src/domains/resources/library-validation.ts +634 -0
  763. package/src/domains/resources/library.ts +437 -156
  764. package/src/domains/resources/package-references.ts +66 -0
  765. package/src/domains/resources/prompts/loader.ts +75 -41
  766. package/src/domains/resources/skills/install.ts +2 -2
  767. package/src/domains/resources/skills/loader.ts +77 -22
  768. package/src/domains/resources/skills/marketplace.ts +48 -57
  769. package/src/domains/resources/skills/promotion.ts +2 -2
  770. package/src/domains/resources/skills/provenance-pin.ts +17 -4
  771. package/src/domains/safety/action-classifier.ts +2 -2
  772. package/src/domains/safety/default-path-policy.ts +3 -1
  773. package/src/domains/safety/policy-engine.ts +1 -1
  774. package/src/domains/safety/protected-artifacts.ts +21 -5
  775. package/src/domains/safety/skill-authority.ts +5 -2
  776. package/src/domains/session/compaction/compact.ts +4 -1
  777. package/src/domains/session/entries.ts +1 -0
  778. package/src/domains/session/usage.ts +6 -7
  779. package/src/domains/share/archive.ts +1 -1
  780. package/src/engine/acp/server.ts +11 -0
  781. package/src/engine/ai.ts +2 -0
  782. package/src/engine/apis/openai-completions.ts +61 -6
  783. package/src/engine/notices/pi-tui-LICENSE +21 -0
  784. package/src/engine/prewarm.ts +232 -0
  785. package/src/engine/provider-diagnostics.ts +6 -1
  786. package/src/engine/tui.ts +3 -0
  787. package/src/engine/worker-runtime.ts +58 -14
  788. package/src/engine/worker-tools.ts +5 -0
  789. package/src/entry/orchestrator.ts +46 -21
  790. package/src/entry/plugin-reload.ts +18 -0
  791. package/src/interactive/application-controller.ts +67 -21
  792. package/src/interactive/chat-loop-messages.ts +3 -0
  793. package/src/interactive/chat-loop.ts +32 -11
  794. package/src/interactive/chat-panel.ts +5 -1
  795. package/src/interactive/clio-editor.ts +53 -21
  796. package/src/interactive/command-output.ts +56 -1
  797. package/src/interactive/editor-submit.ts +65 -28
  798. package/src/interactive/fleet-run-preview.ts +2 -0
  799. package/src/interactive/follow-up-queue-panel.ts +3 -3
  800. package/src/interactive/footer/dashboard.ts +4 -1
  801. package/src/interactive/footer/notifications.ts +2 -2
  802. package/src/interactive/footer/widgets.ts +2 -2
  803. package/src/interactive/interactive-application.ts +209 -21
  804. package/src/interactive/interactive-input-runtime.ts +254 -7
  805. package/src/interactive/interactive-presentation.ts +41 -12
  806. package/src/interactive/interactive-slash-runtime.ts +37 -8
  807. package/src/interactive/keybinding-manager.ts +156 -79
  808. package/src/interactive/keyboard-owner.ts +37 -0
  809. package/src/interactive/leader-key.ts +49 -102
  810. package/src/interactive/leader-menu.ts +45 -0
  811. package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
  812. package/src/interactive/overlay-frame.ts +15 -0
  813. package/src/interactive/overlay-key-routing.ts +46 -47
  814. package/src/interactive/overlay-lifecycle.ts +30 -15
  815. package/src/interactive/overlay-resource-openers.ts +56 -46
  816. package/src/interactive/overlays/ask-user.ts +630 -556
  817. package/src/interactive/overlays/extension-panel.ts +70 -0
  818. package/src/interactive/overlays/extensions.ts +28 -5
  819. package/src/interactive/overlays/fleet-run-approval.ts +7 -3
  820. package/src/interactive/overlays/help-reference.ts +89 -40
  821. package/src/interactive/overlays/interop.ts +122 -3
  822. package/src/interactive/overlays/keybinding-detail.ts +2 -2
  823. package/src/interactive/overlays/library-lifecycle.ts +90 -0
  824. package/src/interactive/overlays/library-model.ts +574 -0
  825. package/src/interactive/overlays/library-review.ts +557 -0
  826. package/src/interactive/overlays/library-tabs.ts +3 -15
  827. package/src/interactive/overlays/library.ts +602 -0
  828. package/src/interactive/overlays/list-overlay.ts +218 -39
  829. package/src/interactive/overlays/model-selector.ts +28 -25
  830. package/src/interactive/overlays/session-selector.ts +9 -3
  831. package/src/interactive/overlays/settings.ts +25 -18
  832. package/src/interactive/overlays/tree-selector.ts +16 -11
  833. package/src/interactive/permission-hint.ts +13 -0
  834. package/src/interactive/permission-overlay.ts +77 -28
  835. package/src/interactive/prewarm.ts +11 -197
  836. package/src/interactive/prompt-source-label.ts +21 -0
  837. package/src/interactive/renderers/reference-card.ts +35 -0
  838. package/src/interactive/renderers/worker-entry.ts +35 -3
  839. package/src/interactive/session-usage-reseed.ts +2 -0
  840. package/src/interactive/side-question.ts +2 -0
  841. package/src/interactive/slash-autocomplete.ts +99 -1
  842. package/src/interactive/slash-commands.ts +390 -67
  843. package/src/interactive/slash-spec.ts +0 -1
  844. package/src/interactive/terminal-lease.ts +44 -12
  845. package/src/interactive/turn-context.ts +1 -0
  846. package/src/interactive/turn-persistence.ts +3 -0
  847. package/src/interactive/turn-prewarm.ts +126 -19
  848. package/src/interactive/turn-queues.ts +8 -7
  849. package/src/interactive/turn-runtime.ts +15 -1
  850. package/src/interactive/view/view-overlay.ts +19 -14
  851. package/src/interactive/welcome-dashboard.ts +525 -408
  852. package/src/tools/bootstrap.ts +8 -0
  853. package/src/tools/builtin-tool-catalog.ts +15 -6
  854. package/src/tools/context/index.ts +58 -5
  855. package/src/tools/context/library.ts +465 -0
  856. package/src/tools/context/surface.ts +20 -6
  857. package/src/tools/core-bootstrap.ts +3 -0
  858. package/src/tools/dispatch-admission.ts +24 -1
  859. package/src/tools/dispatch-arguments.ts +8 -0
  860. package/src/tools/dispatch-plan.ts +32 -0
  861. package/src/tools/dispatch-schema.ts +31 -1
  862. package/src/tools/dispatch-types.ts +3 -0
  863. package/src/tools/dispatch.ts +1 -1
  864. package/src/tools/harness-extensions.ts +169 -0
  865. package/src/tools/observation.ts +4 -0
  866. package/src/tools/policy.ts +7 -1
  867. package/src/tools/registry.ts +31 -3
  868. package/src/tools/worker-evidence.ts +5 -0
  869. package/src/worker/context-seed.ts +192 -0
  870. package/src/worker/entry.ts +1 -0
  871. package/src/worker/spec-contract.ts +35 -1
  872. package/dist/acp-UVEVWSDL.js +0 -130
  873. package/dist/agents-VWY37DTK.js +0 -148
  874. package/dist/auth-PCV2XQDV.js +0 -551
  875. package/dist/builtins-PD652MTK.js +0 -22
  876. package/dist/chunk-22PQ4TX4.js +0 -360
  877. package/dist/chunk-24T2YZ7A.js +0 -22648
  878. package/dist/chunk-2AKYFREM.js +0 -1008
  879. package/dist/chunk-2QPI3TR3.js +0 -162
  880. package/dist/chunk-3BJGMT2D.js +0 -324
  881. package/dist/chunk-3HQVBIKD.js +0 -308
  882. package/dist/chunk-3JLFK5MW.js +0 -193
  883. package/dist/chunk-3O2ZAUGQ.js +0 -283
  884. package/dist/chunk-3QKXHCGS.js +0 -59
  885. package/dist/chunk-3T4DXWP6.js +0 -668
  886. package/dist/chunk-3UW3KU4A.js +0 -21
  887. package/dist/chunk-3WBALRQH.js +0 -5076
  888. package/dist/chunk-4DU2TVI4.js +0 -108
  889. package/dist/chunk-4U4TKZFR.js +0 -5052
  890. package/dist/chunk-4VMV6OS6.js +0 -101
  891. package/dist/chunk-536HXRFE.js +0 -1257
  892. package/dist/chunk-5CMARGPF.js +0 -477
  893. package/dist/chunk-5CY4Q6QI.js +0 -141
  894. package/dist/chunk-5QRX7SLS.js +0 -1018
  895. package/dist/chunk-5VTJP36Q.js +0 -36
  896. package/dist/chunk-5ZSZEYJK.js +0 -119
  897. package/dist/chunk-6HAO6X5B.js +0 -197
  898. package/dist/chunk-6OII3LOK.js +0 -404
  899. package/dist/chunk-6RYDAVQT.js +0 -4338
  900. package/dist/chunk-6VRRJT7L.js +0 -146
  901. package/dist/chunk-6YA46L5A.js +0 -386
  902. package/dist/chunk-77CZRFTE.js +0 -634
  903. package/dist/chunk-7JSSKXG2.js +0 -1215
  904. package/dist/chunk-7WUZEB2M.js +0 -165
  905. package/dist/chunk-7YJWEF2L.js +0 -974
  906. package/dist/chunk-ACCKVSHU.js +0 -44
  907. package/dist/chunk-B3MOMLJ4.js +0 -433
  908. package/dist/chunk-BBV5TKE6.js +0 -35
  909. package/dist/chunk-BLTEAUCB.js +0 -668
  910. package/dist/chunk-BS4GAMUB.js +0 -233
  911. package/dist/chunk-BT7HGDOX.js +0 -3151
  912. package/dist/chunk-CBSKDFWL.js +0 -101
  913. package/dist/chunk-CXQ37WJH.js +0 -45
  914. package/dist/chunk-DXLUVUD4.js +0 -1490
  915. package/dist/chunk-DZK63TZJ.js +0 -1334
  916. package/dist/chunk-E7RF4KBO.js +0 -266
  917. package/dist/chunk-ECOMVOHP.js +0 -139
  918. package/dist/chunk-EHOSNVVM.js +0 -59
  919. package/dist/chunk-F5Z7EWMN.js +0 -4484
  920. package/dist/chunk-FQOOGXBH.js +0 -579
  921. package/dist/chunk-GLYBJ4RQ.js +0 -396
  922. package/dist/chunk-HHVJNVUJ.js +0 -179
  923. package/dist/chunk-HL26ADLH.js +0 -77
  924. package/dist/chunk-HPTJF6DG.js +0 -2465
  925. package/dist/chunk-HXHFDHB6.js +0 -962
  926. package/dist/chunk-HZ2T2YED.js +0 -1687
  927. package/dist/chunk-HZFBVU5X.js +0 -666
  928. package/dist/chunk-I2K2NCZQ.js +0 -659
  929. package/dist/chunk-IGLVVNEG.js +0 -402
  930. package/dist/chunk-IKRWLEDA.js +0 -1567
  931. package/dist/chunk-J2FYEQ5L.js +0 -33
  932. package/dist/chunk-JMPL7NUB.js +0 -108
  933. package/dist/chunk-K2HL3GBL.js +0 -998
  934. package/dist/chunk-KAFMW7WM.js +0 -386
  935. package/dist/chunk-KTFSFCVN.js +0 -46
  936. package/dist/chunk-LIN2K3EL.js +0 -66
  937. package/dist/chunk-LUL5Z66S.js +0 -221
  938. package/dist/chunk-LVFANMOH.js +0 -466
  939. package/dist/chunk-LY4N4TTL.js +0 -117
  940. package/dist/chunk-LZBMXNLP.js +0 -1196
  941. package/dist/chunk-M6TAYK66.js +0 -807
  942. package/dist/chunk-N2OKBREN.js +0 -243
  943. package/dist/chunk-NC4KV7EL.js +0 -39
  944. package/dist/chunk-NF3BK5WR.js +0 -42
  945. package/dist/chunk-NNWJYUNO.js +0 -573
  946. package/dist/chunk-NTK3WTHM.js +0 -141
  947. package/dist/chunk-ODUTYZIU.js +0 -688
  948. package/dist/chunk-OQM5IVJY.js +0 -1377
  949. package/dist/chunk-P5JMBPDJ.js +0 -7192
  950. package/dist/chunk-P5SC4DLJ.js +0 -47
  951. package/dist/chunk-P6M7RKMI.js +0 -97
  952. package/dist/chunk-PWWSIB2A.js +0 -52
  953. package/dist/chunk-PZN2LQY6.js +0 -674
  954. package/dist/chunk-Q7NNUHQV.js +0 -705
  955. package/dist/chunk-QCOV5DFY.js +0 -911
  956. package/dist/chunk-QNWRHOMF.js +0 -692
  957. package/dist/chunk-QRFXEO6Y.js +0 -17
  958. package/dist/chunk-QXFBABFJ.js +0 -380
  959. package/dist/chunk-RGZNQ5CT.js +0 -657
  960. package/dist/chunk-SRZOW5L2.js +0 -1865
  961. package/dist/chunk-SXQKNKRA.js +0 -223
  962. package/dist/chunk-T334FW2H.js +0 -362
  963. package/dist/chunk-T52TPHYC.js +0 -318
  964. package/dist/chunk-TJFDL26W.js +0 -658
  965. package/dist/chunk-TN5FW4XY.js +0 -172
  966. package/dist/chunk-U7H5WRG5.js +0 -123
  967. package/dist/chunk-UFYNOQK4.js +0 -302
  968. package/dist/chunk-URBGEOH3.js +0 -32
  969. package/dist/chunk-USZA7GWL.js +0 -341
  970. package/dist/chunk-UUQ5G6EZ.js +0 -697
  971. package/dist/chunk-VAHLPXPY.js +0 -399
  972. package/dist/chunk-VANN3GDP.js +0 -2488
  973. package/dist/chunk-VHMX7SXF.js +0 -1289
  974. package/dist/chunk-WJIMKGD6.js +0 -132
  975. package/dist/chunk-WKUYQBCG.js +0 -795
  976. package/dist/chunk-WNGF5AJX.js +0 -1911
  977. package/dist/chunk-WV6TDAPN.js +0 -3627
  978. package/dist/chunk-X3BI7HTV.js +0 -562
  979. package/dist/chunk-XWMSPJYN.js +0 -149
  980. package/dist/chunk-YPRSNUTC.js +0 -395
  981. package/dist/chunk-ZS43Y2FT.js +0 -438
  982. package/dist/clio-QQCMTUZE.js +0 -26
  983. package/dist/code-nav-GUPM6766.js +0 -686
  984. package/dist/components-TNIKXCBH.js +0 -674
  985. package/dist/config-IIM7YOD3.js +0 -621
  986. package/dist/configure-4ZM5HWJX.js +0 -73
  987. package/dist/context-44BZLJ3J.js +0 -344
  988. package/dist/context-AIDVQKMW.js +0 -278
  989. package/dist/context-OL5P3HEP.js +0 -1031
  990. package/dist/context-clear-OQV76MYP.js +0 -184
  991. package/dist/context-index-HP2JFUWA.js +0 -120
  992. package/dist/context-map-INTXD54D.js +0 -555
  993. package/dist/context-working-set-ZUW3EGLS.js +0 -1556
  994. package/dist/detail-UXPWRANG.js +0 -115
  995. package/dist/dispatch-runner-P3ZW6G77.js +0 -2438
  996. package/dist/docs-BL7ROUFN.js +0 -292
  997. package/dist/doctor-JJVGPZWT.js +0 -797
  998. package/dist/eval-V2RTN3UH.js +0 -4972
  999. package/dist/eval-inventory-QOYZERXJ.js +0 -315
  1000. package/dist/evidence-35PYWGSO.js +0 -225
  1001. package/dist/evidence-CIGGKI6J.js +0 -383
  1002. package/dist/evolve-33SM3NJP.js +0 -609
  1003. package/dist/extensions-YVRHX6ZI.js +0 -229
  1004. package/dist/fleet-LFO7SIPC.js +0 -908
  1005. package/dist/fleet-commands-RLK72GU3.js +0 -75
  1006. package/dist/fleet-decisions-3SBSCTCW.js +0 -159
  1007. package/dist/fleet-graph-JZIBCGMW.js +0 -134
  1008. package/dist/fleet-inspect-2L5YGGZJ.js +0 -469
  1009. package/dist/fleet-preflight-QRSHIIDE.js +0 -22
  1010. package/dist/fleet-validate-LIAVKDUU.js +0 -92
  1011. package/dist/fleet-verify-JIK3OQZR.js +0 -202
  1012. package/dist/fleet-view-IWHYGQKK.js +0 -118
  1013. package/dist/init-NJEDOTQW.js +0 -321
  1014. package/dist/interop-RVCAYECG.js +0 -115
  1015. package/dist/inventory-74UL7UHU.js +0 -118
  1016. package/dist/library-CTKZA7K3.js +0 -226
  1017. package/dist/memory-I76I5VUH.js +0 -512
  1018. package/dist/models-D4YDIQZQ.js +0 -289
  1019. package/dist/monitor-NKVD55HX.js +0 -775
  1020. package/dist/orchestrator-I6OATVPK.js +0 -39518
  1021. package/dist/panes-7BTYH3XQ.js +0 -103
  1022. package/dist/panes-WPOMEMRH.js +0 -74
  1023. package/dist/paths-J3KN7UAO.js +0 -67
  1024. package/dist/preload-EJAWJEIO.js +0 -116
  1025. package/dist/reset-4XMQKDNZ.js +0 -345
  1026. package/dist/resources-TVYVXK3Q.js +0 -125
  1027. package/dist/run-OWQNNSJU.js +0 -872
  1028. package/dist/share-NPZZMUXG.js +0 -290
  1029. package/dist/skills-OXFEAWMT.js +0 -510
  1030. package/dist/skills-eval-J5TCKSJA.js +0 -1034
  1031. package/dist/skills-inventory-7II4DM57.js +0 -133
  1032. package/dist/slash-commands-MDSDSWYF.js +0 -92
  1033. package/dist/steer-S7D7IKPU.js +0 -77
  1034. package/dist/support-5VAEC32W.js +0 -38
  1035. package/dist/targets-KILZEOCE.js +0 -1109
  1036. package/dist/tasks-R6P6OV22.js +0 -36
  1037. package/dist/terminal-lease-LZCG2KN3.js +0 -405
  1038. package/dist/tools-6OCQ6SVB.js +0 -28
  1039. package/dist/trace-JHLXWUMN.js +0 -572
  1040. package/dist/tui-primitives-RCY2HN7G.js +0 -17
  1041. package/dist/uninstall-FXYMFFRT.js +0 -407
  1042. package/dist/upgrade-D2OZH6IQ.js +0 -307
  1043. package/dist/usage-PIASNUS4.js +0 -1052
  1044. package/dist/verifiers-LTHUY2PX.js +0 -630
  1045. package/dist/verify-HYF7KBVE.js +0 -30
  1046. package/dist/web-fetch-MQN4FH3X.js +0 -788
  1047. package/dist/wiki-generate-RK7JQ5NP.js +0 -615
  1048. package/dist/with-panes-OFTNAR4Y.js +0 -628
  1049. package/skills/README.md +0 -418
  1050. package/skills/coding/ast-grep/SKILL.md +0 -213
  1051. package/skills/coding/ast-grep/evals.md +0 -82
  1052. package/skills/coding/coding-standards/SKILL.md +0 -164
  1053. package/skills/coding/coding-standards/evals.md +0 -57
  1054. package/skills/coding/prototype/SKILL.md +0 -151
  1055. package/skills/coding/prototype/evals.md +0 -61
  1056. package/skills/coding/tdd/SKILL.md +0 -134
  1057. package/skills/coding/tdd/evals.md +0 -61
  1058. package/skills/context/context-handoff/SKILL.md +0 -176
  1059. package/skills/context/context-handoff/evals.md +0 -101
  1060. package/skills/context/context-prime/SKILL.md +0 -131
  1061. package/skills/context/context-prime/evals.md +0 -99
  1062. package/skills/git/branch-closeout/SKILL.md +0 -132
  1063. package/skills/git/file-ticket/SKILL.md +0 -126
  1064. package/skills/git/fix-issue/SKILL.md +0 -136
  1065. package/skills/git/resolve-merge-conflicts/SKILL.md +0 -151
  1066. package/skills/git/resolve-merge-conflicts/evals.md +0 -85
  1067. package/skills/git/ship/SKILL.md +0 -134
  1068. package/skills/git/worktree-create/SKILL.md +0 -127
  1069. package/skills/git/worktree-merge/SKILL.md +0 -147
  1070. package/skills/meta/clio-coder-dev/SKILL.md +0 -101
  1071. package/skills/meta/clio-coder-dev/evals.md +0 -46
  1072. package/skills/meta/clio-coder-test/SKILL.md +0 -146
  1073. package/skills/meta/clio-coder-test/evals.md +0 -48
  1074. package/skills/meta/clio-coder-test/references/test-map.md +0 -96
  1075. package/skills/meta/credentials/SKILL.md +0 -132
  1076. package/skills/meta/credentials/evals.md +0 -104
  1077. package/skills/meta/find-skills/SKILL.md +0 -78
  1078. package/skills/meta/find-skills/evals.md +0 -47
  1079. package/skills/meta/herdr/SKILL.md +0 -133
  1080. package/skills/meta/herdr/evals.md +0 -38
  1081. package/skills/meta/skill-craft/SKILL.md +0 -125
  1082. package/skills/meta/skill-craft/evals.md +0 -41
  1083. package/skills/planning/archify/SKILL.md +0 -196
  1084. package/skills/planning/architecture/SKILL.md +0 -184
  1085. package/skills/planning/architecture/evals.md +0 -101
  1086. package/skills/planning/backlog/SKILL.md +0 -212
  1087. package/skills/planning/backlog/evals.md +0 -185
  1088. package/skills/planning/prd/SKILL.md +0 -129
  1089. package/skills/planning/prd/evals.md +0 -103
  1090. package/skills/planning/product-intent/SKILL.md +0 -173
  1091. package/skills/planning/product-intent/evals.md +0 -106
  1092. package/skills/planning/tech-spec/SKILL.md +0 -172
  1093. package/skills/planning/tech-spec/evals.md +0 -120
  1094. package/skills/registry.yaml +0 -144
  1095. package/skills/remote.yaml +0 -13
  1096. package/skills/research/arxiv-literature/SKILL.md +0 -168
  1097. package/skills/research/arxiv-literature/evals.md +0 -108
  1098. package/skills/research/experiment-protocol/SKILL.md +0 -148
  1099. package/skills/research/experiment-protocol/evals.md +0 -114
  1100. package/skills/research/scientific-debugging/SKILL.md +0 -149
  1101. package/skills/research/scientific-debugging/evals.md +0 -156
  1102. package/skills/research/scientific-modernization/SKILL.md +0 -170
  1103. package/skills/research/scientific-modernization/evals.md +0 -111
  1104. package/skills/skill-marketplace.json +0 -507
  1105. package/skills/workflow/cut-it/SKILL.md +0 -153
  1106. package/skills/workflow/cut-it/evals.md +0 -143
  1107. package/skills/workflow/design-council/SKILL.md +0 -233
  1108. package/skills/workflow/design-council/evals.md +0 -258
  1109. package/skills/workflow/grill-me/SKILL.md +0 -267
  1110. package/skills/workflow/grill-me/evals.md +0 -231
  1111. package/skills/workflow/workflow-distiller/SKILL.md +0 -201
  1112. package/skills/workflow/workflow-distiller/evals.md +0 -225
  1113. package/src/domains/extensions/resource-path.ts +0 -27
  1114. package/src/domains/extensions/resources.ts +0 -37
  1115. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
  1116. package/src/interactive/overlays/agents.ts +0 -70
  1117. package/src/interactive/overlays/library-install-confirm.ts +0 -152
  1118. package/src/interactive/overlays/prompts.ts +0 -89
  1119. package/src/interactive/overlays/skills-hub.ts +0 -615
  1120. /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
  1121. /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
  1122. /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
  1123. /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
  1124. /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
  1125. /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
  1126. /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
  1127. /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
  1128. /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
  1129. /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
  1130. /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
  1131. /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
  1132. /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
  1133. /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
  1134. /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
  1135. /package/{skills → library/skills}/git/ship/evals.md +0 -0
  1136. /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
  1137. /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
  1138. /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
  1139. /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
  1140. /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
  1141. /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
  1142. /package/{skills → library/skills}/planning/archify/evals.md +0 -0
@@ -1,1490 +0,0 @@
1
- import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- entryBelongsToPath
4
- } from "./chunk-O5F25NIE.js";
5
- import {
6
- probeWorkspace
7
- } from "./chunk-DNHVRBH4.js";
8
- import {
9
- isSessionEntry,
10
- isSessionHeader
11
- } from "./chunk-KAFMW7WM.js";
12
- import {
13
- stripTokenizerSentinels
14
- } from "./chunk-MCJKEGHO.js";
15
- import {
16
- protectArtifact
17
- } from "./chunk-M6TAYK66.js";
18
- import {
19
- CURRENT_SESSION_FORMAT_VERSION,
20
- appendSessionFileEntry,
21
- atomicWrite,
22
- createSession,
23
- cwdHash,
24
- openSession,
25
- readSessionFileEntries,
26
- readSessionMeta,
27
- resumeSession,
28
- sessionPaths
29
- } from "./chunk-FQOOGXBH.js";
30
- import {
31
- BusChannels
32
- } from "./chunk-HL26ADLH.js";
33
- import {
34
- clioStateDir,
35
- stateRootRemoved
36
- } from "./chunk-CTTI7G3T.js";
37
- import {
38
- init_esm_shims
39
- } from "./chunk-ECBHH7LU.js";
40
-
41
- // src/core/response-model-id.ts
42
- init_esm_shims();
43
- function emptyResponseModelIdObservationCounts() {
44
- return { reportedCalls: 0, notReportedCalls: 0, notObservedCalls: 0, legacyDifferenceOnlyCalls: 0 };
45
- }
46
- function addResponseModelIdObservationCount(counts, observation, calls = 1) {
47
- switch (observation.state) {
48
- case "reported":
49
- counts.reportedCalls += calls;
50
- break;
51
- case "not-reported":
52
- counts.notReportedCalls += calls;
53
- break;
54
- case "not-observed":
55
- counts.notObservedCalls += calls;
56
- break;
57
- case "legacy-difference-only":
58
- counts.legacyDifferenceOnlyCalls += calls;
59
- break;
60
- }
61
- }
62
- function addResponseModelIdObservationCounts(counts, additional) {
63
- counts.reportedCalls += additional.reportedCalls;
64
- counts.notReportedCalls += additional.notReportedCalls;
65
- counts.notObservedCalls += additional.notObservedCalls;
66
- counts.legacyDifferenceOnlyCalls += additional.legacyDifferenceOnlyCalls;
67
- }
68
- function responseModelIdObservationCountsLabel(counts) {
69
- const parts = [];
70
- if (counts.reportedCalls > 0) parts.push(`reported ${counts.reportedCalls}`);
71
- if (counts.notReportedCalls > 0) parts.push(`not reported ${counts.notReportedCalls}`);
72
- if (counts.notObservedCalls > 0) parts.push(`not observed ${counts.notObservedCalls}`);
73
- if (counts.legacyDifferenceOnlyCalls > 0) parts.push(`legacy difference-only ${counts.legacyDifferenceOnlyCalls}`);
74
- return parts.join(", ");
75
- }
76
- function nonEmptyString(value) {
77
- return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
78
- }
79
- function parsedObservation(value) {
80
- if (value === null || typeof value !== "object" || Array.isArray(value)) return null;
81
- const record = value;
82
- switch (record.state) {
83
- case "reported": {
84
- const reportedModelId = nonEmptyString(record.reportedModelId);
85
- return reportedModelId === null ? null : { state: "reported", reportedModelId };
86
- }
87
- case "not-reported":
88
- return { state: "not-reported" };
89
- case "not-observed":
90
- return { state: "not-observed" };
91
- case "legacy-difference-only":
92
- return { state: "legacy-difference-only", differingModelId: nonEmptyString(record.differingModelId) };
93
- default:
94
- return null;
95
- }
96
- }
97
- function responseModelIdObservationFromRecord(record, missing) {
98
- const current = parsedObservation(record.responseModelIdObservation);
99
- if (current !== null) return current;
100
- if (Object.hasOwn(record, "servedModel")) {
101
- const reportedModelId = nonEmptyString(record.servedModel);
102
- return reportedModelId === null ? { state: "not-reported" } : { state: "reported", reportedModelId };
103
- }
104
- if (missing === "not-observed") return { state: "not-observed" };
105
- return { state: "legacy-difference-only", differingModelId: nonEmptyString(record.responseModel) };
106
- }
107
- function attributedModelId(observation, requestedModelId, differingResponseModelId) {
108
- switch (observation.state) {
109
- case "reported":
110
- return observation.reportedModelId;
111
- case "not-reported":
112
- return "unknown";
113
- case "not-observed":
114
- return differingResponseModelId ?? requestedModelId;
115
- case "legacy-difference-only":
116
- return observation.differingModelId ?? requestedModelId;
117
- }
118
- }
119
-
120
- // src/domains/session/compaction/session-entries.ts
121
- init_esm_shims();
122
- function collectSessionEntries(turns, filePath) {
123
- const out = [];
124
- for (const raw of turns) {
125
- if (!isSessionEntry(raw)) {
126
- throw new Error(
127
- `session ledger contains an unreadable entry (missing kind discriminant): ${filePath}. Remove or compact the session to reset.`
128
- );
129
- }
130
- out.push(raw);
131
- }
132
- return out;
133
- }
134
-
135
- // src/domains/session/archive-readers.ts
136
- init_esm_shims();
137
- import { readdir, readFile } from "node:fs/promises";
138
- import { join as join3 } from "node:path";
139
-
140
- // src/domains/session/index.ts
141
- init_esm_shims();
142
-
143
- // src/domains/session/extension.ts
144
- init_esm_shims();
145
-
146
- // src/domains/session/checkpoint.ts
147
- init_esm_shims();
148
- async function performCheckpoint(state, reason) {
149
- await state.writer.persistTree();
150
- if (stateRootRemoved()) return;
151
- const paths = sessionPaths(state.meta);
152
- const at = (/* @__PURE__ */ new Date()).toISOString();
153
- const enriched = {
154
- ...state.meta,
155
- lastCheckpointAt: at,
156
- lastCheckpointReason: reason ?? null
157
- };
158
- atomicWrite(paths.meta, JSON.stringify(enriched, null, 2));
159
- Object.assign(state.meta, enriched);
160
- }
161
-
162
- // src/domains/session/history.ts
163
- init_esm_shims();
164
- import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
165
- import { join } from "node:path";
166
- function listSessionsForCwd(cwd) {
167
- const hash = cwdHash(cwd);
168
- const dir = join(clioStateDir(), "sessions", hash);
169
- if (!existsSync(dir)) return [];
170
- const metas = [];
171
- for (const entry of readdirSync(dir, { withFileTypes: true })) {
172
- if (!entry.isDirectory()) continue;
173
- const sessionDir = join(dir, entry.name);
174
- const metaPath = join(sessionDir, "meta.json");
175
- if (!existsSync(metaPath)) continue;
176
- let meta;
177
- try {
178
- if (!statSync(metaPath).isFile()) continue;
179
- const raw = readFileSync(metaPath, "utf8");
180
- meta = JSON.parse(raw);
181
- } catch {
182
- continue;
183
- }
184
- enrichMetaForListing(meta, join(sessionDir, "current.jsonl"));
185
- metas.push(meta);
186
- }
187
- metas.sort((a, b) => {
188
- const aKey = a.lastActivityAt ?? a.createdAt ?? "";
189
- const bKey = b.lastActivityAt ?? b.createdAt ?? "";
190
- return aKey === bKey ? 0 : aKey > bKey ? -1 : 1;
191
- });
192
- return metas;
193
- }
194
- var PREVIEW_MAX_CHARS = 240;
195
- function collapseWhitespace(text) {
196
- return text.replace(/\s+/g, " ").trim();
197
- }
198
- function rawMessageText(payload) {
199
- if (typeof payload === "string") return payload.trim().length > 0 ? payload : null;
200
- if (!payload || typeof payload !== "object") return null;
201
- const obj = payload;
202
- if (typeof obj.text === "string" && obj.text.trim().length > 0) return obj.text;
203
- if (Array.isArray(obj.content)) {
204
- const parts = [];
205
- for (const part of obj.content) {
206
- if (part && typeof part === "object" && part.type === "text" && typeof part.text === "string") {
207
- parts.push(part.text);
208
- }
209
- }
210
- const joined = parts.join("\n");
211
- if (joined.trim().length > 0) return joined;
212
- }
213
- return null;
214
- }
215
- function extractMessageText(payload) {
216
- const raw = rawMessageText(payload);
217
- if (raw === null) return null;
218
- const collapsed = collapseWhitespace(raw);
219
- return collapsed.length > 0 ? collapsed : null;
220
- }
221
- function operatorTextOfUserPayload(payload) {
222
- if (payload && typeof payload === "object" && typeof payload.operatorText === "string") {
223
- const collapsed = collapseWhitespace(payload.operatorText);
224
- return collapsed.length > 0 ? collapsed : null;
225
- }
226
- const text = rawMessageText(payload);
227
- if (text === null) return null;
228
- const stripped = collapseWhitespace(stripInjectedPreamble(text));
229
- return stripped.length > 0 ? stripped : null;
230
- }
231
- var LEADING_SYSTEM_REMINDER = /^\s*<system-reminder>[\s\S]*?<\/system-reminder>\s*/u;
232
- var LEADING_SKILL_REQUEST = /^\s*\[Skill request\][\s\S]*?Only these pending skill names are allowed this turn\.[^\n]*\s*/u;
233
- function stripInjectedPreamble(text) {
234
- let current = text;
235
- for (; ; ) {
236
- const next = current.replace(LEADING_SYSTEM_REMINDER, "").replace(LEADING_SKILL_REQUEST, "");
237
- if (next === current) return current;
238
- current = next;
239
- }
240
- }
241
- function scanCurrentJsonl(currentPath) {
242
- const result = {
243
- firstUserMessage: null,
244
- firstAssistantMessage: null,
245
- messageCount: 0,
246
- lastTimestamp: null,
247
- name: null,
248
- labels: /* @__PURE__ */ new Map()
249
- };
250
- if (!existsSync(currentPath)) return result;
251
- const records = readSessionFileEntries(currentPath).filter((entry) => !isSessionHeader(entry));
252
- for (const parsed of collectSessionEntries(records, currentPath)) {
253
- if (result.lastTimestamp === null || parsed.timestamp > result.lastTimestamp) {
254
- result.lastTimestamp = parsed.timestamp;
255
- }
256
- if (parsed.kind === "message" && parsed.role === "user") {
257
- result.messageCount += 1;
258
- if (result.firstUserMessage === null) {
259
- const text = operatorTextOfUserPayload(parsed.payload);
260
- if (text !== null) result.firstUserMessage = text;
261
- }
262
- }
263
- if (parsed.kind === "message" && parsed.role === "assistant" && result.firstAssistantMessage === null) {
264
- const text = extractMessageText(parsed.payload);
265
- if (text !== null) result.firstAssistantMessage = text;
266
- }
267
- if (parsed.kind === "sessionInfo") {
268
- const info = parsed;
269
- if (info.name !== void 0) {
270
- const trimmed = info.name.trim();
271
- result.name = trimmed.length > 0 ? trimmed : null;
272
- }
273
- if (info.targetTurnId && info.label !== void 0) {
274
- const existing = result.labels.get(info.targetTurnId);
275
- if (!existing || existing.timestamp <= info.timestamp) {
276
- result.labels.set(info.targetTurnId, { label: info.label, timestamp: info.timestamp });
277
- }
278
- }
279
- }
280
- if (parsed.kind === "label") {
281
- const label = parsed;
282
- const existing = result.labels.get(label.targetTurnId);
283
- if (!existing || existing.timestamp <= label.timestamp) {
284
- result.labels.set(label.targetTurnId, { label: label.label ?? "", timestamp: label.timestamp });
285
- }
286
- }
287
- }
288
- return result;
289
- }
290
- function enrichMetaForListing(meta, currentPath) {
291
- const scan = scanCurrentJsonl(currentPath);
292
- if (scan.name) meta.name = scan.name;
293
- const labelValues = [...scan.labels.values()].map((entry) => entry.label.trim()).filter((label) => label.length > 0);
294
- if (labelValues.length > 0) meta.labels = labelValues;
295
- const preview = scan.firstUserMessage ?? scan.firstAssistantMessage;
296
- if (preview) {
297
- meta.firstMessagePreview = preview.length > PREVIEW_MAX_CHARS ? `${preview.slice(0, PREVIEW_MAX_CHARS - 1)}\u2026` : preview;
298
- }
299
- if (scan.messageCount > 0) meta.messageCount = scan.messageCount;
300
- const fallbackMtime = readMtimeIso(currentPath);
301
- const activity = scan.lastTimestamp ?? fallbackMtime ?? meta.endedAt ?? meta.createdAt ?? null;
302
- if (activity) meta.lastActivityAt = activity;
303
- }
304
- function readMtimeIso(path) {
305
- try {
306
- return statSync(path).mtime.toISOString();
307
- } catch {
308
- return null;
309
- }
310
- }
311
- function enrichForkMeta(meta, parentSessionId, parentTurnId) {
312
- Object.assign(meta, { parentSessionId, parentTurnId });
313
- const paths = sessionPaths(meta);
314
- atomicWrite(paths.meta, JSON.stringify(meta, null, 2));
315
- }
316
-
317
- // src/domains/session/manager.ts
318
- init_esm_shims();
319
-
320
- // node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist-node/index.js
321
- init_esm_shims();
322
-
323
- // node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist-node/stringify.js
324
- init_esm_shims();
325
- var byteToHex = [];
326
- for (let i = 0; i < 256; ++i) {
327
- byteToHex.push((i + 256).toString(16).slice(1));
328
- }
329
- function unsafeStringify(arr, offset = 0) {
330
- 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();
331
- }
332
-
333
- // node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist-node/rng.js
334
- init_esm_shims();
335
- var rnds8 = new Uint8Array(16);
336
- function rng() {
337
- return crypto.getRandomValues(rnds8);
338
- }
339
-
340
- // node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist-node/v7.js
341
- init_esm_shims();
342
- var _state = {};
343
- function v7(options, buf, offset) {
344
- let bytes;
345
- if (options) {
346
- bytes = v7Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.seq, buf, offset);
347
- } else {
348
- const now = Date.now();
349
- const rnds = rng();
350
- updateV7State(_state, now, rnds);
351
- bytes = v7Bytes(rnds, _state.msecs, _state.seq, buf, offset);
352
- }
353
- return buf ?? unsafeStringify(bytes);
354
- }
355
- function updateV7State(state, now, rnds) {
356
- state.msecs ??= -Infinity;
357
- state.seq ??= 0;
358
- if (now > state.msecs) {
359
- state.seq = rnds[6] << 23 | rnds[7] << 16 | rnds[8] << 8 | rnds[9];
360
- state.msecs = now;
361
- } else {
362
- state.seq = state.seq + 1 | 0;
363
- if (state.seq === 0) {
364
- state.msecs++;
365
- }
366
- }
367
- return state;
368
- }
369
- function v7Bytes(rnds, msecs, seq, buf, offset = 0) {
370
- if (rnds.length < 16) {
371
- throw new Error("Random bytes length must be >= 16");
372
- }
373
- if (!buf) {
374
- buf = new Uint8Array(16);
375
- offset = 0;
376
- } else {
377
- if (offset < 0 || offset + 16 > buf.length) {
378
- throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
379
- }
380
- }
381
- msecs ??= Date.now();
382
- seq ??= rnds[6] * 127 << 24 | rnds[7] << 16 | rnds[8] << 8 | rnds[9];
383
- buf[offset++] = msecs / 1099511627776 & 255;
384
- buf[offset++] = msecs / 4294967296 & 255;
385
- buf[offset++] = msecs / 16777216 & 255;
386
- buf[offset++] = msecs / 65536 & 255;
387
- buf[offset++] = msecs / 256 & 255;
388
- buf[offset++] = msecs & 255;
389
- buf[offset++] = 112 | seq >>> 28 & 15;
390
- buf[offset++] = seq >>> 20 & 255;
391
- buf[offset++] = 128 | seq >>> 14 & 63;
392
- buf[offset++] = seq >>> 6 & 255;
393
- buf[offset++] = seq << 2 & 255 | rnds[10] & 3;
394
- buf[offset++] = rnds[11];
395
- buf[offset++] = rnds[12];
396
- buf[offset++] = rnds[13];
397
- buf[offset++] = rnds[14];
398
- buf[offset++] = rnds[15];
399
- return buf;
400
- }
401
- var v7_default = v7;
402
-
403
- // src/domains/session/migrations/index.ts
404
- init_esm_shims();
405
- var OLDEST_READABLE_SESSION_FORMAT_VERSION = 3;
406
- function runMigrations(meta, sessionPath) {
407
- const from = meta.sessionFormatVersion ?? 1;
408
- if (from < OLDEST_READABLE_SESSION_FORMAT_VERSION) {
409
- throw new Error(
410
- `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.`
411
- );
412
- }
413
- if (from > CURRENT_SESSION_FORMAT_VERSION) {
414
- throw new Error(
415
- `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.`
416
- );
417
- }
418
- if (from < CURRENT_SESSION_FORMAT_VERSION) {
419
- return { migrated: true, from, to: CURRENT_SESSION_FORMAT_VERSION };
420
- }
421
- return { migrated: false, from, to: from };
422
- }
423
-
424
- // src/domains/session/manager.ts
425
- function newTurnId() {
426
- return v7_default();
427
- }
428
- function startSession(input) {
429
- const { meta, writer } = createSession({
430
- cwd: input.cwd,
431
- model: input.model ?? null,
432
- target: input.target ?? null,
433
- ...input.initialEntries !== void 0 ? { initialEntries: input.initialEntries } : {},
434
- ...input.initialTree !== void 0 ? { initialTree: input.initialTree } : {},
435
- ...input.parentSession !== void 0 ? { parentSession: input.parentSession } : {},
436
- ...input.parentTurnId !== void 0 ? { parentTurnId: input.parentTurnId } : {}
437
- });
438
- return { meta, writer };
439
- }
440
- function persistSessionMeta(state) {
441
- if (stateRootRemoved()) return;
442
- atomicWrite(sessionPaths(state.meta).meta, JSON.stringify(state.meta, null, 2));
443
- }
444
- function resumeSessionState(sessionId) {
445
- const persistedMeta = readSessionMeta(sessionId);
446
- const paths = sessionPaths(persistedMeta);
447
- const migration = runMigrations(persistedMeta, paths.meta);
448
- const { meta, writer, tree } = resumeSession(sessionId);
449
- const state = { meta, writer };
450
- if (migration.migrated) {
451
- state.meta.sessionFormatVersion = migration.to;
452
- persistSessionMeta(state);
453
- }
454
- return { state, nodes: tree };
455
- }
456
- function appendTurn(state, input) {
457
- const record = {
458
- id: input.id ?? newTurnId(),
459
- parentId: input.parentId,
460
- at: input.at ?? (/* @__PURE__ */ new Date()).toISOString(),
461
- kind: input.kind,
462
- payload: input.payload
463
- };
464
- const entry = {
465
- kind: "message",
466
- turnId: record.id,
467
- parentTurnId: record.parentId,
468
- timestamp: record.at,
469
- role: record.kind,
470
- payload: record.payload
471
- };
472
- state.writer.appendEntry(entry, {
473
- treeNode: {
474
- id: record.id,
475
- parentId: record.parentId,
476
- at: record.at,
477
- kind: record.kind
478
- }
479
- });
480
- return record;
481
- }
482
- function appendEntry(state, input) {
483
- const turnId = input.turnId ?? newTurnId();
484
- const timestamp = input.timestamp ?? (/* @__PURE__ */ new Date()).toISOString();
485
- const entry = { ...input, turnId, timestamp };
486
- if (!isSessionEntry(entry)) throw new Error(`session.appendEntry: invalid ${String(input.kind)} entry`);
487
- state.writer.appendEntry(entry);
488
- return entry;
489
- }
490
- function replaceEntries(state, entries) {
491
- for (const entry of entries) {
492
- if (!isSessionEntry(entry)) throw new Error("session.replaceEntries: invalid entry");
493
- }
494
- state.writer.replaceEntries(entries);
495
- }
496
-
497
- // src/domains/session/tree/fork.ts
498
- init_esm_shims();
499
- function linkedRecordFromEntry(entry) {
500
- return {
501
- id: entry.turnId,
502
- parentId: entry.parentTurnId,
503
- timestamp: entry.timestamp,
504
- treeKind: entry.kind === "message" ? entry.role : null,
505
- raw: entry
506
- };
507
- }
508
- function traceAncestry(records, leafTurnId) {
509
- const byId = /* @__PURE__ */ new Map();
510
- for (const record of records) byId.set(record.id, record);
511
- const path = [];
512
- let current = byId.get(leafTurnId);
513
- if (!current) throw new Error(`session.fork: parent turn not found: ${leafTurnId}`);
514
- const seen = /* @__PURE__ */ new Set();
515
- while (current) {
516
- if (seen.has(current.id)) throw new Error(`session.fork: cycle in parent chain at ${current.id}`);
517
- seen.add(current.id);
518
- path.unshift(current);
519
- if (current.parentId === null) break;
520
- const next = byId.get(current.parentId);
521
- if (!next) throw new Error(`session.fork: broken parent chain at ${current.id}`);
522
- current = next;
523
- }
524
- return path;
525
- }
526
- function treeFromLinearPath(path) {
527
- return path.filter((record) => record.treeKind !== null).map((record) => ({
528
- id: record.id,
529
- parentId: record.parentId,
530
- at: record.timestamp,
531
- kind: record.treeKind
532
- }));
533
- }
534
- function sessionEntryBelongsToPath(entry, pathIds, atOrBeforeForkPoint) {
535
- if (entry.kind === "compactionSummary" && !atOrBeforeForkPoint) return false;
536
- return entryBelongsToPath(entry, pathIds, atOrBeforeForkPoint);
537
- }
538
- function branchEntriesFromParent(parentMeta, leafTurnId) {
539
- const parentCurrentPath = sessionPaths(parentMeta).current;
540
- const records = readSessionFileEntries(parentCurrentPath).filter((entry) => !isSessionHeader(entry));
541
- const parsed = collectSessionEntries(records, parentCurrentPath);
542
- const linked = parsed.map(linkedRecordFromEntry);
543
- const path = traceAncestry(linked, leafTurnId);
544
- const pathIds = new Set(path.map((record) => record.id));
545
- const forkPointIndex = parsed.findIndex((entry) => linkedRecordFromEntry(entry).id === leafTurnId);
546
- const entries = parsed.filter(
547
- (entry, index) => sessionEntryBelongsToPath(entry, pathIds, forkPointIndex >= 0 && index <= forkPointIndex)
548
- );
549
- return {
550
- parentCurrentPath,
551
- entries,
552
- tree: treeFromLinearPath(path)
553
- };
554
- }
555
- function forkFromState(input) {
556
- const parentMeta = input.from.meta;
557
- input.from.writer.flushAppends();
558
- const branch = branchEntriesFromParent(parentMeta, input.parentTurnId);
559
- const cwd = input.cwd ?? parentMeta.cwd;
560
- const next = startSession({
561
- cwd,
562
- model: parentMeta.model,
563
- target: parentMeta.target,
564
- initialEntries: branch.entries,
565
- initialTree: branch.tree,
566
- parentSession: branch.parentCurrentPath,
567
- parentTurnId: input.parentTurnId
568
- });
569
- enrichForkMeta(next.meta, parentMeta.id, input.parentTurnId);
570
- void input.from.writer.close();
571
- return { next, parentMeta, nodes: branch.tree };
572
- }
573
-
574
- // src/domains/session/tree/manager.ts
575
- init_esm_shims();
576
- import { existsSync as existsSync2, renameSync, rmSync } from "node:fs";
577
- import { dirname, join as join2 } from "node:path";
578
- function readTreeBundle(sessionId) {
579
- const reader = openSession(sessionId);
580
- const meta = reader.meta();
581
- const paths = sessionPaths(meta);
582
- const nodes = [...reader.tree()];
583
- const entries = collectSessionEntries(reader.turns(), paths.current);
584
- const labels = resolveLabelMap(entries);
585
- return { sessionId, meta, nodes, entries, labels };
586
- }
587
- function resolveLabelMap(entries) {
588
- const out = /* @__PURE__ */ new Map();
589
- for (const entry of entries) {
590
- const info = labelFields(entry);
591
- if (!info) continue;
592
- const existing = out.get(info.targetTurnId);
593
- if (existing && existing.timestamp > info.timestamp) continue;
594
- if (info.label === void 0 || info.label === "") {
595
- out.set(info.targetTurnId, { label: "", timestamp: info.timestamp });
596
- continue;
597
- }
598
- out.set(info.targetTurnId, { label: info.label, timestamp: info.timestamp });
599
- }
600
- return out;
601
- }
602
- function labelFields(entry) {
603
- if (entry.kind === "label") return entry;
604
- if (entry.kind !== "sessionInfo") return null;
605
- const info = entry;
606
- if (!info.targetTurnId) return null;
607
- const out = {
608
- targetTurnId: info.targetTurnId,
609
- timestamp: info.timestamp
610
- };
611
- if (info.label !== void 0) out.label = info.label;
612
- return out;
613
- }
614
- function appendEntryToSessionFile(sessionId, entry) {
615
- const meta = readSessionMeta(sessionId);
616
- const paths = sessionPaths(meta);
617
- appendSessionFileEntry(paths.current, entry);
618
- }
619
- function removeSessionDirectory(sessionId) {
620
- const meta = readSessionMeta(sessionId);
621
- const paths = sessionPaths(meta);
622
- const dir = dirname(paths.meta);
623
- rmSync(dir, { recursive: true, force: true });
624
- }
625
- function tombstoneSession(sessionId) {
626
- const meta = readSessionMeta(sessionId);
627
- const paths = sessionPaths(meta);
628
- if (!existsSync2(paths.meta)) return;
629
- const tombstone = join2(dirname(paths.meta), "meta.deleted.json");
630
- renameSync(paths.meta, tombstone);
631
- }
632
-
633
- // src/domains/session/tree/navigator.ts
634
- init_esm_shims();
635
- function pickMeta(meta) {
636
- const out = {
637
- id: meta.id,
638
- cwd: meta.cwd,
639
- createdAt: meta.createdAt,
640
- endedAt: meta.endedAt,
641
- model: meta.model,
642
- target: meta.target
643
- };
644
- if (meta.parentSessionId !== void 0) out.parentSessionId = meta.parentSessionId;
645
- if (meta.parentTurnId !== void 0) out.parentTurnId = meta.parentTurnId;
646
- return out;
647
- }
648
- function computeLeafId(nodes) {
649
- if (nodes.length === 0) return null;
650
- const hasChild = /* @__PURE__ */ new Set();
651
- for (const node of nodes) {
652
- if (node.parentId) hasChild.add(node.parentId);
653
- }
654
- let leaf = null;
655
- for (const node of nodes) {
656
- if (hasChild.has(node.id)) continue;
657
- if (!leaf || node.at >= leaf.at) leaf = node;
658
- }
659
- return leaf?.id ?? null;
660
- }
661
- function buildTreeSnapshot(input) {
662
- const nodesById = {};
663
- for (const node of input.nodes) {
664
- const entry = {
665
- id: node.id,
666
- parentId: node.parentId,
667
- at: node.at,
668
- kind: node.kind,
669
- children: []
670
- };
671
- const resolved = input.labels.get(node.id);
672
- if (resolved && resolved.label !== "") entry.label = resolved.label;
673
- const preview = input.previews?.get(node.id);
674
- if (preview !== void 0 && preview.length > 0) entry.preview = preview;
675
- nodesById[node.id] = entry;
676
- }
677
- const rootIds = [];
678
- for (const node of input.nodes) {
679
- const parent = node.parentId ? nodesById[node.parentId] : void 0;
680
- if (!parent) {
681
- rootIds.push(node.id);
682
- } else {
683
- parent.children.push(node.id);
684
- }
685
- }
686
- const byTime = (a, b) => {
687
- const na = nodesById[a];
688
- const nb = nodesById[b];
689
- if (!na || !nb) return a < b ? -1 : a > b ? 1 : 0;
690
- if (na.at === nb.at) return na.id < nb.id ? -1 : na.id > nb.id ? 1 : 0;
691
- return na.at < nb.at ? -1 : 1;
692
- };
693
- rootIds.sort(byTime);
694
- for (const key of Object.keys(nodesById)) {
695
- const entry = nodesById[key];
696
- if (entry) entry.children.sort(byTime);
697
- }
698
- const leafId = input.leafId !== void 0 ? input.leafId : computeLeafId(input.nodes);
699
- return {
700
- sessionId: input.meta.id,
701
- meta: pickMeta(input.meta),
702
- leafId,
703
- nodesById,
704
- rootIds
705
- };
706
- }
707
-
708
- // src/domains/session/tree/preview.ts
709
- init_esm_shims();
710
- var TURN_PREVIEW_MAX_CHARS = 60;
711
- var ESC = String.fromCharCode(27);
712
- var ANSI_CSI_RE = new RegExp(`${ESC}\\[[0-9;?]*[ -/]*[@-~]`, "g");
713
- var ANSI_FALLBACK_RE = new RegExp(`${ESC}[@-_]`, "g");
714
- function stripAnsi(text) {
715
- return text.replace(ANSI_CSI_RE, "").replace(ANSI_FALLBACK_RE, "");
716
- }
717
- function collapseSingleLine(text) {
718
- return text.replace(/\s+/g, " ").trim();
719
- }
720
- function sanitize(text) {
721
- return collapseSingleLine(stripTokenizerSentinels(stripAnsi(text)));
722
- }
723
- function clamp(text, max) {
724
- if (text.length <= max) return text;
725
- if (max <= 1) return text.slice(0, max);
726
- return `${text.slice(0, max - 1)}\u2026`;
727
- }
728
- function extractPlainText(payload) {
729
- if (typeof payload === "string") {
730
- const sanitized = sanitize(payload);
731
- return sanitized.length > 0 ? sanitized : null;
732
- }
733
- if (!payload || typeof payload !== "object") return null;
734
- const obj = payload;
735
- if (typeof obj.text === "string") {
736
- const sanitized = sanitize(obj.text);
737
- if (sanitized.length > 0) return sanitized;
738
- }
739
- if (Array.isArray(obj.content)) {
740
- const parts = [];
741
- for (const block of obj.content) {
742
- if (!block || typeof block !== "object") continue;
743
- const b = block;
744
- if (b.type === "text" && typeof b.text === "string") parts.push(b.text);
745
- }
746
- if (parts.length > 0) {
747
- const sanitized = sanitize(parts.join(" "));
748
- if (sanitized.length > 0) return sanitized;
749
- }
750
- }
751
- return null;
752
- }
753
- function pickToolArg(toolName, args) {
754
- if (!args || typeof args !== "object") return "";
755
- const a = args;
756
- const preferred = {
757
- read: ["path"],
758
- write: ["path"],
759
- edit: ["path"],
760
- bash: ["command"],
761
- code_nav: ["query", "mode"],
762
- git: ["op"],
763
- verify: ["check"],
764
- grep: ["pattern", "query"],
765
- search: ["query", "pattern"],
766
- web_fetch: ["url"],
767
- web_search: ["query"]
768
- };
769
- const order = preferred[toolName] ?? [];
770
- for (const key of order) {
771
- const value = a[key];
772
- if (typeof value === "string" && value.length > 0) return sanitize(value);
773
- if (typeof value === "number") return String(value);
774
- }
775
- for (const [, value] of Object.entries(a)) {
776
- if (typeof value === "string" && value.length > 0) return sanitize(value);
777
- if (typeof value === "number" || typeof value === "boolean") return String(value);
778
- }
779
- return "";
780
- }
781
- function extractToolCall(payload) {
782
- if (!payload || typeof payload !== "object") return null;
783
- const p = payload;
784
- const toolName = typeof p.name === "string" ? p.name : typeof p.toolName === "string" ? p.toolName : null;
785
- if (!toolName) return null;
786
- const args = p.args !== void 0 ? p.args : p.arguments ?? p.input;
787
- return { toolName, args };
788
- }
789
- function extractToolResult(payload) {
790
- if (!payload || typeof payload !== "object") return null;
791
- const p = payload;
792
- if (!("toolCallId" in p) && !("result" in p) && !("isError" in p)) return null;
793
- const isError = p.isError === true;
794
- let text = "";
795
- const result = p.result;
796
- if (typeof result === "string") text = result;
797
- else if (result && typeof result === "object") {
798
- const r = result;
799
- if (Array.isArray(r.content)) {
800
- const parts = [];
801
- for (const block of r.content) {
802
- if (!block || typeof block !== "object") continue;
803
- const b = block;
804
- if (b.type === "text" && typeof b.text === "string") parts.push(b.text);
805
- }
806
- text = parts.join(" ");
807
- } else if (typeof r.text === "string") {
808
- text = r.text;
809
- }
810
- }
811
- if (text.length === 0 && typeof p.errorMessage === "string") text = p.errorMessage;
812
- return { isError, text: sanitize(text) };
813
- }
814
- function assistantStopMarker(payload) {
815
- if (!payload || typeof payload !== "object") return null;
816
- const sr = payload.stopReason;
817
- if (sr === "aborted") return "(aborted)";
818
- if (sr === "error") return "(error)";
819
- return null;
820
- }
821
- function buildTurnPreview(turn, max = TURN_PREVIEW_MAX_CHARS) {
822
- const budget = Math.max(1, max);
823
- switch (turn.kind) {
824
- case "user": {
825
- const text = extractPlainText(turn.payload);
826
- return text === null ? "(empty)" : clamp(text, budget);
827
- }
828
- case "assistant": {
829
- const stop = assistantStopMarker(turn.payload);
830
- const text = extractPlainText(turn.payload);
831
- if (text !== null) return clamp(text, budget);
832
- if (stop !== null) return stop;
833
- if (turn.payload && typeof turn.payload === "object" && Array.isArray(turn.payload.content)) {
834
- const content = turn.payload.content;
835
- const toolCalls = content.filter(
836
- (b) => b && typeof b === "object" && b.type === "toolCall"
837
- );
838
- if (toolCalls.length > 0) {
839
- const names = toolCalls.map((b) => b.name).filter((n) => typeof n === "string");
840
- if (names.length > 0) return clamp(`(tool calls) ${names.join(", ")}`, budget);
841
- }
842
- }
843
- return "(empty)";
844
- }
845
- case "tool_call": {
846
- const call = extractToolCall(turn.payload);
847
- if (!call) return "(empty)";
848
- const arg = pickToolArg(call.toolName, call.args);
849
- const inner = arg.length > 0 ? `"${clamp(arg, Math.max(8, budget - call.toolName.length - 4))}"` : "";
850
- const composed = `${call.toolName}(${inner})`;
851
- return clamp(composed, budget);
852
- }
853
- case "tool_result": {
854
- const result = extractToolResult(turn.payload);
855
- if (!result) return "(empty)";
856
- const status = result.isError ? "err" : "ok";
857
- const head = `[${status}]`;
858
- if (result.text.length === 0) return head;
859
- const remaining = Math.max(4, budget - head.length - 1);
860
- return `${head} ${clamp(result.text, remaining)}`;
861
- }
862
- case "system": {
863
- const text = extractPlainText(turn.payload);
864
- return text === null ? "(system)" : clamp(text, budget);
865
- }
866
- case "checkpoint":
867
- return "(checkpoint)";
868
- default:
869
- return `(${String(turn.kind)})`;
870
- }
871
- }
872
-
873
- // src/domains/session/extension.ts
874
- function createSessionBundle(context) {
875
- let state = null;
876
- let currentTurnId = null;
877
- function emitPark(sessionId, reason) {
878
- context.bus.emit(BusChannels.SessionParked, { sessionId, reason, at: Date.now() });
879
- }
880
- function emitResume(sessionId, via) {
881
- context.bus.emit(BusChannels.SessionResumed, { sessionId, via, at: Date.now() });
882
- }
883
- function emitTurnSwitched(sessionId, turnId) {
884
- context.bus.emit(BusChannels.SessionTurnSwitched, { sessionId, turnId, at: Date.now() });
885
- }
886
- function resolveLeafOnOpen(resumed) {
887
- const pinned = resumed.state.meta.pinnedLeafTurnId;
888
- if (pinned && resumed.nodes.some((node) => node.id === pinned)) return pinned;
889
- return computeLeafId(resumed.nodes);
890
- }
891
- async function closeCurrent(reason = "close") {
892
- if (!state) return;
893
- const s = state;
894
- emitPark(s.meta.id, reason);
895
- state = null;
896
- currentTurnId = null;
897
- await s.writer.close();
898
- }
899
- async function flushIfCurrent(sessionId) {
900
- if (state?.meta.id === sessionId) {
901
- await state.writer.persistTree();
902
- }
903
- }
904
- function structuralTreeNodes(entries, previews) {
905
- const nodes = [];
906
- for (const entry of entries) {
907
- if (entry.kind === "compactionSummary") {
908
- nodes.push({ id: entry.turnId, parentId: entry.parentTurnId, at: entry.timestamp, kind: "compaction" });
909
- const summarized = entry.messagesSummarized === void 0 ? "history" : `${entry.messagesSummarized} entries`;
910
- const after = entry.tokensAfter === void 0 ? "" : ` -> ~${entry.tokensAfter}`;
911
- previews.set(entry.turnId, `${summarized} summarized, ~${entry.tokensBefore}${after} tokens`);
912
- continue;
913
- }
914
- if (entry.kind === "branchSummary") {
915
- nodes.push({ id: entry.turnId, parentId: entry.parentTurnId, at: entry.timestamp, kind: "branch" });
916
- const text = entry.summary.split("\n", 1)[0] ?? "";
917
- previews.set(
918
- entry.turnId,
919
- text.length > 0 ? `returned from ${entry.fromTurnId}: ${text}` : `returned from ${entry.fromTurnId}`
920
- );
921
- }
922
- }
923
- return nodes;
924
- }
925
- function snapshotFor(sessionId) {
926
- const bundle = readTreeBundle(sessionId);
927
- const meta = state?.meta.id === sessionId ? state.meta : bundle.meta;
928
- const previews = /* @__PURE__ */ new Map();
929
- let structural = [];
930
- try {
931
- for (const entry of bundle.entries) {
932
- if (entry.kind !== "message") continue;
933
- const text = buildTurnPreview({ kind: entry.role, payload: entry.payload });
934
- if (text.length > 0) previews.set(entry.turnId, text);
935
- }
936
- structural = structuralTreeNodes(bundle.entries, previews);
937
- } catch {
938
- }
939
- const persistedLeaf = bundle.meta.pinnedLeafTurnId && bundle.nodes.some((node) => node.id === bundle.meta.pinnedLeafTurnId) ? bundle.meta.pinnedLeafTurnId : computeLeafId(bundle.nodes);
940
- return buildTreeSnapshot({
941
- meta,
942
- nodes: [...bundle.nodes, ...structural],
943
- labels: bundle.labels,
944
- previews,
945
- // The leaf is the next append point, so it is computed over turn nodes
946
- // only: a structural node marks a moment in the timeline, never a place
947
- // the session continues from.
948
- leafId: state?.meta.id === sessionId ? currentTurnId : persistedLeaf
949
- });
950
- }
951
- const contract = {
952
- current: () => state?.meta ?? null,
953
- create(input) {
954
- const cwd = input?.cwd ?? process.cwd();
955
- const startInput = { cwd };
956
- if (input?.model !== void 0) startInput.model = input.model;
957
- if (input?.target !== void 0) startInput.target = input.target;
958
- if (state) {
959
- const prior = state;
960
- emitPark(prior.meta.id, "create_new");
961
- state = null;
962
- void prior.writer.close();
963
- }
964
- const next = startSession(startInput);
965
- next.meta.workspace = probeWorkspace(cwd);
966
- persistSessionMeta(next);
967
- state = next;
968
- currentTurnId = null;
969
- return next.meta;
970
- },
971
- append(turn) {
972
- if (!state) throw new Error("session.append: no current session");
973
- if (turn.parentId !== currentTurnId) {
974
- throw new Error(
975
- `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`
976
- );
977
- }
978
- const record = appendTurn(state, turn);
979
- currentTurnId = record.id;
980
- if (state.meta.pinnedLeafTurnId !== void 0 && state.meta.pinnedLeafTurnId !== null) {
981
- state.meta.pinnedLeafTurnId = null;
982
- persistSessionMeta(state);
983
- }
984
- return record;
985
- },
986
- appendEntry(entry) {
987
- if (!state) throw new Error("session.appendEntry: no current session");
988
- return appendEntry(state, entry);
989
- },
990
- replaceEntries(entries) {
991
- if (!state) throw new Error("session.replaceEntries: no current session");
992
- replaceEntries(state, entries);
993
- },
994
- recordSkillActivation(activation) {
995
- if (!state) throw new Error("session.recordSkillActivation: no current session");
996
- appendEntry(state, {
997
- kind: "skillActivation",
998
- parentTurnId: activation.turnId ?? null,
999
- activation
1000
- });
1001
- const existing = state.meta.skillActivations ?? [];
1002
- state.meta.skillActivations = [...existing, activation];
1003
- persistSessionMeta(state);
1004
- return activation;
1005
- },
1006
- async checkpoint(reason) {
1007
- if (!state) throw new Error("session.checkpoint: no current session");
1008
- await performCheckpoint(state, reason);
1009
- },
1010
- flushAppends() {
1011
- if (!state) throw new Error("session.flushAppends: no current session");
1012
- state.writer.flushAppends();
1013
- },
1014
- resume(sessionId) {
1015
- if (state && state.meta.id === sessionId) return state.meta;
1016
- const resumed = resumeSessionState(sessionId);
1017
- if (state) {
1018
- const prior = state;
1019
- emitPark(prior.meta.id, "resume_other");
1020
- void prior.writer.close();
1021
- }
1022
- state = resumed.state;
1023
- currentTurnId = resolveLeafOnOpen(resumed);
1024
- emitResume(resumed.state.meta.id, "resume");
1025
- return resumed.state.meta;
1026
- },
1027
- fork(parentTurnId, input) {
1028
- if (!state) throw new Error("session.fork: no current session to fork from");
1029
- const prior = state;
1030
- const { next, nodes } = forkFromState({
1031
- from: prior,
1032
- parentTurnId,
1033
- ...input?.cwd !== void 0 ? { cwd: input.cwd } : {}
1034
- });
1035
- emitPark(prior.meta.id, "fork");
1036
- state = next;
1037
- currentTurnId = computeLeafId(nodes);
1038
- return next.meta;
1039
- },
1040
- tree(sessionId) {
1041
- const id = sessionId ?? state?.meta.id;
1042
- if (!id) throw new Error("session.tree: no sessionId provided and no current session");
1043
- if (state?.meta.id === id) void flushIfCurrent(id);
1044
- return snapshotFor(id);
1045
- },
1046
- switchBranch(sessionId) {
1047
- if (state?.meta.id === sessionId) return state.meta;
1048
- const resumed = resumeSessionState(sessionId);
1049
- if (state) {
1050
- const prior = state;
1051
- emitPark(prior.meta.id, "switch_branch");
1052
- void prior.writer.close();
1053
- }
1054
- state = resumed.state;
1055
- currentTurnId = resolveLeafOnOpen(resumed);
1056
- emitResume(resumed.state.meta.id, "switch_branch");
1057
- return resumed.state.meta;
1058
- },
1059
- switchTurn(turnId) {
1060
- if (!state) throw new Error("session.switchTurn: no current session");
1061
- void flushIfCurrent(state.meta.id);
1062
- const nodes = readTreeBundle(state.meta.id).nodes;
1063
- if (!nodes.some((node) => node.id === turnId)) {
1064
- throw new Error(`session.switchTurn: turn not found: ${turnId}`);
1065
- }
1066
- currentTurnId = turnId;
1067
- state.meta.pinnedLeafTurnId = turnId;
1068
- persistSessionMeta(state);
1069
- emitTurnSwitched(state.meta.id, turnId);
1070
- return state.meta;
1071
- },
1072
- editLabel(turnId, label, sessionId) {
1073
- const targetId = sessionId ?? state?.meta.id;
1074
- if (!targetId) throw new Error("session.editLabel: no sessionId provided and no current session");
1075
- if (state && state.meta.id === targetId) {
1076
- appendEntry(state, {
1077
- kind: "label",
1078
- parentTurnId: null,
1079
- targetTurnId: turnId,
1080
- label
1081
- });
1082
- return;
1083
- }
1084
- const entry = {
1085
- kind: "label",
1086
- turnId: newTurnId(),
1087
- parentTurnId: null,
1088
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1089
- targetTurnId: turnId,
1090
- label
1091
- };
1092
- appendEntryToSessionFile(targetId, entry);
1093
- },
1094
- setName(name, sessionId) {
1095
- const targetId = sessionId ?? state?.meta.id;
1096
- if (!targetId) throw new Error("session.setName: no sessionId provided and no current session");
1097
- if (state && state.meta.id === targetId) {
1098
- appendEntry(state, {
1099
- kind: "sessionInfo",
1100
- parentTurnId: null,
1101
- name
1102
- });
1103
- return;
1104
- }
1105
- const entry = {
1106
- kind: "sessionInfo",
1107
- turnId: newTurnId(),
1108
- parentTurnId: null,
1109
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1110
- name
1111
- };
1112
- appendEntryToSessionFile(targetId, entry);
1113
- },
1114
- deleteSession(id, opts) {
1115
- if (state?.meta.id === id) {
1116
- throw new Error("session.deleteSession: refusing to delete the currently open session; close() first");
1117
- }
1118
- const options = opts ?? {};
1119
- if (options.keepFiles) {
1120
- tombstoneSession(id);
1121
- } else {
1122
- removeSessionDirectory(id);
1123
- }
1124
- },
1125
- history() {
1126
- const cwd = state?.meta.cwd ?? process.cwd();
1127
- return listSessionsForCwd(cwd);
1128
- },
1129
- async close() {
1130
- await closeCurrent();
1131
- }
1132
- };
1133
- const extension = {
1134
- async start() {
1135
- },
1136
- async stop() {
1137
- if (!state) return;
1138
- try {
1139
- await performCheckpoint(state, "shutdown");
1140
- } catch (err) {
1141
- process.stderr.write(
1142
- `[clio-coder:session] shutdown checkpoint failed: ${err instanceof Error ? err.message : String(err)}
1143
- `
1144
- );
1145
- }
1146
- await closeCurrent("shutdown");
1147
- }
1148
- };
1149
- return { extension, contract };
1150
- }
1151
-
1152
- // src/domains/session/manifest.ts
1153
- init_esm_shims();
1154
- var SessionManifest = {
1155
- name: "session",
1156
- dependsOn: ["config"]
1157
- };
1158
-
1159
- // src/domains/session/protected-artifacts.ts
1160
- init_esm_shims();
1161
- function protectedArtifactEntryFromArtifact(artifact, context) {
1162
- const entry = {
1163
- kind: "protectedArtifact",
1164
- parentTurnId: context.parentTurnId,
1165
- action: "protect",
1166
- artifact: artifactSnapshot(artifact)
1167
- };
1168
- if (context.toolName !== void 0) entry.toolName = context.toolName;
1169
- if (context.toolCallId !== void 0) entry.toolCallId = context.toolCallId;
1170
- if (context.runId !== void 0) entry.runId = context.runId;
1171
- if (context.correlationId !== void 0) entry.correlationId = context.correlationId;
1172
- return entry;
1173
- }
1174
- function protectedArtifactFromSessionEntry(entry) {
1175
- return protectedArtifactFromSnapshot(entry.artifact);
1176
- }
1177
- function protectedArtifactStateFromSessionEntries(entries) {
1178
- let state = { artifacts: [] };
1179
- const protectedEntries = entries.map((entry, index) => ({ entry, index })).filter((item) => item.entry.kind === "protectedArtifact").sort(compareProtectedEntryPositions);
1180
- for (const item of protectedEntries) {
1181
- if (item.entry.action !== "protect") continue;
1182
- state = protectArtifact(state, protectedArtifactFromSessionEntry(item.entry));
1183
- }
1184
- return state;
1185
- }
1186
- function artifactSnapshot(artifact) {
1187
- const snapshot = {
1188
- path: artifact.path,
1189
- protectedAt: artifact.protectedAt,
1190
- reason: artifact.reason,
1191
- source: artifact.source
1192
- };
1193
- if (artifact.validationCommand !== void 0) snapshot.validationCommand = artifact.validationCommand;
1194
- if (artifact.validationExitCode !== void 0) snapshot.validationExitCode = artifact.validationExitCode;
1195
- return snapshot;
1196
- }
1197
- function protectedArtifactFromSnapshot(snapshot) {
1198
- const artifact = {
1199
- path: snapshot.path,
1200
- protectedAt: snapshot.protectedAt,
1201
- reason: snapshot.reason,
1202
- source: snapshot.source
1203
- };
1204
- if (snapshot.validationCommand !== void 0) artifact.validationCommand = snapshot.validationCommand;
1205
- if (snapshot.validationExitCode !== void 0) artifact.validationExitCode = snapshot.validationExitCode;
1206
- return artifact;
1207
- }
1208
- function compareProtectedEntryPositions(left, right) {
1209
- return compareStrings(left.entry.timestamp, right.entry.timestamp) || compareStrings(left.entry.turnId, right.entry.turnId) || left.index - right.index;
1210
- }
1211
- function compareStrings(left, right) {
1212
- if (left < right) return -1;
1213
- if (left > right) return 1;
1214
- return 0;
1215
- }
1216
-
1217
- // src/domains/session/usage.ts
1218
- init_esm_shims();
1219
- function numberAt(source, key) {
1220
- const value = source[key];
1221
- return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : 0;
1222
- }
1223
- function reasoningTokensOf(usage) {
1224
- const direct = numberAt(usage, "reasoningTokens");
1225
- if (direct > 0) return direct;
1226
- const details = usage.outputTokensDetails ?? usage.completionTokensDetails;
1227
- if (details && typeof details === "object") return numberAt(details, "reasoningTokens");
1228
- return 0;
1229
- }
1230
- function stringAt(source, ...keys) {
1231
- for (const key of keys) {
1232
- const value = source[key];
1233
- if (typeof value === "string" && value.trim().length > 0) return value;
1234
- }
1235
- return null;
1236
- }
1237
- function ledgerUsageCalls(entries, defaults = {}) {
1238
- const calls = [];
1239
- let currentTarget = defaults.target ?? null;
1240
- let currentModel = defaults.model ?? null;
1241
- for (const entry of entries) {
1242
- if (entry?.kind === "compactionSummary") {
1243
- const usage2 = entry.usage;
1244
- if (!usage2 || usage2.totalTokens <= 0) continue;
1245
- calls.push({
1246
- providerId: usage2.targetId ?? currentTarget ?? "unknown",
1247
- attributedModelId: usage2.modelId ?? currentModel ?? "unknown",
1248
- requestedModelId: usage2.modelId ?? currentModel ?? "unknown",
1249
- responseModelIdObservation: { state: "not-observed" },
1250
- input: usage2.input,
1251
- output: usage2.output,
1252
- cacheRead: usage2.cacheRead,
1253
- cacheWrite: usage2.cacheWrite,
1254
- reasoningTokens: usage2.reasoning,
1255
- totalTokens: usage2.totalTokens,
1256
- costUsd: usage2.cost.total,
1257
- // A split turn runs two summarization streams under one entry; the
1258
- // provider served that many calls even though one row records them.
1259
- apiCalls: Math.max(1, Math.round(usage2.apiCalls))
1260
- });
1261
- continue;
1262
- }
1263
- if (entry?.kind === "modelChange") {
1264
- const change = entry;
1265
- if (typeof change.target === "string" && change.target.length > 0) currentTarget = change.target;
1266
- else if (typeof change.provider === "string" && change.provider.length > 0) currentTarget = change.provider;
1267
- if (typeof change.modelId === "string" && change.modelId.length > 0) currentModel = change.modelId;
1268
- continue;
1269
- }
1270
- if (entry?.kind !== "message" || entry.role !== "assistant") continue;
1271
- const payload = entry.payload;
1272
- if (!payload || typeof payload !== "object" || Array.isArray(payload)) continue;
1273
- const record = payload;
1274
- const stopReason = record.stopReason;
1275
- if (stopReason === "aborted" || stopReason === "error") continue;
1276
- const rawUsage = record.usage;
1277
- if (!rawUsage || typeof rawUsage !== "object" || Array.isArray(rawUsage)) continue;
1278
- const usage = rawUsage;
1279
- const input = numberAt(usage, "input");
1280
- const output = numberAt(usage, "output");
1281
- const cacheRead = numberAt(usage, "cacheRead");
1282
- const cacheWrite = numberAt(usage, "cacheWrite");
1283
- const totalTokens = numberAt(usage, "totalTokens") || input + output + cacheRead + cacheWrite;
1284
- if (totalTokens === 0) continue;
1285
- const cost = usage.cost;
1286
- const costUsd = cost && typeof cost === "object" ? numberAt(cost, "total") : 0;
1287
- const requestedModelId = currentModel ?? stringAt(record, "model") ?? "unknown";
1288
- const differingResponseModelId = stringAt(record, "responseModel");
1289
- const responseModelIdObservation = responseModelIdObservationFromRecord(record, "legacy-difference-only");
1290
- calls.push({
1291
- providerId: currentTarget ?? stringAt(record, "provider", "api") ?? "unknown",
1292
- attributedModelId: attributedModelId(responseModelIdObservation, requestedModelId, differingResponseModelId),
1293
- requestedModelId,
1294
- responseModelIdObservation,
1295
- input,
1296
- output,
1297
- cacheRead,
1298
- cacheWrite,
1299
- reasoningTokens: reasoningTokensOf(usage),
1300
- totalTokens,
1301
- costUsd
1302
- });
1303
- }
1304
- return calls;
1305
- }
1306
-
1307
- // src/domains/session/index.ts
1308
- var SessionDomainModule = {
1309
- manifest: SessionManifest,
1310
- createExtension: createSessionBundle
1311
- };
1312
-
1313
- // src/domains/session/archive-readers.ts
1314
- var ROUTING_NOTICE_CUSTOM_TYPE = "clio-coder.routing-notice";
1315
- var LEGACY_ROUTING_NOTICE_CUSTOM_TYPE = "clio.routing-notice";
1316
- function normalizeReleasedCustomType(entry) {
1317
- if (entry.kind !== "custom" || entry.customType !== LEGACY_ROUTING_NOTICE_CUSTOM_TYPE) return entry;
1318
- return { ...entry, customType: ROUTING_NOTICE_CUSTOM_TYPE };
1319
- }
1320
- async function readAuditRows(stateDir) {
1321
- const root = join3(stateDir, "audit");
1322
- let files;
1323
- try {
1324
- files = await readdir(root);
1325
- } catch (error) {
1326
- const err = error;
1327
- if (err.code === "ENOENT") return { rows: [], errors: [] };
1328
- return { rows: [], errors: [`audit root read error: ${err.message ?? String(err)}`] };
1329
- }
1330
- const rows = [];
1331
- const errors = [];
1332
- for (const file of files.filter((name) => name.endsWith(".jsonl")).sort(compareStrings2)) {
1333
- const path = join3(root, file);
1334
- let raw;
1335
- try {
1336
- raw = await readFile(path, "utf8");
1337
- } catch (error) {
1338
- const err = error;
1339
- errors.push(`${path}: ${err.message ?? String(err)}`);
1340
- continue;
1341
- }
1342
- const lines = raw.split("\n");
1343
- for (let index = 0; index < lines.length; index += 1) {
1344
- const line = lines[index];
1345
- if (line === void 0 || line.length === 0) continue;
1346
- let parsed;
1347
- try {
1348
- parsed = JSON.parse(line);
1349
- } catch (error) {
1350
- const message = error instanceof Error ? error.message : String(error);
1351
- errors.push(`${path}:${index + 1}: invalid JSON: ${message}`);
1352
- continue;
1353
- }
1354
- if (!isRecord(parsed)) {
1355
- errors.push(`${path}:${index + 1}: expected object`);
1356
- continue;
1357
- }
1358
- const auditKind = readOptionalString(parsed.kind) ?? "tool_call";
1359
- rows.push({
1360
- file,
1361
- line: index + 1,
1362
- row: parsed,
1363
- ts: readOptionalString(parsed.ts),
1364
- auditKind,
1365
- correlationId: readOptionalString(parsed.correlationId) ?? ""
1366
- });
1367
- }
1368
- }
1369
- return { rows, errors };
1370
- }
1371
- async function readSessionEntriesForId(stateDir, sessionId) {
1372
- const root = join3(stateDir, "sessions");
1373
- let cwdHashes;
1374
- try {
1375
- cwdHashes = await readdir(root);
1376
- } catch (error) {
1377
- const err = error;
1378
- if (err.code === "ENOENT") return { entries: [], missing: true, errors: [] };
1379
- return { entries: [], missing: false, errors: [`session root read error: ${err.message ?? String(err)}`] };
1380
- }
1381
- for (const cwdHash2 of cwdHashes.sort(compareStrings2)) {
1382
- const currentPath = join3(root, cwdHash2, sessionId, "current.jsonl");
1383
- let raw;
1384
- let source = currentPath;
1385
- try {
1386
- raw = await readFile(currentPath, "utf8");
1387
- } catch (error) {
1388
- const err = error;
1389
- if (err.code === "ENOENT") {
1390
- const tmpPath = `${currentPath}.tmp`;
1391
- try {
1392
- raw = await readFile(tmpPath, "utf8");
1393
- source = tmpPath;
1394
- } catch {
1395
- continue;
1396
- }
1397
- } else if (err.code === "ENOTDIR") {
1398
- continue;
1399
- } else {
1400
- return { entries: [], missing: false, errors: [`${currentPath}: ${err.message ?? String(err)}`] };
1401
- }
1402
- }
1403
- const result = parseSessionEntries(raw, source);
1404
- try {
1405
- const meta = JSON.parse(await readFile(join3(root, cwdHash2, sessionId, "meta.json"), "utf8"));
1406
- if (isRecord(meta) && typeof meta.pinnedLeafTurnId === "string") result.leafTurnId = meta.pinnedLeafTurnId;
1407
- } catch {
1408
- }
1409
- return result;
1410
- }
1411
- return { entries: [], missing: true, errors: [] };
1412
- }
1413
- function parseSessionEntries(raw, source) {
1414
- const entries = [];
1415
- const errors = [];
1416
- const lines = raw.split("\n");
1417
- for (let index = 0; index < lines.length; index += 1) {
1418
- const line = lines[index];
1419
- if (line === void 0 || line.trim().length === 0) continue;
1420
- let parsed;
1421
- try {
1422
- parsed = JSON.parse(line);
1423
- } catch (error) {
1424
- const message = error instanceof Error ? error.message : String(error);
1425
- errors.push(`${source}:${index + 1}: invalid JSON: ${message}`);
1426
- continue;
1427
- }
1428
- if (isSessionHeader(parsed)) continue;
1429
- if (isSessionEntry(parsed)) {
1430
- entries.push(normalizeReleasedCustomType(parsed));
1431
- continue;
1432
- }
1433
- errors.push(
1434
- `session ledger contains an unreadable entry (missing kind discriminant): ${source}. Remove or compact the session to reset.`
1435
- );
1436
- }
1437
- return { entries, missing: false, errors };
1438
- }
1439
- async function listSessionLedgerRefs(stateDir, onlyCwdHash) {
1440
- const root = join3(stateDir, "sessions");
1441
- let cwdHashes;
1442
- try {
1443
- cwdHashes = await readdir(root);
1444
- } catch {
1445
- return [];
1446
- }
1447
- const refs = [];
1448
- for (const cwdHash2 of cwdHashes.sort(compareStrings2)) {
1449
- if (onlyCwdHash !== void 0 && cwdHash2 !== onlyCwdHash) continue;
1450
- let sessionIds;
1451
- try {
1452
- sessionIds = await readdir(join3(root, cwdHash2));
1453
- } catch {
1454
- continue;
1455
- }
1456
- for (const sessionId of sessionIds.sort(compareStrings2)) {
1457
- refs.push({ cwdHash: cwdHash2, sessionId, path: join3(root, cwdHash2, sessionId, "current.jsonl") });
1458
- }
1459
- }
1460
- return refs;
1461
- }
1462
- function readOptionalString(value) {
1463
- return typeof value === "string" && value.length > 0 ? value : null;
1464
- }
1465
- function isRecord(value) {
1466
- return typeof value === "object" && value !== null && !Array.isArray(value);
1467
- }
1468
- function compareStrings2(a, b) {
1469
- return a.localeCompare(b);
1470
- }
1471
-
1472
- export {
1473
- emptyResponseModelIdObservationCounts,
1474
- addResponseModelIdObservationCount,
1475
- addResponseModelIdObservationCounts,
1476
- responseModelIdObservationCountsLabel,
1477
- responseModelIdObservationFromRecord,
1478
- attributedModelId,
1479
- collectSessionEntries,
1480
- readAuditRows,
1481
- readSessionEntriesForId,
1482
- parseSessionEntries,
1483
- listSessionLedgerRefs,
1484
- protectedArtifactEntryFromArtifact,
1485
- protectedArtifactFromSessionEntry,
1486
- protectedArtifactStateFromSessionEntries,
1487
- ledgerUsageCalls,
1488
- SessionDomainModule
1489
- };
1490
- //# sourceMappingURL=chunk-DXLUVUD4.js.map