@iowarp/clio-coder 0.4.1 → 0.4.3

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 (604) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/CONTRIBUTING.md +142 -52
  3. package/README.md +434 -473
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-ZILU3AUO.js → acp-H2NGRPWO.js} +12 -12
  6. package/dist/{agents-HYWGBGQR.js → agents-TL5LLUQP.js} +56 -55
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-N3QT7CBO.js → auth-E5SW4HMS.js} +23 -21
  9. package/dist/builtins-IA7V7FUC.js +22 -0
  10. package/dist/{chunk-7RY5VZPH.js → chunk-2APPQIER.js} +8 -8
  11. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  12. package/dist/{chunk-JA5QWE4Z.js → chunk-2UG5F4C5.js} +1973 -1664
  13. package/dist/{chunk-5YHDIDBP.js → chunk-2UH2KFUP.js} +2 -2
  14. package/dist/{chunk-CTJ4RNAA.js → chunk-2VIKGWFZ.js} +2 -2
  15. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  16. package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
  17. package/dist/chunk-3EBYEESD.js +314 -0
  18. package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
  19. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  20. package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
  21. package/dist/chunk-4UVU7BJ5.js +39 -0
  22. package/dist/{chunk-VKRH2TCS.js → chunk-4WR7VSYB.js} +2 -2
  23. package/dist/{chunk-BBTJOK6Y.js → chunk-54CBCGIR.js} +5 -5
  24. package/dist/{chunk-AP73CFDC.js → chunk-5ICU3EUH.js} +2 -2
  25. package/dist/chunk-5MEZN6CB.js +1334 -0
  26. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  27. package/dist/{chunk-ABLSQ6JX.js → chunk-64I3JVYM.js} +8 -2
  28. package/dist/{chunk-AFKWHWXF.js → chunk-6PTFB5VS.js} +39 -22
  29. package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
  30. package/dist/chunk-7DRAWPTZ.js +360 -0
  31. package/dist/chunk-7E7I3WLS.js +3762 -0
  32. package/dist/{chunk-BJGUKIG4.js → chunk-7ZYNNDKC.js} +7 -7
  33. package/dist/{chunk-XKA2ICR3.js → chunk-AF4YM7Z4.js} +652 -252
  34. package/dist/{chunk-GVQJ5CCZ.js → chunk-AX2THNSA.js} +12 -12
  35. package/dist/{chunk-IG7BCQBA.js → chunk-B4OAX3SI.js} +65 -3
  36. package/dist/{chunk-TD3PGPQA.js → chunk-B4VEBZKF.js} +3 -3
  37. package/dist/{chunk-74YWRRU5.js → chunk-BEPZRGGU.js} +10 -10
  38. package/dist/{chunk-FEFIFZTL.js → chunk-CE5AX47J.js} +2 -2
  39. package/dist/{chunk-UAPGZHYC.js → chunk-DWUOQKRU.js} +25 -11
  40. package/dist/{chunk-THYWACCR.js → chunk-E3TPLWFX.js} +3 -3
  41. package/dist/{chunk-7EPLI7VL.js → chunk-EKCHAPYA.js} +2 -2
  42. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  43. package/dist/{chunk-PJJ6MY27.js → chunk-F5JHEYZM.js} +7 -7
  44. package/dist/{chunk-6CCS4G3W.js → chunk-FTMGRKEF.js} +3 -3
  45. package/dist/{chunk-SINK3QR6.js → chunk-G76U63X4.js} +17 -17
  46. package/dist/{chunk-EIMVLWB3.js → chunk-GHS5EBTQ.js} +64 -9
  47. package/dist/{chunk-QMXC4JB7.js → chunk-GI7YYQ3F.js} +187 -1419
  48. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  49. package/dist/{chunk-6HMJX2VU.js → chunk-GWZNEVM2.js} +44 -12
  50. package/dist/chunk-GYV6VZOC.js +26 -0
  51. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  52. package/dist/{chunk-UXN6JT4W.js → chunk-HEQY7ZFI.js} +3 -3
  53. package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
  54. package/dist/{chunk-GCSMB2KY.js → chunk-I7ZPNEJM.js} +145 -102
  55. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  56. package/dist/{chunk-QTFGO774.js → chunk-IGLP3ODT.js} +29 -16
  57. package/dist/chunk-IJNZMHLA.js +101 -0
  58. package/dist/{chunk-BDPT6GTK.js → chunk-INY6HTFL.js} +7 -7
  59. package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
  60. package/dist/{chunk-6NJQITNH.js → chunk-IWT4SF4R.js} +6 -3
  61. package/dist/{chunk-R23Z6K6I.js → chunk-JDAY6FIL.js} +19 -19
  62. package/dist/chunk-JEQ3XTHC.js +42 -0
  63. package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
  64. package/dist/{chunk-TVH4ONAM.js → chunk-JKKCYP3C.js} +10 -10
  65. package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
  66. package/dist/{chunk-C537JADH.js → chunk-KK4JZPBQ.js} +19 -141
  67. package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
  68. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  69. package/dist/{chunk-6DWBAZ5U.js → chunk-L47TF46W.js} +5 -7
  70. package/dist/{chunk-HUAS7ITX.js → chunk-LDJG7DW3.js} +91 -42
  71. package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
  72. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  73. package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
  74. package/dist/{chunk-VKFQTNDV.js → chunk-MUW2BDDH.js} +4 -4
  75. package/dist/{chunk-E67WX76H.js → chunk-MWUZBSAQ.js} +104 -152
  76. package/dist/{chunk-OJTRZGR3.js → chunk-N2Z7HLVY.js} +21 -21
  77. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  78. package/dist/{chunk-FYUN5KZ3.js → chunk-NIQJ66N4.js} +21 -21
  79. package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
  80. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  81. package/dist/{chunk-VEGN6WIQ.js → chunk-O5CVSAG5.js} +3 -3
  82. package/dist/{chunk-MOPSG2X7.js → chunk-OML5D5V5.js} +8 -8
  83. package/dist/{chunk-2VG7KLYV.js → chunk-PAJQJ7BS.js} +5816 -3255
  84. package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
  85. package/dist/{chunk-BTGG6BG2.js → chunk-QWGDJJYJ.js} +158 -19
  86. package/dist/chunk-R6Q67RJH.js +134 -0
  87. package/dist/{chunk-ZJLUDYFY.js → chunk-RRNP2ANY.js} +6 -6
  88. package/dist/{chunk-PVAMAVBB.js → chunk-RSJ25QSL.js} +102 -2
  89. package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
  90. package/dist/chunk-SKHCAU7K.js +385 -0
  91. package/dist/chunk-SZAA6XDG.js +30 -0
  92. package/dist/{chunk-J4HBWF6Y.js → chunk-TM6LQDI3.js} +131 -28
  93. package/dist/chunk-UOIZ7DA4.js +41 -0
  94. package/dist/{chunk-MA3H6DM5.js → chunk-UPZU6GE4.js} +25 -3
  95. package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
  96. package/dist/{chunk-N5UK64DP.js → chunk-V2ANDPVT.js} +4 -4
  97. package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
  98. package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
  99. package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
  100. package/dist/{chunk-QKIFBZKT.js → chunk-VW6DOEDG.js} +497 -81
  101. package/dist/{chunk-SCYB3HA4.js → chunk-W6RRQCPQ.js} +63 -19
  102. package/dist/{chunk-2NM363SV.js → chunk-WBKFA554.js} +10 -10
  103. package/dist/{chunk-R32CLGZ6.js → chunk-WCXUNS7U.js} +82 -21
  104. package/dist/{chunk-GPPB3JBE.js → chunk-WRBAGUNF.js} +3 -3
  105. package/dist/{chunk-IXJT6DCX.js → chunk-XIVNBFZS.js} +85 -30
  106. package/dist/{chunk-UEDMSP56.js → chunk-XPWWI35G.js} +417 -201
  107. package/dist/chunk-XRZT5WY5.js +47 -0
  108. package/dist/{chunk-3QSOM6PA.js → chunk-Y3CBHOR6.js} +2 -2
  109. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  110. package/dist/{chunk-AKB4GYDL.js → chunk-YQWYVTMC.js} +5 -5
  111. package/dist/{chunk-6I5ILFOF.js → chunk-ZA4VCIGV.js} +3 -3
  112. package/dist/{chunk-7OBGU7UB.js → chunk-ZDN3Y73Y.js} +12 -18
  113. package/dist/{chunk-3I5NY75V.js → chunk-ZWPRK62N.js} +8 -5
  114. package/dist/cli/index.js +41 -39
  115. package/dist/{clio-IT3G3VQH.js → clio-CMMK4KRR.js} +9 -9
  116. package/dist/{code-nav-RK6S7F6E.js → code-nav-MDZNQS33.js} +89 -21
  117. package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
  118. package/dist/{config-3QZRWZJF.js → config-SVM5P5YI.js} +131 -84
  119. package/dist/{configure-FL7Y3KJF.js → configure-LE3IK2TJ.js} +28 -26
  120. package/dist/{context-5HE7ODYK.js → context-2OHRKS42.js} +69 -64
  121. package/dist/{context-KYQFRVDC.js → context-E3VC7RX5.js} +15 -11
  122. package/dist/{context-XNHL75JV.js → context-VNCR7KAG.js} +93 -65
  123. package/dist/{context-clear-N545L53A.js → context-clear-BW4O37TG.js} +64 -60
  124. package/dist/context-map-COB37XXN.js +505 -0
  125. package/dist/{context-working-set-QHKXSV2F.js → context-working-set-VDS25HXZ.js} +19 -18
  126. package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-5AHT53RF.js} +93 -82
  127. package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
  128. package/dist/{doctor-ZGPEGHIP.js → doctor-WNNVO6FY.js} +48 -47
  129. package/dist/{eval-GXLL44RD.js → eval-7G7SGAYO.js} +287 -115
  130. package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-Y6QRFOH5.js} +4 -4
  131. package/dist/{evidence-HWLBRH3Q.js → evidence-VD6736FQ.js} +67 -64
  132. package/dist/{evolve-FTZBMNVW.js → evolve-AL3NGVRL.js} +65 -62
  133. package/dist/{extensions-VHRBEID7.js → extensions-MOVJ32NM.js} +9 -7
  134. package/dist/{fleet-CKZHJWZJ.js → fleet-QZHUMAGI.js} +114 -111
  135. package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-BAYT5FJZ.js} +10 -10
  136. package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-IREVMRU4.js} +7 -6
  137. package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-YCTT3HTI.js} +22 -19
  138. package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-QVJTDAVB.js} +58 -55
  139. package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-25QAFPK4.js} +4 -4
  140. package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-5O57AAJ7.js} +26 -23
  141. package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-CPH2W2T6.js} +59 -56
  142. package/dist/{fleet-view-WAMJYNDT.js → fleet-view-SWBR3VGQ.js} +58 -55
  143. package/dist/{init-5XQRBOFV.js → init-J477LKZH.js} +82 -79
  144. package/dist/{interop-34TVO25M.js → interop-3FCM6XLG.js} +11 -11
  145. package/dist/{library-3QY6KF57.js → library-QUQEIUG6.js} +30 -27
  146. package/dist/{memory-L4UTIIIW.js → memory-SGGSEP65.js} +67 -64
  147. package/dist/{models-ZVX3QOWE.js → models-HEKUAXXK.js} +53 -46
  148. package/dist/{monitor-CEKVSYTS.js → monitor-HKU57TYQ.js} +63 -60
  149. package/dist/{orchestrator-77BAP6BC.js → orchestrator-VDFAEFAI.js} +1831 -1057
  150. package/dist/{panes-7STHOAUJ.js → panes-DN2SSFOH.js} +5 -5
  151. package/dist/{panes-SHAUIRXY.js → panes-TALGNPZT.js} +29 -14
  152. package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
  153. package/dist/reset-EAJFFJVB.js +344 -0
  154. package/dist/{resources-74GKTLSF.js → resources-OVKSEFVE.js} +29 -20
  155. package/dist/{run-HBAUJNNZ.js → run-7DP7ZF2J.js} +120 -115
  156. package/dist/{share-G3APVLVP.js → share-WML67FT3.js} +32 -27
  157. package/dist/{skills-35HHUKCR.js → skills-SG662R2K.js} +41 -31
  158. package/dist/{skills-eval-QN4HSHDC.js → skills-eval-VVZEUU46.js} +78 -77
  159. package/dist/{skills-inventory-J357J34F.js → skills-inventory-I2E23GET.js} +23 -20
  160. package/dist/{slash-commands-JZZCQA32.js → slash-commands-S7MBJDQK.js} +40 -36
  161. package/dist/{steer-XAVHJM22.js → steer-2LQOMCPB.js} +3 -3
  162. package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
  163. package/dist/{targets-DSM6CY3M.js → targets-4QC3HIEW.js} +54 -54
  164. package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-TUHIJ6Y2.js} +5 -5
  165. package/dist/{tools-MKNWVPBH.js → tools-TFGJICCU.js} +10 -10
  166. package/dist/{trace-ECQ7TIYZ.js → trace-FXMXUZUF.js} +55 -7
  167. package/dist/uninstall-5PEVOE5B.js +408 -0
  168. package/dist/upgrade-M4WXY6KN.js +303 -0
  169. package/dist/{usage-X52N3IDJ.js → usage-N7ZNVLEM.js} +151 -104
  170. package/dist/{verifiers-EJTVVSMA.js → verifiers-DJTP4XX6.js} +15 -15
  171. package/dist/{verify-YJL6XET2.js → verify-RWE4PPEK.js} +9 -9
  172. package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
  173. package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-C7IQOXSP.js} +89 -86
  174. package/dist/{with-panes-OBOBFIIR.js → with-panes-4GCGSL7J.js} +53 -257
  175. package/dist/worker/entry.js +90 -74
  176. package/docs/README.md +176 -81
  177. package/docs/{acp.md → architecture/acp.md} +36 -20
  178. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  179. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  180. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +27 -23
  181. package/docs/architecture/artifact-versions.md +90 -0
  182. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  183. package/docs/{context-engine.md → architecture/context-engine.md} +29 -25
  184. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  185. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  186. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  187. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  188. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  189. package/docs/{model-catalog.md → architecture/model-catalog.md} +61 -27
  190. package/docs/{observability.md → architecture/observability.md} +38 -14
  191. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  192. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +57 -20
  193. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +99 -25
  194. package/docs/{safety-model.md → architecture/safety-model.md} +35 -20
  195. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  196. package/docs/architecture/time-conventions.md +125 -0
  197. package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
  198. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  199. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  200. package/docs/{built-in-agents.md → guide/built-in-agents.md} +65 -35
  201. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +66 -61
  202. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -297
  203. package/docs/guide/configuration-reference.md +1163 -0
  204. package/docs/{environment-variables.md → guide/environment-variables.md} +33 -28
  205. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
  206. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  207. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
  208. package/docs/{glossary.md → guide/glossary.md} +14 -11
  209. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +81 -17
  210. package/docs/guide/panes-and-files.md +290 -0
  211. package/docs/{proactive-memory.md → guide/proactive-memory.md} +131 -107
  212. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  213. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +25 -3
  214. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  215. package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
  216. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
  217. package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
  218. package/docs/process/development-pipeline.md +152 -0
  219. package/docs/process/documentation-coverage.md +100 -0
  220. package/docs/process/documentation-guide.md +187 -0
  221. package/docs/{eval-runner.md → process/eval-runner.md} +108 -53
  222. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  223. package/docs/{evolution.md → process/evolution.md} +2 -2
  224. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
  225. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  226. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  227. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  228. package/evals/README.md +2 -2
  229. package/evals/behavioral-model.yaml +3 -2
  230. package/package.json +10 -8
  231. package/skills/README.md +52 -41
  232. package/skills/coding/ast-grep/SKILL.md +102 -31
  233. package/skills/coding/ast-grep/evals.md +26 -0
  234. package/skills/coding/coding-standards/SKILL.md +41 -6
  235. package/skills/coding/coding-standards/evals.md +23 -0
  236. package/skills/coding/prototype/SKILL.md +88 -29
  237. package/skills/coding/prototype/evals.md +19 -0
  238. package/skills/coding/tdd/SKILL.md +81 -54
  239. package/skills/coding/tdd/evals.md +20 -0
  240. package/skills/context/context-handoff/SKILL.md +44 -3
  241. package/skills/context/context-handoff/evals.md +44 -0
  242. package/skills/context/context-prime/SKILL.md +46 -16
  243. package/skills/context/context-prime/evals.md +45 -0
  244. package/skills/git/branch-closeout/SKILL.md +132 -0
  245. package/skills/git/branch-closeout/evals.md +133 -0
  246. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  247. package/skills/git/file-ticket/SKILL.md +78 -64
  248. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  249. package/skills/git/file-ticket/evals.md +31 -26
  250. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  251. package/skills/git/fix-issue/SKILL.md +88 -65
  252. package/skills/git/fix-issue/evals.md +35 -31
  253. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  254. package/skills/git/resolve-merge-conflicts/SKILL.md +101 -52
  255. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  256. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  257. package/skills/git/ship/SKILL.md +103 -67
  258. package/skills/git/ship/assets/pr-template.md +21 -0
  259. package/skills/git/ship/evals.md +44 -28
  260. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  261. package/skills/git/worktree-create/SKILL.md +80 -50
  262. package/skills/git/worktree-create/evals.md +40 -33
  263. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  264. package/skills/git/worktree-merge/SKILL.md +112 -65
  265. package/skills/git/worktree-merge/evals.md +42 -34
  266. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  267. package/skills/meta/clio-coder-dev/SKILL.md +9 -5
  268. package/skills/meta/clio-coder-dev/evals.md +3 -2
  269. package/skills/meta/clio-coder-test/SKILL.md +102 -95
  270. package/skills/meta/clio-coder-test/evals.md +9 -4
  271. package/skills/meta/clio-coder-test/references/harness.md +100 -124
  272. package/skills/meta/clio-coder-test/references/test-map.md +77 -50
  273. package/skills/meta/credentials/SKILL.md +2 -2
  274. package/skills/meta/find-skills/SKILL.md +2 -2
  275. package/skills/meta/herdr/SKILL.md +2 -2
  276. package/skills/meta/skill-craft/SKILL.md +22 -16
  277. package/skills/planning/archify/SKILL.md +196 -0
  278. package/skills/planning/archify/evals.md +65 -0
  279. package/skills/planning/architecture/SKILL.md +62 -13
  280. package/skills/planning/architecture/evals.md +65 -0
  281. package/skills/planning/backlog/SKILL.md +131 -15
  282. package/skills/planning/backlog/evals.md +142 -0
  283. package/skills/planning/prd/SKILL.md +47 -7
  284. package/skills/planning/prd/evals.md +54 -0
  285. package/skills/planning/product-intent/SKILL.md +58 -3
  286. package/skills/planning/product-intent/evals.md +70 -0
  287. package/skills/planning/tech-spec/SKILL.md +54 -3
  288. package/skills/planning/tech-spec/evals.md +73 -0
  289. package/skills/registry.yaml +70 -62
  290. package/skills/remote.yaml +13 -0
  291. package/skills/research/arxiv-literature/SKILL.md +77 -19
  292. package/skills/research/arxiv-literature/evals.md +50 -0
  293. package/skills/research/experiment-protocol/SKILL.md +21 -2
  294. package/skills/research/experiment-protocol/evals.md +23 -0
  295. package/skills/research/scientific-debugging/SKILL.md +24 -2
  296. package/skills/research/scientific-debugging/evals.md +18 -0
  297. package/skills/research/scientific-modernization/SKILL.md +27 -2
  298. package/skills/research/scientific-modernization/evals.md +27 -0
  299. package/skills/skill-marketplace.json +97 -62
  300. package/skills/workflow/cut-it/SKILL.md +66 -6
  301. package/skills/workflow/cut-it/evals.md +101 -0
  302. package/skills/workflow/design-council/SKILL.md +118 -28
  303. package/skills/workflow/design-council/evals.md +161 -0
  304. package/skills/workflow/grill-me/SKILL.md +87 -11
  305. package/skills/workflow/grill-me/evals.md +153 -0
  306. package/skills/workflow/workflow-distiller/SKILL.md +77 -18
  307. package/skills/workflow/workflow-distiller/evals.md +118 -0
  308. package/src/cli/args.ts +2 -2
  309. package/src/cli/bootstrap-generate.ts +1 -1
  310. package/src/cli/config-inspect.ts +65 -12
  311. package/src/cli/configure-interop.ts +105 -13
  312. package/src/cli/configure-oauth.ts +57 -0
  313. package/src/cli/configure-onboarding.ts +980 -0
  314. package/src/cli/configure-target.ts +594 -0
  315. package/src/cli/configure.ts +1082 -532
  316. package/src/cli/context-map.ts +114 -0
  317. package/src/cli/context.ts +4 -0
  318. package/src/cli/docs.ts +22 -14
  319. package/src/cli/doctor-naming.ts +5 -5
  320. package/src/cli/doctor-toolchain.ts +3 -3
  321. package/src/cli/eval.ts +1 -2
  322. package/src/cli/extensions.ts +2 -1
  323. package/src/cli/fleet.ts +1 -1
  324. package/src/cli/index.ts +3 -1
  325. package/src/cli/internal-dispatch.ts +3 -4
  326. package/src/cli/lifecycle-presenter.ts +436 -0
  327. package/src/cli/models.ts +10 -2
  328. package/src/cli/modes/print.ts +5 -1
  329. package/src/cli/panes.ts +19 -5
  330. package/src/cli/reset.ts +228 -106
  331. package/src/cli/run.ts +9 -4
  332. package/src/cli/select.ts +664 -0
  333. package/src/cli/share.ts +5 -1
  334. package/src/cli/skills-eval.ts +3 -3
  335. package/src/cli/skills.ts +9 -2
  336. package/src/cli/targets.ts +5 -6
  337. package/src/cli/trace.ts +55 -4
  338. package/src/cli/uninstall.ts +233 -165
  339. package/src/cli/upgrade.ts +204 -149
  340. package/src/cli/usage.ts +86 -27
  341. package/src/cli/validate-model.ts +3 -3
  342. package/src/cli/wiki-generate.ts +1 -1
  343. package/src/core/artifact-paths.ts +1 -1
  344. package/src/core/bash-exec.ts +131 -86
  345. package/src/core/bus-events.ts +51 -6
  346. package/src/core/config.ts +61 -1
  347. package/src/core/defaults.ts +7 -4
  348. package/src/core/dispatch-outcome.ts +16 -0
  349. package/src/core/external-diagnostic.ts +44 -0
  350. package/src/core/gateway-routing.ts +157 -0
  351. package/src/core/guardrails.ts +10 -49
  352. package/src/core/prompt-hint.ts +9 -0
  353. package/src/core/safe-exec.ts +17 -2
  354. package/src/core/skill-activation.ts +89 -2
  355. package/src/domains/agents/builtins/architect.md +2 -3
  356. package/src/domains/agents/builtins/coder.md +3 -2
  357. package/src/domains/agents/builtins/debugger.md +2 -2
  358. package/src/domains/agents/builtins/documenter.md +2 -2
  359. package/src/domains/agents/builtins/git-master.md +1 -1
  360. package/src/domains/agents/builtins/oracle.md +1 -1
  361. package/src/domains/agents/builtins/provenance.md +1 -1
  362. package/src/domains/agents/builtins/researcher.md +1 -1
  363. package/src/domains/agents/builtins/scout.md +1 -1
  364. package/src/domains/agents/builtins/tester.md +2 -2
  365. package/src/domains/agents/builtins/verifier.md +2 -2
  366. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  367. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  368. package/src/domains/agents/catalog.ts +13 -15
  369. package/src/domains/agents/contract.ts +2 -0
  370. package/src/domains/agents/extension.ts +23 -1
  371. package/src/domains/agents/result-contract.ts +70 -0
  372. package/src/domains/config/keybindings.ts +8 -0
  373. package/src/domains/context/extension.ts +0 -3
  374. package/src/domains/context/wiki/map-seed.ts +589 -0
  375. package/src/domains/context/wiki/plan.ts +2 -2
  376. package/src/domains/context/working-set/path-index.ts +1 -0
  377. package/src/domains/dispatch/admission.ts +29 -0
  378. package/src/domains/dispatch/agent-candidates.ts +10 -0
  379. package/src/domains/dispatch/budget-envelope.ts +86 -1
  380. package/src/domains/dispatch/capability-match.ts +11 -0
  381. package/src/domains/dispatch/capacity-lease.ts +17 -0
  382. package/src/domains/dispatch/contract.ts +11 -1
  383. package/src/domains/dispatch/extension.ts +237 -49
  384. package/src/domains/dispatch/host-verification.ts +435 -39
  385. package/src/domains/dispatch/intent-requirements.ts +10 -0
  386. package/src/domains/dispatch/intent.ts +18 -1
  387. package/src/domains/dispatch/path-scope.ts +235 -24
  388. package/src/domains/dispatch/run-event-journal.ts +4 -15
  389. package/src/domains/dispatch/state.ts +2 -3
  390. package/src/domains/dispatch/transport.ts +45 -21
  391. package/src/domains/dispatch/types.ts +58 -3
  392. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  393. package/src/domains/eval/artifacts/store.ts +5 -0
  394. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  395. package/src/domains/eval/metrics/token-stream.ts +201 -31
  396. package/src/domains/eval/metrics/tracked.ts +40 -4
  397. package/src/domains/eval/runners/clio-run.ts +5 -2
  398. package/src/domains/eval/schema/suite.ts +28 -0
  399. package/src/domains/eval/schema/verdict.ts +2 -2
  400. package/src/domains/eval/store.ts +8 -1
  401. package/src/domains/eval/suites/resolve.ts +13 -1
  402. package/src/domains/eval/suites/run.ts +24 -3
  403. package/src/domains/evidence/trust-status.ts +10 -1
  404. package/src/domains/extensions/contract.ts +15 -1
  405. package/src/domains/extensions/discovery.ts +238 -41
  406. package/src/domains/extensions/extension.ts +105 -6
  407. package/src/domains/extensions/index.ts +24 -0
  408. package/src/domains/extensions/integrity.ts +189 -0
  409. package/src/domains/extensions/manager.ts +17 -1
  410. package/src/domains/extensions/resource-path.ts +27 -0
  411. package/src/domains/extensions/resources.ts +18 -38
  412. package/src/domains/extensions/snapshot-store.ts +39 -0
  413. package/src/domains/extensions/snapshot.ts +180 -0
  414. package/src/domains/extensions/state.ts +385 -57
  415. package/src/domains/extensions/types.ts +118 -1
  416. package/src/domains/interop/registry.ts +6 -2
  417. package/src/domains/interop/types.ts +4 -0
  418. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  419. package/src/domains/lifecycle/migrations/index.ts +6 -0
  420. package/src/domains/lifecycle/naming-resources.ts +19 -4
  421. package/src/domains/lifecycle/naming-yazi.ts +10 -5
  422. package/src/domains/memory/task-memory-policy.ts +70 -26
  423. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  424. package/src/domains/middleware/contract.ts +26 -0
  425. package/src/domains/middleware/extension.ts +24 -24
  426. package/src/domains/middleware/hook-receipts.ts +27 -4
  427. package/src/domains/middleware/hooks-io.ts +65 -32
  428. package/src/domains/middleware/hooks.ts +64 -0
  429. package/src/domains/middleware/index.ts +28 -5
  430. package/src/domains/middleware/marketplace-offer.ts +3 -35
  431. package/src/domains/middleware/memory-intervention.ts +127 -32
  432. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  433. package/src/domains/middleware/registrations.ts +326 -0
  434. package/src/domains/middleware/runtime.ts +28 -0
  435. package/src/domains/middleware/skills-reminder.ts +31 -2
  436. package/src/domains/middleware/snapshot.ts +20 -7
  437. package/src/domains/mux/contract.ts +38 -0
  438. package/src/domains/mux/detect.ts +6 -13
  439. package/src/domains/mux/index.ts +1 -1
  440. package/src/domains/mux/operations.ts +44 -5
  441. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  442. package/src/domains/mux/yazi/session.ts +53 -4
  443. package/src/domains/mux/yazi/theme.ts +117 -17
  444. package/src/domains/observability/compaction-usage.ts +118 -0
  445. package/src/domains/observability/contract.ts +10 -11
  446. package/src/domains/observability/cost.ts +1 -1
  447. package/src/domains/observability/extension.ts +17 -4
  448. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  449. package/src/domains/observability/projection.ts +14 -90
  450. package/src/domains/observability/trace-store.ts +43 -7
  451. package/src/domains/prompts/compiler.ts +73 -53
  452. package/src/domains/prompts/contract.ts +15 -3
  453. package/src/domains/prompts/extension.ts +97 -9
  454. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
  455. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  456. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  457. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  458. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  459. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  460. package/src/domains/prompts/fragments/operating/skills.md +10 -24
  461. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  462. package/src/domains/providers/contract.ts +4 -1
  463. package/src/domains/providers/extension.ts +40 -9
  464. package/src/domains/providers/index.ts +1 -1
  465. package/src/domains/providers/model-capabilities.ts +9 -0
  466. package/src/domains/providers/model-discovery.ts +2 -0
  467. package/src/domains/providers/model-runtime-capabilities.ts +99 -25
  468. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +699 -114
  469. package/src/domains/providers/runtime-resolution.ts +31 -0
  470. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  471. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  472. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  473. package/src/domains/providers/runtimes/common/probe-helpers.ts +7 -2
  474. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  475. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  476. package/src/domains/providers/support.ts +11 -5
  477. package/src/domains/providers/target-model-cache.ts +25 -2
  478. package/src/domains/providers/types/capability-flags.ts +2 -0
  479. package/src/domains/providers/types/cost-provenance.ts +19 -0
  480. package/src/domains/providers/types/local-model-quirks.ts +85 -37
  481. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  482. package/src/domains/providers/types/target-descriptor.ts +19 -0
  483. package/src/domains/resources/index.ts +3 -0
  484. package/src/domains/resources/skills/install.ts +72 -7
  485. package/src/domains/resources/skills/loader.ts +23 -19
  486. package/src/domains/resources/skills/marketplace.ts +63 -11
  487. package/src/domains/safety/autonomy.ts +15 -0
  488. package/src/domains/safety/call-target.ts +1 -1
  489. package/src/domains/safety/index.ts +1 -0
  490. package/src/domains/safety/loop-detector.ts +7 -4
  491. package/src/domains/safety/path-policy.ts +1 -1
  492. package/src/domains/safety/policy-engine.ts +34 -11
  493. package/src/domains/safety/protected-artifacts.ts +191 -88
  494. package/src/domains/safety/run-effects.ts +2 -22
  495. package/src/domains/safety/skill-authority.ts +55 -0
  496. package/src/domains/session/compaction/compact.ts +72 -22
  497. package/src/domains/session/entries.ts +6 -0
  498. package/src/domains/session/task-board.ts +10 -9
  499. package/src/domains/session/usage.ts +3 -3
  500. package/src/domains/share/archive.ts +164 -7
  501. package/src/engine/acp/server.ts +62 -9
  502. package/src/engine/agent.ts +13 -3
  503. package/src/engine/ai.ts +26 -8
  504. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  505. package/src/engine/api-registry.ts +3 -0
  506. package/src/engine/apis/llamacpp-residency.ts +3 -4
  507. package/src/engine/apis/lmstudio.ts +3 -3
  508. package/src/engine/apis/ollama-native.ts +6 -6
  509. package/src/engine/apis/openai-completions.ts +145 -39
  510. package/src/engine/apis/output-budget.ts +8 -18
  511. package/src/engine/apis/residency.ts +8 -27
  512. package/src/engine/external-subprocess.ts +114 -6
  513. package/src/engine/gemma-channel-filter.ts +19 -0
  514. package/src/engine/loop-guard.ts +92 -12
  515. package/src/engine/worker-runtime.ts +40 -11
  516. package/src/engine/worker-tools.ts +3 -1
  517. package/src/entry/background-model-metadata.ts +18 -0
  518. package/src/entry/compaction-prompt.ts +57 -0
  519. package/src/entry/extension-hook-sources.ts +28 -0
  520. package/src/entry/extension-reload.ts +309 -0
  521. package/src/entry/orchestrator.ts +464 -251
  522. package/src/entry/task-memory-lifecycle.ts +35 -0
  523. package/src/interactive/application-controller.ts +2 -1
  524. package/src/interactive/bus-notices.ts +8 -1
  525. package/src/interactive/chat-loop-messages.ts +16 -17
  526. package/src/interactive/chat-loop.ts +75 -3
  527. package/src/interactive/chat-panel.ts +36 -13
  528. package/src/interactive/chat-renderer.ts +72 -7
  529. package/src/interactive/cost-overlay.ts +26 -2
  530. package/src/interactive/dispatch-board.ts +6 -11
  531. package/src/interactive/footer/widgets.ts +13 -0
  532. package/src/interactive/interactive-application.ts +39 -4
  533. package/src/interactive/interactive-input-runtime.ts +4 -0
  534. package/src/interactive/interactive-presentation.ts +2 -2
  535. package/src/interactive/interactive-slash-runtime.ts +4 -1
  536. package/src/interactive/overlays/extensions.ts +9 -1
  537. package/src/interactive/overlays/help-reference.ts +13 -0
  538. package/src/interactive/overlays/settings.ts +27 -16
  539. package/src/interactive/panes-runtime.ts +111 -35
  540. package/src/interactive/prompt-cache-identity.ts +88 -0
  541. package/src/interactive/renderers/worker-entry.ts +32 -0
  542. package/src/interactive/slash-commands.ts +153 -20
  543. package/src/interactive/stream-pacing-policy.ts +0 -23
  544. package/src/interactive/theme/labels.ts +19 -13
  545. package/src/interactive/turn-context.ts +39 -20
  546. package/src/interactive/turn-recovery.ts +8 -0
  547. package/src/interactive/turn-runtime.ts +27 -11
  548. package/src/interactive/turn-state.ts +7 -0
  549. package/src/interactive/worker-receipts.ts +1 -0
  550. package/src/interactive/worker-stream.ts +6 -1
  551. package/src/interactive/yazi-bridge.ts +60 -6
  552. package/src/tools/agent-tools.ts +30 -1
  553. package/src/tools/artifact.ts +2 -2
  554. package/src/tools/ask-user.ts +3 -3
  555. package/src/tools/bash.ts +1 -1
  556. package/src/tools/bootstrap.ts +4 -0
  557. package/src/tools/builtin-tool-catalog.ts +52 -22
  558. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  559. package/src/tools/codewiki/code-nav.ts +99 -13
  560. package/src/tools/context/docs-engine.ts +20 -7
  561. package/src/tools/context/index.ts +59 -21
  562. package/src/tools/core-bootstrap.ts +28 -6
  563. package/src/tools/credential-present.ts +1 -2
  564. package/src/tools/dispatch-arguments.ts +6 -1
  565. package/src/tools/dispatch-event-text.ts +10 -0
  566. package/src/tools/dispatch-plan.ts +49 -4
  567. package/src/tools/dispatch-run-events.ts +1 -1
  568. package/src/tools/dispatch-runner.ts +12 -0
  569. package/src/tools/dispatch-schema.ts +338 -0
  570. package/src/tools/dispatch-types.ts +3 -0
  571. package/src/tools/dispatch.ts +9 -254
  572. package/src/tools/ledger.ts +3 -5
  573. package/src/tools/monitor-surface.ts +5 -13
  574. package/src/tools/observation.ts +4 -5
  575. package/src/tools/panes-surface.ts +4 -11
  576. package/src/tools/panes.ts +4 -2
  577. package/src/tools/policy.ts +15 -2
  578. package/src/tools/read.ts +5 -6
  579. package/src/tools/registry.ts +41 -12
  580. package/src/tools/result-shaping.ts +18 -14
  581. package/src/tools/steer-surface.ts +1 -1
  582. package/src/tools/tasks.ts +1 -1
  583. package/src/tools/truncate.ts +6 -5
  584. package/src/tools/verify/surface.ts +6 -12
  585. package/src/tools/web-fetch-surface.ts +1 -3
  586. package/src/tools/worker-evidence.ts +3 -1
  587. package/src/worker/spec-contract.ts +4 -0
  588. package/dist/builtins-UJLMOVOV.js +0 -17
  589. package/dist/chunk-5QIAJV2D.js +0 -48
  590. package/dist/chunk-JZWT5J3Y.js +0 -814
  591. package/dist/chunk-K7VKOLQQ.js +0 -15
  592. package/dist/chunk-PMZCIOCJ.js +0 -25
  593. package/dist/chunk-SUW5DORT.js +0 -819
  594. package/dist/chunk-UOV2BYIW.js +0 -107
  595. package/dist/chunk-WR6U3OVP.js +0 -45
  596. package/dist/chunk-Y45G3AXC.js +0 -1558
  597. package/dist/reset-EOLM7GVE.js +0 -230
  598. package/dist/uninstall-N34PCTGJ.js +0 -331
  599. package/dist/upgrade-H7TOM7YL.js +0 -323
  600. package/docs/artifact-versions.md +0 -67
  601. package/docs/development-pipeline.md +0 -121
  602. package/docs/documentation-coverage.md +0 -46
  603. package/docs/documentation-guide.md +0 -167
  604. package/docs/time-conventions.md +0 -101
package/src/cli/reset.ts CHANGED
@@ -1,16 +1,17 @@
1
- import { type Dirent, existsSync, readdirSync } from "node:fs";
1
+ import { type Dirent, readdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
 
4
4
  import { initializeClioHome } from "../core/init.js";
5
5
  import { resetXdgCache, resolveClioDirs } from "../core/xdg.js";
6
+ import { createLifecyclePresenter, type LifecycleItem, measurePath } from "./lifecycle-presenter.js";
6
7
  import { type RemovalFailure, removePath, reportRemovalFailures } from "./removal.js";
7
- import { printError, printHeader, printOk } from "./shared.js";
8
- import { terminalColumns, wrapPlain } from "./text-layout.js";
8
+ import { printError } from "./shared.js";
9
9
 
10
- const HELP = `clio-coder reset [--state|--data|--cache|--auth|--config|--all] [--dry-run] [--force]
10
+ const HELP = `clio-coder reset [--state|--data|--cache|--auth|--config|--all] [--dry-run] [--force] [--json]
11
11
 
12
- Recover or wipe Clio Coder state while keeping the clio binary installed.
13
- Each level clears exactly the root (or file) it names and nothing else.
12
+ Recover or wipe Clio Coder state while keeping the clio-coder launcher installed.
13
+ Each level clears exactly the root (or file) it names and nothing else, then the
14
+ empty roots are recreated so the next run has somewhere to write.
14
15
 
15
16
  Levels (combinable except --all):
16
17
  --state state root only (default). Holds every session transcript, so a
@@ -19,34 +20,24 @@ Levels (combinable except --all):
19
20
  --cache cache root only
20
21
  --auth credentials.yaml only
21
22
  --config settings.yaml only
22
- --all all four roots: config, data, state, and cache
23
-
24
- Every run reads each selected root and lists what is inside it before removing
25
- anything, so what a level covers is read off that listing rather than off this
26
- text. --dry-run prints the same listing and changes nothing.
23
+ --all all four roots whole: config (settings, credentials, and anything
24
+ else under it), data, state, and cache
27
25
 
28
26
  Safety:
29
- --force required for destructive execution
27
+ --force, -f required for destructive execution in non-interactive environments
30
28
  --dry-run print what would be reset without changing anything
29
+ --json emit machine-readable JSON output
30
+ --help, -h show this message
31
31
  `;
32
32
 
33
- /**
34
- * What losing a root costs, printed under it in the same listing the removal
35
- * works from.
36
- *
37
- * `--data` carried this and `--state` did not, which is backwards: `--state` is
38
- * what a bare `clio-coder reset` selects, so the one scope that runs without being
39
- * asked for by name was the one that explained nothing before taking every
40
- * transcript on the machine.
41
- */
42
- const ROOT_NOTES: Readonly<Record<string, string>> = {
43
- state:
44
- "the state root holds every session transcript and the audit trail beside it; resume and /view lose their history",
45
- // Vendored tools are named because they are the one durable product a reset
46
- // cannot regenerate from anything local: getting them back is a download.
47
- data:
48
- "the data root holds durable products (memory, evidence, evals, and any vendored external tools, which a reinstall re-downloads)",
49
- };
33
+ const ROOT_NOTES = {
34
+ state: "State holds every session transcript and the audit trail; resume and /view lose their history.",
35
+ data: "Data holds memory, evidence, evals, and vendored tools; the tools have to be downloaded again.",
36
+ config: "Settings return to their defaults.",
37
+ auth: "Saved API keys are gone; each target has to be authenticated again.",
38
+ cache: "Cache is disposable and rebuilds itself.",
39
+ all: "Everything goes: settings, credentials, memory, evidence, transcripts, and caches. A clean install remains.",
40
+ } as const;
50
41
 
51
42
  interface ParsedResetArgs {
52
43
  state: boolean;
@@ -57,6 +48,7 @@ interface ParsedResetArgs {
57
48
  all: boolean;
58
49
  force: boolean;
59
50
  dryRun: boolean;
51
+ json: boolean;
60
52
  help: boolean;
61
53
  }
62
54
 
@@ -70,6 +62,7 @@ function parseResetArgs(argv: ReadonlyArray<string>): ParsedResetArgs {
70
62
  all: false,
71
63
  force: false,
72
64
  dryRun: false,
65
+ json: false,
73
66
  help: false,
74
67
  };
75
68
  for (const arg of argv) {
@@ -99,6 +92,9 @@ function parseResetArgs(argv: ReadonlyArray<string>): ParsedResetArgs {
99
92
  case "--dry-run":
100
93
  parsed.dryRun = true;
101
94
  break;
95
+ case "--json":
96
+ parsed.json = true;
97
+ break;
102
98
  case "--help":
103
99
  case "-h":
104
100
  parsed.help = true;
@@ -117,49 +113,26 @@ function parseResetArgs(argv: ReadonlyArray<string>): ParsedResetArgs {
117
113
  return parsed;
118
114
  }
119
115
 
120
- function report(label: string, path: string): void {
121
- process.stdout.write(` ${label.padEnd(12)} ${path}${existsSync(path) ? "" : " (absent)"}\n`);
122
- }
123
-
124
116
  /**
125
- * The immediate children of `path`, each directory carrying how many entries
126
- * are inside it. Empty for a file, an absent path, or an unreadable one.
127
- *
128
- * This is the inventory, read off the disk on the run that is about to remove
129
- * it. `--help` used to carry a remembered one, "sessions, audit, receipts,
130
- * runs, install metadata", which named five things and omitted `interviews/`,
131
- * `scratch/`, and every dispatch artifact written since that sentence was
132
- * typed. A list nobody has to maintain cannot drift from what the removal takes.
117
+ * What sits directly under a root, named so the operator recognizes what the
118
+ * reset takes. Directories keep their trailing slash; the list is capped so one
119
+ * crowded root cannot push the decision off the screen.
133
120
  */
134
- function rootContents(path: string): string[] {
121
+ function rootContents(path: string, limit = 4): string | undefined {
135
122
  let entries: Dirent[];
136
123
  try {
137
124
  entries = readdirSync(path, { withFileTypes: true });
138
125
  } catch {
139
- return [];
126
+ return undefined;
140
127
  }
141
- return entries
142
- .map((entry) => {
143
- if (!entry.isDirectory()) return entry.name;
144
- let count: number;
145
- try {
146
- count = readdirSync(join(path, entry.name)).length;
147
- } catch {
148
- return `${entry.name}/`;
149
- }
150
- return `${entry.name}/ (${count})`;
151
- })
128
+ if (entries.length === 0) return undefined;
129
+ const names = entries
130
+ .map((entry) => (entry.isDirectory() ? `${entry.name}/` : entry.name))
152
131
  .sort((left, right) => left.localeCompare(right));
132
+ const shown = names.slice(0, limit).join(", ");
133
+ return names.length > limit ? `${shown}, +${names.length - limit} more` : shown;
153
134
  }
154
135
 
155
- /** Write `text` indented under a root line, wrapped to the terminal. */
156
- function writeIndented(text: string, indent: number): void {
157
- const [first = "", ...rest] = wrapPlain(text, Math.max(20, terminalColumns() - indent), indent);
158
- process.stdout.write(`${" ".repeat(indent)}${first}\n`);
159
- for (const line of rest) process.stdout.write(`${line}\n`);
160
- }
161
-
162
- /** Reconstruct the invocation to rerun after a partial failure. */
163
136
  function resetInvocation(args: ParsedResetArgs): string {
164
137
  const levels = (
165
138
  [
@@ -176,81 +149,230 @@ function resetInvocation(args: ParsedResetArgs): string {
176
149
  return `clio-coder reset ${levels.join(" ")} --force`;
177
150
  }
178
151
 
179
- export function runResetCommand(argv: ReadonlyArray<string>): number {
152
+ export async function runResetCommand(argv: ReadonlyArray<string>): Promise<number> {
180
153
  let args: ParsedResetArgs;
181
154
  try {
182
155
  args = parseResetArgs(argv);
183
156
  } catch (error) {
184
157
  printError(error instanceof Error ? error.message : String(error));
185
- process.stdout.write(HELP);
158
+ process.stderr.write(HELP);
186
159
  return 2;
187
160
  }
188
161
  if (args.help) {
189
162
  process.stdout.write(HELP);
190
163
  return 0;
191
164
  }
192
- if (!args.dryRun && !args.force) {
193
- printError("`clio-coder reset` requires --force unless you are using --dry-run");
194
- process.stdout.write(HELP);
165
+
166
+ // One sentence, and nothing on stdout: a caller that piped this run is
167
+ // parsing stdout, and a help dump there is indistinguishable from output.
168
+ const isInteractive = Boolean(process.stdin.isTTY);
169
+ if (!args.dryRun && !args.force && !isInteractive) {
170
+ printError("`clio-coder reset` needs a terminal to confirm; pass --force to skip the prompt");
195
171
  return 2;
196
172
  }
197
173
 
198
174
  const dirs = resolveClioDirs();
199
175
  const settingsPath = join(dirs.config, "settings.yaml");
200
176
  const credentialsPath = join(dirs.config, "credentials.yaml");
177
+ const presenter = createLifecyclePresenter({ json: args.json });
178
+
179
+ presenter.header("Reset Clio Coder", "reset");
201
180
 
202
- printHeader("Clio Coder reset");
203
-
204
- // Announce every selected path first, then delete. A failure partway
205
- // through therefore never leaves the operator guessing which paths the
206
- // command had reached, and the dry run prints the identical list.
207
- const selected: Array<{ label: string; path: string }> = args.all
208
- ? [
209
- { label: "config", path: dirs.config },
210
- { label: "data", path: dirs.data },
211
- { label: "state", path: dirs.state },
212
- { label: "cache", path: dirs.cache },
213
- ]
181
+ // Determine scopes to clear
182
+ const resetData = args.all || args.data;
183
+ const resetState = args.all || args.state;
184
+ const resetCache = args.all || args.cache;
185
+
186
+ const configSize = measurePath(dirs.config);
187
+ const dataSize = measurePath(dirs.data);
188
+ const stateSize = measurePath(dirs.state);
189
+ const cacheSize = measurePath(dirs.cache);
190
+
191
+ const items: LifecycleItem[] = [];
192
+
193
+ // State
194
+ if (resetState) {
195
+ items.push({
196
+ label: "State",
197
+ path: dirs.state,
198
+ bytes: stateSize.bytes,
199
+ status: stateSize.exists ? "remove" : "absent",
200
+ detail: rootContents(dirs.state),
201
+ });
202
+ } else {
203
+ items.push({
204
+ label: "State",
205
+ path: dirs.state,
206
+ bytes: stateSize.bytes,
207
+ status: stateSize.exists ? "keep" : "absent",
208
+ detail: stateSize.exists ? "survives" : undefined,
209
+ });
210
+ }
211
+
212
+ // Data
213
+ if (resetData) {
214
+ items.push({
215
+ label: "Data",
216
+ path: dirs.data,
217
+ bytes: dataSize.bytes,
218
+ status: dataSize.exists ? "remove" : "absent",
219
+ });
220
+ } else {
221
+ items.push({
222
+ label: "Data",
223
+ path: dirs.data,
224
+ bytes: dataSize.bytes,
225
+ status: dataSize.exists ? "keep" : "absent",
226
+ detail: dataSize.exists ? "survives" : undefined,
227
+ });
228
+ }
229
+
230
+ // Config / settings / auth
231
+ if (args.all) {
232
+ items.push({
233
+ label: "Config",
234
+ path: dirs.config,
235
+ bytes: configSize.bytes,
236
+ status: configSize.exists ? "remove" : "absent",
237
+ });
238
+ } else {
239
+ const stSettings = measurePath(settingsPath);
240
+ if (args.config) {
241
+ items.push({
242
+ label: "Settings",
243
+ path: settingsPath,
244
+ bytes: stSettings.bytes,
245
+ status: stSettings.exists ? "remove" : "absent",
246
+ });
247
+ } else {
248
+ items.push({
249
+ label: "Settings",
250
+ path: settingsPath,
251
+ bytes: stSettings.bytes,
252
+ status: stSettings.exists ? "keep" : "absent",
253
+ detail: stSettings.exists ? "survives" : undefined,
254
+ });
255
+ }
256
+
257
+ const stCreds = measurePath(credentialsPath);
258
+ if (args.auth) {
259
+ items.push({
260
+ label: "Credentials",
261
+ path: credentialsPath,
262
+ bytes: stCreds.bytes,
263
+ status: stCreds.exists ? "remove" : "absent",
264
+ });
265
+ } else {
266
+ items.push({
267
+ label: "Credentials",
268
+ path: credentialsPath,
269
+ bytes: stCreds.bytes,
270
+ status: stCreds.exists ? "keep" : "absent",
271
+ detail: stCreds.exists ? "survives" : undefined,
272
+ });
273
+ }
274
+ }
275
+
276
+ // Cache
277
+ if (resetCache) {
278
+ items.push({
279
+ label: "Cache",
280
+ path: dirs.cache,
281
+ bytes: cacheSize.bytes,
282
+ status: cacheSize.exists ? "remove" : "absent",
283
+ });
284
+ } else {
285
+ items.push({
286
+ label: "Cache",
287
+ path: dirs.cache,
288
+ bytes: cacheSize.bytes,
289
+ status: cacheSize.exists ? "keep" : "absent",
290
+ detail: cacheSize.exists ? "survives" : undefined,
291
+ });
292
+ }
293
+
294
+ // The launcher is not listed. Reset never touches it, and a row for a path a
295
+ // command cannot act on is one more line between the operator and the four
296
+ // that decide whether to go ahead.
297
+ presenter.listItems("The following will be cleared", items);
298
+
299
+ // One consequence line, not one per scope. `--all` states the whole outcome,
300
+ // so the per-root notes underneath it would only repeat it.
301
+ const notes: string[] = args.all
302
+ ? [ROOT_NOTES.all]
214
303
  : [
215
- ...(args.config ? [{ label: "settings", path: settingsPath }] : []),
216
- ...(args.auth ? [{ label: "credentials", path: credentialsPath }] : []),
217
- ...(args.data ? [{ label: "data", path: dirs.data }] : []),
218
- ...(args.state ? [{ label: "state", path: dirs.state }] : []),
219
- ...(args.cache ? [{ label: "cache", path: dirs.cache }] : []),
220
- ];
221
-
222
- // The note is a property of the root, not of the flag that selected it, so
223
- // `--all` and the named scope say the same thing about the same directory.
224
- for (const entry of selected) {
225
- report(entry.label, entry.path);
226
- const contents = rootContents(entry.path);
227
- if (contents.length > 0) writeIndented(contents.join(", "), 4);
228
- const note = ROOT_NOTES[entry.label];
229
- if (note) writeIndented(`note: ${note}`, 2);
304
+ resetState ? ROOT_NOTES.state : null,
305
+ resetData ? ROOT_NOTES.data : null,
306
+ args.config ? ROOT_NOTES.config : null,
307
+ args.auth ? ROOT_NOTES.auth : null,
308
+ ].filter((note): note is NonNullable<typeof note> => note !== null);
309
+ for (const note of notes) presenter.note(note);
310
+
311
+ // Only when something actually survives. On `--all` the note above already
312
+ // says nothing does, and on a scoped reset over an empty home every row is
313
+ // absent, which is not the same claim as "it was there and it is going".
314
+ const surviving = items.filter((item) => item.status === "keep").map((item) => item.label);
315
+ if (surviving.length > 0) presenter.note(`Survives: ${surviving.join(", ")}`);
316
+
317
+ if (args.dryRun) {
318
+ presenter.warn("Dry run: no changes made");
319
+ presenter.done("Done");
320
+ return 0;
321
+ }
322
+
323
+ if (!args.force) {
324
+ const confirmed = await presenter.confirm("Are you sure you want to reset the selected state?", false);
325
+ if (!confirmed) {
326
+ presenter.warn("Reset cancelled");
327
+ presenter.done("Cancelled");
328
+ return 0;
329
+ }
230
330
  }
231
331
 
332
+ const toRemove: Array<{ label: string; path: string }> = [];
333
+ if (args.all) {
334
+ toRemove.push(
335
+ { label: "Config", path: dirs.config },
336
+ { label: "Data", path: dirs.data },
337
+ { label: "State", path: dirs.state },
338
+ { label: "Cache", path: dirs.cache },
339
+ );
340
+ } else {
341
+ if (args.config) toRemove.push({ label: "Settings", path: settingsPath });
342
+ if (args.auth) toRemove.push({ label: "Credentials", path: credentialsPath });
343
+ if (args.data) toRemove.push({ label: "Data", path: dirs.data });
344
+ if (args.state) toRemove.push({ label: "State", path: dirs.state });
345
+ if (args.cache) toRemove.push({ label: "Cache", path: dirs.cache });
346
+ }
347
+
348
+ // `removePath` returns null both for a path it deleted and for one that was
349
+ // never there, so presence is asked here. Announcing "Reset Cache" over an
350
+ // absent cache is the one result line an operator cannot check.
232
351
  const failures: RemovalFailure[] = [];
233
- for (const entry of selected) {
234
- const failure = removePath(entry.label, entry.path, args.dryRun);
352
+ let cleared = 0;
353
+ for (const entry of toRemove) {
354
+ const existed = measurePath(entry.path).exists;
355
+ const failure = removePath(entry.label, entry.path, false);
235
356
  if (failure) failures.push(failure);
357
+ else if (existed) {
358
+ presenter.completedStep(`Cleared ${entry.label}`);
359
+ cleared += 1;
360
+ }
236
361
  }
362
+ if (failures.length === 0 && cleared === 0)
363
+ presenter.completedStep("Nothing to clear; every selected root was already empty");
237
364
 
238
365
  resetXdgCache();
239
- // Bootstrapping runs even after a partial failure: the roots that were
240
- // removed still need their skeleton back, and it is idempotent for the ones
241
- // that survived.
242
- if (!args.dryRun) initializeClioHome();
366
+ initializeClioHome();
367
+ presenter.completedStep("Recreated the empty roots");
243
368
 
244
369
  if (failures.length > 0) {
245
- printError("reset did not remove everything");
370
+ presenter.fail("reset did not clear everything");
246
371
  reportRemovalFailures(resetInvocation(args), failures);
372
+ presenter.finish();
247
373
  return 1;
248
374
  }
249
375
 
250
- if (args.dryRun) {
251
- printOk(args.all ? "reset --all preview complete" : "reset preview complete");
252
- } else {
253
- printOk(args.all ? "reset config, data, state, and cache" : "reset complete");
254
- }
376
+ presenter.done("Done");
255
377
  return 0;
256
378
  }
package/src/cli/run.ts CHANGED
@@ -29,7 +29,11 @@ import { SafetyDomainModule } from "../domains/safety/index.js";
29
29
  import { SchedulingDomainModule } from "../domains/scheduling/index.js";
30
30
  import { SessionDomainModule } from "../domains/session/index.js";
31
31
  import type { ImageContent } from "../engine/types.js";
32
- import { assistantTextFromEvent, receiptResponseModelIdObservationLabel } from "../tools/dispatch-event-text.js";
32
+ import {
33
+ assistantTextFromEvent,
34
+ receiptGatewayRoutingLabel,
35
+ receiptResponseModelIdObservationLabel,
36
+ } from "../tools/dispatch-event-text.js";
33
37
  import { isToolProfileName } from "../tools/profiles.js";
34
38
  import { parseRunCliArgs, type RunCliArgs } from "./args.js";
35
39
  import { runClioCommand } from "./clio.js";
@@ -261,7 +265,7 @@ export async function runClioRun(
261
265
  // A mistyped slash command is a usage error, not a task. Refusing it
262
266
  // here keeps it from booting a session and spending a model turn on a
263
267
  // command that was never run, which is what the TUI has always done
264
- // and what docs/extensions-and-sharing.md documents for both surfaces.
268
+ // and what docs/guide/extensions-and-sharing.md documents for both surfaces.
265
269
  const slashRefusal = await unknownSlashCommandRefusal(assembled.prompt);
266
270
  if (slashRefusal !== null) {
267
271
  process.stderr.write(`clio-coder run: ${slashRefusal}\n`);
@@ -372,7 +376,7 @@ async function runDispatch(
372
376
  ]);
373
377
  const config = loaded.getContract<ConfigContract>("config");
374
378
  const baseSettings = config?.get() ?? readSettings();
375
- // Install `panes.journal` the same way the interactive composition root
379
+ // Install `fleet.history.journal` the same way the interactive composition root
376
380
  // does. The journal never reads settings.yaml itself: it sits on the
377
381
  // dispatch event path, where a settings read would be both a cost and a
378
382
  // throw site.
@@ -562,7 +566,8 @@ function formatReceipt(r: RunReceipt): string {
562
566
  typeof r.reasoningTokenCount === "number" && r.reasoningTokenCount > 0 ? ` reasoning=${r.reasoningTokenCount}` : "";
563
567
  const failure = r.failureMessage ? ` error=${r.failureMessage}` : "";
564
568
  const responseModelIdObservation = receiptResponseModelIdObservationLabel(r);
565
- return `receipt: ${r.runId} agent=${r.agentId} exit=${r.exitCode} target=${r.targetId} requested_model_id=${r.wireModelId}${responseModelIdObservation ? ` ${responseModelIdObservation}` : ""} tokens=${r.tokenCount}${reasoning}${failure} start=${r.startedAt} end=${r.endedAt}`;
569
+ const gatewayRouting = receiptGatewayRoutingLabel(r);
570
+ return `receipt: ${r.runId} agent=${r.agentId} exit=${r.exitCode} target=${r.targetId} requested_model_id=${r.wireModelId}${responseModelIdObservation ? ` ${responseModelIdObservation}` : ""}${gatewayRouting ? ` ${gatewayRouting}` : ""} tokens=${r.tokenCount}${reasoning}${failure} start=${r.startedAt} end=${r.endedAt}`;
566
571
  }
567
572
 
568
573
  function mapExitCode(r: RunReceipt): number {