@iowarp/clio-coder 0.4.3 → 0.4.5

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 (670) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/CONTRIBUTING.md +25 -15
  3. package/README.md +340 -27
  4. package/dist/{acp-H2NGRPWO.js → acp-H3CU2HBQ.js} +25 -25
  5. package/dist/{agents-TL5LLUQP.js → agents-IXQQZ7BD.js} +77 -75
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-E5SW4HMS.js → auth-R7KYF7N3.js} +38 -39
  8. package/dist/builtins-CRFDQUVP.js +22 -0
  9. package/dist/{chunk-7DRAWPTZ.js → chunk-22PQ4TX4.js} +4 -4
  10. package/dist/{chunk-NEDJ26B5.js → chunk-2GPGAE5W.js} +6 -51
  11. package/dist/{chunk-IKCO5N3L.js → chunk-2QPI3TR3.js} +3 -3
  12. package/dist/{chunk-HRQMFLJP.js → chunk-32KJPXAM.js} +6 -6
  13. package/dist/{chunk-65DEGPJ6.js → chunk-3A3CUMKA.js} +6 -4
  14. package/dist/{chunk-5TSRNF4G.js → chunk-3T4DXWP6.js} +170 -12
  15. package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
  16. package/dist/{chunk-XIVNBFZS.js → chunk-4SVIVOMC.js} +208 -39
  17. package/dist/{chunk-NMJXSHBJ.js → chunk-5A6XR3RJ.js} +44 -19
  18. package/dist/{chunk-YPC6ZR5L.js → chunk-5CMARGPF.js} +119 -5
  19. package/dist/{chunk-KXDSS5WJ.js → chunk-5CY4Q6QI.js} +4 -4
  20. package/dist/chunk-5DDOTTG4.js +402 -0
  21. package/dist/{chunk-D4CJV46V.js → chunk-5GZICIYO.js} +3 -3
  22. package/dist/{chunk-4IUZQIJ3.js → chunk-5PHVPU4G.js} +2 -2
  23. package/dist/{chunk-PUVDKJ2Y.js → chunk-5VTJP36Q.js} +5 -7
  24. package/dist/{chunk-JGRC33J2.js → chunk-5ZMXGW7P.js} +90 -9
  25. package/dist/chunk-5ZSZEYJK.js +119 -0
  26. package/dist/chunk-633EXGZA.js +44 -0
  27. package/dist/{chunk-IWT4SF4R.js → chunk-6CDNRHWH.js} +361 -89
  28. package/dist/{chunk-EBY63B7G.js → chunk-6EXUUOSN.js} +2 -2
  29. package/dist/{chunk-SVNXH4L2.js → chunk-6ICZKDUC.js} +2 -2
  30. package/dist/{chunk-INY6HTFL.js → chunk-6SYEGZI3.js} +12 -12
  31. package/dist/{chunk-SKHCAU7K.js → chunk-6YA46L5A.js} +5 -4
  32. package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
  33. package/dist/{chunk-L47TF46W.js → chunk-7HBHHVCK.js} +24 -3
  34. package/dist/{chunk-DWUOQKRU.js → chunk-7TKWWPD7.js} +5 -4
  35. package/dist/{chunk-2VTFPG5O.js → chunk-7WLRF2U5.js} +2 -2
  36. package/dist/chunk-7WUZEB2M.js +165 -0
  37. package/dist/{chunk-6PTFB5VS.js → chunk-7YJWEF2L.js} +59 -28
  38. package/dist/{chunk-3EBYEESD.js → chunk-A46ILRS2.js} +5 -5
  39. package/dist/{chunk-UOIZ7DA4.js → chunk-AP7HDJOP.js} +2 -2
  40. package/dist/{chunk-APJ265NV.js → chunk-B5GGDIHT.js} +146 -146
  41. package/dist/{chunk-PMZVFWSR.js → chunk-B5ZTR6KZ.js} +2 -2
  42. package/dist/chunk-B6UM3OZC.js +15 -0
  43. package/dist/{chunk-MCEPRMZW.js → chunk-BBV5TKE6.js} +5 -5
  44. package/dist/{chunk-4O6MANBS.js → chunk-BS4GAMUB.js} +14 -10
  45. package/dist/{chunk-S66XZJOF.js → chunk-C27U2TYG.js} +2 -2
  46. package/dist/{chunk-42FMPA75.js → chunk-CBSKDFWL.js} +3 -3
  47. package/dist/{chunk-2LEAKD4C.js → chunk-CKK25WN3.js} +3 -3
  48. package/dist/{chunk-BYP5D4HI.js → chunk-CTTI7G3T.js} +2 -2
  49. package/dist/{chunk-XAKHZX5N.js → chunk-CVDAFGPW.js} +4 -4
  50. package/dist/{chunk-RKKLTLYB.js → chunk-CXQ37WJH.js} +3 -3
  51. package/dist/{chunk-GTUD2WMY.js → chunk-DBREN25X.js} +44 -9
  52. package/dist/{chunk-WCXUNS7U.js → chunk-DIMRLNIC.js} +35 -66
  53. package/dist/{chunk-NDDGJUXD.js → chunk-DNCE23JJ.js} +2 -2
  54. package/dist/{chunk-HVDIIIQW.js → chunk-DNHVRBH4.js} +3 -3
  55. package/dist/{chunk-2UG5F4C5.js → chunk-DRD2A54W.js} +116 -52
  56. package/dist/{chunk-D7E7WCDF.js → chunk-DVNAPPXU.js} +2 -2
  57. package/dist/{chunk-YXLYO42X.js → chunk-DXVMLM3Z.js} +3 -2
  58. package/dist/{chunk-5MEZN6CB.js → chunk-DZK63TZJ.js} +6 -6
  59. package/dist/{chunk-IGLP3ODT.js → chunk-E3BQTQUP.js} +15 -15
  60. package/dist/{chunk-IWHMRKLL.js → chunk-E3LEPLQ2.js} +2 -2
  61. package/dist/{chunk-3R73A4XB.js → chunk-ECBHH7LU.js} +3 -3
  62. package/dist/chunk-ECOMVOHP.js +139 -0
  63. package/dist/chunk-EFSEIZE6.js +56 -0
  64. package/dist/{chunk-IJNZMHLA.js → chunk-EHCPSZJF.js} +4 -4
  65. package/dist/{chunk-K6BSR66V.js → chunk-EHOSNVVM.js} +6 -2
  66. package/dist/{chunk-RRNP2ANY.js → chunk-EQEJJ53P.js} +10 -10
  67. package/dist/{chunk-GWZNEVM2.js → chunk-EWD5P3GK.js} +9 -9
  68. package/dist/{chunk-JKKCYP3C.js → chunk-F34AR6O3.js} +21 -15
  69. package/dist/{chunk-GHS5EBTQ.js → chunk-FKIOX6DS.js} +29 -20
  70. package/dist/{chunk-HAXOFFRH.js → chunk-FQOOGXBH.js} +7 -7
  71. package/dist/{chunk-MWUZBSAQ.js → chunk-FSTIBAGM.js} +358 -63
  72. package/dist/{chunk-ZTJUVLTU.js → chunk-FXFVDPWY.js} +2 -2
  73. package/dist/{chunk-XPLRXC72.js → chunk-GD55RTIW.js} +3 -3
  74. package/dist/{chunk-5B2AEOW5.js → chunk-GH5ZR6JP.js} +472 -472
  75. package/dist/{chunk-JSC3U7TI.js → chunk-GJ24ODAX.js} +5 -5
  76. package/dist/{chunk-B4VEBZKF.js → chunk-GNQRWTMY.js} +139 -52
  77. package/dist/{chunk-5ICU3EUH.js → chunk-GVYWZNRK.js} +5 -5
  78. package/dist/chunk-GXCCHKN6.js +59 -0
  79. package/dist/{chunk-V2ANDPVT.js → chunk-HGSLRG33.js} +170 -8
  80. package/dist/{chunk-LLDJM5XK.js → chunk-HHVJNVUJ.js} +6 -6
  81. package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
  82. package/dist/{chunk-VA5FNYMT.js → chunk-HR3HPQ76.js} +42 -5
  83. package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
  84. package/dist/{chunk-OML5D5V5.js → chunk-I7VLWRK2.js} +8 -8
  85. package/dist/{chunk-VW6DOEDG.js → chunk-ICO4TQ2F.js} +16 -5
  86. package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
  87. package/dist/{chunk-WBKFA554.js → chunk-ILJ7DWGE.js} +9 -9
  88. package/dist/{chunk-2JH2WHGE.js → chunk-J2FYEQ5L.js} +4 -4
  89. package/dist/{chunk-BMS5RKQY.js → chunk-JABWPKFY.js} +3 -3
  90. package/dist/{chunk-QDC3K2U3.js → chunk-K2BLQC5E.js} +3 -3
  91. package/dist/{chunk-EKCHAPYA.js → chunk-K2HL3GBL.js} +4 -4
  92. package/dist/{chunk-N2Z7HLVY.js → chunk-K6RDB7IA.js} +28 -28
  93. package/dist/{chunk-TM6LQDI3.js → chunk-KDWLXVMN.js} +85 -335
  94. package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
  95. package/dist/{chunk-RSJ25QSL.js → chunk-KF6GFW6O.js} +217 -50
  96. package/dist/{chunk-BTK3SSSK.js → chunk-KMF54VH3.js} +2 -2
  97. package/dist/chunk-KPRLAMP4.js +32 -0
  98. package/dist/{chunk-ECH6PKUQ.js → chunk-KQ6IDQIB.js} +2 -2
  99. package/dist/{chunk-IUE3Y34X.js → chunk-KTFSFCVN.js} +20 -9
  100. package/dist/{chunk-7E7I3WLS.js → chunk-KYKNBD4Y.js} +36 -34
  101. package/dist/chunk-L4N3DWNW.js +539 -0
  102. package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
  103. package/dist/{chunk-JIEGK6UF.js → chunk-LTR5QCLS.js} +51 -7
  104. package/dist/chunk-LUL5Z66S.js +221 -0
  105. package/dist/chunk-LVFANMOH.js +466 -0
  106. package/dist/{chunk-H7IXIC72.js → chunk-LY4N4TTL.js} +17 -3
  107. package/dist/{chunk-VKPAQYEB.js → chunk-LZBMXNLP.js} +5 -5
  108. package/dist/{chunk-UL3WSD3F.js → chunk-M4KFUXS7.js} +2 -2
  109. package/dist/{chunk-I7ZPNEJM.js → chunk-M6TAYK66.js} +8 -8
  110. package/dist/{chunk-NEKRRTYW.js → chunk-MC3JSVR6.js} +2 -2
  111. package/dist/{chunk-CFGTUFWB.js → chunk-MCJKEGHO.js} +2 -2
  112. package/dist/chunk-MDU3C27C.js +674 -0
  113. package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
  114. package/dist/{chunk-4UVU7BJ5.js → chunk-NC4KV7EL.js} +6 -6
  115. package/dist/{chunk-JEQ3XTHC.js → chunk-NF3BK5WR.js} +5 -5
  116. package/dist/chunk-NTK3WTHM.js +141 -0
  117. package/dist/{chunk-GYV6VZOC.js → chunk-NTTS3O53.js} +2 -2
  118. package/dist/{chunk-UPZU6GE4.js → chunk-NY6IWDVU.js} +6 -6
  119. package/dist/chunk-O2RQ7LCK.js +283 -0
  120. package/dist/{chunk-4BJ5BYCE.js → chunk-O3VV6IVK.js} +2 -2
  121. package/dist/{chunk-W6GROXXM.js → chunk-O5F25NIE.js} +2 -2
  122. package/dist/{chunk-WRBAGUNF.js → chunk-ODUTYZIU.js} +5 -5
  123. package/dist/{chunk-E3TPLWFX.js → chunk-ONRTXOZY.js} +4 -4
  124. package/dist/{chunk-B4OAX3SI.js → chunk-OQM5IVJY.js} +118 -225
  125. package/dist/{chunk-XRZT5WY5.js → chunk-P5SC4DLJ.js} +4 -4
  126. package/dist/{chunk-R6Q67RJH.js → chunk-PECBKCDK.js} +34 -6
  127. package/dist/{chunk-33YXPOE3.js → chunk-PPEZJWUG.js} +2 -2
  128. package/dist/{chunk-64I3JVYM.js → chunk-PWWSIB2A.js} +5 -5
  129. package/dist/{chunk-2STGEDFV.js → chunk-QEQISF75.js} +2 -2
  130. package/dist/{chunk-3DPEIQKN.js → chunk-QH3ZTUOA.js} +2 -2
  131. package/dist/{chunk-YAKGTXEV.js → chunk-QRFXEO6Y.js} +2 -2
  132. package/dist/{chunk-35MSIRKH.js → chunk-QUIJZSDW.js} +2 -2
  133. package/dist/{chunk-HHV2GANA.js → chunk-R2P2U3ZS.js} +2 -2
  134. package/dist/chunk-R6MAYTMS.js +108 -0
  135. package/dist/{chunk-MUW2BDDH.js → chunk-R6MICQYU.js} +6 -6
  136. package/dist/{chunk-JDAY6FIL.js → chunk-RLTT5GVY.js} +132 -17
  137. package/dist/{chunk-ZWPRK62N.js → chunk-RXIOCVBZ.js} +24 -6
  138. package/dist/{chunk-NIQJ66N4.js → chunk-S32UQ5GL.js} +62 -35
  139. package/dist/{chunk-AX2THNSA.js → chunk-SBZX6ARC.js} +12 -12
  140. package/dist/{chunk-TXOTCRLG.js → chunk-SD7SHNDW.js} +2 -2
  141. package/dist/{chunk-AF4YM7Z4.js → chunk-SDWNDICN.js} +10284 -3756
  142. package/dist/{chunk-UXCU4E3T.js → chunk-SE4ZKILO.js} +6 -6
  143. package/dist/chunk-SL2RDHKO.js +19 -0
  144. package/dist/{chunk-NUGM5KR6.js → chunk-SRCEQKQS.js} +2 -2
  145. package/dist/{chunk-KKOJXO6R.js → chunk-SRZOW5L2.js} +46 -14
  146. package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
  147. package/dist/chunk-T52TPHYC.js +318 -0
  148. package/dist/{chunk-I7XBWTYH.js → chunk-T53XI6I7.js} +5 -5
  149. package/dist/{chunk-LDJG7DW3.js → chunk-T7FDXNRU.js} +13 -13
  150. package/dist/{chunk-XPWWI35G.js → chunk-TEG3RYVZ.js} +59 -41
  151. package/dist/{chunk-3I7MS7N2.js → chunk-TK2BMCBZ.js} +2 -2
  152. package/dist/{chunk-5OIVVPHF.js → chunk-TN5FW4XY.js} +13 -6
  153. package/dist/{chunk-PAJQJ7BS.js → chunk-TZ7MFRG4.js} +1263 -835
  154. package/dist/{chunk-GI7YYQ3F.js → chunk-U2JOLB7O.js} +415 -83
  155. package/dist/{chunk-LL4KHSZI.js → chunk-U2MSJ57E.js} +2 -2
  156. package/dist/{chunk-FTMGRKEF.js → chunk-U44YYLVV.js} +4 -4
  157. package/dist/{chunk-CE5AX47J.js → chunk-U7H5WRG5.js} +5 -5
  158. package/dist/{chunk-G76U63X4.js → chunk-U7VQ4NI4.js} +22 -22
  159. package/dist/{chunk-7ZYNNDKC.js → chunk-UFYNOQK4.js} +7 -7
  160. package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
  161. package/dist/{chunk-QWGDJJYJ.js → chunk-UL36QJX6.js} +14 -14
  162. package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
  163. package/dist/{chunk-HEQY7ZFI.js → chunk-URBGEOH3.js} +5 -5
  164. package/dist/chunk-USZA7GWL.js +341 -0
  165. package/dist/{chunk-W6RRQCPQ.js → chunk-UTUNT5QL.js} +48 -579
  166. package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
  167. package/dist/{chunk-F5JHEYZM.js → chunk-UXAC2FX4.js} +73 -41
  168. package/dist/{chunk-VG7TBQIY.js → chunk-V552WL53.js} +68 -4
  169. package/dist/{chunk-BWH6N36D.js → chunk-VHKTOLEW.js} +272 -42
  170. package/dist/chunk-VLPTKCKT.js +396 -0
  171. package/dist/{chunk-336NSSKI.js → chunk-VNBICSS2.js} +2 -2
  172. package/dist/{chunk-VAVR4IJY.js → chunk-VQD7NH7Z.js} +3 -3
  173. package/dist/{chunk-LBMZMYH2.js → chunk-W2RJEH6Q.js} +3 -3
  174. package/dist/{chunk-7CR24IG7.js → chunk-WDV62RKY.js} +2 -2
  175. package/dist/{chunk-2UH2KFUP.js → chunk-WFKDPU7U.js} +4 -4
  176. package/dist/{chunk-ZDN3Y73Y.js → chunk-WJIMKGD6.js} +9 -51
  177. package/dist/{chunk-YQWYVTMC.js → chunk-WLMSOT73.js} +59 -12
  178. package/dist/{chunk-MXHC5QYU.js → chunk-WTQGRBHV.js} +5 -144
  179. package/dist/chunk-WXA2CFJO.js +23 -0
  180. package/dist/{chunk-QSNYB6ZV.js → chunk-XCUDZQLX.js} +3 -3
  181. package/dist/{chunk-2APPQIER.js → chunk-XXBQKW32.js} +11 -11
  182. package/dist/{chunk-2VIKGWFZ.js → chunk-YEJIG7LN.js} +332 -332
  183. package/dist/chunk-YGDMBK7O.js +567 -0
  184. package/dist/{chunk-4WR7VSYB.js → chunk-YYB3MC65.js} +23 -9
  185. package/dist/{chunk-2IR2NMPA.js → chunk-ZIDFQJRB.js} +2 -2
  186. package/dist/{chunk-54CBCGIR.js → chunk-ZMZQEBKI.js} +136 -81
  187. package/dist/{chunk-6EJMN2Y3.js → chunk-ZTNFYMIO.js} +2 -2
  188. package/dist/{chunk-WEPFGWHJ.js → chunk-ZZFWWYLX.js} +2 -2
  189. package/dist/cli/index.js +45 -44
  190. package/dist/clio-5I2IBFYL.js +26 -0
  191. package/dist/{code-nav-MDZNQS33.js → code-nav-YXIAEZVS.js} +48 -32
  192. package/dist/codewiki/build-worker.js +76 -29
  193. package/dist/{compile-cache-OQAVB7Y5.js → compile-cache-WJEPUZEJ.js} +4 -4
  194. package/dist/{components-UCUQ4QXW.js → components-TNIKXCBH.js} +13 -14
  195. package/dist/{config-SVM5P5YI.js → config-Y2JDJ3JJ.js} +210 -119
  196. package/dist/configure-SML6UBZ5.js +55 -0
  197. package/dist/{context-2OHRKS42.js → context-P5YSEO55.js} +125 -115
  198. package/dist/{context-VNCR7KAG.js → context-QQ53HSGJ.js} +91 -62
  199. package/dist/{context-E3VC7RX5.js → context-S2EEC3EJ.js} +62 -31
  200. package/dist/context-clear-TMEQCOTH.js +183 -0
  201. package/dist/{context-index-HNG3MOME.js → context-index-HP2JFUWA.js} +13 -11
  202. package/dist/{context-map-COB37XXN.js → context-map-INTXD54D.js} +71 -21
  203. package/dist/{context-working-set-VDS25HXZ.js → context-working-set-CNLSQN5K.js} +31 -31
  204. package/dist/detail-5572VLBO.js +114 -0
  205. package/dist/{dispatch-runner-5AHT53RF.js → dispatch-runner-FRHD6P2O.js} +214 -126
  206. package/dist/{docs-PD3EXDKU.js → docs-BL7ROUFN.js} +5 -7
  207. package/dist/{doctor-WNNVO6FY.js → doctor-N3LCM2LG.js} +89 -66
  208. package/dist/{eval-7G7SGAYO.js → eval-BUU3ZOUZ.js} +493 -197
  209. package/dist/{eval-inventory-Y6QRFOH5.js → eval-inventory-QOYZERXJ.js} +7 -7
  210. package/dist/evidence-DTGEN456.js +224 -0
  211. package/dist/{evidence-VD6736FQ.js → evidence-SQ5DNFEN.js} +114 -195
  212. package/dist/{evolve-AL3NGVRL.js → evolve-IJNUFZDS.js} +107 -88
  213. package/dist/{extensions-MOVJ32NM.js → extensions-YVRHX6ZI.js} +16 -17
  214. package/dist/{fleet-QZHUMAGI.js → fleet-ZNNVSYFO.js} +147 -141
  215. package/dist/{fleet-commands-BAYT5FJZ.js → fleet-commands-5YE7NPJL.js} +27 -23
  216. package/dist/{fleet-decisions-IREVMRU4.js → fleet-decisions-3SBSCTCW.js} +16 -15
  217. package/dist/{fleet-graph-YCTT3HTI.js → fleet-graph-6HHPWF5T.js} +39 -38
  218. package/dist/{fleet-inspect-QVJTDAVB.js → fleet-inspect-JEYMGCGC.js} +107 -87
  219. package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
  220. package/dist/{fleet-preflight-25QAFPK4.js → fleet-preflight-QRSHIIDE.js} +10 -10
  221. package/dist/{fleet-validate-5O57AAJ7.js → fleet-validate-4PM4GDDL.js} +46 -42
  222. package/dist/{fleet-verify-CPH2W2T6.js → fleet-verify-NJDTHTO3.js} +105 -85
  223. package/dist/fleet-view-UP2BWQQY.js +117 -0
  224. package/dist/{init-J477LKZH.js → init-S3GZQ5ZF.js} +123 -117
  225. package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
  226. package/dist/{interop-3FCM6XLG.js → interop-YOTGXFJM.js} +25 -26
  227. package/dist/inventory-K2OZ36YJ.js +117 -0
  228. package/dist/{library-QUQEIUG6.js → library-GJI6W6OK.js} +45 -45
  229. package/dist/{memory-SGGSEP65.js → memory-OQOXQGYD.js} +107 -90
  230. package/dist/{models-HEKUAXXK.js → models-3IK2Y5WE.js} +64 -65
  231. package/dist/{monitor-HKU57TYQ.js → monitor-FTJLTKCQ.js} +136 -101
  232. package/dist/{orchestrator-VDFAEFAI.js → orchestrator-N47O7SFD.js} +1442 -1671
  233. package/dist/{panes-DN2SSFOH.js → panes-7BTYH3XQ.js} +8 -8
  234. package/dist/{panes-TALGNPZT.js → panes-WPOMEMRH.js} +22 -23
  235. package/dist/{paths-NBMFAIEZ.js → paths-J3KN7UAO.js} +12 -13
  236. package/dist/preload-65U34NG6.js +115 -0
  237. package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
  238. package/dist/{reset-EAJFFJVB.js → reset-MUVQDLNL.js} +20 -21
  239. package/dist/{resources-OVKSEFVE.js → resources-LM76COAO.js} +41 -40
  240. package/dist/{run-7DP7ZF2J.js → run-3VFZQ33N.js} +168 -166
  241. package/dist/{share-WML67FT3.js → share-4JUB4BL7.js} +43 -43
  242. package/dist/{skills-SG662R2K.js → skills-S36AAJHU.js} +47 -47
  243. package/dist/{skills-eval-VVZEUU46.js → skills-eval-G6T57L7M.js} +127 -104
  244. package/dist/{skills-inventory-I2E23GET.js → skills-inventory-WLM46PJH.js} +41 -40
  245. package/dist/slash-commands-GBARG3Y7.js +91 -0
  246. package/dist/{steer-2LQOMCPB.js → steer-S7D7IKPU.js} +7 -7
  247. package/dist/{support-CC2UJBJ6.js → support-5VAEC32W.js} +14 -14
  248. package/dist/{targets-4QC3HIEW.js → targets-N5REUETU.js} +147 -98
  249. package/dist/tasks-6BVY5YZF.js +36 -0
  250. package/dist/{terminal-lease-TUHIJ6Y2.js → terminal-lease-57UEOJKS.js} +12 -11
  251. package/dist/tools-6OCQ6SVB.js +28 -0
  252. package/dist/{trace-FXMXUZUF.js → trace-JHLXWUMN.js} +18 -17
  253. package/dist/{tree-sitter-HGKH6LG4.js → tree-sitter-AQUUOSYM.js} +6 -6
  254. package/dist/{tui-primitives-K5PASC3O.js → tui-primitives-RCY2HN7G.js} +3 -3
  255. package/dist/{uninstall-5PEVOE5B.js → uninstall-FXYMFFRT.js} +19 -20
  256. package/dist/{upgrade-M4WXY6KN.js → upgrade-4HD5HAIV.js} +49 -45
  257. package/dist/{usage-N7ZNVLEM.js → usage-4GWM2WWP.js} +143 -103
  258. package/dist/{verifiers-DJTP4XX6.js → verifiers-GSKWKWVG.js} +162 -28
  259. package/dist/verify-3AS3ULCY.js +30 -0
  260. package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
  261. package/dist/{web-fetch-MPARV2K7.js → web-fetch-MQN4FH3X.js} +169 -18
  262. package/dist/wiki-generate-7BV7XWIY.js +614 -0
  263. package/dist/{with-panes-4GCGSL7J.js → with-panes-OFTNAR4Y.js} +34 -20
  264. package/dist/worker/entry.js +99 -85
  265. package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
  266. package/docs/README.md +10 -8
  267. package/docs/architecture/acp.md +27 -0
  268. package/docs/architecture/architecture.md +5 -5
  269. package/docs/architecture/artifact-versions.md +1 -1
  270. package/docs/architecture/context-engine.md +44 -59
  271. package/docs/architecture/context-working-set.md +7 -9
  272. package/docs/architecture/dispatch-architecture-rationale.md +1 -1
  273. package/docs/architecture/dispatch-typed-intent.md +1 -1
  274. package/docs/architecture/evidence-and-memory.md +11 -1
  275. package/docs/architecture/observability.md +7 -1
  276. package/docs/architecture/pi-boundary.md +37 -7
  277. package/docs/architecture/prompt-envelope-and-tools.md +22 -12
  278. package/docs/architecture/safety-model.md +10 -17
  279. package/docs/architecture/session-lifecycle.md +4 -4
  280. package/docs/architecture/tui-design.md +1 -1
  281. package/docs/architecture/worker-dispatch-mechanics.md +4 -0
  282. package/docs/guide/built-in-agents.md +8 -8
  283. package/docs/guide/commands-and-modes.md +66 -38
  284. package/docs/guide/configuration-and-targets.md +10 -3
  285. package/docs/guide/configuration-reference.md +23 -8
  286. package/docs/guide/environment-variables.md +8 -4
  287. package/docs/guide/fleet-dispatch.md +12 -0
  288. package/docs/guide/installation-and-lifecycle.md +35 -9
  289. package/docs/guide/proactive-memory.md +1 -1
  290. package/docs/guide/skills-marketplace.md +11 -3
  291. package/docs/guide/tool-usage.md +87 -5
  292. package/docs/history/config-knobs-audit.md +2 -2
  293. package/docs/process/development-pipeline.md +15 -10
  294. package/docs/process/documentation-guide.md +2 -2
  295. package/docs/process/eval-runner.md +15 -0
  296. package/docs/process/evals-internal.md +1 -1
  297. package/docs/process/git-commit-provenance.md +15 -0
  298. package/docs/process/release-cut-checklist.md +207 -0
  299. package/docs/process/scientific-validation.md +18 -17
  300. package/evals/README.md +4 -0
  301. package/evals/behavioral-corpus-grader.mjs +147 -14
  302. package/evals/behavioral-machinery-support.ts +1 -0
  303. package/evals/behavioral-machinery.yaml +1 -1
  304. package/evals/behavioral-model-negative-control.yaml +1 -0
  305. package/evals/behavioral-model.yaml +266 -1
  306. package/evals/fixtures/docs-retrieval.json +102 -0
  307. package/evals/fixtures/scalar-decision.json +17 -0
  308. package/evals/fixtures/scout-citation-pipeline.json +55 -0
  309. package/evals/fixtures/source-explanation.json +74 -0
  310. package/evals/fixtures/tool-arguments.json +18 -0
  311. package/evals/fixtures/tool-surface/read.txt +4 -0
  312. package/evals/fixtures/tool-surface/subdir/keep.txt +1 -0
  313. package/evals/no-edit-memory-grader.mjs +149 -0
  314. package/evals/scalar-decision-grader.py +41 -0
  315. package/evals/scalar-decision-machinery.ts +145 -0
  316. package/evals/source-explanation-grader.mjs +118 -0
  317. package/evals/tool-surface-grader.mjs +53 -0
  318. package/evals/tool-surface-model.yaml +274 -0
  319. package/package.json +14 -14
  320. package/skills/README.md +6 -6
  321. package/skills/coding/coding-standards/SKILL.md +14 -4
  322. package/skills/context/context-handoff/SKILL.md +3 -3
  323. package/skills/context/context-prime/SKILL.md +3 -3
  324. package/skills/planning/architecture/SKILL.md +5 -5
  325. package/skills/planning/backlog/SKILL.md +4 -4
  326. package/skills/planning/prd/SKILL.md +4 -3
  327. package/skills/planning/product-intent/SKILL.md +8 -8
  328. package/skills/planning/tech-spec/SKILL.md +4 -4
  329. package/skills/registry.yaml +33 -33
  330. package/skills/research/arxiv-literature/SKILL.md +3 -3
  331. package/skills/research/experiment-protocol/SKILL.md +3 -3
  332. package/skills/research/scientific-debugging/SKILL.md +3 -2
  333. package/skills/research/scientific-modernization/SKILL.md +3 -3
  334. package/skills/skill-marketplace.json +17 -17
  335. package/skills/workflow/cut-it/SKILL.md +3 -4
  336. package/skills/workflow/design-council/SKILL.md +5 -10
  337. package/skills/workflow/grill-me/SKILL.md +14 -15
  338. package/skills/workflow/workflow-distiller/SKILL.md +4 -4
  339. package/src/cli/args.ts +0 -8
  340. package/src/cli/bootstrap-generate.ts +6 -0
  341. package/src/cli/config-inspect.ts +24 -7
  342. package/src/cli/config-trust.ts +62 -0
  343. package/src/cli/config.ts +8 -0
  344. package/src/cli/configure.ts +2 -1
  345. package/src/cli/context-map.ts +75 -14
  346. package/src/cli/context.ts +46 -17
  347. package/src/cli/doctor-state-size.ts +1 -12
  348. package/src/cli/doctor-validation-contract.ts +28 -0
  349. package/src/cli/doctor.ts +5 -0
  350. package/src/cli/eval.ts +17 -3
  351. package/src/cli/evidence-detail.ts +1 -75
  352. package/src/cli/evidence-inventory.ts +1 -167
  353. package/src/cli/index.ts +2 -0
  354. package/src/cli/modes/print.ts +32 -4
  355. package/src/cli/run.ts +16 -16
  356. package/src/cli/skills-eval.ts +10 -8
  357. package/src/cli/steer-channel.ts +31 -18
  358. package/src/cli/targets.ts +84 -32
  359. package/src/cli/tasks.ts +93 -0
  360. package/src/cli/upgrade.ts +19 -11
  361. package/src/cli/usage.ts +30 -0
  362. package/src/cli/verifiers.ts +147 -1
  363. package/src/cli/wiki-generate.ts +240 -96
  364. package/src/core/bash-exec.ts +43 -15
  365. package/src/core/bus-events.ts +15 -0
  366. package/src/core/commit-attribution.ts +41 -1
  367. package/src/core/config.ts +33 -14
  368. package/src/core/defaults.ts +5 -4
  369. package/src/core/file-references.ts +11 -1
  370. package/src/core/git-commit-attribution.ts +46 -3
  371. package/src/core/incomplete-installation.ts +3 -1
  372. package/src/core/run-overrides.ts +0 -5
  373. package/src/core/settings-layers.ts +21 -5
  374. package/src/core/skill-activation.ts +3 -0
  375. package/src/core/termination.ts +26 -9
  376. package/src/core/tool-names.ts +5 -2
  377. package/src/core/untrusted-content.ts +16 -0
  378. package/src/core/workspace-trust.ts +179 -0
  379. package/src/domains/agents/builtins/architect.md +1 -1
  380. package/src/domains/agents/builtins/coder.md +5 -3
  381. package/src/domains/agents/builtins/context-bootstrap.md +3 -1
  382. package/src/domains/agents/builtins/documenter.md +8 -5
  383. package/src/domains/agents/builtins/git-master.md +1 -1
  384. package/src/domains/agents/builtins/provenance.md +7 -7
  385. package/src/domains/agents/builtins/researcher.md +1 -0
  386. package/src/domains/agents/builtins/scout.md +7 -1
  387. package/src/domains/agents/builtins/tester.md +1 -1
  388. package/src/domains/agents/builtins/verifier.md +2 -2
  389. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  390. package/src/domains/agents/result-contract.ts +199 -26
  391. package/src/domains/context/bootstrap-prompt.ts +11 -9
  392. package/src/domains/context/bootstrap.ts +74 -39
  393. package/src/domains/context/clio-md.ts +88 -26
  394. package/src/domains/context/codewiki/build-operation.ts +121 -0
  395. package/src/domains/context/codewiki/build-worker-protocol.ts +37 -3
  396. package/src/domains/context/codewiki/build-worker.ts +3 -35
  397. package/src/domains/context/codewiki/coordinator.ts +36 -6
  398. package/src/domains/context/codewiki/indexer.ts +59 -19
  399. package/src/domains/context/contract.ts +6 -2
  400. package/src/domains/context/extension.ts +97 -11
  401. package/src/domains/context/fingerprint.ts +39 -34
  402. package/src/domains/context/index.ts +7 -1
  403. package/src/domains/context/prompt-context.ts +55 -14
  404. package/src/domains/context/refresh.ts +12 -57
  405. package/src/domains/context/wiki/assemble.ts +14 -10
  406. package/src/domains/context/wiki/evidence.ts +209 -0
  407. package/src/domains/context/wiki/frontmatter.ts +5 -2
  408. package/src/domains/context/wiki/generate.ts +207 -67
  409. package/src/domains/context/wiki/meta.ts +10 -2
  410. package/src/domains/context/wiki/plan-store.ts +70 -14
  411. package/src/domains/context/wiki/plan.ts +71 -14
  412. package/src/domains/context/wiki/prompts.ts +85 -1
  413. package/src/domains/context/wiki/source-content.ts +106 -0
  414. package/src/domains/context/wiki/staleness.ts +33 -22
  415. package/src/domains/context/working-set/contract.ts +8 -2
  416. package/src/domains/context/working-set/engine.ts +17 -4
  417. package/src/domains/context/working-set/fold.ts +15 -2
  418. package/src/domains/context/working-set/marker.ts +2 -1
  419. package/src/domains/context/working-set/project.ts +18 -7
  420. package/src/domains/context/working-set/recall.ts +82 -56
  421. package/src/domains/dispatch/active-route-planner.ts +10 -3
  422. package/src/domains/dispatch/admission-queue.ts +19 -7
  423. package/src/domains/dispatch/admission.ts +3 -3
  424. package/src/domains/dispatch/budget-envelope.ts +47 -82
  425. package/src/domains/dispatch/capacity-lease.ts +57 -19
  426. package/src/domains/dispatch/code-step.ts +11 -4
  427. package/src/domains/dispatch/contract.ts +41 -9
  428. package/src/domains/dispatch/event-pump.ts +28 -7
  429. package/src/domains/dispatch/execution-role.ts +49 -2
  430. package/src/domains/dispatch/execution-scheduler.ts +4 -0
  431. package/src/domains/dispatch/extension.ts +240 -132
  432. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  433. package/src/domains/dispatch/fleet-run.ts +21 -0
  434. package/src/domains/dispatch/gate-role-prompts.ts +4 -2
  435. package/src/domains/dispatch/host-verification.ts +114 -13
  436. package/src/domains/dispatch/intent.ts +28 -18
  437. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  438. package/src/domains/dispatch/parallel-writers.ts +34 -0
  439. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  440. package/src/domains/dispatch/reservation-store.ts +13 -37
  441. package/src/domains/dispatch/route-approval.ts +3 -3
  442. package/src/domains/dispatch/route-observer.ts +4 -2
  443. package/src/domains/dispatch/route-quality.ts +6 -1
  444. package/src/domains/dispatch/state.ts +15 -2
  445. package/src/domains/dispatch/types.ts +21 -5
  446. package/src/domains/dispatch/worker-spawn.ts +58 -21
  447. package/src/domains/dispatch/workspace-checkpoint.ts +57 -0
  448. package/src/domains/eval/compare/behavioral.ts +81 -14
  449. package/src/domains/eval/compare/compare.ts +15 -5
  450. package/src/domains/eval/compare/envelope.ts +12 -5
  451. package/src/domains/eval/metrics/context.ts +24 -1
  452. package/src/domains/eval/metrics/tracked.ts +4 -28
  453. package/src/domains/eval/reports/comparison.ts +9 -9
  454. package/src/domains/eval/runners/clio-run.ts +17 -10
  455. package/src/domains/eval/runners/context-index.ts +2 -7
  456. package/src/domains/eval/runners/context-init.ts +3 -6
  457. package/src/domains/eval/runners/external-command.ts +29 -11
  458. package/src/domains/eval/schema/suite.ts +2 -0
  459. package/src/domains/eval/schema/validate.ts +1 -0
  460. package/src/domains/eval/suites/run.ts +189 -13
  461. package/src/domains/eval/verifiers/integrity.ts +39 -0
  462. package/src/domains/eval/verifiers/patch.ts +58 -2
  463. package/src/domains/eval/workspaces/temp-copy.ts +3 -0
  464. package/src/domains/evidence/build.ts +106 -17
  465. package/src/domains/evidence/detail.ts +69 -0
  466. package/src/domains/evidence/eval.ts +13 -1
  467. package/src/domains/evidence/finish-contract-map.ts +5 -1
  468. package/src/domains/evidence/inventory.ts +167 -0
  469. package/src/domains/evidence/store.ts +16 -0
  470. package/src/domains/evidence/types.ts +12 -0
  471. package/src/domains/extensions/resources.ts +7 -0
  472. package/src/domains/interop/registry.ts +2 -2
  473. package/src/domains/middleware/hooks-io.ts +45 -26
  474. package/src/domains/middleware/hooks.ts +6 -0
  475. package/src/domains/middleware/injection-screen.ts +23 -0
  476. package/src/domains/middleware/marketplace-offer.ts +20 -1
  477. package/src/domains/middleware/rules.ts +5 -1
  478. package/src/domains/middleware/runtime.ts +7 -3
  479. package/src/domains/middleware/stalled-turn.ts +18 -3
  480. package/src/domains/middleware/task-board-reminder.ts +4 -2
  481. package/src/domains/middleware/task-nudge.ts +4 -1
  482. package/src/domains/mux/contract.ts +34 -1
  483. package/src/domains/mux/detect.ts +3 -6
  484. package/src/domains/mux/dock-controller.ts +8 -1
  485. package/src/domains/mux/index.ts +1 -0
  486. package/src/domains/mux/socket-client.ts +13 -3
  487. package/src/domains/observability/accountability.ts +15 -1
  488. package/src/domains/observability/contract.ts +54 -9
  489. package/src/domains/observability/evidence-index.ts +10 -0
  490. package/src/domains/observability/extension.ts +9 -5
  491. package/src/domains/observability/projection.ts +423 -53
  492. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  493. package/src/domains/prompts/compiler.ts +10 -2
  494. package/src/domains/prompts/contract.ts +7 -4
  495. package/src/domains/prompts/extension.ts +28 -64
  496. package/src/domains/prompts/fragments/identity/clio.md +23 -0
  497. package/src/domains/prompts/fragments/operating/contract.md +12 -0
  498. package/src/domains/prompts/fragments/operating/delegation.md +5 -0
  499. package/src/domains/prompts/fragments/wiki/page.md +36 -15
  500. package/src/domains/prompts/fragments/wiki/plan.md +4 -4
  501. package/src/domains/prompts/preload-prefix.ts +31 -0
  502. package/src/domains/prompts/preload.ts +135 -61
  503. package/src/domains/providers/auth/backend-file.ts +15 -11
  504. package/src/domains/providers/auth/storage.ts +3 -5
  505. package/src/domains/providers/catalog.ts +18 -3
  506. package/src/domains/providers/model-discovery.ts +1 -4
  507. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +16 -14
  508. package/src/domains/providers/runtime-resolution.ts +11 -9
  509. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  510. package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
  511. package/src/domains/providers/support.ts +1 -1
  512. package/src/domains/providers/types/runtime-descriptor.ts +1 -1
  513. package/src/domains/resources/skills/promotion.ts +8 -1
  514. package/src/domains/safety/action-classifier.ts +16 -0
  515. package/src/domains/safety/autonomy.ts +10 -1
  516. package/src/domains/safety/contract.ts +5 -1
  517. package/src/domains/safety/default-path-policy.ts +13 -0
  518. package/src/domains/safety/extension.ts +11 -2
  519. package/src/domains/safety/finish-contract-registration.ts +29 -14
  520. package/src/domains/safety/finish-contract.ts +252 -40
  521. package/src/domains/safety/index.ts +20 -1
  522. package/src/domains/safety/policy-engine.ts +211 -34
  523. package/src/domains/safety/project-policy.ts +7 -2
  524. package/src/domains/safety/rigor.ts +53 -39
  525. package/src/domains/safety/validation-contract.ts +388 -0
  526. package/src/domains/safety/workspace-trust.ts +43 -0
  527. package/src/domains/session/archive-readers.ts +10 -1
  528. package/src/domains/session/compaction/compact.ts +384 -21
  529. package/src/domains/session/compaction/cut-point.ts +42 -5
  530. package/src/domains/session/compaction/tokens.ts +9 -1
  531. package/src/domains/session/decision-board.ts +137 -28
  532. package/src/domains/session/entries.ts +213 -11
  533. package/src/domains/session/extension.ts +4 -4
  534. package/src/domains/session/handoff.ts +2 -1
  535. package/src/domains/session/manager.ts +2 -3
  536. package/src/domains/session/prompt-manifest.ts +47 -8
  537. package/src/domains/session/task-board.ts +32 -1
  538. package/src/domains/session/tree/fork.ts +1 -2
  539. package/src/domains/session/tree/navigator.ts +1 -1
  540. package/src/domains/user-tasks/acceptance.ts +56 -0
  541. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  542. package/src/domains/user-tasks/handoff.ts +16 -0
  543. package/src/domains/user-tasks/store.ts +34 -3
  544. package/src/engine/acp/adapter.ts +60 -10
  545. package/src/engine/acp/server.ts +22 -4
  546. package/src/engine/acp/transport.ts +55 -9
  547. package/src/engine/acp/types.ts +9 -0
  548. package/src/engine/antigravity/subprocess-runtime.ts +20 -4
  549. package/src/engine/api-registry.ts +19 -2
  550. package/src/engine/apis/ollama-native.ts +15 -0
  551. package/src/engine/apis/openai-completions.ts +13 -6
  552. package/src/engine/apis/output-budget.ts +26 -10
  553. package/src/engine/claude/sdk-runtime.ts +4 -3
  554. package/src/engine/claude/subprocess-runtime.ts +107 -60
  555. package/src/engine/env-api-keys.ts +2 -1
  556. package/src/engine/external-subprocess.ts +26 -7
  557. package/src/engine/loop-guard.ts +19 -2
  558. package/src/engine/provider-diagnostics.ts +129 -0
  559. package/src/engine/provider-payload.ts +3 -1
  560. package/src/engine/worker-runtime.ts +13 -2
  561. package/src/engine/worker-tools.ts +5 -1
  562. package/src/entry/extension-reload.ts +1 -0
  563. package/src/entry/orchestrator.ts +64 -17
  564. package/src/interactive/chat-loop-messages.ts +12 -4
  565. package/src/interactive/chat-loop.ts +115 -45
  566. package/src/interactive/chat-renderer.ts +60 -0
  567. package/src/interactive/context-recall-command.ts +2 -1
  568. package/src/interactive/dispatch-board.ts +58 -714
  569. package/src/interactive/editor-submit.ts +13 -0
  570. package/src/interactive/fleet-run-preview.ts +2 -1
  571. package/src/interactive/interactive-application.ts +11 -4
  572. package/src/interactive/interactive-event-projection.ts +7 -1
  573. package/src/interactive/interactive-presentation.ts +63 -12
  574. package/src/interactive/interactive-slash-runtime.ts +4 -1
  575. package/src/interactive/layout.ts +2 -1
  576. package/src/interactive/model-session-replay.ts +2 -2
  577. package/src/interactive/oracle.ts +5 -2
  578. package/src/interactive/overlay-frame.ts +1 -0
  579. package/src/interactive/overlay-general-openers.ts +3 -1
  580. package/src/interactive/overlay-session-lifecycle.ts +6 -0
  581. package/src/interactive/overlays/ask-user.ts +1 -0
  582. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  583. package/src/interactive/overlays/message-picker.ts +3 -3
  584. package/src/interactive/overlays/settings.ts +2 -2
  585. package/src/interactive/overlays/tree-selector.ts +2 -2
  586. package/src/interactive/renderers/branch-summary.ts +1 -1
  587. package/src/interactive/renderers/tool-execution.ts +17 -1
  588. package/src/interactive/renderers/worker-entry.ts +25 -10
  589. package/src/interactive/slash-autocomplete.ts +4 -6
  590. package/src/interactive/slash-commands.ts +31 -43
  591. package/src/interactive/slash-spec.ts +28 -0
  592. package/src/interactive/turn-context.ts +221 -53
  593. package/src/interactive/turn-middleware.ts +3 -1
  594. package/src/interactive/turn-persistence.ts +3 -0
  595. package/src/interactive/turn-runtime.ts +11 -2
  596. package/src/interactive/turn-state.ts +10 -9
  597. package/src/interactive/view/artifacts.ts +2 -0
  598. package/src/interactive/watch-pane.ts +18 -4
  599. package/src/interactive/worker-stream.ts +14 -10
  600. package/src/tools/agent-tools.ts +6 -3
  601. package/src/tools/bash.ts +1 -1
  602. package/src/tools/bootstrap.ts +4 -0
  603. package/src/tools/builtin-tool-catalog.ts +40 -2
  604. package/src/tools/codewiki/code-nav.ts +4 -10
  605. package/src/tools/compete-judge-task.ts +71 -0
  606. package/src/tools/compete-worktrees.ts +41 -1
  607. package/src/tools/context/index.ts +32 -7
  608. package/src/tools/context/surface.ts +15 -4
  609. package/src/tools/core-bootstrap.ts +16 -0
  610. package/src/tools/decide.ts +136 -0
  611. package/src/tools/dispatch-admission.ts +33 -1
  612. package/src/tools/dispatch-arguments.ts +38 -1
  613. package/src/tools/dispatch-plan.ts +12 -9
  614. package/src/tools/dispatch-runner.ts +63 -33
  615. package/src/tools/dispatch-schema.ts +30 -23
  616. package/src/tools/dispatch-scout-admission.ts +10 -44
  617. package/src/tools/dispatch-scout.ts +2 -3
  618. package/src/tools/dispatch-types.ts +6 -0
  619. package/src/tools/evidence.ts +96 -0
  620. package/src/tools/find.ts +13 -4
  621. package/src/tools/grep.ts +13 -1
  622. package/src/tools/limitation.ts +76 -0
  623. package/src/tools/ls.ts +7 -1
  624. package/src/tools/monitor.ts +26 -11
  625. package/src/tools/network-policy.ts +11 -24
  626. package/src/tools/observation.ts +39 -2
  627. package/src/tools/policy.ts +9 -0
  628. package/src/tools/presentation.ts +3 -0
  629. package/src/tools/read.ts +112 -15
  630. package/src/tools/registry.ts +55 -18
  631. package/src/tools/result-shaping.ts +127 -7
  632. package/src/tools/task-worktree.ts +13 -3
  633. package/src/tools/tasks.ts +40 -5
  634. package/src/tools/verify/authoring.ts +170 -83
  635. package/src/tools/verify/catalog.ts +122 -5
  636. package/src/tools/verify/frontend.ts +67 -30
  637. package/src/tools/verify/index.ts +2 -1
  638. package/src/tools/verify/numeric.ts +303 -0
  639. package/src/tools/verify/perf.ts +143 -0
  640. package/src/tools/verify/scripts.ts +229 -2
  641. package/src/tools/web-fetch-network.ts +179 -0
  642. package/src/tools/web-fetch-surface.ts +2 -1
  643. package/src/tools/web-fetch.ts +15 -13
  644. package/src/tools/worker-evidence.ts +27 -0
  645. package/src/worker/spec-contract.ts +12 -8
  646. package/dist/builtins-IA7V7FUC.js +0 -22
  647. package/dist/chunk-2WZ546HR.js +0 -792
  648. package/dist/chunk-5PSMVOLM.js +0 -56
  649. package/dist/chunk-7DICMOS6.js +0 -313
  650. package/dist/chunk-BEPZRGGU.js +0 -1560
  651. package/dist/chunk-JVCV3ICN.js +0 -47
  652. package/dist/chunk-KK4JZPBQ.js +0 -3982
  653. package/dist/chunk-MNJGS2IN.js +0 -33
  654. package/dist/chunk-NDINPTJ4.js +0 -641
  655. package/dist/chunk-O5CVSAG5.js +0 -122
  656. package/dist/chunk-OQE5J4C6.js +0 -73
  657. package/dist/chunk-RVG5JXAL.js +0 -41
  658. package/dist/chunk-T56WDKA5.js +0 -183
  659. package/dist/chunk-UUVG37B4.js +0 -244
  660. package/dist/chunk-VPKWYKEY.js +0 -169
  661. package/dist/chunk-Y3CBHOR6.js +0 -228
  662. package/dist/clio-CMMK4KRR.js +0 -25
  663. package/dist/configure-LE3IK2TJ.js +0 -56
  664. package/dist/context-clear-BW4O37TG.js +0 -176
  665. package/dist/fleet-view-SWBR3VGQ.js +0 -97
  666. package/dist/preload-P6DGH2PZ.js +0 -13
  667. package/dist/slash-commands-S7MBJDQK.js +0 -83
  668. package/dist/tools-TFGJICCU.js +0 -29
  669. package/dist/verify-RWE4PPEK.js +0 -27
  670. package/dist/wiki-generate-C7IQOXSP.js +0 -469
@@ -1,78 +1,4 @@
1
- /**
2
- * Fixed machine-readable projection of one evidence bundle's trust record.
3
- *
4
- * `evidence inspect <id>` prints an operator record that quotes the task text,
5
- * the bundle's file list, and per-finding prose. This is the same bundle read
6
- * down to the one thing a GUI can carry safely and usefully: which runs the
7
- * bundle covers, what verdict each run earned, and which axis produced it.
8
- *
9
- * Every value here comes from a closed vocabulary. The axis names, the axis
10
- * states, and the verdicts are all enumerations the harness owns, so there is
11
- * no free-form text on this surface at all, which is what lets it answer the
12
- * question the inventory raises without reopening the boundary the inventory
13
- * closed.
14
- *
15
- * Unlike the other fixed reads this one takes an identifier, because an
16
- * operator names the bundle. The GUI host may only pass back an id it served
17
- * inside its current bounded window; see `apps/workbench/artifact-allowlist.ts`.
18
- */
19
-
20
- import { clioDataDir } from "../core/xdg.js";
21
- import {
22
- inspectEvidence,
23
- TRUST_STATUS_AXES,
24
- type TrustStatusAxis,
25
- type TrustVerdict,
26
- trustVerdict,
27
- } from "../domains/evidence/index.js";
28
-
29
- export const EVIDENCE_DETAIL_MAX_RUNS = 16;
30
-
31
- export interface EvidenceDetailRun {
32
- readonly runId: string;
33
- readonly verdict: TrustVerdict;
34
- /** Every axis, always all six, so an absent axis is stated rather than missing. */
35
- readonly axes: Readonly<Record<TrustStatusAxis, string>>;
36
- }
37
-
38
- export interface EvidenceDetailSnapshot {
39
- readonly version: 1;
40
- readonly generatedAt: string;
41
- readonly evidenceId: string;
42
- readonly sourceKind: "run" | "session" | "eval";
43
- /** False when the bundle predates the canonical trust projection. */
44
- readonly canonical: boolean;
45
- readonly runs: readonly EvidenceDetailRun[];
46
- readonly runsTruncated: boolean;
47
- }
48
-
49
- async function evidenceDetailSnapshot(
50
- evidenceId: string,
51
- now: () => number = Date.now,
52
- dataDir: string = clioDataDir(),
53
- ): Promise<EvidenceDetailSnapshot> {
54
- const inspected = await inspectEvidence(dataDir, evidenceId);
55
- const all = inspected.trustStatus.runs;
56
- const window = all.slice(0, EVIDENCE_DETAIL_MAX_RUNS);
57
- return {
58
- version: 1,
59
- generatedAt: new Date(now()).toISOString(),
60
- evidenceId: inspected.overview.evidenceId,
61
- sourceKind: inspected.overview.source.kind,
62
- canonical: inspected.trustStatus.projection === "canonical",
63
- runs: window.map(
64
- (run): EvidenceDetailRun => ({
65
- runId: run.runId,
66
- verdict: trustVerdict(run.status),
67
- axes: Object.fromEntries(TRUST_STATUS_AXES.map((axis) => [axis, run.status[axis].state])) as Record<
68
- TrustStatusAxis,
69
- string
70
- >,
71
- }),
72
- ),
73
- runsTruncated: all.length > window.length,
74
- };
75
- }
1
+ import { evidenceDetailSnapshot } from "../domains/evidence/detail.js";
76
2
 
77
3
  /**
78
4
  * `clio-coder evidence inspect <id> --json`.
@@ -1,170 +1,4 @@
1
- /**
2
- * Fixed machine-readable projection of recent evidence artifacts.
3
- *
4
- * `evidence list` is an operator table and `evidence inspect <id>` needs an id,
5
- * so neither is a transport a GUI host can invoke blind. This command accepts
6
- * no identifier, path, or limit, selects a bounded newest-first window itself,
7
- * and emits provenance, tags, totals, and a trust verdict.
8
- *
9
- * An overview carries the working directories the runs executed in, the task
10
- * text the operator typed, and the file names inside the bundle. None of that
11
- * appears here. What does is the shape of the artifact and how far it can be
12
- * trusted, which is what an operator picks a bundle by.
13
- */
14
-
15
- import { clioDataDir } from "../core/xdg.js";
16
- import {
17
- EVIDENCE_TAGS,
18
- type EvidenceOverview,
19
- type EvidenceTag,
20
- listEvidenceOverviews,
21
- loadEvidenceTrustStatus,
22
- type TrustVerdict,
23
- trustVerdict,
24
- } from "../domains/evidence/index.js";
25
- import { sanitizeCallTargetText } from "../domains/safety/call-target.js";
26
- import { truncateToWidth } from "../engine/tui-primitives.js";
27
-
28
- export const EVIDENCE_INVENTORY_MAX_ARTIFACTS = 12;
29
- export const EVIDENCE_INVENTORY_MAX_IDS = 8;
30
-
31
- const IDENTITY_WIDTH = 128;
32
-
33
- /**
34
- * Worst verdict first.
35
- *
36
- * An artifact covering several runs is only as trustworthy as its weakest run,
37
- * so the fold takes the worst rather than the newest or the most common. A
38
- * `compromised` run inside an otherwise clean bundle is the fact the operator
39
- * needs, and averaging it away would be the one summary worth not printing.
40
- */
41
- const VERDICT_SEVERITY: ReadonlyArray<TrustVerdict> = ["compromised", "unverified", "unknown", "grounded", "reviewed"];
42
-
43
- export interface EvidenceInventoryArtifact {
44
- readonly evidenceId: string;
45
- readonly sourceKind: "run" | "session" | "eval";
46
- readonly generatedAt: string;
47
- readonly startedAt: string | null;
48
- readonly endedAt: string | null;
49
- readonly runIds: readonly string[];
50
- readonly runIdsTruncated: boolean;
51
- readonly agentIds: readonly string[];
52
- readonly statuses: readonly string[];
53
- readonly tags: readonly EvidenceTag[];
54
- readonly totals: Readonly<{
55
- runs: number;
56
- receipts: number;
57
- toolCalls: number;
58
- toolErrors: number;
59
- blockedToolCalls: number;
60
- protectedArtifacts: number;
61
- tokens: number;
62
- costUsd: number;
63
- wallTimeMs: number;
64
- }>;
65
- /** Secret-shaped values the builder replaced across the bundle's exports. */
66
- readonly redactionCount: number;
67
- readonly trust: Readonly<{
68
- verdict: TrustVerdict;
69
- /** Runs whose canonical trust status the bundle actually recorded. */
70
- runsCovered: number;
71
- /** True when the bundle predates the canonical trust projection. */
72
- historical: boolean;
73
- }>;
74
- }
75
-
76
- export interface EvidenceInventorySnapshot {
77
- readonly version: 1;
78
- readonly generatedAt: string;
79
- readonly artifacts: readonly EvidenceInventoryArtifact[];
80
- readonly truncated: boolean;
81
- }
82
-
83
- function bounded(value: string, width: number): string {
84
- const sanitized = sanitizeCallTargetText(value);
85
- if (sanitized.length === 0) return "unavailable";
86
- return sanitizeCallTargetText(truncateToWidth(sanitized, width, "…", false));
87
- }
88
-
89
- /** Distinct, sanitized, bounded, in first-seen order. */
90
- function identities(values: ReadonlyArray<string>): string[] {
91
- const seen: string[] = [];
92
- for (const value of values) {
93
- const text = bounded(value, IDENTITY_WIDTH);
94
- if (!seen.includes(text)) seen.push(text);
95
- if (seen.length >= EVIDENCE_INVENTORY_MAX_IDS) break;
96
- }
97
- return seen;
98
- }
99
-
100
- function tally(value: number | undefined): number {
101
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? Math.trunc(value) : 0;
102
- }
103
-
104
- function amount(value: number | undefined): number {
105
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : 0;
106
- }
107
-
108
- /** Newest generation first. An unparseable stamp sorts oldest rather than throwing. */
109
- function byNewest(a: EvidenceOverview, b: EvidenceOverview): number {
110
- return (Date.parse(b.generatedAt) || 0) - (Date.parse(a.generatedAt) || 0);
111
- }
112
-
113
- async function evidenceInventorySnapshot(
114
- now: () => number = Date.now,
115
- dataDir: string = clioDataDir(),
116
- ): Promise<EvidenceInventorySnapshot> {
117
- const all = (await listEvidenceOverviews(dataDir)).sort(byNewest);
118
- const window = all.slice(0, EVIDENCE_INVENTORY_MAX_ARTIFACTS);
119
- const artifacts: EvidenceInventoryArtifact[] = [];
120
- for (const overview of window) {
121
- // One unreadable trust file costs that artifact its verdict, never the
122
- // whole inventory: the bundle itself is still the thing being listed.
123
- let verdict: TrustVerdict = "unknown";
124
- let runsCovered = 0;
125
- let historical = true;
126
- try {
127
- const status = await loadEvidenceTrustStatus(dataDir, overview.evidenceId);
128
- historical = status.projection !== "canonical";
129
- runsCovered = status.runs.length;
130
- const verdicts = status.runs.map((run) => trustVerdict(run.status));
131
- verdict = VERDICT_SEVERITY.find((candidate) => verdicts.includes(candidate)) ?? "unknown";
132
- } catch {
133
- verdict = "unknown";
134
- }
135
- artifacts.push({
136
- evidenceId: bounded(overview.evidenceId, IDENTITY_WIDTH),
137
- sourceKind: overview.source.kind,
138
- generatedAt: overview.generatedAt,
139
- startedAt: overview.startedAt,
140
- endedAt: overview.endedAt,
141
- runIds: identities(overview.runIds),
142
- runIdsTruncated: overview.runIds.length > EVIDENCE_INVENTORY_MAX_IDS,
143
- agentIds: identities(overview.agentIds),
144
- statuses: identities(overview.statuses),
145
- tags: overview.tags.filter((tag) => EVIDENCE_TAGS.includes(tag)),
146
- totals: {
147
- runs: tally(overview.totals.runs),
148
- receipts: tally(overview.totals.receipts),
149
- toolCalls: tally(overview.totals.toolCalls),
150
- toolErrors: tally(overview.totals.toolErrors),
151
- blockedToolCalls: tally(overview.totals.blockedToolCalls),
152
- protectedArtifacts: tally(overview.totals.protectedArtifacts),
153
- tokens: tally(overview.totals.tokens),
154
- costUsd: amount(overview.totals.costUsd),
155
- wallTimeMs: tally(overview.totals.wallTimeMs),
156
- },
157
- redactionCount: tally(overview.redactionCount),
158
- trust: { verdict, runsCovered, historical },
159
- });
160
- }
161
- return {
162
- version: 1,
163
- generatedAt: new Date(now()).toISOString(),
164
- artifacts,
165
- truncated: all.length > window.length,
166
- };
167
- }
1
+ import { evidenceInventorySnapshot } from "../domains/evidence/inventory.js";
168
2
 
169
3
  /**
170
4
  * `clio-coder evidence inventory --json`, and nothing else.
package/src/cli/index.ts CHANGED
@@ -71,6 +71,7 @@ Usage:
71
71
  clio-coder extensions install, list, enable, disable, or remove extension packages
72
72
  clio-coder skills list, inspect, validate, or install skills
73
73
  clio-coder library list, search, add, or sync agents, prompts, fleets, and skills from catalogs
74
+ clio-coder tasks list, add, hand, finish, or drop project operator tasks
74
75
  clio-coder verifiers discover, inspect, author, validate, edit, or dry-run project checks
75
76
  clio-coder tools list|status|install|remove <id> pinned external programs Clio can drive
76
77
  clio-coder interop inspect --json detected external coding agents and how far each one is wired
@@ -259,6 +260,7 @@ const COMMAND_HANDLERS = new Map<string, CommandHandler>([
259
260
  ["fleet", async (subArgs) => (await import("./fleet.js")).runFleetCommand(subArgs)],
260
261
  ["skills", async (subArgs) => (await import("./skills.js")).runSkillsCommand(subArgs)],
261
262
  ["library", async (subArgs) => (await import("./library.js")).runLibraryCommand(subArgs)],
263
+ ["tasks", async (subArgs) => (await import("./tasks.js")).runTasksCommand(subArgs)],
262
264
  ["verifiers", async (subArgs) => (await import("./verifiers.js")).runVerifiersCommand(subArgs)],
263
265
  ["docs", async (subArgs) => (await import("./docs.js")).runDocsCommand(subArgs)],
264
266
  ["share", async (subArgs) => (await import("./share.js")).runShareCommand(subArgs)],
@@ -12,7 +12,7 @@ import {
12
12
  import { getTerminationCoordinator } from "../../core/termination.js";
13
13
  import { ToolNames } from "../../core/tool-names.js";
14
14
  import { createRunReceiptQuality } from "../../domains/dispatch/receipt-findings.js";
15
- import { openLedger } from "../../domains/dispatch/state.js";
15
+ import { newRunId, openLedger } from "../../domains/dispatch/state.js";
16
16
  import type { RunKind, RunOutcome, RunReceiptDraft, RunStatus, ToolCallStat } from "../../domains/dispatch/types.js";
17
17
  import type { AgentMessage, ImageContent } from "../../engine/types.js";
18
18
  import type { ChatLoop, ChatLoopEvent } from "../../interactive/chat-loop.js";
@@ -58,6 +58,8 @@ export interface HeadlessMainAgentOptions {
58
58
  }
59
59
 
60
60
  interface HeadlessMainAgentResult {
61
+ /** Latest assistant stop, superseded by subsequent continuation messages. */
62
+ outputExhausted: boolean;
61
63
  text: string;
62
64
  error: string | null;
63
65
  /**
@@ -154,6 +156,7 @@ function resultFromEvent(event: ChatLoopEvent, current: HeadlessMainAgentResult)
154
156
  if (event.type !== "message_end") return current;
155
157
  const message = event.message;
156
158
  if (message?.role !== "assistant") return current;
159
+ current = { ...current, outputExhausted: message.stopReason === "length", sawTerminatingToolResult: false };
157
160
  const error = assistantError(message);
158
161
  if (error) return { ...current, text: "", error };
159
162
  const text = assistantText(message).trimEnd();
@@ -180,8 +183,15 @@ function recordToolEnd(stats: HeadlessMainAgentReceiptStats, event: ChatLoopEven
180
183
  stat.count += 1;
181
184
  const durationMs = durationMsFromEvent(event);
182
185
  if (durationMs !== undefined) stat.totalDurationMs += durationMs;
183
- if (event.isError) stat.errors += 1;
184
- else stat.ok += 1;
186
+ // Registry settlement is authoritative; legacy producers only expose isError.
187
+ const outcome = (event as { outcome?: unknown }).outcome;
188
+ if (outcome === "blocked") stat.blocked += 1;
189
+ else if (outcome === "error") stat.errors += 1;
190
+ else if (outcome === "ok") stat.ok += 1;
191
+ else if (outcome === undefined) {
192
+ if (event.isError) stat.errors += 1;
193
+ else stat.ok += 1;
194
+ }
185
195
  stats.toolStats.set(tool, stat);
186
196
  if (tool === ToolNames.Context) {
187
197
  const rawTurnId = (event as { turnId?: unknown }).turnId;
@@ -267,6 +277,7 @@ interface HeadlessTerminalOutcome {
267
277
  }
268
278
 
269
279
  async function recordHeadlessMainAgentReceipt(input: {
280
+ runId: string;
270
281
  chat: ChatLoop;
271
282
  task: string;
272
283
  startedAt: string;
@@ -289,6 +300,7 @@ async function recordHeadlessMainAgentReceipt(input: {
289
300
  const outcomeDetail = input.terminal.failureMessage;
290
301
  const ledger = openLedger();
291
302
  const envelope = ledger.create({
303
+ id: input.runId,
292
304
  agentId: "main-agent",
293
305
  executionRole: "builder",
294
306
  requestOrigin: "user",
@@ -394,10 +406,14 @@ function defaultShutdownHooks(): HeadlessShutdownHooks {
394
406
  }
395
407
 
396
408
  export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMainAgentOptions): Promise<number> {
409
+ // Children need the authoritative parent before submit can invoke dispatch.
410
+ // The terminal writer reuses this identity whichever settlement path wins.
411
+ const runId = newRunId();
397
412
  const mode = options.mode ?? "text";
398
413
  const jsonEvents = options.jsonEvents ?? "full";
399
414
  const startedAt = new Date().toISOString();
400
415
  let result: HeadlessMainAgentResult = {
416
+ outputExhausted: false,
401
417
  text: "",
402
418
  error: null,
403
419
  sawTerminatingToolResult: false,
@@ -422,6 +438,7 @@ export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMain
422
438
  if (sealed !== null) return sealed;
423
439
  const endedAt = new Date().toISOString();
424
440
  sealed = recordHeadlessMainAgentReceipt({
441
+ runId,
425
442
  chat,
426
443
  task: options.prompt,
427
444
  startedAt,
@@ -526,6 +543,7 @@ export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMain
526
543
  try {
527
544
  if (mode === "json" && jsonEvents === "terminal") writeTerminalTurnStart();
528
545
  const submitOptions = {
546
+ hostRun: { runId, lineage: { parentRunId: null, rootRunId: runId, depth: 0, attempt: 0 } },
529
547
  ...(options.images && options.images.length > 0 ? { images: options.images } : {}),
530
548
  ...(options.workingContextPaths && options.workingContextPaths.length > 0
531
549
  ? { workingContextPaths: options.workingContextPaths }
@@ -573,6 +591,15 @@ export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMain
573
591
  } else if (result.error) {
574
592
  terminal = { exitCode: 1, outcome: "failed", status: "failed", failureMessage: result.error };
575
593
  stderrMessage = prefixHeadlessFailure(chat, result.error);
594
+ } else if (result.outputExhausted && !result.sawTerminatingToolResult) {
595
+ // The provider returned normally, but generation exhausted its budget.
596
+ // Earlier chatter and partial prose cannot turn that terminal cause into
597
+ // success. A later assistant message or terminating tool supersedes it.
598
+ const failureMessage =
599
+ "clio-coder run: output token limit reached (stopReason=length); generation incomplete. Consider resuming with a narrower task, lower reasoning effort, or a larger output budget.";
600
+ terminal = { exitCode: 1, outcome: "failed", status: "failed", failureMessage };
601
+ stderrMessage = failureMessage;
602
+ if (mode === "text" && result.text.length > 0) stdoutMessage = result.text;
576
603
  } else if (result.text.length === 0 && !result.sawTerminatingToolResult) {
577
604
  const failureMessage =
578
605
  result.lastNotice !== null
@@ -611,7 +638,8 @@ export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMain
611
638
 
612
639
  if (stderrMessage !== null) {
613
640
  process.stderr.write(`${stderrMessage}\n`);
614
- } else if (stdoutMessage !== null) {
641
+ }
642
+ if (stdoutMessage !== null) {
615
643
  writeRawStdout(`${stdoutMessage}\n`);
616
644
  }
617
645
  await flushRawStdout();
package/src/cli/run.ts CHANGED
@@ -2,6 +2,7 @@ import { type ClioSettings, readSettings } from "../core/config.js";
2
2
  import { loadDomains } from "../core/domain-loader.js";
3
3
  import { readFileArgsAsync } from "../core/file-references.js";
4
4
  import { withRunOverrides } from "../core/run-overrides.js";
5
+ import { readStrictLayeredSettings } from "../core/settings-layers.js";
5
6
  import { clioDataDir } from "../core/xdg.js";
6
7
  import type { AgentsContract } from "../domains/agents/contract.js";
7
8
  import { AgentsDomainModule } from "../domains/agents/index.js";
@@ -62,7 +63,6 @@ Flags:
62
63
  --frequency-penalty <N> one-run frequency penalty override
63
64
  --repeat-penalty <N> one-run repeat penalty override
64
65
  --max-context-tokens <N> one-run context-window override for supported local runtimes
65
- --kv-cache-mode <mode> one-run KV-cache mode override: f16|f32|none|false|q8_0|q4_0|q4_1|iq4_nl|q5_0|q5_1
66
66
  --json stream JSONL events for the main-agent path; dispatch streams events and receipt JSON
67
67
  --json-events <mode> main-agent JSON stream mode: full|terminal; implies --json
68
68
  --steer-channel <path> read live steering lines from a FIFO or appended regular file
@@ -102,15 +102,15 @@ function hasDispatchOnlyOptions(parsed: RunCliArgs): boolean {
102
102
 
103
103
  /**
104
104
  * True when an explicit --target override names a target that is not in
105
- * settings.targets. `readSettings().targets` is the same source the runtime
106
- * resolver checks (providers.getTarget), so this mirrors its `target-not-found`
105
+ * effective settings.targets. Include project overlays just as the runtime
106
+ * resolver does (providers.getTarget), so this mirrors its `target-not-found`
107
107
  * verdict without booting the providers domain. Unreadable/invalid settings
108
108
  * fall through (returns false) so the normal boot path surfaces that error
109
109
  * instead of a misleading "target not found".
110
110
  */
111
- function explicitTargetMissing(targetId: string): boolean {
111
+ export function explicitTargetMissing(targetId: string): boolean {
112
112
  try {
113
- return !readSettings().targets.some((target) => target.id === targetId);
113
+ return !readStrictLayeredSettings(process.cwd()).settings.targets.some((target) => target.id === targetId);
114
114
  } catch {
115
115
  return false;
116
116
  }
@@ -164,9 +164,9 @@ function explicitSkillPathErrors(skillPaths: ReadonlyArray<string>): string[] {
164
164
  }
165
165
 
166
166
  /**
167
- * The TUI's verdict for a command-shaped token the registry does not own,
168
- * applied to a headless task. Returns the refusal message, or null when the
169
- * task is not an unknown command.
167
+ * Refuse commands the headless prompt path cannot execute. Skill invocations
168
+ * and prompt templates have production expansion paths; interactive commands
169
+ * do not, so accepting them would send their literal text to the model.
170
170
  *
171
171
  * `parseSlashCommand` is the canonical shape test and the canonical registry
172
172
  * walk, so a token that is one word of letters, digits, hyphens, or colons and
@@ -191,11 +191,14 @@ function explicitSkillPathErrors(skillPaths: ReadonlyArray<string>): string[] {
191
191
  * closure sits on. Boundaries rule6 in `tests/boundaries/check-boundaries.ts`
192
192
  * holds both halves of that.
193
193
  */
194
- async function unknownSlashCommandRefusal(task: string): Promise<string | null> {
194
+ async function headlessSlashCommandRefusal(task: string): Promise<string | null> {
195
195
  if (!task.trim().startsWith("/")) return null;
196
196
  const { parseSlashCommand } = await import("../interactive/slash-commands.js");
197
197
  const command = parseSlashCommand(task);
198
- if (command.kind !== "unknown-command") return null;
198
+ if (command.kind === "skill-invocation" || command.kind === "unknown" || command.kind === "empty") return null;
199
+ if (command.kind !== "unknown-command") {
200
+ return "interactive commands are not supported by clio-coder run; use interactive chat or the corresponding CLI command";
201
+ }
199
202
  const { loadPromptTemplates } = await import("../domains/resources/index.js");
200
203
  const templates = loadPromptTemplates({ cwd: process.cwd() });
201
204
  if (templates.items.some((template) => template.name === command.token)) return null;
@@ -213,7 +216,6 @@ export async function runClioRun(
213
216
  return withRunOverrides(
214
217
  {
215
218
  ...(parsed.maxContextTokens !== undefined ? { maxContextTokens: parsed.maxContextTokens } : {}),
216
- ...(parsed.kvCacheMode !== undefined ? { kvCacheMode: parsed.kvCacheMode } : {}),
217
219
  },
218
220
  async () => {
219
221
  if (parsed.help) {
@@ -262,11 +264,9 @@ export async function runClioRun(
262
264
  if (!assembled) return 2;
263
265
 
264
266
  if (parsed.agentId === undefined) {
265
- // A mistyped slash command is a usage error, not a task. Refusing it
266
- // here keeps it from booting a session and spending a model turn on a
267
- // command that was never run, which is what the TUI has always done
268
- // and what docs/guide/extensions-and-sharing.md documents for both surfaces.
269
- const slashRefusal = await unknownSlashCommandRefusal(assembled.prompt);
267
+ // Reject unknown and unsupported interactive commands before boot;
268
+ // neither has a headless handler that could honor the request.
269
+ const slashRefusal = await headlessSlashCommandRefusal(assembled.prompt);
270
270
  if (slashRefusal !== null) {
271
271
  process.stderr.write(`clio-coder run: ${slashRefusal}\n`);
272
272
  return 2;
@@ -272,10 +272,10 @@ export async function runSkillsEvalCommand(nameOrPath: string, options: SkillsEv
272
272
  return anyUnmeasured || evidenceErrors.length > 0 ? 3 : 0;
273
273
  }
274
274
 
275
- export type NetworkPolicyLabel = "hermetic" | "allowed";
275
+ export type NetworkPolicyLabel = "retrieve-disabled" | "allowed";
276
276
 
277
277
  function networkPolicyLabel(allowNetwork: boolean): NetworkPolicyLabel {
278
- return allowNetwork ? "allowed" : "hermetic";
278
+ return allowNetwork ? "allowed" : "retrieve-disabled";
279
279
  }
280
280
 
281
281
  /**
@@ -287,7 +287,7 @@ function networkPolicyLabel(allowNetwork: boolean): NetworkPolicyLabel {
287
287
  function describeArmPolicy(allowNetwork: boolean): string {
288
288
  const network = allowNetwork
289
289
  ? "network allowed (--allow-network), so arm runs keep the web tools"
290
- : "network hermetic, so the web tools are stripped from every arm run (pass --allow-network to keep them)";
290
+ : "retrieval tools disabled in every arm run; bash networking requires OS isolation (pass --allow-network to keep web tools)";
291
291
  return `policy: autonomy ${ARM_AUTONOMY} for the baseline and treatment arms in per-run disposable workspaces; ${network}`;
292
292
  }
293
293
 
@@ -295,7 +295,7 @@ function describeArmPolicy(allowNetwork: boolean): string {
295
295
  function describeArmPolicyOutcome(allowNetwork: boolean): string {
296
296
  const network = allowNetwork
297
297
  ? "network: allowed (--allow-network); arm runs kept the web tools"
298
- : "network: hermetic; the web tools were stripped from every arm run";
298
+ : "retrieval: disabled; bash networking was not constrained";
299
299
  return `policy: the baseline and treatment arms ran at autonomy ${ARM_AUTONOMY}; ${network}`;
300
300
  }
301
301
 
@@ -353,17 +353,19 @@ function unmeasuredBullets(scenario: SkillEvalScenario, reason: string): ScoredB
353
353
 
354
354
  /**
355
355
  * The environment each arm's child `clio-coder run` inherits. Absent
356
- * `--allow-network` the hermetic switch is set, which strips the RETRIEVE
356
+ * `--allow-network` the retrieval registration switch is set, which strips the RETRIEVE
357
357
  * plane from every registry the child and its descendants build. With the flag
358
358
  * the variable is removed rather than left alone, so an ambient setting in the
359
359
  * operator's shell cannot make `--allow-network` a claim the run does not keep.
360
360
  *
361
361
  * @internal Exported for contract tests.
362
362
  */
363
- function evalChildEnv(allowNetwork: boolean, env: NodeJS.ProcessEnv = process.env): NodeJS.ProcessEnv {
363
+ export function evalChildEnv(allowNetwork: boolean, env: NodeJS.ProcessEnv = process.env): NodeJS.ProcessEnv {
364
364
  const childEnv: NodeJS.ProcessEnv = { ...env };
365
- if (allowNetwork) Reflect.deleteProperty(childEnv, NO_NETWORK_TOOLS_ENV);
366
- else childEnv[NO_NETWORK_TOOLS_ENV] = "1";
365
+ if (allowNetwork) {
366
+ Reflect.deleteProperty(childEnv, NO_NETWORK_TOOLS_ENV);
367
+ Reflect.deleteProperty(childEnv, "CLIO_CODER_NO_NETWORK_TOOLS");
368
+ } else childEnv[NO_NETWORK_TOOLS_ENV] = "1";
367
369
  return childEnv;
368
370
  }
369
371
 
@@ -1,18 +1,44 @@
1
1
  import * as fs from "node:fs";
2
+ import { Socket } from "node:net";
2
3
  import * as readline from "node:readline";
3
4
 
4
5
  export function setupSteerChannel(filePath: string, onLine: (line: string) => void): () => void {
5
6
  let closed = false;
6
7
  let watcher: fs.FSWatcher | null = null;
7
- let stream: fs.ReadStream | null = null;
8
+ let stream: Socket | null = null;
8
9
  let rl: readline.Interface | null = null;
10
+ const cleanup = () => {
11
+ if (closed) return;
12
+ closed = true;
13
+ watcher?.close();
14
+ rl?.close();
15
+ stream?.destroy();
16
+ };
17
+ const reportError = (err: unknown) => {
18
+ if (closed) return;
19
+ process.stderr.write(
20
+ `clio-coder run: failed to setup steer channel: ${err instanceof Error ? err.message : String(err)}\n`,
21
+ );
22
+ cleanup();
23
+ };
9
24
 
10
25
  try {
11
26
  const stats = fs.statSync(filePath);
12
27
  if (stats.isFIFO()) {
13
- // Named pipe: we can just read from the stream
14
- stream = fs.createReadStream(filePath);
28
+ // A blocking fs read cannot be cancelled while a FIFO writer stays
29
+ // open. Socket uses readiness-driven pipe reads that destroy() closes.
30
+ // Keep read-only access and the existing first-writer-EOF behavior.
31
+ const fd = fs.openSync(filePath, fs.constants.O_RDONLY | fs.constants.O_NONBLOCK);
32
+ try {
33
+ stream = new Socket({ fd, readable: true, writable: false });
34
+ } catch (err) {
35
+ // Ownership transfers to Socket only after successful construction.
36
+ fs.closeSync(fd);
37
+ throw err;
38
+ }
39
+ stream.on("error", reportError);
15
40
  rl = readline.createInterface({ input: stream, crlfDelay: Infinity });
41
+ rl.on("error", reportError);
16
42
  rl.on("line", (line) => {
17
43
  if (closed) return;
18
44
  const trimmed = line.trim();
@@ -66,21 +92,8 @@ export function setupSteerChannel(filePath: string, onLine: (line: string) => vo
66
92
  });
67
93
  }
68
94
  } catch (err) {
69
- process.stderr.write(
70
- `clio-coder run: failed to setup steer channel: ${err instanceof Error ? err.message : String(err)}\n`,
71
- );
95
+ reportError(err);
72
96
  }
73
97
 
74
- return () => {
75
- closed = true;
76
- if (watcher) {
77
- watcher.close();
78
- }
79
- if (rl) {
80
- rl.close();
81
- }
82
- if (stream) {
83
- stream.destroy();
84
- }
85
- };
98
+ return cleanup;
86
99
  }