@iowarp/clio-coder 0.4.7 → 0.4.9

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 (675) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +111 -0
  3. package/CONTRIBUTING.md +83 -74
  4. package/README.md +69 -47
  5. package/dist/{acp-W3Y3TRHD.js → acp-ZWZCPS2A.js} +15 -15
  6. package/dist/{agents-J4ICNLQ3.js → agents-LYSOWZUE.js} +61 -59
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/assets/web-notices/@hono__node-server-LICENSE +21 -0
  9. package/dist/assets/web-notices/hono-LICENSE +21 -0
  10. package/dist/{auth-X2UJUMOC.js → auth-WBQGKWQ5.js} +27 -27
  11. package/dist/background-BUMOBAQN.js +37 -0
  12. package/dist/{builtins-XLXWWSRF.js → builtins-ODRJOEDI.js} +7 -7
  13. package/dist/{chunk-C3G5PNUO.js → chunk-2DRRZ57Q.js} +36 -27
  14. package/dist/chunk-2JBZYUPY.js +105 -0
  15. package/dist/chunk-2KUBKL63.js +336 -0
  16. package/dist/chunk-2VBWFXYE.js +198 -0
  17. package/dist/{chunk-XZ6UFQ52.js → chunk-2X2R3UTH.js} +25 -15
  18. package/dist/{chunk-M6Z2V6YU.js → chunk-37LW32LZ.js} +5 -5
  19. package/dist/{chunk-6LRLOJHQ.js → chunk-3AND2EFU.js} +11 -62
  20. package/dist/{chunk-FQOOGXBH.js → chunk-3RDHGNU7.js} +101 -33
  21. package/dist/{chunk-D2T66PDV.js → chunk-3SUDBGEI.js} +41 -208
  22. package/dist/{chunk-5AJPUR72.js → chunk-3TQN67I2.js} +9 -9
  23. package/dist/{chunk-LBFQMYS3.js → chunk-3U4BL2EV.js} +5 -3
  24. package/dist/{chunk-UFYNOQK4.js → chunk-3UQADNG2.js} +7 -7
  25. package/dist/{chunk-V4ZKOKRB.js → chunk-434LRQ6Z.js} +61 -53
  26. package/dist/{chunk-NO7J45X6.js → chunk-4ATBOFRP.js} +713 -218
  27. package/dist/{chunk-ECOMVOHP.js → chunk-4DNL43EZ.js} +3 -3
  28. package/dist/{chunk-WT5TRMO4.js → chunk-4HFJKRGZ.js} +255 -82
  29. package/dist/{chunk-5A6XR3RJ.js → chunk-555E2WVV.js} +16 -2
  30. package/dist/{chunk-WURGVOZJ.js → chunk-5RTEFNBP.js} +18 -14
  31. package/dist/{config-YXARKGTX.js → chunk-64XJW7NT.js} +24 -268
  32. package/dist/{chunk-24S3DN22.js → chunk-6TKOFFGE.js} +4 -4
  33. package/dist/{chunk-YKRJTYNP.js → chunk-6UJ7RDI7.js} +4 -4
  34. package/dist/{chunk-MZNWZUJM.js → chunk-7FBCRWVT.js} +288 -288
  35. package/dist/{chunk-UA6W4XFJ.js → chunk-7JSOSVLP.js} +2 -2
  36. package/dist/chunk-7N3OLLSL.js +637 -0
  37. package/dist/{chunk-KKEYGFX4.js → chunk-7QQRPB2E.js} +11 -11
  38. package/dist/{chunk-N37QC5FV.js → chunk-A6DULIMH.js} +21 -9
  39. package/dist/{fleet-decisions-S3PTZV2D.js → chunk-AB3QXXBC.js} +5 -41
  40. package/dist/chunk-ACCECAH4.js +49 -0
  41. package/dist/{chunk-CP3HIR5H.js → chunk-AM6CEP2K.js} +20 -19
  42. package/dist/chunk-AUHVBIDW.js +19 -0
  43. package/dist/{chunk-BQQ5MXUC.js → chunk-AY4XE6GN.js} +19 -13
  44. package/dist/{chunk-ISNCCX42.js → chunk-BBA2TAWV.js} +10 -9
  45. package/dist/chunk-BFPHMSK7.js +169 -0
  46. package/dist/{chunk-LVFANMOH.js → chunk-BHJMMCXS.js} +4 -4
  47. package/dist/{chunk-DO7M3LSX.js → chunk-BMNVVKEW.js} +40 -93
  48. package/dist/{chunk-VTYHHQ57.js → chunk-CTGZCEI6.js} +2 -2
  49. package/dist/{chunk-RTLNFZMD.js → chunk-DIAJYJYG.js} +3 -3
  50. package/dist/chunk-EHZRAB4U.js +63 -0
  51. package/dist/{chunk-KS7ETA3P.js → chunk-EM2DIQAJ.js} +3 -3
  52. package/dist/{chunk-MNQN3X6Y.js → chunk-ETF4ROKH.js} +5 -5
  53. package/dist/{chunk-WN552PKN.js → chunk-F2YM3JY4.js} +744 -1134
  54. package/dist/{chunk-7EEGBKV4.js → chunk-FEBQWHJT.js} +24 -19
  55. package/dist/{chunk-4QKAITQT.js → chunk-FPS4R2RN.js} +74 -10
  56. package/dist/chunk-G5R53COU.js +68 -0
  57. package/dist/chunk-GHXGMFQ5.js +40 -0
  58. package/dist/{chunk-GFQ7P2UF.js → chunk-GJDRMBDI.js} +10 -10
  59. package/dist/{chunk-LZBMXNLP.js → chunk-GM4TY6VN.js} +43 -6
  60. package/dist/{chunk-NCCQ6DVS.js → chunk-GREYLTZ5.js} +8 -8
  61. package/dist/{chunk-HOX4YZ2K.js → chunk-H2WSCZZT.js} +19 -3
  62. package/dist/{chunk-3LXJOICS.js → chunk-H6IUCY6Q.js} +2 -2
  63. package/dist/{chunk-BO4XV5VX.js → chunk-H72DCH3E.js} +95 -206
  64. package/dist/{chunk-SEDI5K5B.js → chunk-H7TXJR23.js} +20 -20
  65. package/dist/chunk-HBJQQTKM.js +40 -0
  66. package/dist/chunk-HCVKSGNZ.js +990 -0
  67. package/dist/chunk-HVCAY2FH.js +67 -0
  68. package/dist/{chunk-34XHRVKG.js → chunk-I47EJPYL.js} +3 -3
  69. package/dist/{chunk-4N2RZ4TO.js → chunk-IALGWTLO.js} +3 -3
  70. package/dist/{chunk-IQCNVLO6.js → chunk-IALZJE37.js} +10 -7
  71. package/dist/{chunk-DLIYANB7.js → chunk-IC7JXLOM.js} +16 -11
  72. package/dist/{chunk-G4LGUTOE.js → chunk-IOSVTTCD.js} +5 -5
  73. package/dist/{chunk-DBREN25X.js → chunk-IPTPMLA6.js} +8 -3
  74. package/dist/{chunk-V552WL53.js → chunk-IZZI3SKQ.js} +3 -67
  75. package/dist/{chunk-TN5FW4XY.js → chunk-JIYWMQZ5.js} +12 -9
  76. package/dist/{chunk-T7QQBNLH.js → chunk-JKU34ACI.js} +10 -8
  77. package/dist/chunk-JOBN2YQQ.js +176 -0
  78. package/dist/chunk-JOL2QRLE.js +152 -0
  79. package/dist/{chunk-GXIWHXDB.js → chunk-JTR3VSV3.js} +3 -3
  80. package/dist/{chunk-T334FW2H.js → chunk-JU6MAMRJ.js} +7 -7
  81. package/dist/chunk-JURMQWVJ.js +15 -0
  82. package/dist/{chunk-CULVKYTK.js → chunk-K3XN4LZ4.js} +5 -5
  83. package/dist/{chunk-3T4DXWP6.js → chunk-KIVFXGBM.js} +27 -7
  84. package/dist/chunk-KKRXONXG.js +43 -0
  85. package/dist/{chunk-YPRSNUTC.js → chunk-KOAHT3N2.js} +2 -2
  86. package/dist/chunk-KP5BPXR3.js +73 -0
  87. package/dist/{chunk-UA3W4FGC.js → chunk-KRJQG47M.js} +6 -6
  88. package/dist/{chunk-GI5RRMAH.js → chunk-KW6OJ7IY.js} +19 -21
  89. package/dist/{chunk-A46ILRS2.js → chunk-L3NBWLSN.js} +4 -4
  90. package/dist/{chunk-MZHXENL7.js → chunk-L4RUTLRL.js} +8 -8
  91. package/dist/{chunk-P5SC4DLJ.js → chunk-LGTVWPRN.js} +2 -2
  92. package/dist/{chunk-65BGHOUR.js → chunk-LSQW6KZO.js} +5 -5
  93. package/dist/{chunk-TZHN5ITX.js → chunk-LWJYOHT3.js} +8 -8
  94. package/dist/{chunk-U3TPUXOQ.js → chunk-M6YLF66Z.js} +74 -40
  95. package/dist/chunk-MJ4QEJVT.js +185 -0
  96. package/dist/{chunk-T4TY5GG3.js → chunk-MO65K5CH.js} +5 -5
  97. package/dist/{chunk-TZ6UVP2H.js → chunk-MTOZEQHL.js} +8 -8
  98. package/dist/chunk-MZDPF35R.js +45 -0
  99. package/dist/{chunk-P4DL2LM5.js → chunk-MZKYVIWW.js} +8 -119
  100. package/dist/{chunk-KAFMW7WM.js → chunk-NBPA5QM6.js} +2 -2
  101. package/dist/{chunk-EUEXGXXR.js → chunk-NMBEW4PP.js} +5 -5
  102. package/dist/{chunk-SELG4SUR.js → chunk-NPLLK3HO.js} +72 -89
  103. package/dist/{chunk-VCRVEDUC.js → chunk-NSYGPIVW.js} +5 -5
  104. package/dist/{context-7HJEWTTP.js → chunk-NXTV5OI5.js} +36 -90
  105. package/dist/{chunk-IMOD2YPV.js → chunk-NYDG4QP4.js} +9 -19
  106. package/dist/{chunk-6CA2BHOR.js → chunk-OA2GDACN.js} +5 -5
  107. package/dist/{chunk-A67NR5AT.js → chunk-PJI57EC6.js} +14 -11
  108. package/dist/{chunk-IJMW64DX.js → chunk-PJJBUGMR.js} +50 -50
  109. package/dist/{chunk-CPXGJI2A.js → chunk-PNJE7JPS.js} +20 -5
  110. package/dist/chunk-PP23PZEV.js +1347 -0
  111. package/dist/chunk-PPIFDSBK.js +409 -0
  112. package/dist/{chunk-T52TPHYC.js → chunk-PTFISXQO.js} +8 -7
  113. package/dist/{chunk-C6GEXX4L.js → chunk-QB33Z5S7.js} +5 -5
  114. package/dist/{chunk-VMATUZB6.js → chunk-QGNII5VC.js} +10 -10
  115. package/dist/{chunk-TLTGZTXI.js → chunk-QI72X67S.js} +104 -27
  116. package/dist/chunk-QKHZZFKH.js +98 -0
  117. package/dist/{chunk-PFLOULP3.js → chunk-RDKX2PME.js} +4 -4
  118. package/dist/{chunk-B5ZTR6KZ.js → chunk-RL7LJYN4.js} +1 -1
  119. package/dist/chunk-RPMNIFRY.js +65 -0
  120. package/dist/{chunk-L3Z5ANCV.js → chunk-RQROVOV3.js} +13 -11
  121. package/dist/{chunk-6YHPAAZR.js → chunk-S34A7BSP.js} +3 -3
  122. package/dist/{chunk-5ZSZEYJK.js → chunk-SJETVJHX.js} +2 -2
  123. package/dist/{chunk-77CZRFTE.js → chunk-SJMNU4ZS.js} +2 -2
  124. package/dist/chunk-SLLG2G44.js +85 -0
  125. package/dist/{chunk-GVZFCJHE.js → chunk-SQAZN2V3.js} +48 -22
  126. package/dist/{chunk-2O2LVQQK.js → chunk-SQBT46OF.js} +2 -2
  127. package/dist/{chunk-ZGIGW4ZG.js → chunk-TCUOGIL2.js} +5 -5
  128. package/dist/{chunk-DACXIVVF.js → chunk-TIWPKCVO.js} +5 -5
  129. package/dist/{chunk-5CMARGPF.js → chunk-UIU7MGZ3.js} +11 -2
  130. package/dist/chunk-USBBEKHW.js +177 -0
  131. package/dist/{chunk-WLHX3MM5.js → chunk-V4XJWDHR.js} +21 -11
  132. package/dist/{chunk-MBJO5VNZ.js → chunk-VPWGADBG.js} +33 -33
  133. package/dist/{chunk-UUQ5G6EZ.js → chunk-VWFCAK34.js} +6 -6
  134. package/dist/{chunk-6CB2IL4N.js → chunk-W5RM7YAH.js} +1 -1
  135. package/dist/{chunk-4MFBBY2Z.js → chunk-W72LLZAV.js} +3 -3
  136. package/dist/{chunk-4UHVS5T7.js → chunk-WGRDABW7.js} +8 -8
  137. package/dist/{chunk-XR3XJN2M.js → chunk-WWRV5RJI.js} +4 -4
  138. package/dist/{chunk-24TOGHPO.js → chunk-X6FLVUM5.js} +4 -4
  139. package/dist/{chunk-6YA46L5A.js → chunk-XFLSL7BT.js} +2 -2
  140. package/dist/{chunk-QKWL7SYE.js → chunk-XJZEDCNT.js} +50 -39
  141. package/dist/{chunk-UWD3JD5X.js → chunk-XLLEL3K7.js} +10 -10
  142. package/dist/{chunk-2GPGAE5W.js → chunk-XNIZBOFV.js} +15 -1
  143. package/dist/chunk-XNZWWDC3.js +686 -0
  144. package/dist/{chunk-WBVKKTUT.js → chunk-XRECG65F.js} +2 -2
  145. package/dist/chunk-XTQ7MEJG.js +457 -0
  146. package/dist/{chunk-GEVQNST4.js → chunk-XZWSP67B.js} +2 -2
  147. package/dist/{chunk-WB7POC6M.js → chunk-Y3M2T5RO.js} +6 -6
  148. package/dist/{chunk-RXFPB32E.js → chunk-YJCCMYYT.js} +2 -2
  149. package/dist/{chunk-EUZRMP4Y.js → chunk-YPQOPFP7.js} +20 -20
  150. package/dist/{chunk-USZA7GWL.js → chunk-YQ3GFEUY.js} +2 -2
  151. package/dist/{chunk-BAU36233.js → chunk-YQYINEJI.js} +9 -9
  152. package/dist/{chunk-CE64C5K5.js → chunk-ZF6CV4WZ.js} +1356 -235
  153. package/dist/{chunk-3XE4NRLF.js → chunk-ZKJU55MX.js} +4 -2
  154. package/dist/{chunk-IZYTT3CD.js → chunk-ZKQ63XZ5.js} +16 -39
  155. package/dist/{chunk-6TAATXXH.js → chunk-ZKVMDNAN.js} +7 -7
  156. package/dist/chunk-ZST3FRCV.js +132 -0
  157. package/dist/cli/index.js +50 -38
  158. package/dist/{clio-L2P7S2R2.js → clio-JUDCLNHC.js} +11 -11
  159. package/dist/clio-context-tools-FT672MNZ.js +136 -0
  160. package/dist/{code-nav-B5LNX4KU.js → code-nav-7OVCTP2Z.js} +39 -37
  161. package/dist/{components-63MMQKUT.js → components-OZXZMDWU.js} +11 -11
  162. package/dist/config-P3ZQVF63.js +275 -0
  163. package/dist/config-graph-GKAOBAS5.js +160 -0
  164. package/dist/{configure-LMVQJ46J.js → configure-25LRYZJG.js} +56 -55
  165. package/dist/context-72VQV7JX.js +73 -0
  166. package/dist/{context-YG2LZDYZ.js → context-COWRWXP3.js} +89 -83
  167. package/dist/{context-XSZKKFBW.js → context-WB3D474G.js} +16 -16
  168. package/dist/{context-clear-AC5NXHM2.js → context-clear-Y4LYMWC6.js} +88 -82
  169. package/dist/{context-index-KKTPRV5G.js → context-index-W6A4V7OC.js} +4 -4
  170. package/dist/{context-map-T7ROR5D5.js → context-map-DKL3QT6D.js} +3 -3
  171. package/dist/{context-working-set-F4Q4J3NS.js → context-working-set-TMZYVC7A.js} +27 -25
  172. package/dist/data-tool-KMBWKKWR.js +2987 -0
  173. package/dist/{detail-H73BEF2N.js → detail-4GLROGY5.js} +89 -83
  174. package/dist/{dispatch-runner-3RY5FSJC.js → dispatch-runner-TR3LBP5P.js} +113 -107
  175. package/dist/docs-ZK777W2G.js +101 -0
  176. package/dist/{doctor-EQYJOGUG.js → doctor-WC4OV2OB.js} +76 -73
  177. package/dist/{eval-4P7O6CCE.js → eval-FUNWJNUJ.js} +88 -73
  178. package/dist/{eval-inventory-QOYZERXJ.js → eval-inventory-CX24K2JT.js} +5 -60
  179. package/dist/evals-L73EBHSU.js +104 -0
  180. package/dist/{evidence-O76QF7TZ.js → evidence-AVJ2RTHX.js} +99 -93
  181. package/dist/{evidence-D6GUSYJW.js → evidence-P4NZOAK7.js} +88 -82
  182. package/dist/evidence-Y55WKYHH.js +246 -0
  183. package/dist/{evolve-H47BCETS.js → evolve-MAWKRYWF.js} +93 -87
  184. package/dist/{extensions-NNL3ZOCU.js → extensions-PYQH3H47.js} +14 -13
  185. package/dist/fleet-M4H2QBWT.js +268 -0
  186. package/dist/{fleet-KMNS6NOM.js → fleet-ULBXXRDR.js} +146 -138
  187. package/dist/{fleet-commands-DOWSYCBX.js → fleet-commands-7NNC4JZU.js} +18 -17
  188. package/dist/fleet-decisions-EHEY7KPU.js +52 -0
  189. package/dist/{fleet-graph-F2DE2TME.js → fleet-graph-LQ2AHZT3.js} +24 -24
  190. package/dist/{fleet-inspect-EN2Q6IVB.js → fleet-inspect-5IGBIIYZ.js} +98 -258
  191. package/dist/{fleet-preflight-FRLETDD3.js → fleet-preflight-UTTNOKMG.js} +9 -4
  192. package/dist/{fleet-validate-B2XDLS57.js → fleet-validate-YGILJKA6.js} +29 -29
  193. package/dist/{fleet-verify-4JKUWGJ7.js → fleet-verify-AUWTCDKR.js} +88 -82
  194. package/dist/{fleet-view-BHJFW26B.js → fleet-view-TGUFCY5A.js} +90 -84
  195. package/dist/{init-XAT5N5YM.js → init-GFN2Z7NF.js} +111 -104
  196. package/dist/install-6PIF6F6W.js +19 -0
  197. package/dist/{interop-FVECHFKG.js → interop-EF5JUWWK.js} +29 -29
  198. package/dist/{inventory-7KFQGLCV.js → inventory-I6VJDDYF.js} +90 -84
  199. package/dist/library-3J5IO2OJ.js +75 -0
  200. package/dist/{library-QAPAO23R.js → library-IJTOFTDS.js} +20 -19
  201. package/dist/{library-NY2XOT75.js → library-Z3KZSHPE.js} +35 -35
  202. package/dist/{library-import-5Y6MAS3R.js → library-import-IMKFLDHX.js} +29 -29
  203. package/dist/{library-inventory-JT6HWITQ.js → library-inventory-CQP5D6GU.js} +21 -21
  204. package/dist/{library-validation-EQUH25DC.js → library-validation-33UTX7AI.js} +19 -19
  205. package/dist/mcp-5FWZKUS6.js +26 -0
  206. package/dist/{memory-DYVTTCP6.js → memory-36CWN67Y.js} +93 -87
  207. package/dist/{models-MASFJ6Y2.js → models-KQ6PQJJQ.js} +57 -56
  208. package/dist/{monitor-YMP4NXJJ.js → monitor-XX6ZD6KC.js} +98 -91
  209. package/dist/{orchestrator-AFQRRTEI.js → orchestrator-SK6HDAOP.js} +1537 -832
  210. package/dist/{panes-NICTHQCV.js → panes-L27QRXUH.js} +14 -14
  211. package/dist/{panes-D3Y2KFG5.js → panes-LXZIWNOZ.js} +4 -4
  212. package/dist/{paths-PSFAUIGO.js → paths-7DJDU4P4.js} +6 -6
  213. package/dist/{preload-5Q7VXRFJ.js → preload-K2TDYI4Y.js} +88 -82
  214. package/dist/{reset-7NKZK7JN.js → reset-73VU3XNT.js} +13 -13
  215. package/dist/{resources-NILSIZAT.js → resources-3BYJYVYL.js} +24 -24
  216. package/dist/{run-BPZGEBZV.js → run-AR7PY6GW.js} +144 -136
  217. package/dist/run-script-H2KUDIII.js +41 -0
  218. package/dist/settings-3VMBMWID.js +72 -0
  219. package/dist/{share-EZ6ERBMH.js → share-HVWH4FPF.js} +30 -30
  220. package/dist/{skills-BTVVNYVM.js → skills-5TYEY75Q.js} +30 -30
  221. package/dist/{skills-eval-UY34MNK7.js → skills-eval-CK3MD63Z.js} +114 -103
  222. package/dist/{skills-inventory-JDHSIA7I.js → skills-inventory-KSFYG3I6.js} +24 -24
  223. package/dist/{slash-commands-K4FNQ2AT.js → slash-commands-DMVHML7P.js} +60 -57
  224. package/dist/{steer-2B3EQGFH.js → steer-XCD6V3EW.js} +4 -4
  225. package/dist/{support-L2SOL3IE.js → support-JAZL6VBR.js} +7 -7
  226. package/dist/system-3TDQRMZZ.js +116 -0
  227. package/dist/{targets-44VKGFLN.js → targets-EZKHAYRN.js} +74 -72
  228. package/dist/{tasks-3KODKFU7.js → tasks-SNEFHWYW.js} +18 -18
  229. package/dist/{terminal-lease-LXA7MMPO.js → terminal-lease-BNLFA4OF.js} +8 -7
  230. package/dist/{tools-3UB7TEVR.js → tools-7IM6BDCE.js} +12 -12
  231. package/dist/{trace-TAMIU4OJ.js → trace-C3MBGD4S.js} +16 -65
  232. package/dist/{tui-primitives-A6MUW32V.js → tui-primitives-36BY2774.js} +2 -2
  233. package/dist/{uninstall-QYVRPEM4.js → uninstall-WWLOSZ42.js} +35 -10
  234. package/dist/{upgrade-7PMKM2JH.js → upgrade-ETK2JNSJ.js} +42 -51
  235. package/dist/{usage-6EQV7EQK.js → usage-S2HOB7BZ.js} +112 -102
  236. package/dist/{verifiers-JLITWSHU.js → verifiers-QDTEVH7R.js} +26 -24
  237. package/dist/{verify-T7NAEVIG.js → verify-SUKUK6XM.js} +16 -15
  238. package/dist/web/client/THIRD_PARTY_LICENSES.md +1809 -0
  239. package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +1 -0
  240. package/dist/web/client/assets/arc-Pry-7G1_.js +1 -0
  241. package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +1 -0
  242. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +36 -0
  243. package/dist/web/client/assets/array-BifhSqXX.js +1 -0
  244. package/dist/web/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
  245. package/dist/web/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
  246. package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +129 -0
  247. package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +38 -0
  248. package/dist/web/client/assets/channel-c4EeUUqA.js +1 -0
  249. package/dist/web/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  250. package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +62 -0
  251. package/dist/web/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  252. package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +2 -0
  253. package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +125 -0
  254. package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +1 -0
  255. package/dist/web/client/assets/chunk-FOHPRMQF-CoA4358r.js +161 -0
  256. package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +72 -0
  257. package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +1 -0
  258. package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +231 -0
  259. package/dist/web/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  260. package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +1 -0
  261. package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +10 -0
  262. package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +1 -0
  263. package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +1 -0
  264. package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +1 -0
  265. package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +168 -0
  266. package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +88 -0
  267. package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +206 -0
  268. package/dist/web/client/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
  269. package/dist/web/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  270. package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +1 -0
  271. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +1 -0
  272. package/dist/web/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
  273. package/dist/web/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
  274. package/dist/web/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +1 -0
  275. package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +1 -0
  276. package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +62 -0
  277. package/dist/web/client/assets/cytoscape.esm-c2aL46s-.js +321 -0
  278. package/dist/web/client/assets/dagre-C-rnJpZF.js +1 -0
  279. package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +4 -0
  280. package/dist/web/client/assets/defaultLocale-BFoDCU3G.js +1 -0
  281. package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +30 -0
  282. package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +41 -0
  283. package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +3 -0
  284. package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +24 -0
  285. package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +24 -0
  286. package/dist/web/client/assets/dist-v5Q1xZ2K.js +1 -0
  287. package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +1 -0
  288. package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +99 -0
  289. package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +1 -0
  290. package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +1 -0
  291. package/dist/web/client/assets/framework-YGoR34M4.js +9 -0
  292. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +292 -0
  293. package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +1 -0
  294. package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +106 -0
  295. package/dist/web/client/assets/graphlib-DS17s2tU.js +1 -0
  296. package/dist/web/client/assets/index-CVcy0FAn.js +75 -0
  297. package/dist/web/client/assets/index-Dsi52apB.css +1 -0
  298. package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +1 -0
  299. package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +2 -0
  300. package/dist/web/client/assets/init-C-OQMol4.js +1 -0
  301. package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +70 -0
  302. package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +139 -0
  303. package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +89 -0
  304. package/dist/web/client/assets/katex-ZlcWpGUi.js +257 -0
  305. package/dist/web/client/assets/line-BIDAcEtX.js +1 -0
  306. package/dist/web/client/assets/linear-SzVmGSw4.js +1 -0
  307. package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +7 -0
  308. package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +44 -0
  309. package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +96 -0
  310. package/dist/web/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  311. package/dist/web/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  312. package/dist/web/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  313. package/dist/web/client/assets/ordinal-BDEzSJ7C.js +1 -0
  314. package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +1 -0
  315. package/dist/web/client/assets/path-fybaL0A-.js +1 -0
  316. package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +1 -0
  317. package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +1 -0
  318. package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +39 -0
  319. package/dist/web/client/assets/prism-bash-D6zCJ74D.js +1 -0
  320. package/dist/web/client/assets/prism-c-04YixN25.js +1 -0
  321. package/dist/web/client/assets/prism-clike-DapgWyxx.js +1 -0
  322. package/dist/web/client/assets/prism-core-BtsZdCS6.js +1 -0
  323. package/dist/web/client/assets/prism-cpp-C-lJbC-6.js +1 -0
  324. package/dist/web/client/assets/prism-css-CPgOzxXp.js +1 -0
  325. package/dist/web/client/assets/prism-diff-BF8m0_mq.js +3 -0
  326. package/dist/web/client/assets/prism-docker-DkT6yOFj.js +1 -0
  327. package/dist/web/client/assets/prism-fortran-Be5x3y1V.js +1 -0
  328. package/dist/web/client/assets/prism-go-C_8qAH5n.js +1 -0
  329. package/dist/web/client/assets/prism-ini-BESK3y0r.js +1 -0
  330. package/dist/web/client/assets/prism-javascript-BnO-swvr.js +1 -0
  331. package/dist/web/client/assets/prism-json-Dp_-W-Hv.js +1 -0
  332. package/dist/web/client/assets/prism-jsx-D-D0NWtC.js +1 -0
  333. package/dist/web/client/assets/prism-julia-DIjOgiAV.js +1 -0
  334. package/dist/web/client/assets/prism-latex-DNMbqcH_.js +1 -0
  335. package/dist/web/client/assets/prism-makefile-CRKWLQ8l.js +1 -0
  336. package/dist/web/client/assets/prism-markdown-C0FPJ1Iz.js +1 -0
  337. package/dist/web/client/assets/prism-markup-Cp04rIa1.js +1 -0
  338. package/dist/web/client/assets/prism-matlab-D-nk08al.js +1 -0
  339. package/dist/web/client/assets/prism-python-CfiSVtM6.js +1 -0
  340. package/dist/web/client/assets/prism-r-QmNGR8LX.js +1 -0
  341. package/dist/web/client/assets/prism-rust-Bu9N8X3N.js +1 -0
  342. package/dist/web/client/assets/prism-shell-session-Be4UuYoM.js +1 -0
  343. package/dist/web/client/assets/prism-sql-CYhVDMEE.js +1 -0
  344. package/dist/web/client/assets/prism-toml-DKb54GAT.js +1 -0
  345. package/dist/web/client/assets/prism-tsx-p6J2Kc_4.js +1 -0
  346. package/dist/web/client/assets/prism-typescript-BMqONzxf.js +1 -0
  347. package/dist/web/client/assets/prism-yaml-C0JHu8gr.js +1 -0
  348. package/dist/web/client/assets/purify.es-ChwZkWde.js +3 -0
  349. package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +7 -0
  350. package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +1 -0
  351. package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +1 -0
  352. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +1 -0
  353. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +1 -0
  354. package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +1 -0
  355. package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +1 -0
  356. package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +84 -0
  357. package/dist/web/client/assets/rolldown-runtime-hePW80VL.js +1 -0
  358. package/dist/web/client/assets/rough.esm-Dy-Kn_BL.js +1 -0
  359. package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +40 -0
  360. package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +162 -0
  361. package/dist/web/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  362. package/dist/web/client/assets/src-B6xuSHsQ.js +1 -0
  363. package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +1 -0
  364. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +1 -0
  365. package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +1 -0
  366. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +8 -0
  367. package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +120 -0
  368. package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +1 -0
  369. package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +1 -0
  370. package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +34 -0
  371. package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +1 -0
  372. package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +78 -0
  373. package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +7 -0
  374. package/dist/web/client/clio-coder-logo.webp +0 -0
  375. package/dist/web/client/icon-192.png +0 -0
  376. package/dist/web/client/icon-512.png +0 -0
  377. package/dist/web/client/index.html +6 -0
  378. package/dist/web/client/manifest.webmanifest +15 -0
  379. package/dist/web/client/offline.css +55 -0
  380. package/dist/web/client/offline.html +5 -0
  381. package/dist/web/client/offline.js +27 -0
  382. package/dist/web/client/sw.js +34 -0
  383. package/dist/web/ops-worker.js +37 -0
  384. package/dist/web/reads-worker.js +1726 -0
  385. package/dist/web/server.js +8499 -0
  386. package/dist/web-EMGUGGEI.js +13 -0
  387. package/dist/{web-fetch-W4TNW4Q7.js → web-fetch-6BRRVQON.js} +22 -5
  388. package/dist/{wiki-generate-T2TJQJUA.js → wiki-generate-XHSJTDOP.js} +120 -113
  389. package/dist/{with-panes-CHFC7HGI.js → with-panes-Z6BTEHMZ.js} +12 -12
  390. package/dist/worker/entry.js +113 -99
  391. package/docs/README.md +28 -27
  392. package/docs/architecture/acp.md +5 -9
  393. package/docs/architecture/alcf-provider.md +0 -3
  394. package/docs/architecture/architecture.md +0 -3
  395. package/docs/architecture/artifact-placement.md +12 -4
  396. package/docs/architecture/artifact-versions.md +0 -3
  397. package/docs/architecture/capacity-and-scheduling.md +0 -3
  398. package/docs/architecture/context-engine.md +0 -3
  399. package/docs/architecture/context-working-set.md +0 -3
  400. package/docs/architecture/dispatch-architecture-rationale.md +0 -3
  401. package/docs/architecture/dispatch-typed-intent.md +0 -3
  402. package/docs/architecture/evidence-and-memory.md +0 -3
  403. package/docs/architecture/library.md +1 -3
  404. package/docs/architecture/middleware-and-components.md +0 -3
  405. package/docs/architecture/model-catalog.md +1 -4
  406. package/docs/architecture/observability.md +0 -3
  407. package/docs/architecture/pi-boundary.md +6 -9
  408. package/docs/architecture/prompt-envelope-and-tools.md +37 -30
  409. package/docs/architecture/provider-adapter-cookbook.md +1 -4
  410. package/docs/architecture/safety-model.md +19 -9
  411. package/docs/architecture/session-lifecycle.md +10 -7
  412. package/docs/architecture/time-conventions.md +0 -3
  413. package/docs/architecture/trace-store.md +28 -20
  414. package/docs/architecture/tui-design.md +38 -18
  415. package/docs/architecture/worker-context.md +1 -3
  416. package/docs/architecture/worker-dispatch-mechanics.md +1 -4
  417. package/docs/guide/authoring-plugins.md +1 -3
  418. package/docs/guide/built-in-agents.md +0 -3
  419. package/docs/guide/commands-and-modes.md +41 -25
  420. package/docs/guide/configuration-and-targets.md +204 -9
  421. package/docs/guide/configuration-reference.md +125 -17
  422. package/docs/guide/environment-variables.md +2 -8
  423. package/docs/guide/exit-codes-and-output.md +0 -3
  424. package/docs/guide/extensions-and-sharing.md +0 -3
  425. package/docs/guide/fleet-dispatch.md +3 -5
  426. package/docs/guide/glossary.md +1 -4
  427. package/docs/guide/harness-extensions.md +0 -2
  428. package/docs/guide/installation-and-lifecycle.md +3 -6
  429. package/docs/guide/interop.md +0 -2
  430. package/docs/guide/panes-and-files.md +0 -3
  431. package/docs/guide/plugins.md +0 -3
  432. package/docs/guide/proactive-memory.md +0 -3
  433. package/docs/guide/resource-library.md +1 -3
  434. package/docs/guide/skills-marketplace.md +0 -2
  435. package/docs/guide/tool-usage.md +166 -67
  436. package/docs/guide/troubleshooting.md +1 -4
  437. package/docs/history/config-knobs-audit.md +0 -3
  438. package/docs/history/release-cut-checklist.md +0 -3
  439. package/docs/process/development-pipeline.md +0 -3
  440. package/docs/process/documentation-coverage.md +3 -3
  441. package/docs/process/documentation-guide.md +16 -22
  442. package/docs/process/eval-runner.md +0 -3
  443. package/docs/process/evals-internal.md +0 -3
  444. package/docs/process/evolution.md +0 -3
  445. package/docs/process/fleet-demo-runbook.md +6 -9
  446. package/docs/process/git-commit-provenance.md +0 -3
  447. package/docs/process/performance-methodology.md +1 -4
  448. package/docs/process/release-cut-checklist.md +114 -221
  449. package/docs/process/scientific-validation.md +23 -6
  450. package/docs/process/tool-audit-v0.4.9.md +357 -0
  451. package/library/registry.yaml +2 -2
  452. package/library/skills/meta/clio-coder-test/SKILL.md +25 -15
  453. package/library/skills/meta/clio-coder-test/evals.md +16 -2
  454. package/library/skills/meta/clio-coder-test/plugin.json +1 -1
  455. package/library/skills/meta/clio-coder-test/references/test-map.md +19 -18
  456. package/library/skills/registry.yaml +2 -2
  457. package/library/skills/skill-marketplace.json +1 -1
  458. package/package.json +13 -11
  459. package/src/cli/argv.ts +31 -0
  460. package/src/cli/clio.ts +17 -13
  461. package/src/cli/config.ts +4 -0
  462. package/src/cli/docs.ts +65 -328
  463. package/src/cli/doctor-panes.ts +1 -1
  464. package/src/cli/doctor.ts +3 -1
  465. package/src/cli/index.ts +17 -2
  466. package/src/cli/mcp.ts +106 -0
  467. package/src/cli/skills-eval.ts +8 -2
  468. package/src/cli/trace.ts +4 -65
  469. package/src/cli/uninstall.ts +26 -0
  470. package/src/cli/upgrade.ts +34 -38
  471. package/src/cli/usage.ts +3 -0
  472. package/src/cli/verifiers.ts +1 -1
  473. package/src/cli/web.ts +79 -0
  474. package/src/core/bash-exec.ts +27 -4
  475. package/src/core/bus-events.ts +3 -4
  476. package/src/core/config.ts +73 -1
  477. package/src/core/defaults.ts +10 -1
  478. package/src/core/domain-loader.ts +37 -28
  479. package/src/core/event-bus.ts +1 -1
  480. package/src/core/run-records.ts +438 -0
  481. package/src/core/safe-exec.ts +506 -56
  482. package/src/core/skill-activation.ts +5 -3
  483. package/src/core/termination.ts +16 -12
  484. package/src/core/tool-names.ts +33 -12
  485. package/src/domains/agents/contract.ts +1 -1
  486. package/src/domains/agents/extension.ts +18 -10
  487. package/src/domains/config/extension.ts +5 -4
  488. package/src/domains/context/clio-md.ts +1 -1
  489. package/src/domains/context/worker/pressure.ts +6 -2
  490. package/src/domains/context/working-set/path-index.ts +7 -2
  491. package/src/domains/dispatch/code-step.ts +7 -2
  492. package/src/domains/dispatch/contract.ts +7 -0
  493. package/src/domains/dispatch/execution-role.ts +3 -3
  494. package/src/domains/dispatch/execution-scheduler.ts +204 -79
  495. package/src/domains/dispatch/extension.ts +206 -26
  496. package/src/domains/dispatch/fleet-preflight.ts +18 -3
  497. package/src/domains/dispatch/fleet-run.ts +1 -0
  498. package/src/domains/dispatch/gate-decisions.ts +3 -3
  499. package/src/domains/dispatch/heartbeat.ts +1 -1
  500. package/src/domains/dispatch/host-verification.ts +16 -14
  501. package/src/domains/dispatch/index.ts +1 -0
  502. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  503. package/src/domains/dispatch/receipt-findings.ts +3 -4
  504. package/src/domains/dispatch/receipt-integrity.ts +3 -0
  505. package/src/domains/dispatch/reservation-store.ts +7 -9
  506. package/src/domains/dispatch/route-facts.ts +1 -1
  507. package/src/domains/dispatch/state.ts +4 -5
  508. package/src/domains/dispatch/types.ts +3 -1
  509. package/src/domains/eval/metrics/tracked.ts +22 -2
  510. package/src/domains/evidence/build.ts +35 -7
  511. package/src/domains/extensions/operator-runtime.ts +3 -1
  512. package/src/domains/gateway/mcp/client.ts +923 -0
  513. package/src/domains/gateway/mcp/config.ts +456 -0
  514. package/src/domains/gateway/mcp/index.ts +88 -0
  515. package/src/domains/gateway/mcp/protocol.ts +273 -0
  516. package/src/domains/gateway/mcp/trust.ts +263 -0
  517. package/src/domains/lifecycle/doctor.ts +17 -3
  518. package/src/domains/middleware/hooks.ts +2 -2
  519. package/src/domains/mux/contract.ts +5 -9
  520. package/src/domains/mux/detect.ts +1 -1
  521. package/src/domains/mux/extension.ts +1 -1
  522. package/src/domains/mux/protocol.ts +5 -7
  523. package/src/domains/mux/socket-client.ts +3 -3
  524. package/src/domains/observability/accountability.ts +2 -2
  525. package/src/domains/observability/background-memory-usage.ts +3 -0
  526. package/src/domains/observability/compaction-usage.ts +2 -0
  527. package/src/domains/observability/contract.ts +7 -3
  528. package/src/domains/observability/cost.ts +5 -0
  529. package/src/domains/observability/evidence-index.ts +2 -2
  530. package/src/domains/observability/extension.ts +1 -0
  531. package/src/domains/observability/out-of-turn-usage.ts +2 -0
  532. package/src/domains/observability/projection.ts +10 -0
  533. package/src/domains/observability/trace-store.ts +65 -5
  534. package/src/domains/prompts/compiler.ts +41 -23
  535. package/src/domains/prompts/extension.ts +4 -17
  536. package/src/domains/prompts/fragments/identity/docs-routing.md +2 -2
  537. package/src/domains/prompts/fragments/operating/skills.md +12 -10
  538. package/src/domains/providers/cache-deployment.ts +147 -0
  539. package/src/domains/providers/catalog.ts +12 -7
  540. package/src/domains/providers/extension.ts +27 -5
  541. package/src/domains/providers/index.ts +6 -1
  542. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +42 -10
  543. package/src/domains/providers/plugins.ts +3 -13
  544. package/src/domains/providers/probe/http.ts +44 -59
  545. package/src/domains/providers/probe/reasoning.ts +2 -0
  546. package/src/domains/providers/runtimes/common/local-synth.ts +4 -0
  547. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +20 -31
  548. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +9 -4
  549. package/src/domains/providers/types/target-descriptor.ts +17 -0
  550. package/src/domains/safety/action-classifier.ts +17 -1
  551. package/src/domains/safety/call-target.ts +14 -0
  552. package/src/domains/safety/contract.ts +1 -1
  553. package/src/domains/safety/finish-contract.ts +9 -3
  554. package/src/domains/safety/loop-detector.ts +1 -1
  555. package/src/domains/safety/policy-engine.ts +7 -0
  556. package/src/domains/safety/protected-artifacts.ts +3 -4
  557. package/src/domains/safety/rejection-feedback.ts +1 -1
  558. package/src/domains/safety/scope.ts +2 -3
  559. package/src/domains/safety/validation-contract.ts +3 -2
  560. package/src/domains/scheduling/budget.ts +5 -3
  561. package/src/domains/scheduling/contract.ts +2 -1
  562. package/src/domains/scheduling/extension.ts +3 -3
  563. package/src/domains/session/compaction/branch-summary.ts +1 -1
  564. package/src/domains/session/compaction/compact.ts +29 -3
  565. package/src/domains/session/compaction/cut-point.ts +1 -1
  566. package/src/domains/session/compaction/tokens.ts +5 -10
  567. package/src/domains/session/contract.ts +1 -1
  568. package/src/domains/session/cwd-fallback.ts +2 -2
  569. package/src/domains/session/entries.ts +1 -0
  570. package/src/domains/session/handoff.ts +5 -1
  571. package/src/domains/session/history.ts +6 -0
  572. package/src/domains/session/manager.ts +14 -7
  573. package/src/domains/session/retry.ts +2 -1
  574. package/src/domains/session/session-artifacts.ts +12 -7
  575. package/src/domains/session/task-board.ts +2 -3
  576. package/src/domains/session/usage.ts +6 -7
  577. package/src/engine/acp/server.ts +11 -0
  578. package/src/engine/ai.ts +2 -0
  579. package/src/engine/apis/openai-completions.ts +17 -4
  580. package/src/engine/loop-guard.ts +7 -0
  581. package/src/engine/prewarm.ts +232 -0
  582. package/src/engine/provider-diagnostics.ts +6 -1
  583. package/src/engine/provider-error-body.ts +65 -0
  584. package/src/engine/session.ts +118 -29
  585. package/src/engine/worker-runtime.ts +3 -0
  586. package/src/entry/boot-options.ts +2 -0
  587. package/src/entry/orchestrator.ts +38 -18
  588. package/src/interactive/chat-loop-messages.ts +3 -0
  589. package/src/interactive/chat-loop-policy.ts +1 -0
  590. package/src/interactive/chat-loop.ts +10 -12
  591. package/src/interactive/chat-panel.ts +23 -9
  592. package/src/interactive/chat-renderer.ts +33 -11
  593. package/src/interactive/clio-editor.ts +13 -5
  594. package/src/interactive/dispatch-board.ts +70 -30
  595. package/src/interactive/editor-submit.ts +30 -25
  596. package/src/interactive/footer/widgets.ts +12 -9
  597. package/src/interactive/interactive-presentation.ts +2 -3
  598. package/src/interactive/mux-bridge.ts +3 -7
  599. package/src/interactive/overlay-general-openers.ts +14 -7
  600. package/src/interactive/overlays/cwd-fallback.ts +1 -1
  601. package/src/interactive/overlays/library-model.ts +114 -35
  602. package/src/interactive/overlays/library.ts +52 -5
  603. package/src/interactive/overlays/list-overlay.ts +4 -1
  604. package/src/interactive/overlays/session-selector.ts +28 -23
  605. package/src/interactive/overlays/settings.ts +20 -1
  606. package/src/interactive/overlays/tree-selector.ts +47 -10
  607. package/src/interactive/panes-runtime.ts +1 -1
  608. package/src/interactive/prewarm.ts +11 -197
  609. package/src/interactive/renderers/compaction-summary.ts +1 -1
  610. package/src/interactive/renderers/provider-error.ts +118 -0
  611. package/src/interactive/renderers/retry-status.ts +59 -23
  612. package/src/interactive/renderers/tool-execution.ts +67 -7
  613. package/src/interactive/renderers/worker-answer.ts +198 -0
  614. package/src/interactive/renderers/worker-entry.ts +57 -163
  615. package/src/interactive/session-usage-reseed.ts +2 -0
  616. package/src/interactive/side-question.ts +2 -0
  617. package/src/interactive/slash-commands.ts +26 -1
  618. package/src/interactive/slash-spec.ts +2 -2
  619. package/src/interactive/theme/labels.ts +66 -30
  620. package/src/interactive/turn-context.ts +1 -0
  621. package/src/interactive/turn-persistence.ts +9 -1
  622. package/src/interactive/turn-prewarm.ts +126 -19
  623. package/src/interactive/turn-recovery.ts +2 -1
  624. package/src/interactive/turn-runtime.ts +36 -5
  625. package/src/interactive/view/artifacts.ts +3 -2
  626. package/src/interactive/view/view-overlay.ts +96 -20
  627. package/src/tools/agent-tools.ts +21 -7
  628. package/src/tools/artifact.ts +16 -8
  629. package/src/tools/bash.ts +90 -11
  630. package/src/tools/bootstrap.ts +42 -4
  631. package/src/tools/builtin-tool-catalog.ts +80 -11
  632. package/src/tools/context/index.ts +27 -31
  633. package/src/tools/context/library.ts +3 -1
  634. package/src/tools/context/surface.ts +12 -26
  635. package/src/tools/core-bootstrap.ts +72 -1
  636. package/src/tools/data/csv.ts +1189 -0
  637. package/src/tools/data/index.ts +308 -0
  638. package/src/tools/data/json.ts +1799 -0
  639. package/src/tools/data/jsonl.ts +561 -0
  640. package/src/tools/data/shared.ts +452 -0
  641. package/src/tools/edit-diff.ts +0 -7
  642. package/src/tools/edit.ts +115 -18
  643. package/src/tools/file-mutation-queue.ts +114 -4
  644. package/src/tools/find.ts +108 -29
  645. package/src/tools/gateway/caps.ts +11 -0
  646. package/src/tools/gateway/clio-context-surface.ts +41 -0
  647. package/src/tools/gateway/clio-context-tools.ts +77 -0
  648. package/src/tools/gateway/data-surface.ts +138 -0
  649. package/src/tools/gateway/data-tool.ts +201 -0
  650. package/src/tools/gateway/index.ts +342 -0
  651. package/src/tools/gateway/mcp-capabilities.ts +469 -0
  652. package/src/tools/grep.ts +88 -33
  653. package/src/tools/harness-extensions.ts +3 -0
  654. package/src/tools/ignore-policy.ts +7 -5
  655. package/src/tools/ls.ts +111 -20
  656. package/src/tools/policy.ts +35 -13
  657. package/src/tools/presentation.ts +6 -0
  658. package/src/tools/read.ts +634 -156
  659. package/src/tools/registry.ts +106 -8
  660. package/src/tools/run-script.ts +997 -0
  661. package/src/tools/spawn-hygiene.ts +157 -5
  662. package/src/tools/surface.ts +163 -0
  663. package/src/tools/verify/authoring.ts +8 -3
  664. package/src/tools/verify/catalog.ts +14 -1
  665. package/src/tools/verify/numeric.ts +367 -59
  666. package/src/tools/verify/perf.ts +171 -9
  667. package/src/tools/verify/scripts.ts +178 -26
  668. package/src/tools/web-fetch-surface.ts +22 -0
  669. package/src/tools/web-fetch.ts +26 -1
  670. package/src/tools/write.ts +45 -19
  671. package/src/worker/spec-contract.ts +27 -0
  672. package/dist/chunk-B6UM3OZC.js +0 -15
  673. package/dist/chunk-GJ24ODAX.js +0 -196
  674. package/dist/chunk-HRAKUPIH.js +0 -57
  675. package/dist/docs-BL7ROUFN.js +0 -292
@@ -2,8 +2,8 @@
2
2
  * Accountability read model. A pure aggregation over the sidecar evidence index
3
3
  * (see evidence-index.ts) that yields a rolling first-pass-success rate and a
4
4
  * failure-cause tag histogram for the session. This is presentation-grade
5
- * read-only data: it recomputes nothing, it only folds the rows that Slice 2
6
- * already wrote when each dispatch run finalized. Those rows are
5
+ * read-only data: it recomputes nothing, it only folds the rows written
6
+ * when each dispatch run finalized. Those rows are
7
7
  * forensic-derived and are the authority for user-visible first-pass-success
8
8
  * rates. The receipt summary is the conservative integrity-covered snapshot,
9
9
  * so a false receipt summary and a true forensic row is an intentional
@@ -27,6 +27,7 @@ export interface BackgroundMemoryStepUsage {
27
27
  output: number;
28
28
  cacheRead: number;
29
29
  cacheWrite: number;
30
+ cacheWrite1h?: number;
30
31
  reasoning: number;
31
32
  totalTokens: number;
32
33
  costUsd: number;
@@ -83,6 +84,7 @@ export function backgroundMemoryUsageRow(
83
84
  output: usage.output,
84
85
  cacheRead: usage.cacheRead,
85
86
  cacheWrite: usage.cacheWrite,
87
+ ...(usage.cacheWrite1h === undefined ? {} : { cacheWrite1h: usage.cacheWrite1h }),
86
88
  reasoning: usage.reasoning,
87
89
  totalTokens: usage.totalTokens,
88
90
  costUsd: usage.costUsd,
@@ -122,6 +124,7 @@ export function recordBackgroundMemoryStep(input: RecordBackgroundMemoryStepInpu
122
124
  output: input.usage.output,
123
125
  cacheRead: input.usage.cacheRead,
124
126
  cacheWrite: input.usage.cacheWrite,
127
+ ...(input.usage.cacheWrite1h === undefined ? {} : { cacheWrite1h: input.usage.cacheWrite1h }),
125
128
  reasoningTokens: input.usage.reasoning,
126
129
  totalTokens: input.usage.totalTokens,
127
130
  apiCalls: 1,
@@ -29,6 +29,7 @@ function observedUsage(call: CompactionCallObservation): OutOfTurnUsage {
29
29
  output: reading(raw.output),
30
30
  cacheRead: reading(raw.cacheRead),
31
31
  cacheWrite: reading(raw.cacheWrite),
32
+ ...(raw.cacheWrite1h === undefined ? {} : { cacheWrite1h: reading(raw.cacheWrite1h) }),
32
33
  reasoning: reasoning !== null && reasoning > 0 ? reasoning : null,
33
34
  totalTokens: reading(raw.totalTokens),
34
35
  costUsd,
@@ -72,6 +73,7 @@ export function recordFailedCompactionCalls(
72
73
  output: usage.output ?? 0,
73
74
  cacheRead: usage.cacheRead ?? 0,
74
75
  cacheWrite: usage.cacheWrite ?? 0,
76
+ ...(typeof usage.cacheWrite1h === "number" ? { cacheWrite1h: usage.cacheWrite1h } : {}),
75
77
  reasoningTokens: usage.reasoning ?? 0,
76
78
  totalTokens: usage.totalTokens ?? 0,
77
79
  apiCalls: 1,
@@ -76,6 +76,8 @@ export interface ObservabilityRunSummary {
76
76
  contextWindow?: number;
77
77
  lastContextTokens?: number;
78
78
  progress?: WorkerProgressSnapshot;
79
+ /** Existing validator identity/conformance, admitted with the verified receipt answer. */
80
+ resultContract?: { kind: string; conformance: string };
79
81
  receiptId?: string;
80
82
  retry?: { attempt: number; dueAtMs: number; reason: string };
81
83
  steerAcknowledgement?: { receivedAtMs: number; chars: number };
@@ -132,7 +134,9 @@ export interface ObservabilitySnapshot {
132
134
  /** Runtime readers supplied after dispatch is composed, avoiding a domain dependency cycle. */
133
135
  export interface ObservabilityRunReaders {
134
136
  dispatchSnapshot?: () => DispatchSnapshot;
135
- readReceipt?: (runId: string) => { text?: string; trust?: CanonicalTrustStatus } | null;
137
+ readReceipt?: (
138
+ runId: string,
139
+ ) => { text?: string; trust?: CanonicalTrustStatus; contractKind?: string; contract?: string } | null;
136
140
  }
137
141
 
138
142
  /** Run projection controls shared by the contract and the in-memory projection. */
@@ -160,8 +164,8 @@ export interface ObservabilityContract extends ObservabilityRunProjection {
160
164
  /**
161
165
  * Rolling first-pass-success rate, unverified successes, ungrounded claims,
162
166
  * and failure-cause histogram, aggregated
163
- * from the sidecar evidence index on call. Read-only: it folds rows Slice 2
164
- * already wrote and recomputes no evidence.
167
+ * from the sidecar evidence index on call. It folds rows written at dispatch
168
+ * completion and recomputes no evidence.
165
169
  */
166
170
  accountability(): AccountabilitySummary;
167
171
  /** Latest completed assistant stream throughput for compact footer display. */
@@ -127,6 +127,7 @@ export interface UsageBreakdown {
127
127
  output: number;
128
128
  cacheRead: number;
129
129
  cacheWrite: number;
130
+ cacheWrite1h?: number;
130
131
  reasoningTokens: number;
131
132
  totalTokens: number;
132
133
  apiCalls?: number;
@@ -151,6 +152,7 @@ export interface CostEntry {
151
152
  output: number;
152
153
  cacheRead: number;
153
154
  cacheWrite: number;
155
+ cacheWrite1h?: number;
154
156
  reasoningTokens: number;
155
157
  apiCalls?: number;
156
158
  /** Absent on an ordinary turn's call. */
@@ -215,6 +217,7 @@ export function createCostTracker(): CostTracker {
215
217
  output,
216
218
  cacheRead,
217
219
  cacheWrite,
220
+ ...(breakdown?.cacheWrite1h === undefined ? {} : { cacheWrite1h: breakdown.cacheWrite1h }),
218
221
  reasoningTokens,
219
222
  ...(apiCalls !== undefined ? { apiCalls } : {}),
220
223
  ...(label !== undefined ? { label } : {}),
@@ -224,6 +227,7 @@ export function createCostTracker(): CostTracker {
224
227
  totals.output += output;
225
228
  totals.cacheRead += cacheRead;
226
229
  totals.cacheWrite += cacheWrite;
230
+ if (breakdown?.cacheWrite1h !== undefined) totals.cacheWrite1h = (totals.cacheWrite1h ?? 0) + breakdown.cacheWrite1h;
227
231
  totals.reasoningTokens += reasoningTokens;
228
232
  totals.totalTokens += tokens;
229
233
  return resolvedUsd;
@@ -247,6 +251,7 @@ export function createCostTracker(): CostTracker {
247
251
  totals.output = 0;
248
252
  totals.cacheRead = 0;
249
253
  totals.cacheWrite = 0;
254
+ delete totals.cacheWrite1h;
250
255
  totals.reasoningTokens = 0;
251
256
  totals.totalTokens = 0;
252
257
  },
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Sidecar evidence index. A compact, append/merge-by-runId ledger written
3
3
  * under `<stateDir>/evidence-index.json` whenever a dispatch run completes and
4
- * the forensic evidence bundle is built (see extension.ts). Slice 6 reads this
5
- * to surface a rolling first-pass-success rate and a failure-cause histogram in
4
+ * the forensic evidence bundle is built (see extension.ts). The accountability
5
+ * read model uses this to surface a rolling first-pass-success rate and a failure-cause histogram in
6
6
  * observability without re-running the heavy `buildEvidence` aggregator.
7
7
  *
8
8
  * The file is a JSON array kept as a bounded ring (newest rows win, capped at
@@ -64,6 +64,7 @@ function recordDispatchCost(
64
64
  output: payload.outputTokenCount ?? 0,
65
65
  cacheRead: payload.cacheReadTokenCount ?? 0,
66
66
  cacheWrite: payload.cacheWriteTokenCount ?? 0,
67
+ ...(payload.cacheWrite1hTokenCount === undefined ? {} : { cacheWrite1h: payload.cacheWrite1hTokenCount }),
67
68
  reasoningTokens: payload.reasoningTokenCount ?? 0,
68
69
  totalTokens: payload.tokenCount,
69
70
  },
@@ -78,6 +78,7 @@ export interface OutOfTurnUsage {
78
78
  output: number | null;
79
79
  cacheRead: number | null;
80
80
  cacheWrite: number | null;
81
+ cacheWrite1h?: number | null;
81
82
  reasoning: number | null;
82
83
  totalTokens: number | null;
83
84
  costUsd: number | null;
@@ -253,6 +254,7 @@ function asOutOfTurnUsageRow(value: unknown): OutOfTurnUsageRow | null {
253
254
  output: reading(usage.output),
254
255
  cacheRead: reading(usage.cacheRead),
255
256
  cacheWrite: reading(usage.cacheWrite),
257
+ ...(usage.cacheWrite1h === undefined ? {} : { cacheWrite1h: nullableNumber(usage.cacheWrite1h) }),
256
258
  reasoning: reading(usage.reasoning),
257
259
  totalTokens: reading(usage.totalTokens),
258
260
  costUsd: reading(usage.costUsd),
@@ -401,6 +401,7 @@ export function createObservabilityProjection(bus: SafeEventBus, deps: Projectio
401
401
  function applyIdentity(summary: RunEntry, id: Partial<DispatchRunIdentity>): void {
402
402
  // A lifecycle update must earn its trust again from the current receipt.
403
403
  delete summary.trust;
404
+ delete summary.resultContract;
404
405
  if (typeof id.agentId === "string" && id.agentId.length > 0) summary.agentId = id.agentId;
405
406
  if (typeof id.targetId === "string" && id.targetId.length > 0) summary.targetId = id.targetId;
406
407
  if (typeof id.wireModelId === "string" && id.wireModelId.length > 0) summary.modelId = id.wireModelId;
@@ -459,11 +460,20 @@ export function createObservabilityProjection(bus: SafeEventBus, deps: Projectio
459
460
  }
460
461
 
461
462
  function settleFromReceipt(summary: RunEntry): void {
463
+ delete summary.resultContract;
462
464
  try {
463
465
  const facts = runReaders.readReceipt?.(summary.runId);
464
466
  // A failed or retired seal cannot supply the board's terminal answer.
465
467
  const text = facts?.trust?.artifactIntegrity.state === "verified" ? facts.text : undefined;
466
468
  summary.progressFold.settle(typeof text === "string" && text.trim().length > 0 ? text : undefined);
469
+ if (
470
+ typeof text === "string" &&
471
+ text.trim().length > 0 &&
472
+ typeof facts?.contractKind === "string" &&
473
+ typeof facts.contract === "string"
474
+ ) {
475
+ summary.resultContract = { kind: facts.contractKind, conformance: facts.contract };
476
+ }
467
477
  if (facts?.trust !== undefined) summary.trust = summarizeTrustStatus(facts.trust);
468
478
  } catch {
469
479
  summary.progressFold.settle();
@@ -202,6 +202,7 @@ export interface TraceSpendInput {
202
202
  outputTokens: number;
203
203
  cacheReadTokens: number;
204
204
  cacheWriteTokens: number;
205
+ cacheWrite1hTokens?: number;
205
206
  reasoningTokens: number;
206
207
  totalTokens: number;
207
208
  inputCostUsd?: number | null;
@@ -234,6 +235,7 @@ export interface SessionTurnUsage {
234
235
  outputTokens: number;
235
236
  cacheReadTokens: number;
236
237
  cacheWriteTokens: number;
238
+ cacheWrite1hTokens?: number;
237
239
  reasoningTokens: number;
238
240
  totalTokens: number;
239
241
  costUsd?: number | null;
@@ -363,6 +365,7 @@ export interface TracePhaseRow {
363
365
  output_tokens: number | null;
364
366
  cache_read_tokens: number | null;
365
367
  cache_write_tokens: number | null;
368
+ cache_write_1h_tokens?: number | null;
366
369
  reasoning_tokens: number | null;
367
370
  total_tokens: number | null;
368
371
  input_cost_usd: number | null;
@@ -443,7 +446,7 @@ CREATE TABLE phases (
443
446
  error TEXT,
444
447
  started_at TEXT,
445
448
  ended_at TEXT,
446
- input_tokens INTEGER, output_tokens INTEGER, cache_read_tokens INTEGER, cache_write_tokens INTEGER,
449
+ input_tokens INTEGER, output_tokens INTEGER, cache_read_tokens INTEGER, cache_write_tokens INTEGER, cache_write_1h_tokens INTEGER,
447
450
  reasoning_tokens INTEGER, total_tokens INTEGER,
448
451
  input_cost_usd REAL, output_cost_usd REAL, cache_read_cost_usd REAL, cache_write_cost_usd REAL,
449
452
  total_cost_usd REAL,
@@ -544,6 +547,13 @@ function ensureRunSourceColumn(db: DatabaseSync): void {
544
547
  db.prepare("UPDATE runs SET source = 'session' WHERE assignment_id = ?").run(SESSION_TRACE_ASSIGNMENT_ID);
545
548
  }
546
549
 
550
+ /** Missing lifetime detail stays NULL in older traces; it cannot be reconstructed. */
551
+ function ensureCacheWriteLifetimeColumn(db: DatabaseSync): void {
552
+ const columns = db.prepare("PRAGMA table_info(phases)").all() as { name: string }[];
553
+ if (!columns.some((column) => column.name === "cache_write_1h_tokens"))
554
+ db.exec("ALTER TABLE phases ADD COLUMN cache_write_1h_tokens INTEGER;");
555
+ }
556
+
547
557
  /**
548
558
  * Finalize `running` rows whose recorded owner is on this host and provably
549
559
  * dead (pid gone, or alive under a different birth token, i.e. reused). Rows
@@ -591,6 +601,7 @@ export class TraceStore {
591
601
  this.transaction(() => {
592
602
  ensureProcessOwnerColumns(this.db);
593
603
  ensureRunSourceColumn(this.db);
604
+ ensureCacheWriteLifetimeColumn(this.db);
594
605
  reconcileAbandonedRuns(this.db);
595
606
  });
596
607
  }
@@ -799,7 +810,7 @@ export class TraceStore {
799
810
  recordSpend(input: TraceSpendInput): void {
800
811
  this.transaction(() => {
801
812
  this.db
802
- .prepare(`UPDATE phases SET input_tokens=?, output_tokens=?, cache_read_tokens=?, cache_write_tokens=?,
813
+ .prepare(`UPDATE phases SET input_tokens=?, output_tokens=?, cache_read_tokens=?, cache_write_tokens=?, cache_write_1h_tokens=?,
803
814
  reasoning_tokens=?, total_tokens=?, input_cost_usd=?, output_cost_usd=?, cache_read_cost_usd=?,
804
815
  cache_write_cost_usd=?, total_cost_usd=?, context_tokens=?, context_window=? WHERE phase_id=? AND run_id=?`)
805
816
  .run(
@@ -807,6 +818,7 @@ export class TraceStore {
807
818
  input.outputTokens,
808
819
  input.cacheReadTokens,
809
820
  input.cacheWriteTokens,
821
+ input.cacheWrite1hTokens ?? null,
810
822
  input.reasoningTokens,
811
823
  input.totalTokens,
812
824
  input.inputCostUsd ?? null,
@@ -982,7 +994,7 @@ export class TraceStore {
982
994
  );
983
995
  this.db
984
996
  .prepare(`UPDATE phases SET status=?, attempt=?, retries=?, ended_at=?, error=?, input_tokens=?, output_tokens=?,
985
- cache_read_tokens=?, cache_write_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
997
+ cache_read_tokens=?, cache_write_tokens=?, cache_write_1h_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
986
998
  WHERE phase_id=?`)
987
999
  .run(
988
1000
  success ? "success" : "fail",
@@ -994,6 +1006,7 @@ export class TraceStore {
994
1006
  input.outputTokenCount ?? null,
995
1007
  input.cacheReadTokenCount ?? null,
996
1008
  input.cacheWriteTokenCount ?? null,
1009
+ input.cacheWrite1hTokenCount ?? null,
997
1010
  input.reasoningTokenCount ?? null,
998
1011
  input.tokenCount ?? null,
999
1012
  input.costUsd ?? null,
@@ -1113,7 +1126,7 @@ export class TraceStore {
1113
1126
  .run(input.status, input.at, usage?.totalTokens ?? null, usage?.costUsd ?? null, input.runId);
1114
1127
  this.db
1115
1128
  .prepare(`UPDATE phases SET status=?, ended_at=?, error=?, input_tokens=?, output_tokens=?,
1116
- cache_read_tokens=?, cache_write_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
1129
+ cache_read_tokens=?, cache_write_tokens=?, cache_write_1h_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
1117
1130
  WHERE phase_id=?`)
1118
1131
  .run(
1119
1132
  input.status,
@@ -1123,6 +1136,7 @@ export class TraceStore {
1123
1136
  usage?.outputTokens ?? null,
1124
1137
  usage?.cacheReadTokens ?? null,
1125
1138
  usage?.cacheWriteTokens ?? null,
1139
+ usage?.cacheWrite1hTokens ?? null,
1126
1140
  usage?.reasoningTokens ?? null,
1127
1141
  usage?.totalTokens ?? null,
1128
1142
  usage?.costUsd ?? null,
@@ -1186,13 +1200,24 @@ function traceDatabaseFootprintBytes(path: string): number {
1186
1200
  return total;
1187
1201
  }
1188
1202
 
1203
+ export interface TraceRunCursor {
1204
+ startedAt: string;
1205
+ runId: string;
1206
+ }
1207
+
1208
+ export interface TraceRunsPageOptions {
1209
+ before?: TraceRunCursor;
1210
+ limit?: number;
1211
+ filter?: { source?: TraceRunRow["source"]; status?: TraceRunRow["status"]; q?: string };
1212
+ }
1213
+
1189
1214
  export class TraceReader {
1190
1215
  readonly db: DatabaseSync;
1191
1216
  /**
1192
1217
  * `runs.source` is an additive column (see ensureRunSourceColumn) a
1193
1218
  * TraceStore writer backfills in place. A read-only reader can open a
1194
1219
  * database no writer has touched since before the column existed — the
1195
- * trace viewer opening a dormant install's trace.sqlite fresh is the
1220
+ * web application opening a dormant install's trace.sqlite fresh is the
1196
1221
  * realistic case — and cannot ALTER TABLE to fix that itself, so it
1197
1222
  * derives the same value the migration would have written instead.
1198
1223
  */
@@ -1223,6 +1248,40 @@ export class TraceReader {
1223
1248
  .all(clampInt(limit, 1, 500)) as unknown as TraceRunRow[];
1224
1249
  }
1225
1250
 
1251
+ /** Stable keyset pagination, including read-only databases predating runs.source. */
1252
+ runsPage({ before, limit = 50, filter = {} }: TraceRunsPageOptions = {}): {
1253
+ runs: TraceRunRow[];
1254
+ nextBefore: TraceRunCursor | null;
1255
+ } {
1256
+ const size = clampInt(limit, 1, 500);
1257
+ const where: string[] = [],
1258
+ args: SQLInputValue[] = [];
1259
+ if (before) {
1260
+ where.push("(started_at < ? OR (started_at = ? AND run_id < ?))");
1261
+ args.push(before.startedAt, before.startedAt, before.runId);
1262
+ }
1263
+ if (filter.source) {
1264
+ where.push("source = ?");
1265
+ args.push(filter.source);
1266
+ }
1267
+ if (filter.status) {
1268
+ where.push("status = ?");
1269
+ args.push(filter.status);
1270
+ }
1271
+ if (filter.q) {
1272
+ where.push("(run_id LIKE ? OR agent LIKE ? OR model LIKE ? OR status LIKE ? OR request LIKE ?)");
1273
+ args.push(...Array<string>(5).fill(`%${filter.q}%`));
1274
+ }
1275
+ const rows = this.db
1276
+ .prepare(
1277
+ `SELECT * FROM (SELECT ${this.runsSourceExpr} FROM runs) ${where.length ? `WHERE ${where.join(" AND ")}` : ""} ORDER BY started_at DESC, run_id DESC LIMIT ?`,
1278
+ )
1279
+ .all(...args, size + 1) as unknown as TraceRunRow[];
1280
+ const runs = rows.slice(0, size),
1281
+ last = runs.at(-1);
1282
+ return { runs, nextBefore: rows.length > size && last ? { startedAt: last.started_at, runId: last.run_id } : null };
1283
+ }
1284
+
1226
1285
  run(runId: string): TraceRunRow | null {
1227
1286
  return (
1228
1287
  (this.db.prepare(`SELECT ${this.runsSourceExpr} FROM runs WHERE run_id=?`).get(runId) as unknown as
@@ -1567,6 +1626,7 @@ function terminalUsage(input: DispatchCompletedPayload | DispatchFailedPayload):
1567
1626
  output: input.outputTokenCount ?? 0,
1568
1627
  cache_read: input.cacheReadTokenCount ?? 0,
1569
1628
  cache_write: input.cacheWriteTokenCount ?? 0,
1629
+ ...(input.cacheWrite1hTokenCount === undefined ? {} : { cache_write_1h: input.cacheWrite1hTokenCount }),
1570
1630
  reasoning_tokens: input.reasoningTokenCount ?? 0,
1571
1631
  total_tokens: input.tokenCount,
1572
1632
  };
@@ -4,7 +4,8 @@ import { normalizePromptHint } from "../../core/prompt-hint.js";
4
4
  import type { ToolName } from "../../core/tool-names.js";
5
5
  import { TOOL_RESULT_TRUST_CONTRACT } from "../../core/untrusted-content.js";
6
6
  import { resolveClioDirs } from "../../core/xdg.js";
7
- import type { AutonomyLevel } from "../safety/autonomy.js";
7
+ import { directSurfaceNames } from "../../tools/surface.js";
8
+ import { type AutonomyLevel, isAutonomyLevel, modelMayActivateSkills } from "../safety/autonomy.js";
8
9
  import { ceilChars } from "../session/context-accounting.js";
9
10
  import type { FragmentTable, LoadedFragment } from "./fragment-loader.js";
10
11
  import { sha256 } from "./hash.js";
@@ -235,10 +236,9 @@ function sessionCanDispatch(inputs: SessionPromptInputs): boolean {
235
236
  }
236
237
 
237
238
  /**
238
- * Whether `context` is on the session's surface. The Skills passage, the docs
239
- * routing directive, and the Tool Contract's skills clause follow the same
240
- * rule as dispatch: text that teaches a call to `context` renders only when
241
- * `context` is there to be called.
239
+ * Whether `context` is on the session's surface. The Skills passage and the
240
+ * Tool Contract's skills clause follow the same rule as dispatch: text that
241
+ * teaches a call to `context` renders only when `context` is there to be called.
242
242
  */
243
243
  function sessionHasContext(inputs: SessionPromptInputs): boolean {
244
244
  if (inputs.providerSupportsTools === false) return false;
@@ -290,15 +290,20 @@ function renderToolContractBlock(inputs: SessionPromptInputs): string {
290
290
  "This target cannot call tools; answer from the visible user request and compact context only.",
291
291
  ].join("\n");
292
292
  }
293
- const names = [
293
+ const capabilityNames = [
294
294
  ...new Set((inputs.toolNames ?? []).map((name) => name.trim()).filter((name) => name.length > 0)),
295
295
  ].sort();
296
+ // A worker's admitted list names capabilities behind the gateway (git,
297
+ // web_fetch, an extension command); the attached schemas are their direct
298
+ // projection, with `gateway` standing in for every capability it reaches.
299
+ const names = directSurfaceNames(capabilityNames).sort();
296
300
  const canDispatch = sessionCanDispatch(inputs);
297
301
  const canListSkills = sessionHasContext(inputs);
298
302
  // Asked twice in one session which tools it had, a live model gave two
299
303
  // different answers and invented `web_find`. The authoritative list is one
300
304
  // line above; pointing at it beats letting the model recall the schemas.
301
305
  const admitted = new Set(names);
306
+ const hasGateway = admitted.has("gateway");
302
307
  const inventoryGuidance = [
303
308
  "When asked what tools you have, copy the Direct tools line verbatim and call nothing",
304
309
  ...(canDispatch
@@ -306,15 +311,23 @@ function renderToolContractBlock(inputs: SessionPromptInputs): string {
306
311
  "dispatch(list:true) answers a question about agents, the fleet, or which target and model run this session and its workers",
307
312
  ]
308
313
  : []),
309
- ...(canListSkills ? ['context(scope="skills") answers only a question about skills'] : []),
314
+ ...(canListSkills ? ['context(scope="skills") lists skills for discovery or skill questions'] : []),
315
+ ...(hasGateway ? ['gateway(op="find") answers a question about secondary capabilities'] : []),
310
316
  ].join("; ");
311
317
  const capabilityKinds = [
312
318
  "direct tools are attached schemas",
319
+ ...(hasGateway ? ["secondary capabilities are reached through gateway find, describe, and call"] : []),
313
320
  ...(canDispatch ? ["fleet agents are workers behind dispatch"] : []),
314
- ...(canListSkills ? ["skills are operator-activated workflows reached through context"] : []),
321
+ ...(canListSkills ? ["skills are workflows reached through context"] : []),
315
322
  ];
316
323
  const orientationTools = ["context", "code_nav", "grep", "read"].filter((name) => admitted.has(name));
317
- const validationTools = ["verify", "git"].filter((name) => admitted.has(name));
324
+ // git sits behind the gateway, so it validates through gateway(call git)
325
+ // whenever the gateway is attached; a registry that placed it direct still
326
+ // names it plainly.
327
+ const validationTools = [
328
+ ...(admitted.has("verify") ? ["verify"] : []),
329
+ ...(admitted.has("git") ? ["git diff"] : hasGateway ? ['gateway(op="call", capability="git") diff'] : []),
330
+ ];
318
331
  const lines = [
319
332
  "# Tool Contract",
320
333
  TOOL_RESULT_TRUST_CONTRACT,
@@ -333,17 +346,15 @@ function renderToolContractBlock(inputs: SessionPromptInputs): string {
333
346
  `For narrow file or symbol orientation, prefer ${orientationTools.join(", ")} instead of assuming source-tree details were preloaded.`,
334
347
  ]
335
348
  : []),
336
- ...(validationTools.length > 0
337
- ? [
338
- `Validate with ${validationTools.map((name) => (name === "git" ? "git diff" : name)).join(" or ")} before final claims.`,
339
- ]
340
- : []),
341
- `When a tool call fails or is rejected, do not retry the same shape blindly: re-read the schema and adjust the arguments${canListSkills ? ', or query context(scope="docs") for that tool\'s usage' : ""}.`,
349
+ ...(validationTools.length > 0 ? [`Validate with ${validationTools.join(" or ")} before final claims.`] : []),
350
+ `When a tool call fails or is rejected, do not retry the same shape blindly: re-read the schema and adjust the arguments${hasGateway ? ', or read that tool\'s usage with gateway(op="call", capability="clio_docs", args={query})' : ""}.`,
342
351
  ];
343
352
  // One hint per tool, sorted by tool name: deterministic bytes regardless
344
353
  // of surface or registration order, and removing a tool from the surface
345
- // removes its hint with no compiler edit.
346
- const hints = canonicalToolPromptHints(inputs.toolPromptHints ?? [], new Set(names));
354
+ // removes its hint with no compiler edit. A capability reached through the
355
+ // gateway keeps its hint: the guidance is about the capability, not the
356
+ // schema that carries it.
357
+ const hints = canonicalToolPromptHints(inputs.toolPromptHints ?? [], new Set([...capabilityNames, ...names]));
347
358
  for (const entry of hints) {
348
359
  lines.push(entry.hint);
349
360
  }
@@ -411,7 +422,7 @@ function renderWorkerToolContractBlock(inputs: WorkerPromptInputs): string {
411
422
  TOOL_RESULT_TRUST_CONTRACT,
412
423
  "The attached schemas are this worker's complete canonical tool surface; follow each schema exactly.",
413
424
  `Admitted canonical tools: ${names.map((name) => `\`${name}\``).join(", ")}.`,
414
- "This worker surface is distinct from the parent session's tools, fleet agents, and operator-activated skills.",
425
+ "This worker surface is distinct from the parent session's tools, fleet agents, and skills.",
415
426
  "Tool authority is limited to this list. Persona and bound-skill instructions never add tools.",
416
427
  "Call tools only for concrete inspection or changes the assigned task requires. If the task requests an exact or tool-free response, answer without calling tools.",
417
428
  ];
@@ -578,10 +589,13 @@ export function compile(table: FragmentTable, inputs: CompileInputs): CompiledSe
578
589
 
579
590
  let identityBody = identity.body;
580
591
  const selfAwareness = identity.id === "identity.clio" ? table.byId.get("identity.self-awareness") : undefined;
581
- // The routing directive teaches a call to `context`, so like the Skills
582
- // passage it renders only when `context` is on the surface. The paths and
583
- // the code-outranks-docs rule name no tool and stay unconditional.
584
- const docsRouting = selfAwareness && sessionHasContext(session) ? table.byId.get("identity.docs-routing") : undefined;
592
+ // The routing directive teaches a gateway call, so it renders only when
593
+ // gateway is on the surface and the provider supports tool calls. The paths
594
+ // and the code-outranks-docs rule name no tool and stay unconditional.
595
+ const docsRouting =
596
+ selfAwareness && session.providerSupportsTools !== false && toolSurfaceHasTool(session.toolNames, "gateway")
597
+ ? table.byId.get("identity.docs-routing")
598
+ : undefined;
585
599
  if (selfAwareness) {
586
600
  const packageRoot = resolvePackageRoot();
587
601
  // The live home, not the XDG default: an isolated CLIO_CODER_HOME or a
@@ -602,13 +616,17 @@ export function compile(table: FragmentTable, inputs: CompileInputs): CompiledSe
602
616
  // about a tool renders only when the tool is there to be called.
603
617
  const delegation = sessionCanDispatch(session) ? table.byId.get("operating.delegation") : undefined;
604
618
  const skills = sessionHasContext(session) ? table.byId.get("operating.skills") : undefined;
619
+ const skillActivation =
620
+ isAutonomyLevel(autonomyLevel) && modelMayActivateSkills(autonomyLevel)
621
+ ? 'Load matching installed skills with context(scope="skills", name="<name>") and continue the task; skill restrictions still apply.'
622
+ : "Suggest matching skills as /skill <name> (in order when several compose), then continue without them; only the operator activates skills.";
605
623
 
606
624
  const legacy = inputs.sectionOrder === "legacy-0.3.8";
607
625
  const rendered = new Map<string, string>([
608
626
  ["identity", identityBody],
609
627
  ["operating-contract", operatingContract.body],
610
628
  ["delegation", delegation?.body ?? ""],
611
- ["skills", skills?.body ?? ""],
629
+ ["skills", skills?.body.replace("{SKILL_ACTIVATION_POLICY}", skillActivation) ?? ""],
612
630
  ["safety", renderSafetySection(safety, autonomyLevel)],
613
631
  ["runtime", renderRuntimeBlock(session)],
614
632
  ["tool-contract", renderToolContractBlock(session)],
@@ -205,7 +205,7 @@ export function createPromptsBundle(
205
205
 
206
206
  let unsubscribeContextSources: (() => void) | null = null;
207
207
  let unsubscribeHotReload: (() => void) | null = null;
208
- let unsubscribeExtensionsReload: (() => void) | null = null;
208
+ let unsubscribePluginsReload: (() => void) | null = null;
209
209
  const extension: DomainExtension = {
210
210
  async start() {
211
211
  try {
@@ -226,28 +226,15 @@ export function createPromptsBundle(
226
226
  if (!diffTouchesFragments(paths)) return;
227
227
  reload();
228
228
  });
229
- // Extension prompt and skill roots feed fragments through the
230
- // resources domain; a committed generation with new content means
231
- // the table must be rebuilt from the new roots.
232
- const onResourceReload = (payload: unknown) => {
233
- if ((payload as { changed?: unknown } | undefined)?.changed !== true) return;
234
- reload();
235
- };
236
- const unsubscribe = [
237
- context.bus.on(BusChannels.ExtensionsReloaded, onResourceReload),
238
- context.bus.on(BusChannels.PluginsReloaded, () => reload()),
239
- ];
240
- unsubscribeExtensionsReload = () => {
241
- for (const stop of unsubscribe) stop();
242
- };
229
+ unsubscribePluginsReload = context.bus.on(BusChannels.PluginsReloaded, () => reload());
243
230
  },
244
231
  async stop() {
245
232
  unsubscribeContextSources?.();
246
233
  unsubscribeContextSources = null;
247
234
  unsubscribeHotReload?.();
248
235
  unsubscribeHotReload = null;
249
- unsubscribeExtensionsReload?.();
250
- unsubscribeExtensionsReload = null;
236
+ unsubscribePluginsReload?.();
237
+ unsubscribePluginsReload = null;
251
238
  sessionSourceSnapshots.clear();
252
239
  },
253
240
  };
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  id: identity.docs-routing
3
3
  version: 1
4
- description: Directive to route questions about Clio herself through context(scope="docs"); rendered only when context is on the surface
4
+ description: Questions about Clio herself go through gateway(op="call", capability="clio_docs"); this directive renders only when gateway is on the surface and provider tool calls are available.
5
5
  ---
6
6
 
7
7
  # Clio documentation routing
8
8
 
9
- For a question about Clio herself, call context (scope="docs", query=<the question>) before answering and before any workspace search, then read the document it names from the installed documentation path above.
9
+ For a question about Clio herself, call gateway(op="call", capability="clio_docs", args={query: <the question>}) before answering and before any workspace search, then read the document it names from the installed documentation path above.
@@ -6,14 +6,16 @@ description: Coordinator skill suggestion discipline; rendered only when context
6
6
 
7
7
  # Skills
8
8
 
9
- Skills are operator-activated workflows: git delivery, planning, coding
10
- practice, context priming/handoff, research, plan stress-testing.
9
+ Skills are workflows for git delivery, planning, coding practice,
10
+ context priming/handoff, research, and plan stress-testing.
11
11
  context (scope="skills") lists installed and marketplace skills; never
12
- guess it or search the repository for one. When a task has one of those
13
- shapes, list them, suggest the best match as /skill <name> (in order
14
- when several compose), and continue without it: only the operator
15
- activates or installs a skill; a [Marketplace] reminder states its
16
- own offer options. When the operator names a skill or asks how it
17
- works, answer from it. If nothing fits, suggest none. context
18
- (scope="library") is the read-only catalog of recipes and installable
19
- packages; it activates nothing.
12
+ guess a skill or search the repository for one.
13
+ {SKILL_ACTIVATION_POLICY}
14
+ Only the operator installs marketplace skills; a [Marketplace] reminder
15
+ states its own offer options. When the operator names a skill or asks
16
+ how it works, answer from it. If nothing fits, suggest none.
17
+
18
+ If gateway is on the attached direct-tool surface, use
19
+ gateway(op="call", capability="clio_library", args={}) to read the catalog
20
+ of recipes and installable packages; it activates and installs nothing.
21
+ Without gateway, this catalog route is unavailable.