@iowarp/clio-coder 0.4.8 → 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 (513) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/README.md +7 -6
  3. package/dist/{acp-JWPQZM2D.js → acp-ZWZCPS2A.js} +13 -13
  4. package/dist/{agents-4GCDIRVX.js → agents-LYSOWZUE.js} +53 -52
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-SYAKTDQE.js → auth-WBQGKWQ5.js} +27 -27
  7. package/dist/{background-OW67WMYR.js → background-BUMOBAQN.js} +4 -4
  8. package/dist/{builtins-TKS63VNV.js → builtins-ODRJOEDI.js} +7 -7
  9. package/dist/{chunk-JLBVCROW.js → chunk-2DRRZ57Q.js} +33 -24
  10. package/dist/chunk-2JBZYUPY.js +105 -0
  11. package/dist/chunk-2KUBKL63.js +336 -0
  12. package/dist/{chunk-K45LHSCI.js → chunk-2VBWFXYE.js} +7 -3
  13. package/dist/{chunk-XTLJDC2X.js → chunk-2X2R3UTH.js} +23 -18
  14. package/dist/{chunk-5HULHKT2.js → chunk-37LW32LZ.js} +5 -5
  15. package/dist/{chunk-W7KNI3F5.js → chunk-3AND2EFU.js} +5 -5
  16. package/dist/{chunk-36XSBPXL.js → chunk-3RDHGNU7.js} +95 -27
  17. package/dist/{chunk-BIY22UUK.js → chunk-3SUDBGEI.js} +11 -10
  18. package/dist/{chunk-3IQOZRQ6.js → chunk-3TQN67I2.js} +7 -7
  19. package/dist/{chunk-KWJXCL2X.js → chunk-3U4BL2EV.js} +3 -3
  20. package/dist/{chunk-RBES4TCZ.js → chunk-3UQADNG2.js} +3 -3
  21. package/dist/{chunk-V4ZKOKRB.js → chunk-434LRQ6Z.js} +61 -53
  22. package/dist/{chunk-MWMW53WW.js → chunk-4ATBOFRP.js} +649 -193
  23. package/dist/{chunk-QGIC5SX5.js → chunk-4DNL43EZ.js} +3 -3
  24. package/dist/{chunk-GVU4CXPJ.js → chunk-4HFJKRGZ.js} +113 -54
  25. package/dist/{chunk-5A6XR3RJ.js → chunk-555E2WVV.js} +16 -2
  26. package/dist/{chunk-LZDLYSUN.js → chunk-5RTEFNBP.js} +3 -3
  27. package/dist/{chunk-HMGAKB7E.js → chunk-64XJW7NT.js} +15 -15
  28. package/dist/{chunk-EXKUF426.js → chunk-7FBCRWVT.js} +280 -280
  29. package/dist/{chunk-K3W6BF5C.js → chunk-7JSOSVLP.js} +2 -2
  30. package/dist/{chunk-WFTSK7N3.js → chunk-7N3OLLSL.js} +4 -4
  31. package/dist/{chunk-JRA6OBHY.js → chunk-A6DULIMH.js} +17 -5
  32. package/dist/{chunk-R5NRX5N4.js → chunk-AB3QXXBC.js} +2 -2
  33. package/dist/chunk-ACCECAH4.js +49 -0
  34. package/dist/{chunk-GJBJHJNY.js → chunk-AM6CEP2K.js} +5 -5
  35. package/dist/{chunk-MUXNDNMZ.js → chunk-AY4XE6GN.js} +19 -13
  36. package/dist/{chunk-MATCRH3M.js → chunk-BBA2TAWV.js} +9 -9
  37. package/dist/{chunk-PMUUAABD.js → chunk-BMNVVKEW.js} +9 -9
  38. package/dist/{chunk-TOPICHGR.js → chunk-CTGZCEI6.js} +2 -2
  39. package/dist/{chunk-L75H5B3B.js → chunk-DIAJYJYG.js} +2 -2
  40. package/dist/{chunk-JIMWEYWO.js → chunk-EHZRAB4U.js} +2 -2
  41. package/dist/{chunk-YXANQGCX.js → chunk-EM2DIQAJ.js} +6 -6
  42. package/dist/{chunk-JCVIL6TY.js → chunk-ETF4ROKH.js} +4 -4
  43. package/dist/{chunk-5W4FRA5Q.js → chunk-F2YM3JY4.js} +483 -253
  44. package/dist/{chunk-YGIV24MF.js → chunk-FEBQWHJT.js} +21 -16
  45. package/dist/{chunk-PGEFOTJB.js → chunk-FPS4R2RN.js} +5 -4
  46. package/dist/{chunk-XC5POIL4.js → chunk-G5R53COU.js} +1 -1
  47. package/dist/chunk-GHXGMFQ5.js +40 -0
  48. package/dist/{chunk-QLKCCC2J.js → chunk-GJDRMBDI.js} +14 -14
  49. package/dist/{chunk-2ZWLMA3T.js → chunk-GREYLTZ5.js} +7 -7
  50. package/dist/{chunk-YXFKLMX2.js → chunk-H2WSCZZT.js} +22 -6
  51. package/dist/{chunk-FNVPQQYT.js → chunk-H6IUCY6Q.js} +2 -2
  52. package/dist/{chunk-5C2OQHLR.js → chunk-H72DCH3E.js} +92 -203
  53. package/dist/{chunk-JYKUMHCQ.js → chunk-H7TXJR23.js} +21 -21
  54. package/dist/chunk-HBJQQTKM.js +40 -0
  55. package/dist/chunk-HCVKSGNZ.js +990 -0
  56. package/dist/{chunk-ARRUMZ7X.js → chunk-I47EJPYL.js} +3 -3
  57. package/dist/{chunk-YKIIWURD.js → chunk-IALGWTLO.js} +3 -3
  58. package/dist/{chunk-FB3KTE2J.js → chunk-IALZJE37.js} +4 -4
  59. package/dist/{chunk-RAUOKUZV.js → chunk-IC7JXLOM.js} +15 -10
  60. package/dist/{chunk-LLCGGVSW.js → chunk-IOSVTTCD.js} +7 -7
  61. package/dist/{chunk-DBREN25X.js → chunk-IPTPMLA6.js} +8 -3
  62. package/dist/{chunk-V552WL53.js → chunk-IZZI3SKQ.js} +3 -67
  63. package/dist/{chunk-UDAK6GR2.js → chunk-JIYWMQZ5.js} +2 -2
  64. package/dist/{chunk-O3HSB2YL.js → chunk-JKU34ACI.js} +2 -2
  65. package/dist/{chunk-6X7VOCDY.js → chunk-JTR3VSV3.js} +3 -3
  66. package/dist/{chunk-O2QJDRWP.js → chunk-JU6MAMRJ.js} +4 -4
  67. package/dist/chunk-JURMQWVJ.js +15 -0
  68. package/dist/{chunk-STC6CWUZ.js → chunk-K3XN4LZ4.js} +5 -5
  69. package/dist/{chunk-ATB3Q7YO.js → chunk-KIVFXGBM.js} +27 -2
  70. package/dist/{chunk-WJWNZXRM.js → chunk-KOAHT3N2.js} +2 -2
  71. package/dist/chunk-KP5BPXR3.js +73 -0
  72. package/dist/{chunk-K53E2PTW.js → chunk-KRJQG47M.js} +3 -3
  73. package/dist/{chunk-IILXVWJY.js → chunk-KW6OJ7IY.js} +19 -21
  74. package/dist/{chunk-A46ILRS2.js → chunk-L3NBWLSN.js} +4 -4
  75. package/dist/{chunk-2U2U5POA.js → chunk-L4RUTLRL.js} +5 -5
  76. package/dist/{chunk-QYSAZMSH.js → chunk-LGTVWPRN.js} +2 -2
  77. package/dist/{chunk-KGP3UQGJ.js → chunk-LSQW6KZO.js} +5 -5
  78. package/dist/{chunk-P4JS3MH5.js → chunk-LWJYOHT3.js} +8 -8
  79. package/dist/{chunk-U3TPUXOQ.js → chunk-M6YLF66Z.js} +74 -40
  80. package/dist/{chunk-5D2FNBMG.js → chunk-MJ4QEJVT.js} +2 -2
  81. package/dist/{chunk-RM3XJX7P.js → chunk-MO65K5CH.js} +5 -5
  82. package/dist/{chunk-H5DPSUBB.js → chunk-MTOZEQHL.js} +3 -3
  83. package/dist/{chunk-6R5MBXBJ.js → chunk-NBPA5QM6.js} +2 -2
  84. package/dist/{chunk-H77XBUBM.js → chunk-NMBEW4PP.js} +3 -3
  85. package/dist/{chunk-QWUSS2QP.js → chunk-NPLLK3HO.js} +67 -87
  86. package/dist/{chunk-K5UJD6MM.js → chunk-NSYGPIVW.js} +5 -5
  87. package/dist/{context-EZZPT2ZV.js → chunk-NXTV5OI5.js} +30 -84
  88. package/dist/{chunk-F7Y6QTPL.js → chunk-NYDG4QP4.js} +4 -4
  89. package/dist/{chunk-PFZJMXIY.js → chunk-OA2GDACN.js} +2 -2
  90. package/dist/{chunk-Q32C6AWI.js → chunk-PJI57EC6.js} +4 -4
  91. package/dist/{chunk-EFXMQYI6.js → chunk-PJJBUGMR.js} +52 -52
  92. package/dist/{chunk-ICYIUNO4.js → chunk-PNJE7JPS.js} +18 -3
  93. package/dist/chunk-PP23PZEV.js +1347 -0
  94. package/dist/chunk-PPIFDSBK.js +409 -0
  95. package/dist/{chunk-RFULVPBX.js → chunk-PTFISXQO.js} +6 -5
  96. package/dist/{chunk-JV25I7ID.js → chunk-QB33Z5S7.js} +5 -5
  97. package/dist/{chunk-D55WO5J7.js → chunk-QGNII5VC.js} +8 -8
  98. package/dist/{chunk-RKFNU5UA.js → chunk-QI72X67S.js} +104 -27
  99. package/dist/chunk-QKHZZFKH.js +98 -0
  100. package/dist/{chunk-5UG6EZI3.js → chunk-RDKX2PME.js} +4 -4
  101. package/dist/{chunk-B5ZTR6KZ.js → chunk-RL7LJYN4.js} +1 -1
  102. package/dist/{chunk-BE4I3UJ2.js → chunk-RQROVOV3.js} +15 -13
  103. package/dist/{chunk-TEHVMHOK.js → chunk-S34A7BSP.js} +3 -3
  104. package/dist/{chunk-4P6M2TTE.js → chunk-SJETVJHX.js} +2 -2
  105. package/dist/{chunk-OPC4DQD6.js → chunk-SJMNU4ZS.js} +2 -2
  106. package/dist/{chunk-2JSCCEKO.js → chunk-SLLG2G44.js} +2 -2
  107. package/dist/{chunk-EPYATQMG.js → chunk-SQAZN2V3.js} +42 -16
  108. package/dist/{chunk-E2NSPYLC.js → chunk-SQBT46OF.js} +5 -5
  109. package/dist/{chunk-WTZVSMQZ.js → chunk-TCUOGIL2.js} +5 -5
  110. package/dist/{chunk-RRZFRIJP.js → chunk-TIWPKCVO.js} +5 -5
  111. package/dist/{chunk-QLAGXTTV.js → chunk-UIU7MGZ3.js} +5 -1
  112. package/dist/{chunk-WLHX3MM5.js → chunk-V4XJWDHR.js} +21 -11
  113. package/dist/{chunk-PJ5H5B7A.js → chunk-VPWGADBG.js} +18 -18
  114. package/dist/{chunk-GEYX2NZ5.js → chunk-VWFCAK34.js} +6 -6
  115. package/dist/{chunk-44U2OUSM.js → chunk-W72LLZAV.js} +2 -2
  116. package/dist/{chunk-ORRNGQDV.js → chunk-WGRDABW7.js} +4 -4
  117. package/dist/{chunk-RNLAPBJL.js → chunk-XFLSL7BT.js} +2 -2
  118. package/dist/{chunk-2SXGG2IV.js → chunk-XJZEDCNT.js} +6 -6
  119. package/dist/{chunk-UB33F3YW.js → chunk-XLLEL3K7.js} +5 -5
  120. package/dist/{chunk-2GPGAE5W.js → chunk-XNIZBOFV.js} +15 -1
  121. package/dist/{chunk-WS4FOGLY.js → chunk-XNZWWDC3.js} +2 -2
  122. package/dist/{chunk-P7GTE4FX.js → chunk-XRECG65F.js} +2 -2
  123. package/dist/chunk-XTQ7MEJG.js +457 -0
  124. package/dist/{chunk-GEVQNST4.js → chunk-XZWSP67B.js} +2 -2
  125. package/dist/{chunk-OEMFEL26.js → chunk-Y3M2T5RO.js} +3 -3
  126. package/dist/{chunk-HP7KJ5O2.js → chunk-YPQOPFP7.js} +6 -6
  127. package/dist/{chunk-MEHBW2SP.js → chunk-YQYINEJI.js} +6 -6
  128. package/dist/{chunk-RXI7K4J5.js → chunk-ZF6CV4WZ.js} +1338 -217
  129. package/dist/{chunk-3XE4NRLF.js → chunk-ZKJU55MX.js} +4 -2
  130. package/dist/{chunk-526ABLHD.js → chunk-ZKQ63XZ5.js} +12 -35
  131. package/dist/{chunk-PAQVETLA.js → chunk-ZKVMDNAN.js} +5 -5
  132. package/dist/cli/index.js +47 -37
  133. package/dist/{clio-BPBAPZGA.js → clio-JUDCLNHC.js} +7 -7
  134. package/dist/clio-context-tools-FT672MNZ.js +136 -0
  135. package/dist/{code-nav-KBQ3RIFK.js → code-nav-7OVCTP2Z.js} +28 -26
  136. package/dist/{components-6DKAXWFN.js → components-OZXZMDWU.js} +5 -5
  137. package/dist/{config-FWL5JK2H.js → config-P3ZQVF63.js} +80 -75
  138. package/dist/{config-graph-ACDB26L2.js → config-graph-GKAOBAS5.js} +74 -70
  139. package/dist/{configure-ZIZ4YV62.js → configure-25LRYZJG.js} +45 -44
  140. package/dist/context-72VQV7JX.js +73 -0
  141. package/dist/{context-VIL5MFRH.js → context-COWRWXP3.js} +74 -70
  142. package/dist/{context-Z3GOBHDK.js → context-WB3D474G.js} +12 -12
  143. package/dist/{context-clear-ZPB3L7MN.js → context-clear-Y4LYMWC6.js} +70 -66
  144. package/dist/{context-working-set-2GLBVF7L.js → context-working-set-TMZYVC7A.js} +15 -14
  145. package/dist/data-tool-KMBWKKWR.js +2987 -0
  146. package/dist/{detail-VSBWYSGZ.js → detail-4GLROGY5.js} +71 -67
  147. package/dist/{dispatch-runner-EEEHGKX4.js → dispatch-runner-TR3LBP5P.js} +92 -88
  148. package/dist/{docs-VMMWFVHL.js → docs-ZK777W2G.js} +3 -3
  149. package/dist/{doctor-V5L4IQGP.js → doctor-WC4OV2OB.js} +61 -59
  150. package/dist/{eval-VJYJ2BV3.js → eval-FUNWJNUJ.js} +45 -45
  151. package/dist/{evals-J2H5V6DD.js → evals-L73EBHSU.js} +4 -4
  152. package/dist/{evidence-Y35YSXH6.js → evidence-AVJ2RTHX.js} +80 -76
  153. package/dist/{evidence-POWAEBEW.js → evidence-P4NZOAK7.js} +70 -66
  154. package/dist/{evidence-XCCCLS36.js → evidence-Y55WKYHH.js} +79 -75
  155. package/dist/{evolve-GPG72VB6.js → evolve-MAWKRYWF.js} +75 -71
  156. package/dist/{extensions-YIZ7W3DA.js → extensions-PYQH3H47.js} +8 -8
  157. package/dist/{fleet-2MDCQ2VK.js → fleet-M4H2QBWT.js} +84 -80
  158. package/dist/{fleet-W2AF3TOJ.js → fleet-ULBXXRDR.js} +123 -119
  159. package/dist/{fleet-commands-WS56G26H.js → fleet-commands-7NNC4JZU.js} +17 -16
  160. package/dist/{fleet-decisions-MYGZ3JW7.js → fleet-decisions-EHEY7KPU.js} +9 -9
  161. package/dist/{fleet-graph-ELTBXBAV.js → fleet-graph-LQ2AHZT3.js} +15 -15
  162. package/dist/{fleet-inspect-45IK73L4.js → fleet-inspect-5IGBIIYZ.js} +76 -72
  163. package/dist/{fleet-preflight-T5NCZKHE.js → fleet-preflight-UTTNOKMG.js} +7 -2
  164. package/dist/{fleet-validate-VG4JBLA4.js → fleet-validate-YGILJKA6.js} +20 -20
  165. package/dist/{fleet-verify-VTSABAYO.js → fleet-verify-AUWTCDKR.js} +70 -66
  166. package/dist/{fleet-view-XC7WMKSS.js → fleet-view-TGUFCY5A.js} +73 -69
  167. package/dist/{init-VTJNNTIP.js → init-GFN2Z7NF.js} +94 -90
  168. package/dist/{interop-IU6BNA7C.js → interop-EF5JUWWK.js} +21 -21
  169. package/dist/{inventory-QPQUTUUZ.js → inventory-I6VJDDYF.js} +73 -69
  170. package/dist/{library-Q3NWL5CM.js → library-3J5IO2OJ.js} +13 -13
  171. package/dist/{library-LF7DLU6S.js → library-IJTOFTDS.js} +16 -15
  172. package/dist/{library-HUTAS57T.js → library-Z3KZSHPE.js} +27 -27
  173. package/dist/{library-import-PPW4YUC5.js → library-import-IMKFLDHX.js} +21 -21
  174. package/dist/{library-inventory-DIRVFRZU.js → library-inventory-CQP5D6GU.js} +13 -13
  175. package/dist/{library-validation-XHUZ3INE.js → library-validation-33UTX7AI.js} +11 -11
  176. package/dist/mcp-5FWZKUS6.js +26 -0
  177. package/dist/{memory-Z2LSKNV6.js → memory-36CWN67Y.js} +75 -71
  178. package/dist/{models-3FTREYPY.js → models-KQ6PQJJQ.js} +49 -49
  179. package/dist/{monitor-HF2MQRB3.js → monitor-XX6ZD6KC.js} +83 -79
  180. package/dist/{orchestrator-UYPA6W4S.js → orchestrator-SK6HDAOP.js} +1337 -772
  181. package/dist/{panes-736XB73K.js → panes-L27QRXUH.js} +12 -12
  182. package/dist/{panes-C4P3PIWT.js → panes-LXZIWNOZ.js} +4 -4
  183. package/dist/{paths-JQ4QYIYB.js → paths-7DJDU4P4.js} +5 -5
  184. package/dist/{preload-XSLRYH3Y.js → preload-K2TDYI4Y.js} +70 -66
  185. package/dist/{reset-V7QSPZYE.js → reset-73VU3XNT.js} +10 -10
  186. package/dist/{resources-OJGDFHYT.js → resources-3BYJYVYL.js} +16 -16
  187. package/dist/{run-T354SMDW.js → run-AR7PY6GW.js} +132 -128
  188. package/dist/run-script-H2KUDIII.js +41 -0
  189. package/dist/{settings-MWZXO6RV.js → settings-3VMBMWID.js} +4 -4
  190. package/dist/{share-Y5ZKJPND.js → share-HVWH4FPF.js} +21 -21
  191. package/dist/{skills-4GLZC4LN.js → skills-5TYEY75Q.js} +22 -22
  192. package/dist/{skills-eval-L5T7GODM.js → skills-eval-CK3MD63Z.js} +96 -87
  193. package/dist/{skills-inventory-LASKXEZI.js → skills-inventory-KSFYG3I6.js} +16 -16
  194. package/dist/{slash-commands-OIMRU36D.js → slash-commands-DMVHML7P.js} +47 -44
  195. package/dist/{steer-KMAM2Y2C.js → steer-XCD6V3EW.js} +4 -4
  196. package/dist/{support-AWC3XKPX.js → support-JAZL6VBR.js} +7 -7
  197. package/dist/{system-CD75NYBU.js → system-3TDQRMZZ.js} +26 -26
  198. package/dist/{targets-VSZX2J2S.js → targets-EZKHAYRN.js} +66 -65
  199. package/dist/{tasks-AN567LYH.js → tasks-SNEFHWYW.js} +12 -12
  200. package/dist/{terminal-lease-6KTWNHVY.js → terminal-lease-BNLFA4OF.js} +8 -7
  201. package/dist/{tools-AGRK3V5J.js → tools-7IM6BDCE.js} +12 -12
  202. package/dist/{trace-P4MQZD33.js → trace-C3MBGD4S.js} +8 -8
  203. package/dist/{tui-primitives-A6MUW32V.js → tui-primitives-36BY2774.js} +2 -2
  204. package/dist/{uninstall-BRUTEPIC.js → uninstall-WWLOSZ42.js} +10 -10
  205. package/dist/{upgrade-SBCGHQGJ.js → upgrade-ETK2JNSJ.js} +37 -47
  206. package/dist/{usage-BIDVTO6V.js → usage-S2HOB7BZ.js} +93 -89
  207. package/dist/{verifiers-LTGCAMXS.js → verifiers-QDTEVH7R.js} +24 -22
  208. package/dist/{verify-OZU4LLNP.js → verify-SUKUK6XM.js} +15 -14
  209. package/dist/web/client/assets/{abnfDiagram-VCTEODGH-C5wfoHm3.js → abnfDiagram-VCTEODGH-BznNOe_I.js} +1 -1
  210. package/dist/web/client/assets/{arc-oH91sfLl.js → arc-Pry-7G1_.js} +1 -1
  211. package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +1 -0
  212. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +36 -0
  213. package/dist/web/client/assets/{blockDiagram-I7D4REHJ-wi0_CYHL.js → blockDiagram-I7D4REHJ-prINbpbM.js} +1 -1
  214. package/dist/web/client/assets/{c4Diagram-7LVT6UL2-DV7NYc2W.js → c4Diagram-7LVT6UL2-DkVRKtyU.js} +1 -1
  215. package/dist/web/client/assets/channel-c4EeUUqA.js +1 -0
  216. package/dist/web/client/assets/{chunk-4HAMMTFA-Bhsegh3F.js → chunk-4HAMMTFA-CV0Z1ApC.js} +1 -1
  217. package/dist/web/client/assets/{chunk-75Z2AOVW-RQCckcQG.js → chunk-75Z2AOVW-D34Nohxq.js} +1 -1
  218. package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +125 -0
  219. package/dist/web/client/assets/{chunk-F27PBJKO-BcNqv2x1.js → chunk-F27PBJKO-CmRojxkG.js} +1 -1
  220. package/dist/web/client/assets/{chunk-GMAD6QVW-Bq8JWiZT.js → chunk-GMAD6QVW-ClYZmc73.js} +1 -1
  221. package/dist/web/client/assets/{chunk-GVQU2GXP-DbchrAeJ.js → chunk-GVQU2GXP-B2BiHFt-.js} +1 -1
  222. package/dist/web/client/assets/{chunk-IMKFNOWR-DrpvjocK.js → chunk-IMKFNOWR-BGApZ8nP.js} +1 -1
  223. package/dist/web/client/assets/{chunk-L3NEJ4N5-DHLmTnCe.js → chunk-L3NEJ4N5-DIzCgpkY.js} +1 -1
  224. package/dist/web/client/assets/{chunk-OSK3NFVY-CsRbtN9n.js → chunk-OSK3NFVY-BPT-yePv.js} +1 -1
  225. package/dist/web/client/assets/{chunk-P2QGCYS3-aqPbxoMh.js → chunk-P2QGCYS3-BC1WTc2t.js} +1 -1
  226. package/dist/web/client/assets/{chunk-POPQ4Y6H-Dl5vw0h0.js → chunk-POPQ4Y6H-BSjzBmZU.js} +1 -1
  227. package/dist/web/client/assets/{chunk-PWAF6VOD-D7OBRSdO.js → chunk-PWAF6VOD-BIjLs86Z.js} +1 -1
  228. package/dist/web/client/assets/{chunk-SHT3W25Y-CdKCIwuB.js → chunk-SHT3W25Y-CduDz2cm.js} +1 -1
  229. package/dist/web/client/assets/{chunk-SVP7TREG-B94Nu_1-.js → chunk-SVP7TREG-XUn4pPAP.js} +1 -1
  230. package/dist/web/client/assets/{chunk-TICWLB2K-jjRQI_hk.js → chunk-TICWLB2K-DcBy2DKy.js} +1 -1
  231. package/dist/web/client/assets/{chunk-XXDRQBXY-azkbKE37.js → chunk-XXDRQBXY-DqAYeljN.js} +1 -1
  232. package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +1 -0
  233. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +1 -0
  234. package/dist/web/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +1 -0
  235. package/dist/web/client/assets/{cynefin-OW5HDTMX--i9RDU5f.js → cynefin-OW5HDTMX-BecPbyM6.js} +1 -1
  236. package/dist/web/client/assets/{cynefinDiagram-5FMLGOSQ-cRcvyBdp.js → cynefinDiagram-5FMLGOSQ-BzMzFwyT.js} +1 -1
  237. package/dist/web/client/assets/{dagre-GXQ25YYZ-C9mZmAPe.js → dagre-GXQ25YYZ-CAWJmRMG.js} +1 -1
  238. package/dist/web/client/assets/{diagram-S7CK7UJ4-Oj_zlLDY.js → diagram-S7CK7UJ4--lp0ALmn.js} +1 -1
  239. package/dist/web/client/assets/{diagram-UQ7AKVKN-BWKbbfcR.js → diagram-UQ7AKVKN-gKUnsjcj.js} +1 -1
  240. package/dist/web/client/assets/{diagram-VSXAHHWV-C3N3f7DO.js → diagram-VSXAHHWV-BoN5D1Gh.js} +1 -1
  241. package/dist/web/client/assets/{diagram-VX7I27RA-CtDKDAWe.js → diagram-VX7I27RA-BMtuswQ6.js} +1 -1
  242. package/dist/web/client/assets/{diagram-Z3DM3KII-B8bkBRCz.js → diagram-Z3DM3KII-DtU8LXrA.js} +1 -1
  243. package/dist/web/client/assets/dist-v5Q1xZ2K.js +1 -0
  244. package/dist/web/client/assets/{ebnfDiagram-PWID7BFC-CskW-Whx.js → ebnfDiagram-PWID7BFC-DDcnv9BH.js} +1 -1
  245. package/dist/web/client/assets/{erDiagram-RLTQ6QDP-C-83cgCW.js → erDiagram-RLTQ6QDP-DvRb4iDL.js} +1 -1
  246. package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +1 -0
  247. package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +1 -0
  248. package/dist/web/client/assets/framework-YGoR34M4.js +9 -0
  249. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +292 -0
  250. package/dist/web/client/assets/{gitGraph-4MIJSDKK-B40cQtBE.js → gitGraph-4MIJSDKK-DjD_AAMj.js} +1 -1
  251. package/dist/web/client/assets/{gitGraphDiagram-WWUBYQGX-CH-7P7Di.js → gitGraphDiagram-WWUBYQGX-CDyN9n2u.js} +1 -1
  252. package/dist/web/client/assets/index-CVcy0FAn.js +75 -0
  253. package/dist/web/client/assets/{info-A6RAGUB7-eCCE9D_Q.js → info-A6RAGUB7-C_XK8Hq0.js} +1 -1
  254. package/dist/web/client/assets/{infoDiagram-27XIBGKW-DRnvqMjM.js → infoDiagram-27XIBGKW-DIe4tJ1i.js} +1 -1
  255. package/dist/web/client/assets/{ishikawaDiagram-5VMMS53U-DBA_55wp.js → ishikawaDiagram-5VMMS53U-CVl5unKI.js} +1 -1
  256. package/dist/web/client/assets/{journeyDiagram-3NMN7TZE-C-ewpNl7.js → journeyDiagram-3NMN7TZE-CPEB1Vt8.js} +1 -1
  257. package/dist/web/client/assets/{kanban-definition-UXKFOSKX-B1taGsu0.js → kanban-definition-UXKFOSKX-j-9WXjYQ.js} +1 -1
  258. package/dist/web/client/assets/{line-lZ0kyxDI.js → line-BIDAcEtX.js} +1 -1
  259. package/dist/web/client/assets/{linear-DIc8FgZj.js → linear-SzVmGSw4.js} +1 -1
  260. package/dist/web/client/assets/{mermaid-parser.core-SXolxpXw.js → mermaid-parser.core-Ux4vssh0.js} +3 -3
  261. package/dist/web/client/assets/{mermaid.core-DXgQtkNg.js → mermaid.core-CDuwVKeh.js} +4 -4
  262. package/dist/web/client/assets/{mindmap-definition-YA3MSWOX-DXJas9K7.js → mindmap-definition-YA3MSWOX-5MlQEeQ6.js} +1 -1
  263. package/dist/web/client/assets/{packet-AYTQ26CC-OqVl_07o.js → packet-AYTQ26CC-DRO66c9Q.js} +1 -1
  264. package/dist/web/client/assets/{pegDiagram-XKGWAZYB-CPE_zdfN.js → pegDiagram-XKGWAZYB-BakZnSjM.js} +1 -1
  265. package/dist/web/client/assets/{pie-WAS4IAKB-DAxnMBLe.js → pie-WAS4IAKB-BEzcmhz8.js} +1 -1
  266. package/dist/web/client/assets/{pieDiagram-E7YTZNPT-Uwjpufxv.js → pieDiagram-E7YTZNPT-DpmqgoPt.js} +1 -1
  267. package/dist/web/client/assets/prism-core-BtsZdCS6.js +1 -0
  268. package/dist/web/client/assets/{quadrantDiagram-AXDQQJYC-Bjs4yjgs.js → quadrantDiagram-AXDQQJYC-DuMPwwV2.js} +1 -1
  269. package/dist/web/client/assets/{radar-RG4KPBEZ-CuCKjHM3.js → radar-RG4KPBEZ-Djm3oXl5.js} +1 -1
  270. package/dist/web/client/assets/{railroad-74A4TZTK-CnQK-Cc1.js → railroad-74A4TZTK-Cpvkwsao.js} +1 -1
  271. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +1 -0
  272. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +1 -0
  273. package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +1 -0
  274. package/dist/web/client/assets/{railroadDiagram-O6MQD6OU-BDDIPNLL.js → railroadDiagram-O6MQD6OU-CgMS4B6R.js} +1 -1
  275. package/dist/web/client/assets/{requirementDiagram-BXWQKSXE-B5Ydyxc1.js → requirementDiagram-BXWQKSXE-CX5eoNdN.js} +1 -1
  276. package/dist/web/client/assets/rolldown-runtime-hePW80VL.js +1 -0
  277. package/dist/web/client/assets/{sankeyDiagram-P5KCCOFB-Bw2Qym75.js → sankeyDiagram-P5KCCOFB-CODBX2N3.js} +1 -1
  278. package/dist/web/client/assets/{sequenceDiagram-WJ2MYXX4-BZf36nO0.js → sequenceDiagram-WJ2MYXX4-eUhhF8OR.js} +1 -1
  279. package/dist/web/client/assets/src-B6xuSHsQ.js +1 -0
  280. package/dist/web/client/assets/{stateDiagram-D77RDMKH-DnH6JRkp.js → stateDiagram-D77RDMKH-vR6l0NC2.js} +1 -1
  281. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +1 -0
  282. package/dist/web/client/assets/{swimlanes-42K2YHIH-D9PZmtZg.js → swimlanes-42K2YHIH-v9Tw_zX7.js} +1 -1
  283. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +8 -0
  284. package/dist/web/client/assets/{timeline-definition-24CTP7MA-CrkZZBo7.js → timeline-definition-24CTP7MA-DxianbhU.js} +1 -1
  285. package/dist/web/client/assets/{treeView-Q6P3EWNA-C9zDShoC.js → treeView-Q6P3EWNA-DLxnZb9R.js} +1 -1
  286. package/dist/web/client/assets/{treemap-WGGIJYW6-B-plj9yK.js → treemap-WGGIJYW6-I7UnZ6xJ.js} +1 -1
  287. package/dist/web/client/assets/{vennDiagram-4TSXK5OY-VeOdaphN.js → vennDiagram-4TSXK5OY-Ar7M8Mrj.js} +1 -1
  288. package/dist/web/client/assets/{wardley-WFR3VGLG-Wl1P_m6L.js → wardley-WFR3VGLG-B8ZSHeDu.js} +1 -1
  289. package/dist/web/client/assets/{wardleyDiagram-VM6X3IG4-B85-R9t2.js → wardleyDiagram-VM6X3IG4-Qks2FmIn.js} +1 -1
  290. package/dist/web/client/assets/{xychartDiagram-S5SC5T6Z-BrD8OW8m.js → xychartDiagram-S5SC5T6Z-BBBjRtiE.js} +1 -1
  291. package/dist/web/client/index.html +3 -1
  292. package/dist/web/reads-worker.js +17 -17
  293. package/dist/web/server.js +25 -25
  294. package/dist/{web-EU6ATJWA.js → web-EMGUGGEI.js} +3 -3
  295. package/dist/{web-fetch-U22Q7HV4.js → web-fetch-6BRRVQON.js} +22 -5
  296. package/dist/{wiki-generate-LZRLFG6I.js → wiki-generate-XHSJTDOP.js} +104 -100
  297. package/dist/{with-panes-X5CZOGML.js → with-panes-Z6BTEHMZ.js} +11 -11
  298. package/dist/worker/entry.js +101 -87
  299. package/docs/README.md +1 -1
  300. package/docs/architecture/artifact-placement.md +12 -1
  301. package/docs/architecture/library.md +1 -1
  302. package/docs/architecture/prompt-envelope-and-tools.md +37 -27
  303. package/docs/architecture/safety-model.md +19 -6
  304. package/docs/architecture/session-lifecycle.md +10 -4
  305. package/docs/architecture/tui-design.md +37 -14
  306. package/docs/guide/commands-and-modes.md +39 -19
  307. package/docs/guide/configuration-and-targets.md +7 -5
  308. package/docs/guide/configuration-reference.md +116 -13
  309. package/docs/guide/environment-variables.md +2 -5
  310. package/docs/guide/fleet-dispatch.md +3 -2
  311. package/docs/guide/glossary.md +1 -1
  312. package/docs/guide/installation-and-lifecycle.md +2 -2
  313. package/docs/guide/resource-library.md +1 -1
  314. package/docs/guide/tool-usage.md +166 -64
  315. package/docs/guide/troubleshooting.md +1 -1
  316. package/docs/process/documentation-guide.md +1 -0
  317. package/docs/process/fleet-demo-runbook.md +6 -6
  318. package/docs/process/scientific-validation.md +22 -2
  319. package/docs/process/tool-audit-v0.4.9.md +357 -0
  320. package/package.json +1 -1
  321. package/src/cli/argv.ts +31 -0
  322. package/src/cli/clio.ts +17 -13
  323. package/src/cli/config.ts +4 -0
  324. package/src/cli/doctor-panes.ts +1 -1
  325. package/src/cli/doctor.ts +3 -1
  326. package/src/cli/index.ts +14 -1
  327. package/src/cli/mcp.ts +106 -0
  328. package/src/cli/skills-eval.ts +8 -2
  329. package/src/cli/upgrade.ts +34 -38
  330. package/src/cli/verifiers.ts +1 -1
  331. package/src/core/bash-exec.ts +27 -4
  332. package/src/core/config.ts +2 -1
  333. package/src/core/defaults.ts +10 -1
  334. package/src/core/event-bus.ts +1 -1
  335. package/src/core/run-records.ts +438 -0
  336. package/src/core/safe-exec.ts +506 -56
  337. package/src/core/skill-activation.ts +5 -3
  338. package/src/core/termination.ts +3 -3
  339. package/src/core/tool-names.ts +33 -12
  340. package/src/domains/context/clio-md.ts +1 -1
  341. package/src/domains/context/worker/pressure.ts +6 -2
  342. package/src/domains/context/working-set/path-index.ts +7 -2
  343. package/src/domains/dispatch/code-step.ts +7 -2
  344. package/src/domains/dispatch/contract.ts +7 -0
  345. package/src/domains/dispatch/execution-role.ts +3 -3
  346. package/src/domains/dispatch/execution-scheduler.ts +204 -79
  347. package/src/domains/dispatch/extension.ts +131 -14
  348. package/src/domains/dispatch/fleet-preflight.ts +18 -3
  349. package/src/domains/dispatch/fleet-run.ts +1 -0
  350. package/src/domains/dispatch/gate-decisions.ts +3 -3
  351. package/src/domains/dispatch/heartbeat.ts +1 -1
  352. package/src/domains/dispatch/host-verification.ts +16 -14
  353. package/src/domains/dispatch/receipt-findings.ts +3 -4
  354. package/src/domains/dispatch/reservation-store.ts +7 -9
  355. package/src/domains/dispatch/route-facts.ts +1 -1
  356. package/src/domains/dispatch/state.ts +3 -3
  357. package/src/domains/dispatch/types.ts +1 -1
  358. package/src/domains/evidence/build.ts +35 -7
  359. package/src/domains/gateway/mcp/client.ts +923 -0
  360. package/src/domains/gateway/mcp/config.ts +456 -0
  361. package/src/domains/gateway/mcp/index.ts +88 -0
  362. package/src/domains/gateway/mcp/protocol.ts +273 -0
  363. package/src/domains/gateway/mcp/trust.ts +263 -0
  364. package/src/domains/lifecycle/doctor.ts +17 -3
  365. package/src/domains/mux/contract.ts +5 -9
  366. package/src/domains/mux/detect.ts +1 -1
  367. package/src/domains/mux/extension.ts +1 -1
  368. package/src/domains/mux/protocol.ts +5 -7
  369. package/src/domains/mux/socket-client.ts +3 -3
  370. package/src/domains/observability/accountability.ts +2 -2
  371. package/src/domains/observability/contract.ts +7 -3
  372. package/src/domains/observability/evidence-index.ts +2 -2
  373. package/src/domains/observability/projection.ts +10 -0
  374. package/src/domains/prompts/compiler.ts +41 -23
  375. package/src/domains/prompts/fragments/identity/docs-routing.md +2 -2
  376. package/src/domains/prompts/fragments/operating/skills.md +12 -10
  377. package/src/domains/providers/index.ts +5 -1
  378. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +42 -10
  379. package/src/domains/providers/probe/http.ts +44 -59
  380. package/src/domains/providers/probe/reasoning.ts +2 -0
  381. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +20 -31
  382. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +9 -4
  383. package/src/domains/safety/action-classifier.ts +17 -1
  384. package/src/domains/safety/call-target.ts +14 -0
  385. package/src/domains/safety/contract.ts +1 -1
  386. package/src/domains/safety/finish-contract.ts +9 -3
  387. package/src/domains/safety/loop-detector.ts +1 -1
  388. package/src/domains/safety/policy-engine.ts +7 -0
  389. package/src/domains/safety/protected-artifacts.ts +3 -4
  390. package/src/domains/safety/rejection-feedback.ts +1 -1
  391. package/src/domains/safety/scope.ts +2 -3
  392. package/src/domains/safety/validation-contract.ts +3 -2
  393. package/src/domains/scheduling/budget.ts +5 -3
  394. package/src/domains/scheduling/contract.ts +2 -1
  395. package/src/domains/scheduling/extension.ts +3 -3
  396. package/src/domains/session/compaction/branch-summary.ts +1 -1
  397. package/src/domains/session/compaction/compact.ts +25 -2
  398. package/src/domains/session/compaction/cut-point.ts +1 -1
  399. package/src/domains/session/compaction/tokens.ts +5 -10
  400. package/src/domains/session/contract.ts +1 -1
  401. package/src/domains/session/cwd-fallback.ts +2 -2
  402. package/src/domains/session/handoff.ts +5 -1
  403. package/src/domains/session/history.ts +6 -0
  404. package/src/domains/session/manager.ts +14 -7
  405. package/src/domains/session/retry.ts +2 -1
  406. package/src/domains/session/session-artifacts.ts +12 -7
  407. package/src/domains/session/task-board.ts +2 -3
  408. package/src/engine/apis/openai-completions.ts +8 -0
  409. package/src/engine/loop-guard.ts +7 -0
  410. package/src/engine/provider-error-body.ts +65 -0
  411. package/src/engine/session.ts +118 -29
  412. package/src/engine/worker-runtime.ts +3 -0
  413. package/src/entry/boot-options.ts +2 -0
  414. package/src/entry/orchestrator.ts +18 -2
  415. package/src/interactive/chat-loop-policy.ts +1 -0
  416. package/src/interactive/chat-loop.ts +8 -4
  417. package/src/interactive/chat-panel.ts +23 -9
  418. package/src/interactive/chat-renderer.ts +33 -11
  419. package/src/interactive/clio-editor.ts +13 -5
  420. package/src/interactive/dispatch-board.ts +70 -30
  421. package/src/interactive/editor-submit.ts +30 -25
  422. package/src/interactive/footer/widgets.ts +12 -9
  423. package/src/interactive/interactive-presentation.ts +2 -3
  424. package/src/interactive/mux-bridge.ts +3 -7
  425. package/src/interactive/overlay-general-openers.ts +14 -7
  426. package/src/interactive/overlays/cwd-fallback.ts +1 -1
  427. package/src/interactive/overlays/library-model.ts +114 -35
  428. package/src/interactive/overlays/library.ts +52 -5
  429. package/src/interactive/overlays/list-overlay.ts +4 -1
  430. package/src/interactive/overlays/session-selector.ts +28 -23
  431. package/src/interactive/overlays/settings.ts +20 -1
  432. package/src/interactive/overlays/tree-selector.ts +47 -10
  433. package/src/interactive/panes-runtime.ts +1 -1
  434. package/src/interactive/renderers/compaction-summary.ts +1 -1
  435. package/src/interactive/renderers/provider-error.ts +118 -0
  436. package/src/interactive/renderers/retry-status.ts +59 -23
  437. package/src/interactive/renderers/tool-execution.ts +67 -7
  438. package/src/interactive/renderers/worker-answer.ts +198 -0
  439. package/src/interactive/renderers/worker-entry.ts +57 -163
  440. package/src/interactive/slash-commands.ts +26 -1
  441. package/src/interactive/slash-spec.ts +2 -2
  442. package/src/interactive/theme/labels.ts +66 -30
  443. package/src/interactive/turn-persistence.ts +6 -1
  444. package/src/interactive/turn-recovery.ts +2 -1
  445. package/src/interactive/turn-runtime.ts +22 -5
  446. package/src/interactive/view/artifacts.ts +3 -2
  447. package/src/interactive/view/view-overlay.ts +96 -20
  448. package/src/tools/agent-tools.ts +21 -7
  449. package/src/tools/artifact.ts +16 -8
  450. package/src/tools/bash.ts +90 -11
  451. package/src/tools/bootstrap.ts +42 -4
  452. package/src/tools/builtin-tool-catalog.ts +72 -7
  453. package/src/tools/context/index.ts +27 -31
  454. package/src/tools/context/library.ts +3 -1
  455. package/src/tools/context/surface.ts +12 -26
  456. package/src/tools/core-bootstrap.ts +72 -1
  457. package/src/tools/data/csv.ts +1189 -0
  458. package/src/tools/data/index.ts +308 -0
  459. package/src/tools/data/json.ts +1799 -0
  460. package/src/tools/data/jsonl.ts +561 -0
  461. package/src/tools/data/shared.ts +452 -0
  462. package/src/tools/edit-diff.ts +0 -7
  463. package/src/tools/edit.ts +115 -18
  464. package/src/tools/file-mutation-queue.ts +114 -4
  465. package/src/tools/find.ts +108 -29
  466. package/src/tools/gateway/caps.ts +11 -0
  467. package/src/tools/gateway/clio-context-surface.ts +41 -0
  468. package/src/tools/gateway/clio-context-tools.ts +77 -0
  469. package/src/tools/gateway/data-surface.ts +138 -0
  470. package/src/tools/gateway/data-tool.ts +201 -0
  471. package/src/tools/gateway/index.ts +342 -0
  472. package/src/tools/gateway/mcp-capabilities.ts +469 -0
  473. package/src/tools/grep.ts +88 -33
  474. package/src/tools/harness-extensions.ts +3 -0
  475. package/src/tools/ignore-policy.ts +7 -5
  476. package/src/tools/ls.ts +111 -20
  477. package/src/tools/policy.ts +35 -13
  478. package/src/tools/presentation.ts +6 -0
  479. package/src/tools/read.ts +634 -156
  480. package/src/tools/registry.ts +94 -6
  481. package/src/tools/run-script.ts +997 -0
  482. package/src/tools/spawn-hygiene.ts +157 -5
  483. package/src/tools/surface.ts +163 -0
  484. package/src/tools/verify/authoring.ts +8 -3
  485. package/src/tools/verify/catalog.ts +14 -1
  486. package/src/tools/verify/numeric.ts +367 -59
  487. package/src/tools/verify/perf.ts +171 -9
  488. package/src/tools/verify/scripts.ts +178 -26
  489. package/src/tools/web-fetch-surface.ts +22 -0
  490. package/src/tools/web-fetch.ts +26 -1
  491. package/src/tools/write.ts +45 -19
  492. package/dist/chunk-B6UM3OZC.js +0 -15
  493. package/dist/chunk-GJ24ODAX.js +0 -196
  494. package/dist/chunk-LZCCBLRC.js +0 -57
  495. package/dist/web/client/assets/architecture-7GRP2DOG-EGozsYEO.js +0 -1
  496. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-z9FokbJl.js +0 -36
  497. package/dist/web/client/assets/channel-CiUWbHN9.js +0 -1
  498. package/dist/web/client/assets/chunk-DU6HZSFF-C5USiOAy.js +0 -125
  499. package/dist/web/client/assets/classDiagram-ZZMXUADV-CMODalmo.js +0 -1
  500. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-CMODalmo.js +0 -1
  501. package/dist/web/client/assets/cose-bilkent-JH36ORCC-RbQL23qS.js +0 -1
  502. package/dist/web/client/assets/dist-D0_q-A2b.js +0 -1
  503. package/dist/web/client/assets/eventmodeling-NTZA5JFV-DjVq8wKU.js +0 -1
  504. package/dist/web/client/assets/flowDiagram-HODETNUW-BUiCBGXt.js +0 -1
  505. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-B2lb8lvF.js +0 -292
  506. package/dist/web/client/assets/index-FSIC94pi.js +0 -83
  507. package/dist/web/client/assets/prism-core-BngLtbUd.js +0 -1
  508. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-BcW01NZG.js +0 -1
  509. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-B7YCEDDd.js +0 -1
  510. package/dist/web/client/assets/railroad-peg-WCYAUIDC-DjNZbSTZ.js +0 -1
  511. package/dist/web/client/assets/src-yeptRXpt.js +0 -1
  512. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-C7QtHeK4.js +0 -1
  513. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-CBZlPFky.js +0 -8
package/src/cli/mcp.ts ADDED
@@ -0,0 +1,106 @@
1
+ import {
2
+ MCP_TRUST_ACTION_CLASSES,
3
+ type McpTrustActionClass,
4
+ type McpTrustOptions,
5
+ resolveMcpServers,
6
+ trustMcpServer,
7
+ untrustMcpServer,
8
+ } from "../domains/gateway/mcp/index.js";
9
+ import { printError } from "./shared.js";
10
+
11
+ const HELP = `clio-coder mcp <command>
12
+
13
+ Commands:
14
+ clio-coder mcp list [--json]
15
+ clio-coder mcp trust <id> [--action-class <class>] [--json]
16
+ clio-coder mcp untrust <id> [--json]
17
+
18
+ Action classes: ${MCP_TRUST_ACTION_CLASSES.join(", ")}
19
+
20
+ JSON responses (--json):
21
+ list: {servers: [...], diagnostics: [...], trustDiagnostics: [...]}
22
+ Each server includes its declaration and trust {status, actionClass, reason?}.
23
+ trust: {ok: true, record: {projectRoot, id, digest, actionClass, trustedAt}}
24
+ untrust: {ok: true, removed: boolean}
25
+ errors: {ok: false, message: string}
26
+ Exit codes: 0 success; 1 operational failure; 2 invalid usage.
27
+ List retains its response shape on failure and exits 1 when config or trust
28
+ diagnostics are present. Mutation errors return the error shape with a
29
+ one-line reason. --help prints this text even when --json is supplied.
30
+ `;
31
+
32
+ export interface McpCommandOutput {
33
+ code: number;
34
+ text: string;
35
+ data: unknown;
36
+ }
37
+
38
+ /** Shared operator outcomes for the CLI and slash command. */
39
+ export function mcpCommandOutput(
40
+ argv: ReadonlyArray<string>,
41
+ options: McpTrustOptions = { cwd: process.cwd() },
42
+ ): McpCommandOutput {
43
+ const fail = (code: number, message: string): McpCommandOutput => {
44
+ const text = message.replace(/[\r\n]+/gu, " ");
45
+ return { code, text, data: { ok: false, message: text } };
46
+ };
47
+ try {
48
+ const [command, id, ...rest] = argv;
49
+ if (command === "list" && id === undefined) {
50
+ const result = resolveMcpServers(options);
51
+ const lines = result.servers.map(
52
+ (server) =>
53
+ `${server.id} scope=${server.scope} command=${JSON.stringify([server.command, ...server.args])} cwd=${JSON.stringify(server.cwd)} trust=${server.trust.status}${"reason" in server.trust ? ` (${server.trust.reason})` : ""} actionClass=${server.trust.actionClass}`,
54
+ );
55
+ lines.push(...result.diagnostics.map((entry) => `${entry.path}: ${entry.message}`), ...result.trustDiagnostics);
56
+ return {
57
+ code: result.diagnostics.length || result.trustDiagnostics.length ? 1 : 0,
58
+ text: lines.join("\n") || "mcp: none",
59
+ data: result,
60
+ };
61
+ }
62
+ if ((command !== "trust" && command !== "untrust") || !id)
63
+ return fail(2, "usage: clio-coder mcp list | trust <id> [--action-class <class>] | untrust <id>");
64
+ let actionClass: McpTrustActionClass | undefined;
65
+ if (rest.length) {
66
+ if (
67
+ command !== "trust" ||
68
+ rest.length !== 2 ||
69
+ rest[0] !== "--action-class" ||
70
+ !MCP_TRUST_ACTION_CLASSES.includes(rest[1] as McpTrustActionClass)
71
+ )
72
+ return fail(2, `--action-class must be one of ${MCP_TRUST_ACTION_CLASSES.join(", ")} and applies only to trust`);
73
+ actionClass = rest[1] as McpTrustActionClass;
74
+ }
75
+ if (command === "trust") {
76
+ const result = trustMcpServer({ ...options, id, ...(actionClass ? { actionClass } : {}) });
77
+ return result.ok
78
+ ? { code: 0, text: `mcp: trusted ${id} ${JSON.stringify(result.record)}`, data: result }
79
+ : fail(1, result.message);
80
+ }
81
+ const resolved = resolveMcpServers(options);
82
+ const server = resolved.servers.find((entry) => entry.id === id);
83
+ if (!server) return fail(1, `no declared MCP server with id '${id}'`);
84
+ if (server.scope === "user")
85
+ return fail(1, `server '${id}' is a user-scope declaration; it is trusted by authorship`);
86
+ const result = untrustMcpServer({ ...options, id });
87
+ return result.ok
88
+ ? { code: 0, text: `mcp: untrusted ${id} (record ${result.removed ? "removed" : "already absent"})`, data: result }
89
+ : fail(1, result.message);
90
+ } catch (error) {
91
+ return fail(1, error instanceof Error ? error.message : String(error));
92
+ }
93
+ }
94
+
95
+ export function runMcpCommand(argv: ReadonlyArray<string>): number {
96
+ if (argv.includes("--help") || argv.includes("-h")) {
97
+ process.stdout.write(HELP);
98
+ return 0;
99
+ }
100
+ const json = argv.includes("--json");
101
+ const result = mcpCommandOutput(argv.filter((arg) => arg !== "--json"));
102
+ if (json) process.stdout.write(`${JSON.stringify(result.data, null, 2)}\n`);
103
+ else if (result.code && argv[0] !== "list") printError(result.text);
104
+ else process.stdout.write(`${result.text}\n`);
105
+ return result.code;
106
+ }
@@ -26,6 +26,7 @@ import {
26
26
  type SkillEvalScenario,
27
27
  } from "../domains/resources/index.js";
28
28
  import { NO_NETWORK_TOOLS_ENV } from "../tools/network-policy.js";
29
+ import { effectiveToolCall } from "../tools/surface.js";
29
30
  import { formatColumns, printError } from "./shared.js";
30
31
 
31
32
  /**
@@ -845,9 +846,14 @@ function parseRunStdout(stdout: string): { sessionId: string | null; transcript:
845
846
  continue;
846
847
  }
847
848
  if (event.type === "tool_execution_start") {
848
- const tool = readString(event.toolName) ?? readString(event.tool) ?? "tool";
849
- const args = event.args ?? event.arguments ?? event.input;
849
+ const recordedTool = readString(event.toolName) ?? readString(event.tool) ?? "tool";
850
+ const recordedArgs = event.args ?? event.arguments ?? event.input;
850
851
  const callId = readString(event.toolCallId);
852
+ // A gateway call is judged as the capability it reached: an artifact
853
+ // written through the gateway is still the terminal answer.
854
+ const effective = effectiveToolCall(recordedTool, recordedArgs);
855
+ const tool = effective.toolName;
856
+ const args = effective.viaGateway ? effective.args : recordedArgs;
851
857
  if (callId !== null && loadsSkillBody(tool, args)) skillBodyCallIds.add(callId);
852
858
  lines.push(`TOOL ${tool} args=${preview(args)}`);
853
859
  // Terminating tools end the turn with no assistant text; their content
@@ -86,24 +86,10 @@ function parseUpgradeArgs(argv: ReadonlyArray<string>): UpgradeOptions {
86
86
  * the installed version is the newest one.
87
87
  */
88
88
  type RegistryLookup =
89
- | { asked: false; reason: "source checkout" | "network checks are disabled" | "post-install checks" }
89
+ | { asked: false; reason: "source checkout" | "post-install checks" }
90
90
  | { asked: true; version: string | null };
91
91
 
92
- function testSeam(name: string): string | undefined {
93
- if (process.env.NODE_ENV !== "test") return undefined;
94
- return process.env[name];
95
- }
96
-
97
- async function lookUpAvailableVersion(
98
- channel: Channel,
99
- method: "source" | "npm",
100
- noNetwork: boolean,
101
- ): Promise<RegistryLookup> {
102
- const seam = testSeam("CLIO_CODER_TEST_UPGRADE_AVAILABLE");
103
- // `unreachable` stands in for a registry that answered nothing, which is the
104
- // only way to reach that branch without a network in the test.
105
- if (seam) return { asked: true, version: seam === "unreachable" ? null : seam };
106
- if (noNetwork) return { asked: false, reason: "network checks are disabled" };
92
+ async function lookUpAvailableVersion(channel: Channel, method: "source" | "npm"): Promise<RegistryLookup> {
107
93
  if (method === "source") return { asked: false, reason: "source checkout" };
108
94
  try {
109
95
  const res = await fetch(`https://registry.npmjs.org/@iowarp/clio-coder/${channel}`, {
@@ -149,16 +135,10 @@ async function runChild(command: string, args: ReadonlyArray<string>, label: str
149
135
  }
150
136
 
151
137
  async function runNpmInstall(channel: Channel): Promise<void> {
152
- if (testSeam("CLIO_CODER_TEST_UPGRADE_FAIL") === "npm") {
153
- throw new Error("npm ERR! 404 Not Found (mock failure)");
154
- }
155
138
  await runChild("npm", ["install", "-g", `@iowarp/clio-coder@${channel}`], "npm install");
156
139
  }
157
140
 
158
141
  async function runDoctorFixAfterInstall(): Promise<void> {
159
- if (testSeam("CLIO_CODER_TEST_UPGRADE_FAIL") === "doctor") {
160
- throw new Error("mock doctor fix failure");
161
- }
162
142
  await runChild("clio-coder", ["doctor", "--fix"], "clio-coder doctor --fix");
163
143
  }
164
144
 
@@ -168,7 +148,29 @@ async function runPostInstallUpgrade(opts: UpgradeOptions): Promise<void> {
168
148
  await runChild("clio-coder", args, "clio-coder upgrade --post-install");
169
149
  }
170
150
 
171
- export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<number> {
151
+ export interface UpgradeDependencies {
152
+ detectInstallMethod: typeof detectInstallMethod;
153
+ lookUpAvailableVersion: typeof lookUpAvailableVersion;
154
+ runNpmInstall: typeof runNpmInstall;
155
+ runDoctorFixAfterInstall: typeof runDoctorFixAfterInstall;
156
+ runPostInstallUpgrade: typeof runPostInstallUpgrade;
157
+ runPending: typeof runPending;
158
+ }
159
+
160
+ const DEFAULT_DEPENDENCIES: UpgradeDependencies = {
161
+ detectInstallMethod,
162
+ lookUpAvailableVersion,
163
+ runNpmInstall,
164
+ runDoctorFixAfterInstall,
165
+ runPostInstallUpgrade,
166
+ runPending,
167
+ };
168
+
169
+ export async function runUpgradeCommand(
170
+ argv: ReadonlyArray<string>,
171
+ dependencies: Partial<UpgradeDependencies> = {},
172
+ ): Promise<number> {
173
+ const deps = { ...DEFAULT_DEPENDENCIES, ...dependencies };
172
174
  let opts: UpgradeOptions;
173
175
  try {
174
176
  opts = parseUpgradeArgs(argv);
@@ -186,14 +188,13 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
186
188
 
187
189
  const before = getVersionInfo().clio;
188
190
  const stateDir = resolveClioDirs().state;
189
- const method = detectInstallMethod();
191
+ const method = deps.detectInstallMethod();
190
192
  const methodLabel = method === "source" ? "source checkout" : opts.postInstall ? "package install" : "npm global";
191
193
  presenter.setMethod(methodLabel);
192
194
 
193
- const noNetwork = Boolean(testSeam("CLIO_CODER_TEST_UPGRADE_NO_NETWORK"));
194
195
  const lookup: RegistryLookup = opts.postInstall
195
196
  ? { asked: false, reason: "post-install checks" }
196
- : await lookUpAvailableVersion(opts.channel, method, noNetwork);
197
+ : await deps.lookUpAvailableVersion(opts.channel, method);
197
198
  const availableVersion = lookup.asked ? lookup.version : null;
198
199
 
199
200
  presenter.step(`Installation method: ${methodLabel}`);
@@ -223,8 +224,8 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
223
224
  // "Already current" is a claim about a version that was compared. A lookup
224
225
  // that was made and came back empty has compared nothing, so it does not get
225
226
  // to make it: the run falls through and attempts the install, which is what
226
- // the operator asked for. A lookup that was never owed (a checkout, or the
227
- // network seam) leaves the recorded state version to decide.
227
+ // the operator asked for. A lookup that was never owed for a checkout or
228
+ // post-install checks leaves the recorded state version to decide.
228
229
  const versionIsCurrent =
229
230
  (lookup.asked ? lookup.version === before : true) && (recorded === null || recorded === before);
230
231
  const hasPendingMigrations = pendingMigrationIds.length > 0;
@@ -260,11 +261,9 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
260
261
  presenter.note("Running post-install checks with the active clio-coder binary.");
261
262
  } else if (method === "source") {
262
263
  presenter.note("Source checkout: no npm install to run.");
263
- } else if (noNetwork) {
264
- presenter.note("CLIO_CODER_TEST_UPGRADE_NO_NETWORK is set; skipping npm install.");
265
264
  } else {
266
265
  try {
267
- await runNpmInstall(opts.channel);
266
+ await deps.runNpmInstall(opts.channel);
268
267
  presenter.completedStep(`Installed @iowarp/clio-coder@${opts.channel}`);
269
268
  } catch (err) {
270
269
  presenter.fail("npm install failed", err instanceof Error ? err.message : String(err));
@@ -276,7 +275,7 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
276
275
  return 1;
277
276
  }
278
277
  try {
279
- await runPostInstallUpgrade(opts);
278
+ await deps.runPostInstallUpgrade(opts);
280
279
  presenter.done("Done");
281
280
  return 0;
282
281
  } catch (err) {
@@ -293,10 +292,7 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
293
292
  } else {
294
293
  let result: Awaited<ReturnType<typeof runPending>>;
295
294
  try {
296
- if (testSeam("CLIO_CODER_TEST_UPGRADE_FAIL") === "migration") {
297
- throw new Error("mock migration failure in 2026-09-01-settings-v2");
298
- }
299
- result = await runPending(stateDir);
295
+ result = await deps.runPending(stateDir);
300
296
  } catch (err) {
301
297
  presenter.fail("migration failed", err instanceof Error ? err.message : String(err));
302
298
  presenter.commandAdvice(
@@ -312,13 +308,13 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
312
308
  else for (const id of applied) presenter.completedStep(`Applied migration ${id}`);
313
309
  }
314
310
 
315
- if (method === "source" || noNetwork) {
311
+ if (method === "source") {
316
312
  const refresh = describeRefresh();
317
313
  initializeClioHome();
318
314
  presenter.completedStep(`Refreshed ${refresh}`);
319
315
  } else {
320
316
  try {
321
- await runDoctorFixAfterInstall();
317
+ await deps.runDoctorFixAfterInstall();
322
318
  presenter.completedStep("Checked the install with clio-coder doctor --fix");
323
319
  } catch (err) {
324
320
  presenter.fail("doctor fix failed", err instanceof Error ? err.message : String(err));
@@ -38,7 +38,7 @@ Fields:
38
38
  --tags <a,b> comma-separated catalog tags
39
39
  --kind <kind> command (default), numeric-compare, or perf-budget
40
40
  --reference <path> numeric-compare: repository-relative reference JSON of string -> number | number[]
41
- --tolerance <json> numeric-compare: {"relative"?,"absolute"?,"ulp"?}, at least one;
41
+ --tolerance <json> numeric-compare: {"relative"?,"absolute"?,"ulp"?,"combine"?:all|any,"nonFinite"?:fail|match}, at least one numeric bound;
42
42
  perf-budget with --baseline: {"relative"} headroom over the baseline
43
43
  --budget-ms <number> perf-budget: wall-time bound in milliseconds
44
44
  --budget-relative <r> perf-budget with --budget-ms: fractional headroom over the bound
@@ -21,7 +21,14 @@ export const BASH_HARD_CAP_BYTES = 16 * 1024 * 1024;
21
21
 
22
22
  const CLIO_CONTROL_ENV_KEYS = ["CLIO_CODER_INTERACTIVE", "BASH_ENV", "ENV"] as const;
23
23
 
24
- export interface BashCommandResult {
24
+ export interface BashStreamByteCounts {
25
+ observedStdoutBytes: number;
26
+ observedStderrBytes: number;
27
+ retainedStdoutBytes: number;
28
+ retainedStderrBytes: number;
29
+ }
30
+
31
+ export interface BashCommandResult extends Partial<BashStreamByteCounts> {
25
32
  error: NodeJS.ErrnoException | null;
26
33
  stdout: string;
27
34
  stderr: string;
@@ -60,6 +67,8 @@ export interface BashProgressScheduler {
60
67
  }
61
68
 
62
69
  export interface BashOutputProgressController {
70
+ /** Raw stream byte counts, independent of UTF-8 decoding and capture clipping. */
71
+ byteCounts(): BashStreamByteCounts;
63
72
  /** Emit the initial empty cumulative snapshot, when a callback is configured. */
64
73
  start(): void;
65
74
  /** Accept one stream chunk. Returns true only when this chunk reaches the hard cap. */
@@ -90,6 +99,12 @@ export function createBashOutputProgressController(
90
99
  const stdoutDecoder = new StringDecoder("utf8");
91
100
  const stderrDecoder = new StringDecoder("utf8");
92
101
  let decodersFinished = false;
102
+ const counts: BashStreamByteCounts = {
103
+ observedStdoutBytes: 0,
104
+ observedStderrBytes: 0,
105
+ retainedStdoutBytes: 0,
106
+ retainedStderrBytes: 0,
107
+ };
93
108
  let outputBytes = 0;
94
109
  let outputCapped = false;
95
110
  let updateTimer: unknown = null;
@@ -144,16 +159,22 @@ export function createBashOutputProgressController(
144
159
  };
145
160
 
146
161
  return {
162
+ byteCounts: () => ({ ...counts }),
147
163
  start(): void {
148
164
  if (phase !== "active" || onUpdate === undefined) return;
149
165
  updateDirty = true;
150
166
  emitUpdate();
151
167
  },
152
168
  append(target, chunk): boolean {
153
- if (phase !== "active" || outputCapped) return false;
169
+ if (phase !== "active") return false;
170
+ if (target === "stdout") counts.observedStdoutBytes += chunk.byteLength;
171
+ else counts.observedStderrBytes += chunk.byteLength;
172
+ if (outputCapped) return false;
154
173
  const remaining = BASH_HARD_CAP_BYTES - outputBytes;
155
174
  const accepted = chunk.byteLength <= remaining ? chunk : chunk.subarray(0, Math.max(0, remaining));
156
175
  outputBytes += accepted.byteLength;
176
+ if (target === "stdout") counts.retainedStdoutBytes += accepted.byteLength;
177
+ else counts.retainedStderrBytes += accepted.byteLength;
157
178
  if (accepted.byteLength > 0) {
158
179
  const decoded = target === "stdout" ? stdoutDecoder.write(accepted) : stderrDecoder.write(accepted);
159
180
  if (target === "stdout") stdout += decoded;
@@ -213,7 +234,7 @@ function parseNullDelimitedEnv(raw: string): NodeJS.ProcessEnv | null {
213
234
  }
214
235
 
215
236
  function captureLoginEnv(): Promise<NodeJS.ProcessEnv | null> {
216
- return new Promise((resolve) => {
237
+ return new Promise<NodeJS.ProcessEnv | null>((resolve) => {
217
238
  let stdout = "";
218
239
  let settled = false;
219
240
  const finish = (value: NodeJS.ProcessEnv | null): void => {
@@ -266,7 +287,7 @@ export async function runBashCommand(command: string, options: RunBashCommandOpt
266
287
  enabled: gitCommitAttributionEnabled(process.env),
267
288
  });
268
289
  reportCommitAttributionDiagnostic(attribution.diagnostic);
269
- return new Promise((resolve) => {
290
+ return new Promise<BashCommandResult>((resolve) => {
270
291
  const timeout = clampTimerDelayMs(options.timeoutMs ?? 300_000);
271
292
  let aborted = false;
272
293
  let timedOut = false;
@@ -377,6 +398,7 @@ export async function runBashCommand(command: string, options: RunBashCommandOpt
377
398
  resolveAfterCancellation({
378
399
  error: error as NodeJS.ErrnoException,
379
400
  ...finalOutput,
401
+ ...output.byteCounts(),
380
402
  exitCode: null,
381
403
  signal: null,
382
404
  aborted,
@@ -401,6 +423,7 @@ export async function runBashCommand(command: string, options: RunBashCommandOpt
401
423
  resolveAfterCancellation({
402
424
  error,
403
425
  ...finalOutput,
426
+ ...output.byteCounts(),
404
427
  exitCode: code,
405
428
  signal: signalName,
406
429
  aborted,
@@ -1309,12 +1309,13 @@ export function validateSettings(raw: unknown): SettingsValidationResult {
1309
1309
  "baseDelayMs",
1310
1310
  "maxDelayMs",
1311
1311
  "streamStallMs",
1312
+ "firstTokenStallMs",
1312
1313
  ]);
1313
1314
  if ("enabled" in chat.retry) {
1314
1315
  const parsed = expectBoolean(issues, "chat.retry.enabled", chat.retry.enabled);
1315
1316
  if (parsed !== undefined) settings.chat.retry.enabled = parsed;
1316
1317
  }
1317
- for (const key of ["maxRetries", "baseDelayMs", "maxDelayMs", "streamStallMs"] as const) {
1318
+ for (const key of ["maxRetries", "baseDelayMs", "maxDelayMs", "streamStallMs", "firstTokenStallMs"] as const) {
1318
1319
  if (!(key in chat.retry)) continue;
1319
1320
  const parsed = expectInteger(issues, `chat.retry.${key}`, chat.retry[key], { min: 0 });
1320
1321
  if (parsed !== undefined) settings.chat.retry[key] = parsed;
@@ -217,6 +217,13 @@ export interface RetrySettings {
217
217
  maxDelayMs: number;
218
218
  /** Silence on an in-flight stream past this many ms is treated as a wedged backend: abort and retry. */
219
219
  streamStallMs: number;
220
+ /**
221
+ * Silence allowed before a call's first token. A local server that slept
222
+ * reloads the model and prefills cold before it can emit anything, so this
223
+ * window is longer than the mid-stream one. 0 never aborts a call that has
224
+ * not started streaming.
225
+ */
226
+ firstTokenStallMs: number;
220
227
  }
221
228
 
222
229
  export const OUTPUT_STYLES = ["compact", "standard", "detailed"] as const;
@@ -391,7 +398,7 @@ export interface FleetSettings extends FleetRouteSettings {
391
398
  history: FleetHistorySettings;
392
399
  }
393
400
 
394
- /** Roles whose authority is narrow enough for Slice 9 active joint routing. */
401
+ /** Roles whose authority is narrow enough for active joint routing. */
395
402
  export const ACTIVE_ROUTING_ROLES = ["researcher", "verifier", "reviewer", "judge"] as const;
396
403
  export type ActiveRoutingRole = (typeof ACTIVE_ROUTING_ROLES)[number];
397
404
 
@@ -485,6 +492,7 @@ export const DEFAULT_SETTINGS = {
485
492
  baseDelayMs: 2000,
486
493
  maxDelayMs: 60000,
487
494
  streamStallMs: 180000,
495
+ firstTokenStallMs: 600000,
488
496
  } as RetrySettings,
489
497
  } as ChatSettings,
490
498
  fleet: {
@@ -620,6 +628,7 @@ chat:
620
628
  baseDelayMs: 2000
621
629
  maxDelayMs: 60000
622
630
  streamStallMs: 180000
631
+ firstTokenStallMs: 600000
623
632
 
624
633
  fleet:
625
634
  default:
@@ -14,7 +14,7 @@ import type { BusChannel, BusPayloadMap } from "./bus-events.js";
14
14
  * settling, so side effects that must happen before the next emit() must be
15
15
  * completed synchronously.
16
16
  *
17
- * Phase 2+ registers domain listeners here; violate the invariant and
17
+ * Domain listeners register here; violate the invariant and
18
18
  * shutdown.* ordering or banner timing will drift.
19
19
  */
20
20
  export type SafeEventListener<C extends BusChannel = BusChannel> = (payload: BusPayloadMap[C]) => void | Promise<void>;