@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
@@ -0,0 +1,357 @@
1
+ # Individual Tool Audit for v0.4.9
2
+
3
+ This is the landed disposition of each builtin tool and each dynamic capability family. It replaces the pre-implementation findings with the current contract, without treating placement as proof of correctness. Source references name the implementation; [Tool usage](../guide/tool-usage.md) supplies detailed arguments and examples. `src/tools/surface.ts` owns placement and `src/tools/policy.ts` owns action class/concurrency. There are 30 builtin names, plus extension and MCP families whose individual schemas are discovered at runtime.
4
+
5
+ The implementation commits are on the candidate branch; this document does not claim that the version has been published. Scientific integrity below describes evidence and limits, not an empirical certification of each tool. Existing orchestration and interaction behavior was checked for its documentation contract; no new scientific benchmark or full source re-audit is claimed.
6
+
7
+ ## read
8
+
9
+ - **Purpose:** Retrieve cited text windows or supported images from a known file.
10
+ - **Placement:** Direct OBSERVE, read class, parallel.
11
+ - **Contract:** `path`, `offset`, `limit`, `tail`, `line_numbers`; bounded text and file identity/change details; refuse binary or invalid UTF-8 with byte offsets.
12
+ - **Implementation:** `src/tools/read.ts` uses bounded fd windows and backward tail scans. Exact counts stop above 32 MiB; images keep a 20 MB (20000000 bytes) ceiling. Observation bytes and lines are bounded. Tail numbering is refused when the total is unknown.
13
+ - **Scientific integrity:** `N+` and continuation distinguish a window from a dataset. Observed changes do not create snapshot isolation; unread bytes are not validated.
14
+ - **Disposition:** Redesign the whole-file reader; retain explicit pagination and image behavior.
15
+
16
+ Status: landed in `30826041`.
17
+
18
+ ## write
19
+
20
+ - **Purpose:** Create or regenerate a complete UTF-8 file.
21
+ - **Placement:** Direct MUTATE, write class, sequential.
22
+ - **Contract:** `path`, `content`; byte count, eligible diff, paths, before/after identity, and possible durability warning. Existing targets are overwritten.
23
+ - **Implementation:** `src/tools/write.ts` and `src/tools/file-mutation-queue.ts` serialize same-target writes and publish by temporary file, fsync, and real-target rename. Previous-content comparison is bounded; either version above 1 MiB skips diff generation. Symlink targets and mode bits are preserved.
24
+ - **Scientific integrity:** No partial publication before rename, but external writers are unlocked and last rename wins. Ownership, ACLs, xattrs, and original timestamps are not preserved. A write is not data validation.
25
+ - **Disposition:** Repair publication and evidence; retain full-file replacement semantics.
26
+
27
+ Status: landed in `82ebee28`.
28
+
29
+ ## edit
30
+
31
+ - **Purpose:** Apply disjoint targeted replacements to one existing text file.
32
+ - **Placement:** Direct MUTATE, write class, sequential.
33
+ - **Contract:** `path`, `edits`; refuse absent/ambiguous matches, overlaps, no-ops, NUL, invalid UTF-8, mixed endings, and bare CR. Preserve BOM and uniform LF/CRLF.
34
+ - **Implementation:** `src/tools/edit.ts`, `edit-diff.ts`, and `file-mutation-queue.ts`. Small files try exact, normalized punctuation/whitespace, then indentation-relaxed matching. Above 1 MiB only exact matching is allowed. Atomic publication and identity reporting match write; large diffs are skipped before construction.
35
+ - **Scientific integrity:** Invalid bytes are never silently repaired. Editing still holds source/replacement in memory; file identity does not enforce an earlier-read precondition or lock external writers.
36
+ - **Disposition:** Repair encoding, publication, and large-file allocation behavior.
37
+
38
+ Status: landed in `82ebee28`.
39
+
40
+ ## bash
41
+
42
+ - **Purpose:** Execute shell workflows that require shell semantics.
43
+ - **Placement:** Direct EXECUTE, execute class, sequential; command classification can escalate authority.
44
+ - **Contract:** `command`, `cwd`, `timeout_ms`, `output_policy`; combined result with separate termination and disposition facts. The combined 16 MiB output ceiling stops the child.
45
+ - **Implementation:** `src/tools/bash.ts`, `src/core/bash-exec.ts`, and result shaping retain the existing process lifecycle and login-environment snapshot. Cap handling distinguishes raw observed and retained bytes, decoded retention, actual offload, and discarded bytes.
46
+ - **Scientific integrity:** Summary and metadata-only projections preserve failure/retrieval facts. A cap is unsuccessful partial execution, not a complete dataset; use run_script for streaming.
47
+ - **Disposition:** Retain the cap and repair diagnostic and retention honesty.
48
+
49
+ Status: landed in `bde78f76`.
50
+
51
+ ## grep
52
+
53
+ - **Purpose:** Locate content matches with source-line citations.
54
+ - **Placement:** Direct OBSERVE, read class, parallel.
55
+ - **Contract:** Pattern/path, content/files/count modes, glob, context, limits, and ignore options; partial results carry `details.search` completeness, reason, skipped counts/samples, and unknown coverage.
56
+ - **Implementation:** `src/tools/grep.ts` and `spawn-hygiene.ts` preserve collected native results on timeout, cancellation, and recoverable errors. Native diagnostics have bounded decoding; fallback traversal/read work is asynchronous and skips oversized, binary, or unreadable inputs explicitly.
57
+ - **Scientific integrity:** Complete empty and incomplete searches are distinct. Native `.gitignore` and fallback generated-directory-only semantics are disclosed; counts never imply unseen paths were searched.
58
+ - **Disposition:** Repair completeness, diagnostics, and responsiveness.
59
+
60
+ Status: landed in `17e2de0b`; ignore-policy clarification in `bde78f76`.
61
+
62
+ ## find
63
+
64
+ - **Purpose:** Locate paths using filename/glob or bounded recent-change selection.
65
+ - **Placement:** Direct OBSERVE, read class, parallel.
66
+ - **Contract:** `pattern`, `path`, `order`, `limit`, `include_ignored`; paths, continuation, candidate bounds, and `details.search`.
67
+ - **Implementation:** `src/tools/find.ts` keeps fd's glob/smart-case filtering and native result cap. The fallback is asynchronous. Mtime selection stats only a bounded candidate set; neither traversal follows symlinked directories.
68
+ - **Scientific integrity:** Mtime order can be approximate. Native skipped symlink-directory counts are explicitly unavailable (`counted=false`); fallback counts them. Native and fallback matching/ignore semantics are not guaranteed identical.
69
+ - **Disposition:** Retain native filtering and repair incomplete-search evidence.
70
+
71
+ Status: landed in `17e2de0b`.
72
+
73
+ ## ls
74
+
75
+ - **Purpose:** Inspect one directory, including symlinks and broken entries.
76
+ - **Placement:** Direct OBSERVE, read class, parallel.
77
+ - **Contract:** `path`, `limit`; alphabetical entries, `name@ -> target` or `name@ (broken)`, failure markers, `details.skipped`, and `details.selection`.
78
+ - **Implementation:** `src/tools/ls.ts` asynchronously enumerates, keeps O(limit) selected names in a heap, and stats only selected entries. Case-insensitive ties preserve enumeration order. Listing still scans the directory to select its prefix.
79
+ - **Scientific integrity:** Broken or unreadable entries do not disappear silently. Bounded retained state is not a claim of constant total work.
80
+ - **Disposition:** Repair link truthfulness and selection allocation.
81
+
82
+ Status: landed in `17e2de0b`.
83
+
84
+ ## code_nav
85
+
86
+ - **Purpose:** Retrieve indexed repository symbols, paths, outlines, dependencies, entries, and generated wiki context.
87
+ - **Placement:** Direct OBSERVE, read class, parallel; worker profile/recipe policy can omit it.
88
+ - **Contract:** Mode, query, and bounded limit select structured index results with citations, omissions, and continuation; unavailable index/invalid queries return actionable failures.
89
+ - **Implementation:** `src/tools/codewiki/code-nav.ts` and `code-nav-surface.ts` use the codewiki index and a 16KB observation cap. Result selection is bounded, but the loaded index and index searches are not a streaming live filesystem scan.
90
+ - **Scientific integrity:** Index freshness and source citations bound the claim. Navigation is neither executed validation nor evidence that a dataset is complete.
91
+ - **Disposition:** Retain the existing indexed navigation contract; no release-specific numerical processing is added.
92
+
93
+ Status: unchanged in v0.4.9 because the existing indexed navigation and freshness contract remains appropriate.
94
+
95
+ ## context
96
+
97
+ - **Purpose:** Retrieve workspace state, activate installed skills, and recall persisted observations.
98
+ - **Placement:** Direct OBSERVE, read class, parallel.
99
+ - **Contract:** `scope=workspace|skills|recall`; skill name/tree and recall query/ref/limit/offset arguments. Workspace needs session wiring; skill activation obeys operator and recipe policy.
100
+ - **Implementation:** `src/tools/context/surface.ts` and `index.ts` retain existing engines with the narrower permanent schema. Workspace/skills use the observation envelope; recall resolves persisted evidence.
101
+ - **Scientific integrity:** Recall identifies historical observations without presenting them as current file reads. Skill availability is separate from permission to activate or install.
102
+ - **Disposition:** Redesign the permanent schema; move secondary docs/library retrieval to named gateway capabilities.
103
+
104
+ Status: landed in `021ec049`.
105
+
106
+ ## verify
107
+
108
+ - **Purpose:** Execute declared checks and inspect explicit validation judgements.
109
+ - **Placement:** Direct EXECUTE, execute class, sequential.
110
+ - **Contract:** Package scripts, strict project catalog entries, or frontend verification. Numeric checks use explicit tolerance combination/non-finite policy; performance checks use budgets or baselines. Execution failure prevents judgement.
111
+ - **Implementation:** `src/tools/verify/numeric.ts`, `perf.ts`, and `scripts.ts` cap judged capture and references at 32 MiB; ULP tolerance cannot exceed Number.MAX_SAFE_INTEGER. Version-2 baselines record environment; direct and host paths retain provenance and judgement axes.
112
+ - **Scientific integrity:** Non-finite report values serialize by name. Hashes identify reference/actual bytes; environment mismatches are informational. `scientificValidity` stays `not established by this check` even on pass.
113
+ - **Disposition:** Repair mathematical policy and evidence instead of equating execution with scientific validity.
114
+
115
+ Status: landed in `2968271a`; host-verification parity and authoring/help closures in `bde78f76`.
116
+
117
+ ## evidence
118
+
119
+ - **Purpose:** Inspect canonical bundles, per-run trust axes, gate decisions, and findings.
120
+ - **Placement:** Gateway OBSERVE, read class, sequential.
121
+ - **Contract:** `mode=list|inspect|run`, `id` or `runId`; bounded JSON. Run mode may build a missing bundle; absent ledger runs report artifact absence.
122
+ - **Implementation:** `src/tools/evidence.ts` shares evidence-domain projections and caps the result at 16KB with valid JSON preview on truncation. Sequential execution protects materialization ordering; gateway evidence export resolves the underlying identity.
123
+ - **Scientific integrity:** Integrity, validation grounding, provenance, and completion remain separate axes. A trusted bundle does not establish the truth of every worker claim.
124
+ - **Disposition:** Retain the bounded evidence engine and repair routing/consumer identity for gateway invocation.
125
+
126
+ Status: placement and evidence projection landed in `021ec049`.
127
+
128
+ ## credential_present
129
+
130
+ - **Purpose:** Check credential availability without returning its value.
131
+ - **Placement:** Gateway OBSERVE, read class, parallel.
132
+ - **Contract:** Credential `name`, optional environment/file source and file path; booleans, checked sources, and missing-file state. Invalid names or unusable reads fail.
133
+ - **Implementation:** `src/tools/credential-present.ts` returns a small presence projection rather than the observation envelope. File access remains subject to the capability's admitted read contract.
134
+ - **Scientific integrity:** Presence does not validate a credential, establish external access, or expose secret contents. No numerical interpretation occurs.
135
+ - **Disposition:** Retain the minimal result and move its schema off the permanent direct surface.
136
+
137
+ Status: placement landed in `021ec049`.
138
+
139
+ ## git
140
+
141
+ - **Purpose:** Inspect repository status, diffs, and history without a free-form shell.
142
+ - **Placement:** Gateway EXECUTE plane, read class, parallel.
143
+ - **Contract:** `op=status|diff|log`, optional path/cwd, diff flags, log limit, timeout, and output cap. Nonzero, capped, timed-out, or aborted execution returns failure facts.
144
+ - **Implementation:** `src/tools/safe-exec.ts` builds fixed git argv vectors on safe-exec; default timeout 120000 ms and capture 600000 bytes, followed by bounded result shaping. Log count caps at 200.
145
+ - **Scientific integrity:** Command/argv/cwd/exit/timing identify the observation; truncation is not a complete change inventory. Git inspection does not validate scientific output.
146
+ - **Disposition:** Retain fixed-vector inspection and preserve recipe attestation through gateway placement.
147
+
148
+ Status: placement/attestation landed in `021ec049`; shared safe-exec cleanup strengthened in `4ef9277e`.
149
+
150
+ ## web_fetch
151
+
152
+ - **Purpose:** Make full HTTP requests and retrieve bounded textual content.
153
+ - **Placement:** Gateway RETRIEVE, read base class, parallel; non-GET or body requests retain outward-action classification.
154
+ - **Contract:** URL, method, headers, body, format, timeout, and byte limit. Unsupported/binary content and disallowed private-network targets are refused.
155
+ - **Implementation:** `src/tools/web-fetch.ts` and its helpers share the existing fetcher, default 600KB read allowance, 5MB hard read cap, and 16KB shaped result. Abort/timeout and network policy remain in force.
156
+ - **Scientific integrity:** HTML conversion and arXiv/repository summaries are derived views, not raw source identity or independent corroboration. Request success is not evidence that a remote claim is correct.
157
+ - **Disposition:** Retain full requests behind the gateway and split GET-only reading into web_read.
158
+
159
+ Status: landed in `021ec049`.
160
+
161
+ ## web_read
162
+
163
+ - **Purpose:** Read public web content without full-request argument authority.
164
+ - **Placement:** Gateway RETRIEVE, read class, parallel.
165
+ - **Contract:** `url`, `timeout_ms`, `max_bytes`, `format`; GET only, without headers, method, or body arguments.
166
+ - **Implementation:** `src/tools/web-fetch.ts` and `web-fetch-surface.ts` delegates to the existing web fetch implementation and inherits its byte caps, cancellation, conversion, and private-network policy.
167
+ - **Scientific integrity:** Bounded/converted content must be distinguished from the complete original. A GET-only tool is not a guarantee that remote content is trustworthy.
168
+ - **Disposition:** Split the read-only request surface from full web_fetch while sharing implementation.
169
+
170
+ Status: landed in `021ec049`.
171
+
172
+ ## artifact
173
+
174
+ - **Purpose:** Publish a requested terminal plan, review, or report.
175
+ - **Placement:** Gateway ARTIFACT, write class, sequential.
176
+ - **Contract:** `kind`, `content`, optional title/path; default `.clio-coder/artifacts/{PLAN,REVIEW,REPORT}.md`, workspace-contained overrides, and terminal turn completion.
177
+ - **Implementation:** `src/tools/artifact.ts` uses the atomic publisher. Gateway preserves `terminate`, `details.kind`, and `details.paths`; ledger/artifact consumers unwrap capability identity. Post-publication durability warnings remain visible.
178
+ - **Scientific integrity:** Successful publication establishes document delivery, not correctness of its claims. Pre-rename failure is not presented as an artifact; terminal content must contain the full answer.
179
+ - **Disposition:** Retain the terminal document contract, repair publication, and move behind gateway.
180
+
181
+ Status: landed in `021ec049` using publisher from `82ebee28`.
182
+
183
+ ## clio_docs
184
+
185
+ - **Purpose:** Retrieve cited bundled documentation on demand.
186
+ - **Placement:** Gateway OBSERVE, read class, parallel.
187
+ - **Contract:** Optional query and section limit (default 5, max 12); omitted query lists corpus; searches return ranked cited sections and follow-up guidance.
188
+ - **Implementation:** `src/tools/gateway/clio-context-tools.ts` reuses `src/tools/context/docs-engine.ts`, with a 16KB observation cap and valid JSON offload behavior. It reads the shipped corpus without network access.
189
+ - **Scientific integrity:** Rankings are retrieval hints, not proofs. File/section/line citations let callers inspect the source; omitted sections remain explicitly omitted.
190
+ - **Disposition:** Move the existing docs engine out of context's permanent schema.
191
+
192
+ Status: landed in `021ec049`.
193
+
194
+ ## clio_library
195
+
196
+ - **Purpose:** Inspect loaded recipes and installable package claims without activation or installation.
197
+ - **Placement:** Gateway OBSERVE, read class, parallel; unavailable inside workers.
198
+ - **Contract:** Query, kind, ref, limit (20 default, 50 max), offset; tagged resource/hint/package rows with continuation and lower-bound totals where needed.
199
+ - **Implementation:** `src/tools/gateway/clio-context-tools.ts` and `src/tools/context/library.ts` reuse bounded inventory and fit pages to a 16KB observation allowance. No recipe body or installation side effect is returned.
200
+ - **Scientific integrity:** Installed resources have real invocation information; catalog hints do not pretend to be loaded tools. Availability does not confer trust or validate a package's scientific claims.
201
+ - **Disposition:** Move read-only catalog browsing out of the permanent context schema.
202
+
203
+ Status: landed in `021ec049`.
204
+
205
+ ## data
206
+
207
+ - **Purpose:** Inspect, select, or validate explicitly supported structured formats without rewriting them.
208
+ - **Placement:** Gateway OBSERVE, read class, parallel.
209
+ - **Contract:** CSV/TSV/JSON/JSONL op/path, format-specific selectors, sample/scan limits; view flags, schema/counts, precision issues, and actionable refusals.
210
+ - **Implementation:** `src/tools/data/` streams with bounded CSV field/record, JSON depth/capture, and JSONL line budgets. `src/tools/gateway/data-tool.ts` normalizes the protected read path before admission and applies a 32 KiB observation cap.
211
+ - **Scientific integrity:** Preserve numeric literals and sentinels; disclose sampling, approximate extrema, duplicate-tracking limits, and cut values. `exact=false, sampled=false` denotes a complete scan with a value cut to budget, not a complete selection. Validation is format validation only.
212
+ - **Disposition:** Add bounded structured-data inspection; refuse unsupported binary formats and direct them to a supplied script/library.
213
+
214
+ Status: readers landed in `7623ce27`; gateway/admission integration in `021ec049`.
215
+
216
+ ## dispatch
217
+
218
+ - **Purpose:** Run explicitly bounded tasks on fleet workers and collect durable receipts.
219
+ - **Placement:** Direct ORCHESTRATE, dispatch class, sequential; requires a dispatch contract.
220
+ - **Contract:** Singular/batch tasks, recipe/route, typed intent, budgets, timeout, topology, and optional detach. Nonzero terminal attempts fail; detached ids require collection before final synthesis.
221
+ - **Implementation:** `src/tools/dispatch.ts` delegates to the dispatch domain's admission and lifecycle. Summaries are bounded; cancellation and receipts are owned there. Gateway capabilities remain in the admitted worker list while schemas and attestation use the direct projection.
222
+ - **Scientific integrity:** Receipt integrity, worker evidence, host verification, and project/briefing provenance remain distinct. Worker prose is advisory; successful execution alone is not a scientific result.
223
+ - **Disposition:** Retain orchestration and direct placement; adapt worker capability projection and host evidence integration.
224
+
225
+ Status: gateway worker integration landed in `021ec049`; host verification closures in `bde78f76`. Existing dispatch workflow is retained.
226
+
227
+ ## monitor
228
+
229
+ - **Purpose:** Observe dispatched runs and collect detached results.
230
+ - **Placement:** Direct ORCHESTRATE, read class, parallel; requires dispatch wiring.
231
+ - **Contract:** List/status/peek/receipt/wait/collect/tools, run/batch identifiers and bounded waiting. Wait never cancels; collect resolves terminal attempts.
232
+ - **Implementation:** `src/tools/monitor.ts` uses the dispatch ledger and live snapshot. Peek uses bounded in-process tails (100 events/run, 64 runs, 8KB output); receipts are bounded projections with retrieval paths.
233
+ - **Scientific integrity:** Process-local event absence is disclosed, not treated as proof of no tool activity. Receipt integrity and validation evidence are separate, and an unfinished run is never a completed result.
234
+ - **Disposition:** Retain observation and collection; it does not process scientific values.
235
+
236
+ Status: unchanged in v0.4.9 because existing bounded run observation and collection remain the required contract.
237
+
238
+ ## steer
239
+
240
+ - **Purpose:** Correct or cancel a worker with an already-known run id.
241
+ - **Placement:** Direct ORCHESTRATE, dispatch class, sequential.
242
+ - **Contract:** `run_id`, `action=guide|cancel`, message for guide. Unsupported live-input runtimes and terminal-run cancellation return structured failures.
243
+ - **Implementation:** `src/tools/steer.ts` uses the dispatch contract's stdin steer/cancel path. Guidance acknowledgement follows runtime acceptance; parent-model mid-run control needs detached ids.
244
+ - **Scientific integrity:** Guidance records ordered byte/hash/timestamp and acknowledgement provenance, not validation of the changed work. Cancellation yields a cancelled outcome instead of a successful deliverable.
245
+ - **Disposition:** Retain the explicit control surface and supported-runtime boundary.
246
+
247
+ Status: unchanged in v0.4.9 because existing steering/cancellation contracts suffice.
248
+
249
+ ## tasks
250
+
251
+ - **Purpose:** Maintain a session work board and linked operator-task state.
252
+ - **Placement:** Direct ORCHESTRATE, read class, sequential bookkeeping.
253
+ - **Contract:** plan/add/pick/start/done/block/drop/list with title, tasks, id, and note. Done requires evidence text; block requires a reason. Invalid state transitions fail.
254
+ - **Implementation:** `src/tools/tasks.ts` updates the board and durable full-snapshot task ledger; operator inbox reconciliation/pick/done can update Clio-owned state. Sequential execution prevents interleaved board changes.
255
+ - **Scientific integrity:** A completion note is an attributable claim, not an executed check or operator authorization. Linked operator status must be inspected before claiming completion.
256
+ - **Disposition:** Retain the explicit bookkeeping exception to read-class semantics; do not equate it with source mutation authority.
257
+
258
+ Status: unchanged in v0.4.9 because the existing board and operator correlation contract is retained.
259
+
260
+ ## ledger
261
+
262
+ - **Purpose:** Exchange typed claims, findings, and reviews among peer workers.
263
+ - **Placement:** Direct ORCHESTRATE, read class, sequential; only workers with a bound agent-ledger port.
264
+ - **Contract:** Read with filters/watermark or post required kind-specific fields. Each run is limited to 20 posts; duplicate posts are not retry-safe.
265
+ - **Implementation:** `src/tools/ledger.ts` reads a local mirror and posts through the dispatch control lane, returning a bounded board and sequence watermark. It does not mutate the source workspace.
266
+ - **Scientific integrity:** Peer state may be stale. Findings and reviews carry provenance but remain untrusted data, not instructions or independent empirical proof.
267
+ - **Disposition:** Retain typed coordination and its explicit availability/post bounds.
268
+
269
+ Status: unchanged in v0.4.9 because coordination does not require scientific-data processing changes.
270
+
271
+ ## panes
272
+
273
+ - **Purpose:** Display Clio-owned runs and fixed utility panes.
274
+ - **Placement:** Direct ORCHESTRATE, read class, sequential; requires detected host and live mux.
275
+ - **Contract:** show/open/close/list, target, and fixed files/logs/shell presets. Arbitrary argv stays operator-only; close is limited to owned panes.
276
+ - **Implementation:** `src/tools/panes.ts` and `panes-surface.ts` delegate to the mux. Sequential calls protect pane inventory; an unavailable host omits the tool rather than advertising a working pane layer.
277
+ - **Scientific integrity:** Display visibility is not execution evidence or validation. Pane operations cannot justify claims about worker completion beyond the displayed run facts.
278
+ - **Disposition:** Retain the bounded owned-pane interface and direct placement.
279
+
280
+ Status: unchanged in v0.4.9 because no data or evidence interpretation change is required.
281
+
282
+ ## limitation
283
+
284
+ - **Purpose:** Record a typed statement of what could not be verified.
285
+ - **Placement:** Direct ORCHESTRATE, read class, parallel.
286
+ - **Contract:** Scope, enumerated reason, optional paths; successful receipt is its effect. Empty/invalid calls do not count.
287
+ - **Implementation:** `src/tools/limitation.ts` is pure and runs no process or file mutation. The finish contract recognizes its successful ledger receipt within the mutation window.
288
+ - **Scientific integrity:** It explicitly marks absent validation; it never converts missing or failed checks into a pass. Free-form final prose is not an equivalent receipt.
289
+ - **Disposition:** Retain the precise limitation-evidence boundary.
290
+
291
+ Status: unchanged in v0.4.9 because the existing receipt already preserves uncertainty honestly.
292
+
293
+ ## decide
294
+
295
+ - **Purpose:** Record an agent-authored design choice beside operator decisions.
296
+ - **Placement:** Direct ORCHESTRATE, read class, sequential; needs a session decision board.
297
+ - **Contract:** Key, value, alternatives, rationale, optional label with byte/count bounds. A repeat agent key supersedes; an operator-owned key cannot be overwritten; worker calls are refused.
298
+ - **Implementation:** `src/tools/decide.ts` appends a decision-ledger entry. Sequential lookup/write prevents supersede races; dispatch and commit seams carry active decision references.
299
+ - **Scientific integrity:** Provenance records who chose what and why. It does not grant authorization, independently review the choice, or establish scientific validity.
300
+ - **Disposition:** Retain bounded decision provenance and direct placement.
301
+
302
+ Status: unchanged in v0.4.9 because the existing decision-board contract remains suitable.
303
+
304
+ ## ask_user
305
+
306
+ - **Purpose:** Resolve missing operator choices through host-owned interviews.
307
+ - **Placement:** Direct INTERACT, read class, sequential; interactive handler required.
308
+ - **Contract:** Ask/complete, round/single-question mode, questions/options, decisions, summary, round bound, and local/outward exposure. Cancellation is an explicit host outcome.
309
+ - **Implementation:** `src/tools/ask-user.ts` bounds questions/rounds and records interview decisions. Exposure participates in autonomy admission; caller prose cannot choose authority or consequence tier.
310
+ - **Scientific integrity:** An operator answer establishes an attributed decision, not validation of a scientific claim. Missing answers and cancelled interviews are not fabricated approval.
311
+ - **Disposition:** Retain the direct host interaction surface and its admission boundary.
312
+
313
+ Status: unchanged in v0.4.9 because the operator explicitly retained INTERACT placement and the existing interview contract.
314
+
315
+ ## gateway
316
+
317
+ - **Purpose:** Discover secondary capabilities without attaching every schema to every turn.
318
+ - **Placement:** Direct GATEWAY, read outer class, sequential.
319
+ - **Contract:** Find/describe/call with query/capability/args. Bounded listings, full described schemas, and capability results; unavailable/disallowed/invalid calls fail explicitly.
320
+ - **Implementation:** `src/tools/gateway/index.ts`, `registry.ts`, and `surface.ts` reuse inner admission, cancellation, authority decisions, result shaping, terminal propagation, and effective evidence identity. Nested accounting counts one model call; worker allowlists apply to discovery and invocation.
321
+ - **Scientific integrity:** Gateway success retains the underlying operation's facts instead of hiding them. The 31,272-byte measurement covers 19 attached fixture tools excluding ask_user/panes; a derived full-surface total is not comparable measurement evidence for overall shrinkage.
322
+ - **Disposition:** Add a stable router without introducing new authority or sandbox claims.
323
+
324
+ Status: landed in `021ec049`.
325
+
326
+ ## run_script
327
+
328
+ - **Purpose:** Execute an inspectable scientific script with large logs streamed to disk and bounded model progress.
329
+ - **Placement:** Direct EXECUTE, execute class, sequential.
330
+ - **Contract:** Allowlisted PATH interpreter, workspace script/cwd, explicit argv/env, positive-integer timeout capped at six hours, and provenance-only input/output declarations. Records logs, manifest, identities, output states, and honest unsuccessful outcomes.
331
+ - **Implementation:** `src/tools/run-script.ts`, `src/core/safe-exec.ts`, and `run-records.ts` reuse the execution substrate with streaming sinks, 250 ms progress, bounded tails/hashes, and retention of 100 completed runs. Retention metadata reads cap at 64 KiB and skip nonregular entries explicitly.
332
+ - **Scientific integrity:** `exitCode` is effective status while `leaderExit` is observed process status. Original-group cleanup and one-second pipe draining can fail independently; escaped processes remain outside containment. ESRCH permanently closes ownership, but the probe-to-signal race remains accepted. Logs/argv can carry literal secrets; env values are omitted from manifest. Execute success is not scientific validation.
333
+ - **Disposition:** Add the streaming provenance contract; no installs, automatic retries, script-to-tool calling, or OS sandboxing.
334
+
335
+ Status: execution landed in `4ef9277e`; direct registration/policy integration in `021ec049`.
336
+
337
+ ## extension_<id>__<name>
338
+
339
+ - **Purpose:** Expose operator-installed command capabilities under declared schemas.
340
+ - **Placement:** Gateway dynamic extension family; execute class and sequential command execution.
341
+ - **Contract:** Each installed descriptor supplies its schema; JSON arguments go to the command and bounded JSON/text results return. Invalid trust/digest, arguments, execution, or output fail rather than fabricating capability availability.
342
+ - **Implementation:** `src/tools/harness-extensions.ts` freezes schemas at registry construction, re-verifies the extension digest per call, projects safety through command argv, and uses safe-exec with timeout/output bounds and cancellation.
343
+ - **Scientific integrity:** Installation/trust and provenance identify the extension but cannot certify its scientific implementation. Each capability's described contract must state its own precision and validation semantics.
344
+ - **Disposition:** Retain existing command execution and move discovery/attestation to the gateway. This family record cannot pre-audit arbitrary future installed commands.
345
+
346
+ Status: placement and worker integration landed in `021ec049`; existing command engine retained.
347
+
348
+ ## mcp_<id>__<tool>
349
+
350
+ - **Purpose:** Call explicitly trusted local stdio MCP capabilities.
351
+ - **Placement:** Gateway dynamic MCP family, session-owned; action class comes from trust, not server annotations.
352
+ - **Contract:** Discover/describe server schemas and call with validated arguments; bounded normalized results, protocol errors, timeouts, and cancellation. Project declarations cannot spawn without digest-bound operator trust.
353
+ - **Implementation:** `src/domains/gateway/mcp/` bounds framing, outbound queues, result text, stderr, pages/tools, and config/trust reads. `src/tools/gateway/mcp-capabilities.ts` bounds one call result to 16 KiB in model context (offloading larger results to external artifacts) and shares connection/close ownership. Discovery cancellation closes the shared connection without session restart; shutdown awaits teardown, and the client owns exit cleanup. ESRCH and bounded release permanently end signalling ownership.
354
+ - **Scientific integrity:** Trust authorizes launching an unsandboxed local process, not trusting its results. Incomplete cleanup is reported; residual PGID reuse and escaped-process limitations remain. Unknown external numerical semantics must be checked in each discovered capability's contract.
355
+ - **Disposition:** Add local stdio integration with explicit trust and bounded lifecycle; defer remote MCP/OAuth and OS isolation.
356
+
357
+ Status: client/config/trust landed in `d7b0edee`, CLI/slash in `bde78f76`, gateway cancellation/shutdown/exit ownership in `021ec049`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iowarp/clio-coder",
3
- "version": "0.4.8",
3
+ "version": "0.4.9",
4
4
  "description": "The terminal coding agent for people who maintain the code that science runs on, with user-chosen models and inspectable evidence.",
5
5
  "keywords": [
6
6
  "ai",
package/src/cli/argv.ts CHANGED
@@ -8,6 +8,16 @@
8
8
  */
9
9
 
10
10
  import chalk from "chalk";
11
+ import type { AutonomyLevel } from "../domains/safety/autonomy.js";
12
+
13
+ // A type-only import keeps this module out of the domain graph; `satisfies`
14
+ // fails the build if the levels ever drift from the safety domain's list.
15
+ const AUTONOMY_LEVELS = [
16
+ "read-only",
17
+ "suggest",
18
+ "auto-edit",
19
+ "full-auto",
20
+ ] as const satisfies ReadonlyArray<AutonomyLevel>;
11
21
 
12
22
  export function printError(message: string, detail?: string): void {
13
23
  const head = chalk.red("error:");
@@ -75,6 +85,8 @@ export interface GlobalCliFlags {
75
85
  * both beat the `panes.enabled` setting; absent means the setting decides.
76
86
  */
77
87
  panes?: "with" | "without";
88
+ /** `--autonomy <level>` before any subcommand: one interactive session at that level. */
89
+ autonomy?: AutonomyLevel;
78
90
  rest: string[];
79
91
  error?: string;
80
92
  }
@@ -136,6 +148,7 @@ export function extractGlobalFlags(
136
148
  let noContextFiles = false;
137
149
  let noSkills = false;
138
150
  let panes: "with" | "without" | undefined;
151
+ let autonomy: AutonomyLevel | undefined;
139
152
  const skillPaths: string[] = [];
140
153
  for (let i = 0; i < argv.length; i++) {
141
154
  const arg = argv[i];
@@ -174,6 +187,23 @@ export function extractGlobalFlags(
174
187
  panes = arg === "--with-panes" ? "with" : "without";
175
188
  continue;
176
189
  }
190
+ if (arg === "--autonomy") {
191
+ const value = argv[i + 1];
192
+ if (value === undefined || !AUTONOMY_LEVELS.includes(value as AutonomyLevel)) {
193
+ return {
194
+ noContextFiles,
195
+ noSkills,
196
+ skillPaths,
197
+ rest,
198
+ error: `--autonomy must be one of: ${AUTONOMY_LEVELS.join("|")}`,
199
+ ...(apiKey === undefined ? {} : { apiKey }),
200
+ ...(panes === undefined ? {} : { panes }),
201
+ };
202
+ }
203
+ autonomy = value as AutonomyLevel;
204
+ i += 1;
205
+ continue;
206
+ }
177
207
  if (arg === "--api-key" || arg === "--skill") {
178
208
  const value = argv[i + 1];
179
209
  if (value === undefined || value.startsWith("-") || isSubcommand(value)) {
@@ -209,5 +239,6 @@ export function extractGlobalFlags(
209
239
  rest,
210
240
  ...(apiKey === undefined ? {} : { apiKey }),
211
241
  ...(panes === undefined ? {} : { panes }),
242
+ ...(autonomy === undefined ? {} : { autonomy }),
212
243
  };
213
244
  }
package/src/cli/clio.ts CHANGED
@@ -13,7 +13,22 @@ function terminalLeaseEligible(
13
13
  return !options.headless && !options.acp && env.CLIO_CODER_INTERACTIVE === "1";
14
14
  }
15
15
 
16
- export async function runClioCommand(options: BootOptions = {}): Promise<number> {
16
+ export interface ClioCommandDependencies {
17
+ bootOrchestrator: typeof import("../entry/orchestrator.js").bootOrchestrator;
18
+ }
19
+
20
+ const DEFAULT_DEPENDENCIES: ClioCommandDependencies = {
21
+ bootOrchestrator: async (options) => {
22
+ const { bootOrchestrator } = await import("../entry/orchestrator.js");
23
+ return bootOrchestrator(options);
24
+ },
25
+ };
26
+
27
+ export async function runClioCommand(
28
+ options: BootOptions = {},
29
+ dependencies: Partial<ClioCommandDependencies> = {},
30
+ ): Promise<number> {
31
+ const deps = { ...DEFAULT_DEPENDENCIES, ...dependencies };
17
32
  // Bare `clio` (no subcommand) boots interactive mode implicitly, but only
18
33
  // when stdin is a real TTY. Piped or /dev/null stdin (used by verify.ts,
19
34
  // CI runners, and non-interactive scripts) should fall through to the
@@ -69,18 +84,7 @@ export async function runClioCommand(options: BootOptions = {}): Promise<number>
69
84
  }
70
85
  }
71
86
  }
72
- // Deterministic built-PTY interleaving seam. It is unavailable outside
73
- // NODE_ENV=test and bounded even under a malformed value.
74
- if (terminalLease && process.env.NODE_ENV === "test") {
75
- const requestedDelay = Number.parseInt(process.env.CLIO_CODER_TEST_STAGE1_DELAY_MS ?? "0", 10);
76
- const delayMs = Number.isFinite(requestedDelay) ? Math.max(0, Math.min(5_000, requestedDelay)) : 0;
77
- if (delayMs > 0) await new Promise<void>((resolve) => setTimeout(resolve, delayMs));
78
- if (process.env.CLIO_CODER_TEST_STAGE1_FAIL === "1") {
79
- throw new Error("injected Stage 1 hydration failure");
80
- }
81
- }
82
- const { bootOrchestrator } = await import("../entry/orchestrator.js");
83
- const result = await bootOrchestrator({
87
+ const result = await deps.bootOrchestrator({
84
88
  ...options,
85
89
  ...(startupSettings ? { startupSettings } : {}),
86
90
  ...(terminalLease ? { terminalLease } : {}),
package/src/cli/config.ts CHANGED
@@ -24,6 +24,10 @@ function renderText(cwd: string): string {
24
24
 
25
25
  out.push("Settings (only keys a layer set; everything else is built-in):");
26
26
  if (graph.settings.length === 0) out.push(" (none; all built-in defaults)");
27
+ // An ignored layer explains a value better than the value does. Left to the
28
+ // trailing Issues block, an untrusted project file read as a setting that
29
+ // silently failed to apply.
30
+ for (const issue of graph.issues) if (issue.startsWith("settings ")) out.push(` ! ${issue}`);
27
31
  for (const entry of graph.settings) {
28
32
  out.push(` ${entry.key} = ${JSON.stringify(entry.value)} [${entry.source}]`);
29
33
  }
@@ -11,7 +11,7 @@ import { describeResolution, findPinnedTool, toolStatus } from "../domains/toolc
11
11
  *
12
12
  * Six rows, in the order an operator debugs them: what mode the pane layer
13
13
  * resolved to, whether the socket answered, whether the server is new enough
14
- * for the methods phase 3 uses, where the pane host binary resolves, what the
14
+ * for the notification and pane-control methods, where the pane host binary resolves, what the
15
15
  * boot layout composes, and whether the journal directory the viewer reads is
16
16
  * writable.
17
17
  *
package/src/cli/doctor.ts CHANGED
@@ -20,6 +20,8 @@ const HELP = `clio-coder doctor [--fix] [--json]
20
20
  Diagnose Clio Coder state without creating files. On a home Clio has never
21
21
  written to, doctor says so in one row and exits 0. Use --fix to repair structure:
22
22
  missing directories, missing template files, and credential permissions.
23
+ --fix also records the fleet preflight, which is what admits an SSH node to
24
+ dispatch for the current project root; plain doctor only reports it.
23
25
  Settings are validated directly against the current schema.
24
26
  Pass --json to emit a machine-readable report on stdout.
25
27
  `;
@@ -63,7 +65,7 @@ export async function runDoctorCommand(args: ReadonlyArray<string> = []): Promis
63
65
  const interopChecks = untouched ? [] : await runDoctorInteropChecks();
64
66
  // Fleet preflight probes each configured node over SSH and persists the
65
67
  // per-node eligibility verdicts dispatch placement enforces.
66
- const fleetChecks = untouched ? [] : await runDoctorFleetChecks();
68
+ const fleetChecks = untouched ? [] : await runDoctorFleetChecks(process.cwd(), { fix });
67
69
  // Resolution reads PATH and the vendor root and creates nothing, but on an
68
70
  // untouched home there is no vendor root to look at and the answer would be
69
71
  // "none" for every row regardless, so the sweep stays with the others.
package/src/cli/index.ts CHANGED
@@ -20,6 +20,7 @@ process.env.AI_AGENT = AI_AGENT_NAME;
20
20
  // its own chunk.
21
21
  import { traceBoot } from "../core/boot-trace.js";
22
22
  import { incompleteInstallationAdvice } from "../core/incomplete-installation.js";
23
+ import type { AutonomyLevel } from "../domains/safety/autonomy.js";
23
24
  import { extractGlobalFlags, parseFlags, printError } from "./argv.js";
24
25
 
25
26
  const HELP = `Clio Coder command line
@@ -38,6 +39,7 @@ Usage:
38
39
  clio-coder --no-context-files, -nc skip CLIO-CODER.md project-context injection
39
40
  clio-coder --with-panes activate the panes extension (terminal panes for workers and tools)
40
41
  clio-coder --no-panes keep panes off even when settings turn them on
42
+ clio-coder --autonomy <level> start this interactive session at read-only|suggest|auto-edit|full-auto
41
43
  clio-coder configure interactive first-run/configuration wizard
42
44
  clio-coder targets list configured targets, health, auth, and capabilities
43
45
  clio-coder targets add add a target interactively or via flags
@@ -71,6 +73,7 @@ Usage:
71
73
  clio-coder trace query or view the durable dispatch trace mirror
72
74
  clio-coder extensions install, list, enable, disable, or remove extension packages
73
75
  clio-coder library register, install, update, import, inspect, and manage packages of every kind
76
+ clio-coder mcp list|trust|untrust list MCP servers and manage trust for project-declared servers
74
77
  clio-coder tasks list, add, hand, finish, or drop project operator tasks
75
78
  clio-coder verifiers discover, inspect, author, validate, edit, or dry-run project checks
76
79
  clio-coder tools list|status|install|remove <id> pinned external programs Clio can drive
@@ -122,6 +125,7 @@ interface CliBootOptions {
122
125
  noSkills?: boolean;
123
126
  skillPaths?: string[];
124
127
  panes?: "with" | "without";
128
+ autonomy?: AutonomyLevel;
125
129
  }
126
130
 
127
131
  type CommandHandler = (subArgs: string[], bootOptions: CliBootOptions) => Promise<number>;
@@ -154,6 +158,7 @@ async function main(argv: string[]): Promise<number> {
154
158
  noSkills,
155
159
  skillPaths,
156
160
  panes,
161
+ autonomy,
157
162
  rest,
158
163
  error: globalFlagError,
159
164
  } = extractGlobalFlags(argv, isCommandToken);
@@ -182,10 +187,17 @@ async function main(argv: string[]): Promise<number> {
182
187
  ...(skillPaths.length > 0 ? { skillPaths } : {}),
183
188
  ...(panes === undefined ? {} : { panes }),
184
189
  };
190
+ if (autonomy !== undefined && subcommand) {
191
+ // Silently dropping a safety level would be worse than refusing it.
192
+ printError(
193
+ `--autonomy before a subcommand applies to the interactive session only. For a headless turn use: clio-coder run --autonomy ${autonomy} "<task>"`,
194
+ );
195
+ return 2;
196
+ }
185
197
  if (!subcommand) {
186
198
  await enableBootCompileCache();
187
199
  const { runClioCommand } = await import("./clio.js");
188
- return runClioCommand(bootOptions);
200
+ return runClioCommand({ ...bootOptions, ...(autonomy === undefined ? {} : { autonomy }) });
189
201
  }
190
202
 
191
203
  return dispatch(subcommand, subArgs, bootOptions);
@@ -260,6 +272,7 @@ const COMMAND_HANDLERS = new Map<string, CommandHandler>([
260
272
  ["fleet", async (subArgs) => (await import("./fleet.js")).runFleetCommand(subArgs)],
261
273
  ["library", async (subArgs) => (await import("./library.js")).runLibraryCommand(subArgs)],
262
274
  ["tasks", async (subArgs) => (await import("./tasks.js")).runTasksCommand(subArgs)],
275
+ ["mcp", async (subArgs) => (await import("./mcp.js")).runMcpCommand(subArgs)],
263
276
  ["verifiers", async (subArgs) => (await import("./verifiers.js")).runVerifiersCommand(subArgs)],
264
277
  ["web", async (subArgs) => (await import("./web.js")).runWebCommand(subArgs)],
265
278
  ["docs", async (subArgs) => (await import("./docs.js")).runDocsCommand(subArgs)],