@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,1196 +0,0 @@
1
- import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- createRedactionTally,
4
- redactSecretsText
5
- } from "./chunk-O3VV6IVK.js";
6
- import {
7
- normalizeClioCoderEventType
8
- } from "./chunk-KMF54VH3.js";
9
- import {
10
- processAlive,
11
- processBirthToken
12
- } from "./chunk-TK2BMCBZ.js";
13
- import {
14
- init_esm_shims
15
- } from "./chunk-ECBHH7LU.js";
16
-
17
- // src/domains/observability/trace-store.ts
18
- init_esm_shims();
19
- import { createHash } from "node:crypto";
20
- import { mkdirSync, statSync } from "node:fs";
21
- import { createRequire } from "node:module";
22
- import { hostname } from "node:os";
23
- import { dirname, join } from "node:path";
24
- var TRACE_SCHEMA_VERSION = 1;
25
- var TRACE_DATABASE_FILE = "trace.sqlite";
26
- var TRACE_EVENT_POLL_LIMIT = 500;
27
- var TRACE_PAYLOAD_LIMIT_BYTES = 16 * 1024;
28
- var TRACE_WRITE_QUEUE_LIMIT = 2048;
29
- var TRACE_RETENTION_DAYS_ENV = "CLIO_CODER_TRACE_RETENTION_DAYS";
30
- var TRACE_MAX_BYTES_ENV = "CLIO_CODER_TRACE_MAX_BYTES";
31
- var DEFAULT_TRACE_RETENTION_POLICY = Object.freeze({
32
- maxAgeDays: 30,
33
- maxBytes: 128 * 1024 * 1024
34
- });
35
- var MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1e3;
36
- var VACUUM_RECLAIMABLE_FRACTION = 0.2;
37
- var sqliteConstructor = null;
38
- function warningTracingRequested() {
39
- const flagged = (argument) => argument === "--trace-warnings" || argument.startsWith("--trace-warnings=");
40
- if (process.execArgv.some(flagged)) return true;
41
- const nodeOptions = process.env.NODE_OPTIONS;
42
- if (nodeOptions === void 0) return false;
43
- return nodeOptions.split(/\s+/).some(flagged);
44
- }
45
- function isSqliteExperimentalWarning(args) {
46
- const [warning, second] = args;
47
- const type = typeof second === "string" ? second : typeof second === "object" && second !== null && "type" in second ? second.type : void 0;
48
- if (type !== "ExperimentalWarning") return false;
49
- const text = typeof warning === "string" ? warning : warning instanceof Error ? warning.message : "";
50
- return text.includes("SQLite is an experimental feature");
51
- }
52
- function requireSqlite() {
53
- return createRequire(import.meta.url)("node:sqlite").DatabaseSync;
54
- }
55
- function loadWithSqliteWarningSuppressed(load) {
56
- if (warningTracingRequested()) return load();
57
- const emitWarning = process.emitWarning;
58
- const forward = emitWarning.bind(process);
59
- process.emitWarning = ((...args) => {
60
- if (isSqliteExperimentalWarning(args)) return;
61
- forward(...args);
62
- });
63
- try {
64
- return load();
65
- } finally {
66
- process.emitWarning = emitWarning;
67
- }
68
- }
69
- function databaseSyncConstructor() {
70
- sqliteConstructor ??= loadWithSqliteWarningSuppressed(requireSqlite);
71
- return sqliteConstructor;
72
- }
73
- function traceDatabasePath(stateDir) {
74
- return join(stateDir, TRACE_DATABASE_FILE);
75
- }
76
- function resolveTraceRetentionPolicy(overrides = {}, environment = process.env) {
77
- const maxAgeDays = overrides.maxAgeDays ?? parsePositiveRetentionNumber(environment[TRACE_RETENTION_DAYS_ENV], TRACE_RETENTION_DAYS_ENV, 1);
78
- const maxBytes = overrides.maxBytes ?? parsePositiveRetentionNumber(environment[TRACE_MAX_BYTES_ENV], TRACE_MAX_BYTES_ENV, 1024 * 1024);
79
- return {
80
- maxAgeDays: requirePositiveRetentionNumber(maxAgeDays, TRACE_RETENTION_DAYS_ENV, 1),
81
- maxBytes: requirePositiveRetentionNumber(maxBytes, TRACE_MAX_BYTES_ENV, 1024 * 1024)
82
- };
83
- }
84
- function parsePositiveRetentionNumber(raw, name, fallback) {
85
- if (raw === void 0 || raw.trim().length === 0) {
86
- return name === TRACE_RETENTION_DAYS_ENV ? DEFAULT_TRACE_RETENTION_POLICY.maxAgeDays : DEFAULT_TRACE_RETENTION_POLICY.maxBytes;
87
- }
88
- const value = Number(raw);
89
- return requirePositiveRetentionNumber(value, name, fallback);
90
- }
91
- function requirePositiveRetentionNumber(value, name, minimum) {
92
- if (!Number.isSafeInteger(value) || value < minimum) {
93
- throw new Error(`${name} must be an integer of at least ${minimum}`);
94
- }
95
- return value;
96
- }
97
- var TraceSchemaVersionError = class extends Error {
98
- constructor(found) {
99
- super(
100
- found === null ? "trace database has no schema version" : `unsupported trace schema version ${found}; this Clio supports ${TRACE_SCHEMA_VERSION}`
101
- );
102
- this.found = found;
103
- this.name = "TraceSchemaVersionError";
104
- }
105
- found;
106
- };
107
- var SESSION_TRACE_ASSIGNMENT_ID = "session";
108
- function applyConnectionPragmas(db) {
109
- db.exec("PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL; PRAGMA busy_timeout=5000; PRAGMA foreign_keys=ON;");
110
- }
111
- function readVersion(db) {
112
- const hasMeta = db.prepare("SELECT 1 AS found FROM sqlite_master WHERE type='table' AND name='meta'").get();
113
- if (!hasMeta) return null;
114
- const row = db.prepare("SELECT value FROM meta WHERE key='schema_version'").get();
115
- if (!row) return null;
116
- const parsed = Number.parseInt(row.value, 10);
117
- return Number.isSafeInteger(parsed) ? parsed : null;
118
- }
119
- function assertSupportedVersion(db) {
120
- const version = readVersion(db);
121
- if (version !== TRACE_SCHEMA_VERSION) throw new TraceSchemaVersionError(version);
122
- }
123
- var SCHEMA_SQL = `
124
- CREATE TABLE meta (key TEXT PRIMARY KEY, value TEXT NOT NULL);
125
- INSERT INTO meta(key, value) VALUES ('schema_version', '${TRACE_SCHEMA_VERSION}');
126
-
127
- CREATE TABLE runs (
128
- run_id TEXT PRIMARY KEY,
129
- assignment_id TEXT NOT NULL,
130
- request TEXT,
131
- status TEXT NOT NULL CHECK(status IN ('queued','running','success','fail')),
132
- agent TEXT NOT NULL,
133
- target TEXT NOT NULL,
134
- model TEXT NOT NULL,
135
- runtime TEXT NOT NULL,
136
- node TEXT,
137
- started_at TEXT NOT NULL,
138
- ended_at TEXT,
139
- total_tokens INTEGER,
140
- total_cost_usd REAL,
141
- source TEXT NOT NULL DEFAULT 'dispatch' CHECK(source IN ('dispatch','session'))
142
- );
143
-
144
- CREATE TABLE phases (
145
- phase_id TEXT PRIMARY KEY,
146
- run_id TEXT NOT NULL REFERENCES runs(run_id),
147
- seq INTEGER NOT NULL,
148
- name TEXT NOT NULL,
149
- kind TEXT NOT NULL,
150
- owner TEXT NOT NULL,
151
- description TEXT,
152
- status TEXT NOT NULL DEFAULT 'queued' CHECK(status IN ('queued','running','success','fail')),
153
- attempt INTEGER NOT NULL DEFAULT 0,
154
- retries INTEGER NOT NULL DEFAULT 0,
155
- error TEXT,
156
- started_at TEXT,
157
- ended_at TEXT,
158
- input_tokens INTEGER, output_tokens INTEGER, cache_read_tokens INTEGER, cache_write_tokens INTEGER,
159
- reasoning_tokens INTEGER, total_tokens INTEGER,
160
- input_cost_usd REAL, output_cost_usd REAL, cache_read_cost_usd REAL, cache_write_cost_usd REAL,
161
- total_cost_usd REAL,
162
- context_tokens INTEGER, context_window INTEGER
163
- );
164
- CREATE INDEX phases_run_seq ON phases(run_id, seq);
165
-
166
- CREATE TABLE events (
167
- event_id TEXT PRIMARY KEY,
168
- run_id TEXT NOT NULL REFERENCES runs(run_id),
169
- phase_id TEXT NOT NULL REFERENCES phases(phase_id),
170
- parent_id TEXT,
171
- type TEXT NOT NULL,
172
- name TEXT NOT NULL,
173
- payload_json TEXT,
174
- tokens INTEGER,
175
- started_at TEXT NOT NULL,
176
- ended_at TEXT
177
- );
178
- CREATE INDEX events_run_rowid ON events(run_id);
179
- CREATE INDEX events_phase_rowid ON events(phase_id);
180
-
181
- CREATE TABLE envelopes (
182
- envelope_id TEXT PRIMARY KEY,
183
- run_id TEXT NOT NULL REFERENCES runs(run_id),
184
- phase_id TEXT NOT NULL REFERENCES phases(phase_id),
185
- agent TEXT NOT NULL,
186
- output_type TEXT NOT NULL,
187
- payload_json TEXT NOT NULL,
188
- valid INTEGER NOT NULL CHECK(valid IN (0,1)),
189
- attempt INTEGER NOT NULL,
190
- created_at TEXT NOT NULL
191
- );
192
-
193
- CREATE TABLE gate_results (
194
- id INTEGER PRIMARY KEY AUTOINCREMENT,
195
- run_id TEXT NOT NULL REFERENCES runs(run_id),
196
- phase_id TEXT NOT NULL REFERENCES phases(phase_id),
197
- attempt INTEGER NOT NULL,
198
- gate TEXT NOT NULL,
199
- passed INTEGER NOT NULL CHECK(passed IN (0,1)),
200
- violations_json TEXT NOT NULL,
201
- checks_json TEXT,
202
- created_at TEXT NOT NULL
203
- );
204
- CREATE INDEX gate_results_phase_attempt ON gate_results(phase_id, attempt);
205
-
206
- CREATE TABLE agent_sessions (
207
- run_id TEXT NOT NULL REFERENCES runs(run_id),
208
- agent TEXT NOT NULL,
209
- runtime TEXT NOT NULL,
210
- model TEXT NOT NULL,
211
- session_id TEXT,
212
- context_tokens INTEGER,
213
- context_window INTEGER,
214
- created_at TEXT NOT NULL,
215
- last_used_at TEXT NOT NULL,
216
- PRIMARY KEY (run_id, agent)
217
- );
218
-
219
- CREATE TABLE processes (
220
- id INTEGER PRIMARY KEY AUTOINCREMENT,
221
- run_id TEXT NOT NULL REFERENCES runs(run_id),
222
- kind TEXT NOT NULL,
223
- name TEXT NOT NULL,
224
- pid INTEGER NOT NULL,
225
- command TEXT NOT NULL,
226
- command_digest TEXT NOT NULL,
227
- started_at TEXT NOT NULL,
228
- ended_at TEXT,
229
- host TEXT,
230
- birth_token TEXT
231
- );
232
- CREATE INDEX processes_run_live ON processes(run_id, ended_at);
233
- `;
234
- function ensureProcessOwnerColumns(db) {
235
- const columns = db.prepare("PRAGMA table_info(processes)").all();
236
- if (columns.some((column) => column.name === "host")) return;
237
- db.exec("ALTER TABLE processes ADD COLUMN host TEXT; ALTER TABLE processes ADD COLUMN birth_token TEXT;");
238
- }
239
- function ensureRunSourceColumn(db) {
240
- const columns = db.prepare("PRAGMA table_info(runs)").all();
241
- if (columns.some((column) => column.name === "source")) return;
242
- db.exec("ALTER TABLE runs ADD COLUMN source TEXT NOT NULL DEFAULT 'dispatch';");
243
- db.prepare("UPDATE runs SET source = 'session' WHERE assignment_id = ?").run(SESSION_TRACE_ASSIGNMENT_ID);
244
- }
245
- function reconcileAbandonedRuns(db) {
246
- const owners = db.prepare(`SELECT r.run_id, r.started_at, p.pid, p.host, p.birth_token FROM runs r
247
- JOIN processes p ON p.id = (SELECT MAX(id) FROM processes WHERE run_id = r.run_id AND host IS NOT NULL)
248
- WHERE r.status = 'running'`).all();
249
- const lastEvent = db.prepare(
250
- "SELECT COALESCE(ended_at, started_at) AS at FROM events WHERE run_id = ? ORDER BY rowid DESC LIMIT 1"
251
- );
252
- for (const owner of owners) {
253
- if (owner.host !== hostname()) continue;
254
- if (processAlive(owner.pid) && (owner.birth_token === null || processBirthToken(owner.pid) === owner.birth_token))
255
- continue;
256
- const endedAt = lastEvent.get(owner.run_id)?.at ?? owner.started_at;
257
- db.prepare("UPDATE runs SET status='fail', ended_at=? WHERE run_id=?").run(endedAt, owner.run_id);
258
- db.prepare("UPDATE phases SET status='fail', ended_at=?, error=? WHERE run_id=? AND status='running'").run(endedAt, "abandoned: owner process exited before the run finalized", owner.run_id);
259
- db.prepare("UPDATE processes SET ended_at=? WHERE run_id=? AND ended_at IS NULL").run(endedAt, owner.run_id);
260
- }
261
- }
262
- var TraceStore = class {
263
- constructor(path, options = {}) {
264
- this.path = path;
265
- this.retention = resolveTraceRetentionPolicy(options.retention);
266
- mkdirSync(dirname(path), { recursive: true });
267
- this.db = new (databaseSyncConstructor())(path);
268
- applyConnectionPragmas(this.db);
269
- const version = readVersion(this.db);
270
- if (version === null) this.db.exec(`BEGIN IMMEDIATE; ${SCHEMA_SQL} COMMIT;`);
271
- else if (version !== TRACE_SCHEMA_VERSION) throw new TraceSchemaVersionError(version);
272
- this.transaction(() => {
273
- ensureProcessOwnerColumns(this.db);
274
- ensureRunSourceColumn(this.db);
275
- reconcileAbandonedRuns(this.db);
276
- });
277
- }
278
- path;
279
- db;
280
- retention;
281
- close() {
282
- this.db.close();
283
- }
284
- transaction(action) {
285
- this.db.exec("BEGIN IMMEDIATE");
286
- try {
287
- action();
288
- this.db.exec("COMMIT");
289
- } catch (error) {
290
- this.db.exec("ROLLBACK");
291
- throw error;
292
- }
293
- }
294
- /**
295
- * Remove whole terminal runs, including all of their dependent rows.
296
- *
297
- * Age pruning runs first. If the allocated database is still above the byte
298
- * limit, the oldest remaining terminal runs are removed until the live page
299
- * set fits or only queued/running runs remain. A live run is never a candidate.
300
- */
301
- prune(policy = this.retention, now = (/* @__PURE__ */ new Date()).toISOString()) {
302
- const resolved = resolveTraceRetentionPolicy(policy);
303
- const nowMs = Date.parse(now);
304
- if (!Number.isFinite(nowMs)) throw new Error(`trace prune time is invalid: ${now}`);
305
- const bytesBefore = traceDatabaseFootprintBytes(this.path);
306
- let rowsRemoved = 0;
307
- let runsRemoved = 0;
308
- const removed = /* @__PURE__ */ new Set();
309
- const cutoff = new Date(Math.max(0, nowMs - resolved.maxAgeDays * MILLISECONDS_PER_DAY)).toISOString();
310
- const ageCandidates = this.db.prepare(
311
- "SELECT run_id FROM runs WHERE status IN ('success','fail') AND ended_at IS NOT NULL AND ended_at < ? ORDER BY ended_at, started_at, run_id"
312
- ).all(cutoff);
313
- if (ageCandidates.length > 0) {
314
- this.transaction(() => {
315
- for (const candidate of ageCandidates) {
316
- rowsRemoved += deleteTraceRun(this.db, candidate.run_id);
317
- runsRemoved += 1;
318
- removed.add(candidate.run_id);
319
- }
320
- });
321
- }
322
- let pages = tracePageStats(this.db);
323
- if (pages.usedBytes > resolved.maxBytes) {
324
- const sizeCandidates = this.db.prepare(
325
- "SELECT run_id FROM runs WHERE status IN ('success','fail') AND ended_at IS NOT NULL ORDER BY ended_at, started_at, run_id"
326
- ).all();
327
- this.transaction(() => {
328
- for (const candidate of sizeCandidates) {
329
- if (pages.usedBytes <= resolved.maxBytes) break;
330
- if (removed.has(candidate.run_id)) continue;
331
- rowsRemoved += deleteTraceRun(this.db, candidate.run_id);
332
- runsRemoved += 1;
333
- removed.add(candidate.run_id);
334
- pages = tracePageStats(this.db);
335
- }
336
- });
337
- }
338
- pages = tracePageStats(this.db);
339
- const reclaimableFraction = pages.pageCount === 0 ? 0 : pages.freePages / pages.pageCount;
340
- const sizeNeedsReclaim = pages.allocatedBytes > resolved.maxBytes && pages.freePages > 0;
341
- const vacuumed = rowsRemoved > 0 && pages.freePages > 0 && (reclaimableFraction >= VACUUM_RECLAIMABLE_FRACTION || sizeNeedsReclaim);
342
- if (vacuumed) {
343
- this.db.exec("VACUUM");
344
- this.db.prepare("PRAGMA wal_checkpoint(TRUNCATE)").get();
345
- }
346
- const protectedRuns = Number(
347
- this.db.prepare("SELECT COUNT(*) AS count FROM runs WHERE status IN ('queued','running')").get().count
348
- );
349
- const bytesAfter = traceDatabaseFootprintBytes(this.path);
350
- return {
351
- runsRemoved,
352
- rowsRemoved,
353
- bytesBefore,
354
- bytesAfter,
355
- bytesRemoved: Math.max(0, bytesBefore - bytesAfter),
356
- vacuumed,
357
- protectedRuns
358
- };
359
- }
360
- upsertRun(input, at = (/* @__PURE__ */ new Date()).toISOString()) {
361
- this.transaction(() => {
362
- this.db.prepare(`INSERT INTO runs
363
- (run_id, assignment_id, request, status, agent, target, model, runtime, node, started_at, source)
364
- VALUES (?, ?, ?, 'queued', ?, ?, ?, ?, ?, ?, 'dispatch')
365
- ON CONFLICT(run_id) DO UPDATE SET request=excluded.request, agent=excluded.agent,
366
- target=excluded.target, model=excluded.model, runtime=excluded.runtime, node=excluded.node`).run(
367
- input.runId,
368
- input.runId,
369
- input.task === void 0 ? null : traceText(input.task, 2e3),
370
- input.agentId,
371
- input.targetId,
372
- input.wireModelId,
373
- input.runtimeId,
374
- input.node ?? null,
375
- at
376
- );
377
- this.db.prepare(`INSERT INTO phases
378
- (phase_id, run_id, seq, name, kind, owner, description, status, started_at)
379
- VALUES (?, ?, 0, ?, 'agent', ?, ?, 'queued', NULL)
380
- ON CONFLICT(phase_id) DO NOTHING`).run(
381
- input.runId,
382
- input.runId,
383
- traceText(input.agentId, 256),
384
- traceText(input.agentId, 256),
385
- input.task === void 0 ? null : traceText(input.task, 2e3)
386
- );
387
- });
388
- }
389
- startRun(input, at = (/* @__PURE__ */ new Date()).toISOString()) {
390
- this.upsertRun(input, at);
391
- this.transaction(() => {
392
- this.db.prepare("UPDATE runs SET status='running', started_at=? WHERE run_id=?").run(at, input.runId);
393
- this.db.prepare("UPDATE phases SET status='running', started_at=? WHERE phase_id=?").run(at, input.runId);
394
- this.insertEventRaw({
395
- eventId: `${input.runId}:agent_start`,
396
- runId: input.runId,
397
- phaseId: input.runId,
398
- type: "agent_start",
399
- name: input.agentId,
400
- payload: { target: input.targetId, model: input.wireModelId, runtime: input.runtimeId },
401
- startedAt: at
402
- });
403
- if (input.pid !== null) {
404
- this.db.prepare(`INSERT INTO processes(run_id, kind, name, pid, command, command_digest, started_at, host, birth_token)
405
- VALUES (?, 'worker', ?, ?, ?, ?, ?, ?, ?)`).run(
406
- input.runId,
407
- input.agentId,
408
- input.pid,
409
- traceText(input.processCommand ?? "[]", 2e3),
410
- sha256(input.processCommand ?? "[]"),
411
- at,
412
- hostname(),
413
- processBirthToken(input.pid)
414
- );
415
- }
416
- this.db.prepare(`INSERT INTO agent_sessions
417
- (run_id, agent, runtime, model, session_id, context_tokens, context_window, created_at, last_used_at)
418
- VALUES (?, ?, ?, ?, NULL, NULL, ?, ?, ?)
419
- ON CONFLICT(run_id, agent) DO UPDATE SET runtime=excluded.runtime, model=excluded.model,
420
- context_window=excluded.context_window, last_used_at=excluded.last_used_at`).run(
421
- input.runId,
422
- traceText(input.agentId, 256),
423
- traceText(input.runtimeId, 256),
424
- traceText(input.wireModelId, 256),
425
- input.contextWindow ?? null,
426
- at,
427
- at
428
- );
429
- });
430
- }
431
- insertEvent(input) {
432
- this.transaction(() => this.insertEventRaw(input));
433
- }
434
- insertEventRaw(input) {
435
- this.db.prepare(`INSERT INTO events
436
- (event_id, run_id, phase_id, parent_id, type, name, payload_json, tokens, started_at, ended_at)
437
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
438
- ON CONFLICT(event_id) DO UPDATE SET name=excluded.name, payload_json=excluded.payload_json,
439
- tokens=excluded.tokens, started_at=excluded.started_at, ended_at=excluded.ended_at`).run(
440
- input.eventId,
441
- input.runId,
442
- input.phaseId,
443
- input.parentId ?? null,
444
- input.type,
445
- traceText(input.name, 512),
446
- input.payload === void 0 ? null : boundedJson(input.payload),
447
- input.tokens ?? null,
448
- input.startedAt,
449
- input.endedAt ?? null
450
- );
451
- }
452
- recordSpend(input) {
453
- this.transaction(() => {
454
- this.db.prepare(`UPDATE phases SET input_tokens=?, output_tokens=?, cache_read_tokens=?, cache_write_tokens=?,
455
- reasoning_tokens=?, total_tokens=?, input_cost_usd=?, output_cost_usd=?, cache_read_cost_usd=?,
456
- cache_write_cost_usd=?, total_cost_usd=?, context_tokens=?, context_window=? WHERE phase_id=? AND run_id=?`).run(
457
- input.inputTokens,
458
- input.outputTokens,
459
- input.cacheReadTokens,
460
- input.cacheWriteTokens,
461
- input.reasoningTokens,
462
- input.totalTokens,
463
- input.inputCostUsd ?? null,
464
- input.outputCostUsd ?? null,
465
- input.cacheReadCostUsd ?? null,
466
- input.cacheWriteCostUsd ?? null,
467
- input.totalCostUsd,
468
- input.contextTokens ?? null,
469
- input.contextWindow ?? null,
470
- input.phaseId,
471
- input.runId
472
- );
473
- this.db.prepare("UPDATE runs SET total_tokens=?, total_cost_usd=? WHERE run_id=?").run(input.totalTokens, input.totalCostUsd, input.runId);
474
- });
475
- }
476
- recordContext(runId, contextTokens, contextWindow, at) {
477
- this.transaction(() => {
478
- this.db.prepare("UPDATE phases SET context_tokens=?, context_window=COALESCE(?, context_window) WHERE run_id=?").run(contextTokens, contextWindow, runId);
479
- this.db.prepare(`UPDATE agent_sessions SET context_tokens=?, context_window=COALESCE(?, context_window),
480
- last_used_at=? WHERE run_id=?`).run(contextTokens, contextWindow, at, runId);
481
- });
482
- }
483
- recordGate(input) {
484
- const violations = input.checks?.filter((check) => !check.ok).map((check) => `${check.item}: ${check.note}`) ?? [];
485
- this.transaction(() => {
486
- this.db.prepare("DELETE FROM gate_results WHERE run_id=? AND phase_id=? AND attempt=? AND gate=?").run(input.runId, input.phaseId, input.attempt, input.gate);
487
- this.db.prepare(`INSERT INTO gate_results
488
- (run_id, phase_id, attempt, gate, passed, violations_json, checks_json, created_at)
489
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(
490
- input.runId,
491
- input.phaseId,
492
- input.attempt,
493
- input.gate,
494
- input.passed ? 1 : 0,
495
- JSON.stringify(violations),
496
- input.checks === null ? null : JSON.stringify(input.checks),
497
- input.createdAt
498
- );
499
- this.insertEventRaw({
500
- eventId: `${input.runId}:gate:${input.gate}:${input.attempt}`,
501
- runId: input.runId,
502
- phaseId: input.phaseId,
503
- type: input.passed ? "gate_pass" : "gate_fail",
504
- name: input.gate,
505
- payload: { attempt: input.attempt, checks: input.checks, violations },
506
- startedAt: input.createdAt
507
- });
508
- });
509
- }
510
- recordEnvelope(input) {
511
- this.transaction(() => {
512
- this.db.prepare(`INSERT OR REPLACE INTO envelopes
513
- (envelope_id, run_id, phase_id, agent, output_type, payload_json, valid, attempt, created_at)
514
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(
515
- input.envelopeId,
516
- input.runId,
517
- input.phaseId,
518
- input.agent,
519
- input.outputType,
520
- boundedJson(input.payload),
521
- input.valid ? 1 : 0,
522
- input.attempt,
523
- input.createdAt
524
- );
525
- });
526
- }
527
- startProcess(input) {
528
- let id = 0;
529
- this.transaction(() => {
530
- const result = this.db.prepare(`INSERT INTO processes(run_id, kind, name, pid, command, command_digest, started_at)
531
- VALUES (?, ?, ?, ?, ?, ?, ?)`).run(
532
- input.runId,
533
- input.kind,
534
- traceText(input.name, 256),
535
- input.pid,
536
- traceText(input.command, 2e3),
537
- sha256(input.command),
538
- input.startedAt
539
- );
540
- id = Number(result.lastInsertRowid);
541
- });
542
- return id;
543
- }
544
- endProcesses(runId, endedAt) {
545
- this.transaction(() => {
546
- this.db.prepare("UPDATE processes SET ended_at=? WHERE run_id=? AND ended_at IS NULL").run(endedAt, runId);
547
- });
548
- }
549
- recordRetryDenied(runId, agentId, detail, at) {
550
- this.transaction(() => {
551
- const phase = this.db.prepare("SELECT phase_id FROM phases WHERE run_id=? ORDER BY seq LIMIT 1").get(runId);
552
- if (!phase) return;
553
- this.insertEventRaw({
554
- eventId: `${runId}:retry_denied:${at}`,
555
- runId,
556
- phaseId: phase.phase_id,
557
- type: "error",
558
- name: "retry denied",
559
- payload: { agent: agentId, detail, reason: "retry_denied" },
560
- startedAt: at
561
- });
562
- });
563
- }
564
- finishRun(input, success, at = (/* @__PURE__ */ new Date()).toISOString()) {
565
- this.transaction(() => {
566
- const fallbackStartedAt = typeof input.durationMs === "number" ? new Date(Math.max(0, Date.parse(at) - input.durationMs)).toISOString() : at;
567
- this.db.prepare(`INSERT INTO runs
568
- (run_id, assignment_id, request, status, agent, target, model, runtime, node, started_at)
569
- VALUES (?, ?, ?, 'running', ?, ?, ?, ?, ?, ?)
570
- ON CONFLICT(run_id) DO NOTHING`).run(
571
- input.runId,
572
- input.lineage?.rootRunId ?? input.runId,
573
- input.task === void 0 ? null : traceText(input.task, 2e3),
574
- input.agentId,
575
- input.targetId,
576
- input.wireModelId,
577
- input.runtimeId,
578
- input.node ?? null,
579
- fallbackStartedAt
580
- );
581
- this.db.prepare(`INSERT INTO phases
582
- (phase_id, run_id, seq, name, kind, owner, description, status, started_at)
583
- VALUES (?, ?, 0, ?, 'agent', ?, ?, 'running', ?)
584
- ON CONFLICT(phase_id) DO NOTHING`).run(
585
- input.runId,
586
- input.runId,
587
- traceText(input.agentId, 256),
588
- traceText(input.agentId, 256),
589
- input.task === void 0 ? null : traceText(input.task, 2e3),
590
- fallbackStartedAt
591
- );
592
- this.db.prepare("UPDATE runs SET assignment_id=?, status=?, ended_at=?, total_tokens=?, total_cost_usd=? WHERE run_id=?").run(
593
- input.lineage?.rootRunId ?? input.runId,
594
- success ? "success" : "fail",
595
- at,
596
- input.tokenCount ?? null,
597
- input.costUsd ?? null,
598
- input.runId
599
- );
600
- this.db.prepare(`UPDATE phases SET status=?, attempt=?, retries=?, ended_at=?, error=?, input_tokens=?, output_tokens=?,
601
- cache_read_tokens=?, cache_write_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
602
- WHERE phase_id=?`).run(
603
- success ? "success" : "fail",
604
- input.lineage?.attempt ?? 0,
605
- input.lineage?.attempt ?? 0,
606
- at,
607
- success ? null : input.outcomeDetail,
608
- input.inputTokenCount ?? null,
609
- input.outputTokenCount ?? null,
610
- input.cacheReadTokenCount ?? null,
611
- input.cacheWriteTokenCount ?? null,
612
- input.reasoningTokenCount ?? null,
613
- input.tokenCount ?? null,
614
- input.costUsd ?? null,
615
- input.runId
616
- );
617
- this.db.prepare("UPDATE processes SET ended_at=? WHERE run_id=? AND ended_at IS NULL").run(at, input.runId);
618
- this.insertEventRaw({
619
- eventId: `${input.runId}:agent_end`,
620
- runId: input.runId,
621
- phaseId: input.runId,
622
- type: "agent_end",
623
- name: input.agentId,
624
- payload: {
625
- outcome: input.outcome,
626
- outcomeDetail: input.outcomeDetail,
627
- usage: terminalUsage(input),
628
- cost: input.costUsd ?? null,
629
- contextWindow: input.contextWindow ?? null
630
- },
631
- tokens: input.tokenCount ?? null,
632
- startedAt: at
633
- });
634
- this.insertEventRaw({
635
- eventId: `${input.runId}:phase_end`,
636
- runId: input.runId,
637
- phaseId: input.runId,
638
- type: "phase_end",
639
- name: input.agentId,
640
- payload: { status: success ? "success" : "fail" },
641
- startedAt: at
642
- });
643
- });
644
- this.prune(this.retention, at);
645
- }
646
- /**
647
- * Record one fact about a turn the operator ran in the chat loop.
648
- *
649
- * The three shapes reuse the dispatch tables exactly: `start` opens the
650
- * runs/phases pair, `event` appends to the same `events` table a worker's
651
- * tool calls land in, and `finish` closes both with the turn's usage. The
652
- * phase id is the run id, as it is for a dispatched run's single phase, so
653
- * `clio-coder trace phases` and `clio-coder trace tail` need no session-specific path.
654
- */
655
- recordSessionTurn(input) {
656
- if (input.kind === "start") {
657
- this.startSessionTurn(input);
658
- return;
659
- }
660
- if (input.kind === "event") {
661
- this.transaction(() => {
662
- this.insertEventRaw({
663
- eventId: `${input.runId}:${input.eventId}`,
664
- runId: input.runId,
665
- phaseId: input.runId,
666
- parentId: `${input.runId}:turn_start`,
667
- type: input.type,
668
- name: input.name,
669
- ...input.payload === void 0 ? {} : { payload: input.payload },
670
- tokens: input.tokens ?? null,
671
- startedAt: input.startedAt,
672
- endedAt: input.endedAt ?? null
673
- });
674
- });
675
- return;
676
- }
677
- this.finishSessionTurn(input);
678
- }
679
- startSessionTurn(input) {
680
- this.transaction(() => {
681
- this.db.prepare(`INSERT INTO runs
682
- (run_id, assignment_id, request, status, agent, target, model, runtime, node, started_at, source)
683
- VALUES (?, ?, ?, 'running', ?, ?, ?, ?, NULL, ?, 'session')
684
- ON CONFLICT(run_id) DO NOTHING`).run(
685
- input.runId,
686
- SESSION_TRACE_ASSIGNMENT_ID,
687
- input.prompt === null ? null : traceText(input.prompt, 2e3),
688
- traceText(input.agent, 256),
689
- traceText(input.target, 256),
690
- traceText(input.model, 256),
691
- traceText(input.runtime, 256),
692
- input.at
693
- );
694
- this.db.prepare(`INSERT INTO phases
695
- (phase_id, run_id, seq, name, kind, owner, description, status, started_at)
696
- VALUES (?, ?, 0, ?, 'session', ?, ?, 'running', ?)
697
- ON CONFLICT(phase_id) DO NOTHING`).run(
698
- input.runId,
699
- input.runId,
700
- traceText(input.agent, 256),
701
- traceText(input.agent, 256),
702
- input.prompt === null ? null : traceText(input.prompt, 2e3),
703
- input.at
704
- );
705
- this.insertEventRaw({
706
- eventId: `${input.runId}:turn_start`,
707
- runId: input.runId,
708
- phaseId: input.runId,
709
- type: "agent_start",
710
- name: input.agent,
711
- payload: { target: input.target, model: input.model, runtime: input.runtime, session: true },
712
- startedAt: input.at
713
- });
714
- });
715
- }
716
- finishSessionTurn(input) {
717
- const usage = input.usage;
718
- this.transaction(() => {
719
- this.db.prepare("UPDATE runs SET status=?, ended_at=?, total_tokens=?, total_cost_usd=? WHERE run_id=?").run(input.status, input.at, usage?.totalTokens ?? null, usage?.costUsd ?? null, input.runId);
720
- this.db.prepare(`UPDATE phases SET status=?, ended_at=?, error=?, input_tokens=?, output_tokens=?,
721
- cache_read_tokens=?, cache_write_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
722
- WHERE phase_id=?`).run(
723
- input.status,
724
- input.at,
725
- input.error,
726
- usage?.inputTokens ?? null,
727
- usage?.outputTokens ?? null,
728
- usage?.cacheReadTokens ?? null,
729
- usage?.cacheWriteTokens ?? null,
730
- usage?.reasoningTokens ?? null,
731
- usage?.totalTokens ?? null,
732
- usage?.costUsd ?? null,
733
- input.runId
734
- );
735
- this.insertEventRaw({
736
- eventId: `${input.runId}:turn_end`,
737
- runId: input.runId,
738
- phaseId: input.runId,
739
- type: "agent_end",
740
- name: input.status,
741
- payload: { status: input.status, error: input.error, usage },
742
- tokens: usage?.totalTokens ?? null,
743
- startedAt: input.at
744
- });
745
- });
746
- this.prune(this.retention, input.at);
747
- }
748
- };
749
- function tracePageStats(db) {
750
- const pageSize = Number(db.prepare("PRAGMA page_size").get().page_size);
751
- const pageCount = Number(db.prepare("PRAGMA page_count").get().page_count);
752
- const freePages = Number(
753
- db.prepare("PRAGMA freelist_count").get().freelist_count
754
- );
755
- return {
756
- pageCount,
757
- freePages,
758
- allocatedBytes: pageCount * pageSize,
759
- usedBytes: Math.max(0, pageCount - freePages) * pageSize
760
- };
761
- }
762
- function deleteTraceRun(db, runId) {
763
- let rows = 0;
764
- for (const table of ["events", "envelopes", "gate_results", "agent_sessions", "processes", "phases", "runs"]) {
765
- const result = db.prepare(`DELETE FROM ${table} WHERE run_id=?`).run(runId);
766
- rows += Number(result.changes);
767
- }
768
- return rows;
769
- }
770
- function traceDatabaseFootprintBytes(path) {
771
- let total = 0;
772
- for (const candidate of [path, `${path}-wal`, `${path}-shm`]) {
773
- try {
774
- total += statSync(candidate).size;
775
- } catch (error) {
776
- const code = typeof error === "object" && error !== null && "code" in error ? String(error.code) : "";
777
- if (code !== "ENOENT") throw error;
778
- }
779
- }
780
- return total;
781
- }
782
- var TraceReader = class {
783
- constructor(path) {
784
- this.path = path;
785
- this.db = new (databaseSyncConstructor())(path, { readOnly: true });
786
- this.db.exec("PRAGMA busy_timeout=5000;");
787
- assertSupportedVersion(this.db);
788
- const mode = this.db.prepare("PRAGMA journal_mode").get();
789
- if (mode.journal_mode.toLowerCase() !== "wal")
790
- throw new Error(`trace database journal mode is ${mode.journal_mode}, expected WAL`);
791
- const runColumns = this.db.prepare("PRAGMA table_info(runs)").all();
792
- this.runsSourceExpr = runColumns.some((column) => column.name === "source") ? "*" : `*, CASE WHEN assignment_id = '${SESSION_TRACE_ASSIGNMENT_ID}' THEN 'session' ELSE 'dispatch' END AS source`;
793
- }
794
- path;
795
- db;
796
- /**
797
- * `runs.source` is an additive column (see ensureRunSourceColumn) a
798
- * TraceStore writer backfills in place. A read-only reader can open a
799
- * database no writer has touched since before the column existed — the
800
- * trace viewer opening a dormant install's trace.sqlite fresh is the
801
- * realistic case — and cannot ALTER TABLE to fix that itself, so it
802
- * derives the same value the migration would have written instead.
803
- */
804
- runsSourceExpr;
805
- close() {
806
- this.db.close();
807
- }
808
- runs(limit = 50) {
809
- return this.db.prepare(`SELECT ${this.runsSourceExpr} FROM runs ORDER BY started_at DESC LIMIT ?`).all(clampInt(limit, 1, 500));
810
- }
811
- run(runId) {
812
- return this.db.prepare(`SELECT ${this.runsSourceExpr} FROM runs WHERE run_id=?`).get(runId) ?? null;
813
- }
814
- phases(runId) {
815
- return this.db.prepare("SELECT * FROM phases WHERE run_id=? ORDER BY seq, phase_id").all(runId);
816
- }
817
- events(runId, afterRowid = 0, limit = TRACE_EVENT_POLL_LIMIT) {
818
- const rows = this.db.prepare(`SELECT rowid, event_id, run_id, phase_id, parent_id, type, name, payload_json,
819
- tokens, started_at, ended_at FROM events
820
- WHERE run_id = ? AND rowid > ? ORDER BY rowid LIMIT ?`).all(
821
- runId,
822
- Math.max(0, Math.trunc(afterRowid)),
823
- clampInt(limit, 1, TRACE_EVENT_POLL_LIMIT)
824
- );
825
- return rows.map((row) => ({ ...row, type: normalizeClioCoderEventType(row.type) }));
826
- }
827
- /**
828
- * Per-kind event tallies for one run.
829
- *
830
- * Aggregated in SQL rather than by reading rows, so `payload_json` and the
831
- * free-form event name are never loaded at all. That is the point: a caller
832
- * that only ever wants shapes should not be holding the payloads in memory
833
- * on the way to counting them.
834
- */
835
- eventKindCounts(runId) {
836
- const rows = this.db.prepare("SELECT type, COUNT(*) AS count FROM events WHERE run_id=? GROUP BY type ORDER BY count DESC, type").all(runId);
837
- const counts = /* @__PURE__ */ new Map();
838
- for (const row of rows) {
839
- const type = normalizeClioCoderEventType(row.type);
840
- counts.set(type, (counts.get(type) ?? 0) + row.count);
841
- }
842
- return [...counts].map(([type, count]) => ({ type, count })).sort((left, right) => right.count - left.count || left.type.localeCompare(right.type));
843
- }
844
- /** Total events and the wall span they cover, without reading one of them. */
845
- eventSpan(runId) {
846
- const row = this.db.prepare(
847
- `SELECT COUNT(*) AS total, MIN(started_at) AS firstAt,
848
- MAX(COALESCE(ended_at, started_at)) AS lastAt FROM events WHERE run_id=?`
849
- ).get(runId);
850
- return row ?? { total: 0, firstAt: null, lastAt: null };
851
- }
852
- /**
853
- * Per-kind process tallies for one run.
854
- *
855
- * Same reason as {@link eventKindCounts}, and more sharply: a process row
856
- * carries the command line, the pid, and the host, none of which a shape
857
- * count needs.
858
- */
859
- processKindCounts(runId) {
860
- return this.db.prepare(
861
- `SELECT kind, COUNT(*) AS total,
862
- SUM(CASE WHEN ended_at IS NULL THEN 1 ELSE 0 END) AS running
863
- FROM processes WHERE run_id=? GROUP BY kind ORDER BY total DESC, kind`
864
- ).all(runId);
865
- }
866
- processes(runId) {
867
- return this.db.prepare("SELECT * FROM processes WHERE run_id=? ORDER BY ended_at IS NOT NULL, id").all(runId);
868
- }
869
- gateResults(runId) {
870
- return this.db.prepare("SELECT * FROM gate_results WHERE run_id=? ORDER BY phase_id, attempt, id").all(runId);
871
- }
872
- envelopes(runId) {
873
- return this.db.prepare("SELECT * FROM envelopes WHERE run_id=? ORDER BY created_at, envelope_id").all(runId);
874
- }
875
- select(sql) {
876
- assertTraceSelectOnly(sql);
877
- return this.db.prepare(sql).all();
878
- }
879
- };
880
- function createDispatchTraceMirror(path, options = {}) {
881
- const warn = options.warn ?? ((message) => process.stderr.write(`[clio-coder:trace] ${message}
882
- `));
883
- const now = options.now ?? (() => (/* @__PURE__ */ new Date()).toISOString());
884
- let store = null;
885
- let chain = Promise.resolve();
886
- let closed = false;
887
- let degraded = false;
888
- let pendingWrites = 0;
889
- let droppedProgress = 0;
890
- const starts = /* @__PURE__ */ new Map();
891
- const seen = /* @__PURE__ */ new Map();
892
- const contextWindows = /* @__PURE__ */ new Map();
893
- const gateRuns = /* @__PURE__ */ new Map();
894
- const getStore = () => {
895
- store ??= new TraceStore(path);
896
- return store;
897
- };
898
- const schedule = (work) => {
899
- if (closed || degraded) return;
900
- pendingWrites += 1;
901
- chain = chain.then(
902
- () => new Promise((resolve) => {
903
- setImmediate(() => {
904
- try {
905
- if (degraded) {
906
- pendingWrites -= 1;
907
- return resolve();
908
- }
909
- work();
910
- } catch (error) {
911
- if (!degraded) warn(error instanceof Error ? error.message : String(error));
912
- degraded = true;
913
- }
914
- pendingWrites -= 1;
915
- resolve();
916
- });
917
- })
918
- );
919
- };
920
- return {
921
- enqueue(channel, raw) {
922
- const observedAt = now();
923
- if (pendingWrites >= TRACE_WRITE_QUEUE_LIMIT && !isCriticalTraceEvent(channel, raw)) {
924
- droppedProgress += 1;
925
- return;
926
- }
927
- schedule(() => {
928
- if (!isRecord(raw)) return;
929
- if (channel === "dispatch.enqueued") {
930
- const payload = raw;
931
- getStore().upsertRun(payload, observedAt);
932
- if (payload.contextWindow !== void 0) contextWindows.set(payload.runId, payload.contextWindow);
933
- if (payload.gate !== void 0) gateRuns.set(payload.runId, payload.gate);
934
- } else if (channel === "dispatch.started")
935
- getStore().startRun(raw, observedAt);
936
- else if (channel === "dispatch.progress")
937
- recordProgress(
938
- getStore(),
939
- raw,
940
- starts,
941
- seen,
942
- contextWindows,
943
- gateRuns,
944
- observedAt
945
- );
946
- else if (channel === "dispatch.completed")
947
- getStore().finishRun(raw, true, observedAt);
948
- else if (channel === "dispatch.failed")
949
- recordFailure(getStore(), raw, observedAt);
950
- });
951
- },
952
- enqueueSessionTurn(trace) {
953
- schedule(() => getStore().recordSessionTurn(trace));
954
- },
955
- async flush() {
956
- await chain;
957
- if (droppedProgress > 0) {
958
- warn(`dropped ${droppedProgress} display-only progress events because the trace queue was full`);
959
- droppedProgress = 0;
960
- }
961
- },
962
- async close() {
963
- closed = true;
964
- await chain;
965
- if (droppedProgress > 0)
966
- warn(`dropped ${droppedProgress} display-only progress events because the trace queue was full`);
967
- store?.close();
968
- }
969
- };
970
- }
971
- function recordProgress(store, payload, starts, seen, contextWindows, gateRuns, at) {
972
- if (!isRecord(payload.event)) return;
973
- const event = payload.event;
974
- const type = typeof event.type === "string" ? normalizeClioCoderEventType(event.type) : "progress";
975
- const toolCallId = stringValue(event.toolCallId) ?? stringValue(event.tool_call_id);
976
- if (type === "message_end" && isRecord(event.message) && event.message.role === "assistant" && event.message.stopReason !== "error" && event.message.stopReason !== "aborted" && isRecord(event.message.usage)) {
977
- const usage = event.message.usage;
978
- const contextTokens = finiteNonNegative(usage.totalTokens) ?? finiteNonNegative(usage.total_tokens) ?? [usage.input, usage.output, usage.cacheRead, usage.cacheWrite].map((value) => finiteNonNegative(value) ?? 0).reduce((sum, value) => sum + value, 0);
979
- store.recordContext(payload.runId, contextTokens, contextWindows.get(payload.runId) ?? null, at);
980
- }
981
- const gate = gateRuns.get(payload.runId);
982
- if (type === "message_end" && gate !== void 0 && isRecord(event.message) && event.message.role === "assistant") {
983
- const result = structuredGateResult(messageText(event.message));
984
- if (result !== null) {
985
- store.recordGate({
986
- runId: payload.runId,
987
- phaseId: payload.runId,
988
- attempt: gate.cycle,
989
- gate: gate.role,
990
- passed: result.passed,
991
- checks: result.checks,
992
- createdAt: at
993
- });
994
- }
995
- }
996
- if ((type === "tool_execution_start" || type === "clio_coder_tool_start") && toolCallId !== null) {
997
- starts.set(`${payload.runId}:${toolCallId}`, {
998
- toolCallId,
999
- tool: stringValue(event.toolName) ?? stringValue(event.tool) ?? "tool",
1000
- args: event.args ?? null,
1001
- startedAt: at
1002
- });
1003
- return;
1004
- }
1005
- if ((type === "tool_execution_end" || type === "clio_coder_tool_finish") && toolCallId !== null) {
1006
- const key = `${payload.runId}:${toolCallId}`;
1007
- const start = starts.get(key);
1008
- const duration = finiteNonNegative(event.durationMs);
1009
- const observedStart = start?.startedAt;
1010
- const startedAt = observedStart ?? (duration === null ? at : new Date(Date.parse(at) - duration).toISOString());
1011
- const startedAtMs = Date.parse(startedAt);
1012
- const endedAt = duration !== null && observedStart !== void 0 && Number.isFinite(startedAtMs) ? new Date(startedAtMs + duration).toISOString() : at;
1013
- const tool = start?.tool ?? stringValue(event.toolName) ?? stringValue(event.tool) ?? "tool";
1014
- const args = start?.args ?? event.args ?? null;
1015
- const result = event.result ?? event.resultSnippet ?? null;
1016
- const ok = event.isError !== true && event.outcome !== "error" && event.outcome !== "blocked";
1017
- store.insertEvent({
1018
- eventId: `${payload.runId}:tool:${toolCallId}`,
1019
- runId: payload.runId,
1020
- phaseId: payload.runId,
1021
- parentId: `${payload.runId}:agent_start`,
1022
- type: "tool_call",
1023
- name: readableToolName(tool, args),
1024
- payload: {
1025
- tool,
1026
- tool_call_id: toolCallId,
1027
- args,
1028
- result_snippet: boundedSnippet(result),
1029
- ok,
1030
- duration_ms: duration,
1031
- agent: payload.agentId
1032
- },
1033
- startedAt,
1034
- endedAt
1035
- });
1036
- starts.delete(key);
1037
- return;
1038
- }
1039
- const sequence = (seen.get(payload.runId) ?? 0) + 1;
1040
- seen.set(payload.runId, sequence);
1041
- store.insertEvent({
1042
- eventId: `${payload.runId}:event:${sequence}`,
1043
- runId: payload.runId,
1044
- phaseId: payload.runId,
1045
- parentId: `${payload.runId}:agent_start`,
1046
- type: normalizeEventType(type),
1047
- name: eventName(event, type),
1048
- payload: projectProgressPayload(type, event),
1049
- tokens: eventTokens(event),
1050
- startedAt: at
1051
- });
1052
- }
1053
- function terminalUsage(input) {
1054
- if (input.tokenCount === void 0) return null;
1055
- return {
1056
- input: input.inputTokenCount ?? 0,
1057
- output: input.outputTokenCount ?? 0,
1058
- cache_read: input.cacheReadTokenCount ?? 0,
1059
- cache_write: input.cacheWriteTokenCount ?? 0,
1060
- reasoning_tokens: input.reasoningTokenCount ?? 0,
1061
- total_tokens: input.tokenCount
1062
- };
1063
- }
1064
- function recordFailure(store, input, at) {
1065
- if (input.reason === "retry_denied") {
1066
- store.recordRetryDenied(input.runId, input.agentId, input.outcomeDetail, at);
1067
- return;
1068
- }
1069
- store.finishRun(input, false, at);
1070
- }
1071
- function isCriticalTraceEvent(channel, raw) {
1072
- if (channel !== "dispatch.progress") return true;
1073
- if (!isRecord(raw) || !isRecord(raw.event)) return false;
1074
- const type = typeof raw.event.type === "string" ? normalizeClioCoderEventType(raw.event.type) : raw.event.type;
1075
- return type === "tool_execution_start" || type === "tool_execution_end" || type === "clio_coder_tool_start" || type === "clio_coder_tool_finish" || type === "message_end" || type === "attempt_start";
1076
- }
1077
- function projectProgressPayload(type, event) {
1078
- if (type === "message_end") {
1079
- const message = isRecord(event.message) ? event.message : {};
1080
- return {
1081
- role: message.role ?? null,
1082
- stopReason: message.stopReason ?? null,
1083
- usage: isRecord(message.usage) ? message.usage : null,
1084
- model: message.model ?? null
1085
- };
1086
- }
1087
- const projected = { sourceType: type };
1088
- for (const key of ["level", "status", "attempt", "reason", "dueAt", "previousRunId", "runId"]) {
1089
- const value = event[key];
1090
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") projected[key] = value;
1091
- }
1092
- return projected;
1093
- }
1094
- function messageText(message) {
1095
- if (typeof message.content === "string") return message.content;
1096
- if (!Array.isArray(message.content)) return "";
1097
- return message.content.map((part) => isRecord(part) && part.type === "text" && typeof part.text === "string" ? part.text : "").join("");
1098
- }
1099
- function structuredGateResult(text) {
1100
- let parsed;
1101
- try {
1102
- parsed = JSON.parse(text);
1103
- } catch {
1104
- return null;
1105
- }
1106
- if (!isRecord(parsed) || !Array.isArray(parsed.checks) || parsed.checks.length === 0) return null;
1107
- const checks = [];
1108
- for (const raw of parsed.checks) {
1109
- if (!isRecord(raw) || typeof raw.name !== "string" || typeof raw.passed !== "boolean" || typeof raw.evidence !== "string") {
1110
- return null;
1111
- }
1112
- checks.push({ item: raw.name, ok: raw.passed, note: raw.evidence });
1113
- }
1114
- if (parsed.verdict !== void 0 && parsed.verdict !== "pass" && parsed.verdict !== "fail") return null;
1115
- if (parsed.winner !== void 0 && (!Number.isSafeInteger(parsed.winner) || parsed.winner < 1))
1116
- return null;
1117
- if (parsed.verdict === void 0 && parsed.winner === void 0) return null;
1118
- return { passed: parsed.verdict === "pass" || parsed.winner !== void 0, checks };
1119
- }
1120
- function normalizeEventType(type) {
1121
- if (type === "message_end") return "log";
1122
- if (type === "attempt_start") return "handoff";
1123
- return type.replace(/[^a-zA-Z0-9_-]/g, "_").slice(0, 64) || "progress";
1124
- }
1125
- function eventName(event, fallback) {
1126
- return stringValue(event.name) ?? stringValue(event.message) ?? fallback;
1127
- }
1128
- function eventTokens(event) {
1129
- if (!isRecord(event.message) || !isRecord(event.message.usage)) return null;
1130
- return finiteNonNegative(event.message.usage.totalTokens) ?? finiteNonNegative(event.message.usage.total_tokens);
1131
- }
1132
- function readableToolName(tool, args) {
1133
- if (isRecord(args)) {
1134
- const target = stringValue(args.command) ?? stringValue(args.path) ?? stringValue(args.file_path);
1135
- if (target !== null) return traceText(`${tool}: ${target.replace(/\s+/g, " ").trim()}`, 160);
1136
- }
1137
- return traceText(tool, 160);
1138
- }
1139
- function boundedSnippet(value) {
1140
- if (value === null || value === void 0) return null;
1141
- const encoded = typeof value === "string" ? value : JSON.stringify(value, (_key, current) => typeof current === "bigint" ? current.toString() : current);
1142
- const text = encoded ?? String(value);
1143
- return Buffer.byteLength(text) <= 4096 ? text : `${Buffer.from(text).subarray(0, 4093).toString("utf8")}\u2026`;
1144
- }
1145
- function boundedJson(value) {
1146
- const serialized = JSON.stringify(
1147
- value,
1148
- (_key, current) => typeof current === "bigint" ? current.toString() : current
1149
- );
1150
- const json = serialized === void 0 ? void 0 : redactSecretsText(serialized, createRedactionTally());
1151
- if (json === void 0) return "null";
1152
- if (Buffer.byteLength(json) <= TRACE_PAYLOAD_LIMIT_BYTES) return json;
1153
- return JSON.stringify({
1154
- truncated: true,
1155
- snippet: Buffer.from(json).subarray(0, TRACE_PAYLOAD_LIMIT_BYTES - 128).toString("utf8")
1156
- });
1157
- }
1158
- function traceText(value, maxChars) {
1159
- return redactSecretsText(value, createRedactionTally()).replace(/[\r\n\t]+/g, " ").slice(0, maxChars);
1160
- }
1161
- function sha256(value) {
1162
- return createHash("sha256").update(value, "utf8").digest("hex");
1163
- }
1164
- function assertTraceSelectOnly(sql) {
1165
- const trimmed = sql.trim();
1166
- if (!/^(SELECT|WITH)\b/i.test(trimmed)) throw new Error("trace sql accepts SELECT or read-only WITH queries only");
1167
- if (trimmed.includes(";")) throw new Error("trace sql accepts exactly one statement");
1168
- if (/\b(INSERT|UPDATE|DELETE|REPLACE|CREATE|ALTER|DROP|ATTACH|DETACH|VACUUM|PRAGMA)\b/i.test(trimmed)) {
1169
- throw new Error("trace sql query is not read-only");
1170
- }
1171
- }
1172
- function clampInt(value, min, max) {
1173
- if (!Number.isFinite(value)) return min;
1174
- return Math.min(max, Math.max(min, Math.trunc(value)));
1175
- }
1176
- function isRecord(value) {
1177
- return typeof value === "object" && value !== null && !Array.isArray(value);
1178
- }
1179
- function stringValue(value) {
1180
- return typeof value === "string" && value.length > 0 ? value : null;
1181
- }
1182
- function finiteNonNegative(value) {
1183
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
1184
- }
1185
-
1186
- export {
1187
- TRACE_EVENT_POLL_LIMIT,
1188
- DEFAULT_TRACE_RETENTION_POLICY,
1189
- traceDatabasePath,
1190
- resolveTraceRetentionPolicy,
1191
- TraceStore,
1192
- TraceReader,
1193
- createDispatchTraceMirror,
1194
- assertTraceSelectOnly
1195
- };
1196
- //# sourceMappingURL=chunk-LZBMXNLP.js.map