@iowarp/clio-coder 0.4.0 → 0.4.2

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 (751) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/CONTRIBUTING.md +59 -36
  3. package/README.md +407 -375
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-G5WJBNCT.js → acp-TMDQZDIG.js} +14 -14
  6. package/dist/{agents-FMV2Q5G4.js → agents-5N5NG3XG.js} +45 -34
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-3IDSJEIK.js → auth-Z5CCBXKQ.js} +22 -21
  9. package/dist/{builtins-XCZWXSC7.js → builtins-K6TNDT24.js} +6 -6
  10. package/dist/{chunk-GR5G2PVF.js → chunk-2HFQNRV3.js} +15 -10
  11. package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
  12. package/dist/{chunk-HJJTYUHX.js → chunk-2NHR3NAY.js} +168 -1406
  13. package/dist/chunk-2X4RYJTJ.js +39 -0
  14. package/dist/{chunk-UXMFQ54G.js → chunk-2Z2IKEXI.js} +39 -43
  15. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  16. package/dist/chunk-34BHNEE3.js +1846 -0
  17. package/dist/{chunk-YJX4SHTD.js → chunk-35MSIRKH.js} +9 -4
  18. package/dist/chunk-3EBYEESD.js +314 -0
  19. package/dist/{chunk-CTJ4RNAA.js → chunk-3F7VUY77.js} +2 -2
  20. package/dist/chunk-3KIPBMUA.js +308 -0
  21. package/dist/chunk-3M6DQK6S.js +362 -0
  22. package/dist/{chunk-BPKCPIL7.js → chunk-462T4EGZ.js} +3 -3
  23. package/dist/{chunk-QLFS5GO2.js → chunk-4JDLP6ZS.js} +44 -37
  24. package/dist/{chunk-LDQ2ZF2M.js → chunk-4O6MANBS.js} +6 -6
  25. package/dist/{chunk-O6TL7WWY.js → chunk-54ODD65L.js} +6 -6
  26. package/dist/{chunk-JDG2WCRO.js → chunk-5KW52TEP.js} +5 -5
  27. package/dist/{chunk-NHLBIGRH.js → chunk-5PFYMY2V.js} +41 -18
  28. package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
  29. package/dist/chunk-77QIVUZB.js +1334 -0
  30. package/dist/{chunk-HWHKMHUA.js → chunk-7BHIY2MW.js} +9 -15
  31. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  32. package/dist/{chunk-VAZSBTKF.js → chunk-AZ4WMN4W.js} +2 -2
  33. package/dist/{chunk-B7OBL7PK.js → chunk-B74PXLU7.js} +21 -11
  34. package/dist/{chunk-CY6FY24N.js → chunk-B7HM5Z7T.js} +15 -15
  35. package/dist/{chunk-ULC6OTWO.js → chunk-BO7Y52RY.js} +88 -27
  36. package/dist/chunk-BTK3SSSK.js +67 -0
  37. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  38. package/dist/{chunk-DQITNCXG.js → chunk-BYMNWQ7O.js} +149 -159
  39. package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
  40. package/dist/{chunk-Z4TXYIEG.js → chunk-CRFOIAX3.js} +10 -10
  41. package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
  42. package/dist/{chunk-3BT2XMV4.js → chunk-CYZW7JHJ.js} +53 -60
  43. package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
  44. package/dist/chunk-D7E7WCDF.js +27 -0
  45. package/dist/{chunk-X3YGUTOB.js → chunk-DYHAXKHD.js} +90 -62
  46. package/dist/{chunk-QBJA7R7N.js → chunk-DZAW46HP.js} +3 -3
  47. package/dist/{chunk-MLKNTWH2.js → chunk-DZEK6CJN.js} +22 -22
  48. package/dist/{chunk-K5C3NCBD.js → chunk-E7GT7O5N.js} +5 -5
  49. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  50. package/dist/chunk-F2I26BDK.js +66 -0
  51. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  52. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  53. package/dist/{chunk-32KWKNSF.js → chunk-FVDGR2ZL.js} +4 -4
  54. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  55. package/dist/{chunk-SJ5ZKQ4S.js → chunk-HIICAHCJ.js} +2 -2
  56. package/dist/chunk-HJWWJ6IL.js +184 -0
  57. package/dist/{chunk-WZR7K7ZX.js → chunk-HKMD33FO.js} +32 -83
  58. package/dist/chunk-HLAFFSEK.js +360 -0
  59. package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
  60. package/dist/{chunk-KFZI4NIL.js → chunk-I64IFBLB.js} +152 -31
  61. package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
  62. package/dist/{chunk-BUMFYQFY.js → chunk-I66ZTYNP.js} +543 -267
  63. package/dist/{chunk-2OQE55CK.js → chunk-I7XBWTYH.js} +2 -2
  64. package/dist/{chunk-GKF55TAZ.js → chunk-IDNA72AH.js} +104 -3
  65. package/dist/{chunk-GCSMB2KY.js → chunk-IKOZFYBN.js} +1 -1
  66. package/dist/{chunk-J4W7KFM7.js → chunk-IKSLQ4XV.js} +5439 -3475
  67. package/dist/{chunk-6DB53AJS.js → chunk-IMXMHHMQ.js} +171 -30
  68. package/dist/{chunk-AB44T6BB.js → chunk-JBCS7CRR.js} +8 -7
  69. package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
  70. package/dist/{chunk-SP2RXXYO.js → chunk-JWJGP5DQ.js} +10 -10
  71. package/dist/{chunk-HZHHCK24.js → chunk-KKOJXO6R.js} +527 -325
  72. package/dist/chunk-KPXDY6QF.js +47 -0
  73. package/dist/{chunk-LQ3DZAMX.js → chunk-LJID3DYZ.js} +8 -2
  74. package/dist/{chunk-7MCTRUCE.js → chunk-M2DAX4F6.js} +2 -2
  75. package/dist/{chunk-VEO4AP2K.js → chunk-M2WXEHER.js} +4 -3
  76. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  77. package/dist/{chunk-YDFRH54B.js → chunk-MCMZMDAC.js} +4 -4
  78. package/dist/{chunk-J5Q24KAG.js → chunk-MNJGS2IN.js} +5 -6
  79. package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
  80. package/dist/chunk-NDDGJUXD.js +81 -0
  81. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  82. package/dist/chunk-NMJXSHBJ.js +283 -0
  83. package/dist/{chunk-VYMXRQI6.js → chunk-O3YUNJZ2.js} +88 -100
  84. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  85. package/dist/{chunk-Z2RR6MAK.js → chunk-P75RZCJW.js} +28 -6
  86. package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
  87. package/dist/{chunk-DYJP44XW.js → chunk-PGF63K6I.js} +2 -2
  88. package/dist/chunk-PJX3WQUQ.js +42 -0
  89. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  90. package/dist/{chunk-2JDWVJND.js → chunk-Q4XWMHX6.js} +5 -7
  91. package/dist/{chunk-W5VSYASO.js → chunk-QQLGQY2A.js} +46 -87
  92. package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
  93. package/dist/{chunk-C2LTL2W6.js → chunk-RLYRBIYQ.js} +463 -180
  94. package/dist/{chunk-4ZG3XFUR.js → chunk-S66XZJOF.js} +14 -23
  95. package/dist/{chunk-I5VEOC6I.js → chunk-SSEYRH53.js} +13 -14
  96. package/dist/chunk-SZAA6XDG.js +30 -0
  97. package/dist/{chunk-CODPRO7Q.js → chunk-TPEQIQIE.js} +7 -7
  98. package/dist/{chunk-QLL7ILRG.js → chunk-UBRFI4HS.js} +1151 -614
  99. package/dist/{chunk-O4XIVISU.js → chunk-UH347SHR.js} +227 -47
  100. package/dist/{chunk-OQBA45DZ.js → chunk-UH632ZYL.js} +2 -2
  101. package/dist/chunk-UXCU4E3T.js +303 -0
  102. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  103. package/dist/{chunk-IQ7KR472.js → chunk-VIA6RFQZ.js} +8 -13
  104. package/dist/{chunk-V5DHCITQ.js → chunk-VKPAQYEB.js} +49 -19
  105. package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
  106. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  107. package/dist/{chunk-3XML7CDN.js → chunk-W4YEMFBX.js} +3 -3
  108. package/dist/{chunk-U77AMWDL.js → chunk-W6NIE6OW.js} +44 -23
  109. package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
  110. package/dist/{chunk-QREDIESB.js → chunk-X7IARSHT.js} +15 -9
  111. package/dist/{chunk-3URVFKWK.js → chunk-XE3PCIXH.js} +5 -5
  112. package/dist/{chunk-FEFIFZTL.js → chunk-XGDPUNND.js} +2 -2
  113. package/dist/{chunk-F4CKPOEQ.js → chunk-XOXV5GKE.js} +119 -38
  114. package/dist/chunk-XQRY4DTA.js +657 -0
  115. package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
  116. package/dist/{chunk-NQQH3YT7.js → chunk-YJISEZKC.js} +3 -3
  117. package/dist/{chunk-X75E3D2N.js → chunk-ZGNYYXQ6.js} +18 -16
  118. package/dist/{chunk-LY4S7GJC.js → chunk-ZNT2M6TG.js} +20 -18
  119. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  120. package/dist/{chunk-IBEBSCYA.js → chunk-ZW4HH5JJ.js} +43 -34
  121. package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
  122. package/dist/cli/index.js +38 -37
  123. package/dist/{clio-2JXHBBY5.js → clio-7VB377CC.js} +12 -13
  124. package/dist/{code-nav-3YYRMYNF.js → code-nav-YVLCYA7V.js} +86 -18
  125. package/dist/codewiki/build-worker.js +1 -1
  126. package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
  127. package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
  128. package/dist/{config-QZPCMYSO.js → config-4HVOS65E.js} +112 -63
  129. package/dist/{configure-TEGEBYCA.js → configure-PIWO7B24.js} +25 -22
  130. package/dist/{context-E6H5RNMC.js → context-IYEHL3WQ.js} +53 -47
  131. package/dist/{context-GSXUE4CT.js → context-KQYIWPWT.js} +68 -42
  132. package/dist/{context-AV7OEZ4D.js → context-N6ZE3LGJ.js} +11 -11
  133. package/dist/{context-clear-SHIBYK6T.js → context-clear-G4OGZJDS.js} +53 -47
  134. package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-BWLF6LJP.js} +12 -11
  135. package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-2QQAITS3.js} +67 -58
  136. package/dist/{docs-23KQS3XK.js → docs-PD3EXDKU.js} +20 -25
  137. package/dist/doctor-LHBD36VU.js +773 -0
  138. package/dist/{eval-TFBYQH4H.js → eval-C45FYRJ6.js} +68 -49
  139. package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-6DEJPLBF.js} +7 -8
  140. package/dist/{evidence-ERGESKGN.js → evidence-6SHONYAF.js} +50 -44
  141. package/dist/{evolve-VDXTSYCJ.js → evolve-KRKMV72X.js} +49 -43
  142. package/dist/{extensions-7BGBHN57.js → extensions-KPZ2UHBB.js} +8 -6
  143. package/dist/{fleet-2RRVDF2V.js → fleet-IVTCKDHT.js} +93 -79
  144. package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EDWL3IT7.js} +10 -9
  145. package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-YP3YEFGK.js} +6 -6
  146. package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-ZFWKHY2M.js} +19 -15
  147. package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-FVUNCBML.js} +50 -45
  148. package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-UN5XED4R.js} +5 -9
  149. package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-XOWC4HSX.js} +22 -17
  150. package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-UN3SODEL.js} +48 -43
  151. package/dist/fleet-view-TWHJKCN6.js +96 -0
  152. package/dist/{init-DN2WWLFE.js → init-T2QORQ3Y.js} +72 -66
  153. package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
  154. package/dist/{interop-OZBKXAYL.js → interop-IN5I2A66.js} +13 -11
  155. package/dist/{library-YWZG7IMW.js → library-LSCATDLZ.js} +23 -18
  156. package/dist/{memory-I4C4HMLW.js → memory-HYOKAGGJ.js} +51 -45
  157. package/dist/{models-CEYXJBO6.js → models-2GPMFYCM.js} +42 -33
  158. package/dist/{monitor-NZ6GCI3P.js → monitor-E4ASVUJH.js} +56 -50
  159. package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-DDMPR3PY.js} +2676 -1507
  160. package/dist/{panes-KY6W3V2E.js → panes-E3RUXOW5.js} +5 -5
  161. package/dist/panes-IXKLOKA2.js +75 -0
  162. package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
  163. package/dist/{reset-DQ6FGCSH.js → reset-OAQP3W4O.js} +7 -8
  164. package/dist/{resources-BB3MVJMD.js → resources-OTRSN34L.js} +23 -17
  165. package/dist/{run-H2GQDUER.js → run-5DEYH5QK.js} +95 -84
  166. package/dist/{share-GTJN6A5O.js → share-IHWTLO3M.js} +26 -19
  167. package/dist/{skills-L55TEW6R.js → skills-IYMXMKW4.js} +25 -20
  168. package/dist/{skills-eval-XVXPH2JI.js → skills-eval-DROHSJAR.js} +63 -65
  169. package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-D7X4L4ZX.js} +21 -16
  170. package/dist/{slash-commands-ZSGASKJC.js → slash-commands-QBM7UZ3B.js} +38 -33
  171. package/dist/{steer-RZGSCY4R.js → steer-Z5DO23FJ.js} +3 -3
  172. package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
  173. package/dist/{targets-NCPZ644J.js → targets-P2FUC4IL.js} +64 -61
  174. package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-YREJ3JX2.js} +15 -10
  175. package/dist/{tools-DAF3DI3C.js → tools-5B7RO6MV.js} +10 -8
  176. package/dist/{trace-FYVW2MQA.js → trace-YMGMUM6A.js} +101 -8
  177. package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
  178. package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
  179. package/dist/{upgrade-3XPP6OQL.js → upgrade-PXK3S2YM.js} +36 -61
  180. package/dist/{usage-3NLHGTU2.js → usage-ME5MPXGX.js} +58 -53
  181. package/dist/{verifiers-SSQONKRT.js → verifiers-BVZ7IWOO.js} +10 -9
  182. package/dist/{verify-3U6J7FZI.js → verify-5K7ZKQFC.js} +9 -8
  183. package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPARV2K7.js} +2 -3
  184. package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-F5W5QTYY.js} +74 -70
  185. package/dist/{with-panes-MKB46MPQ.js → with-panes-BYOJCLAM.js} +78 -246
  186. package/dist/worker/entry.js +83 -63
  187. package/docs/README.md +176 -81
  188. package/docs/{acp.md → architecture/acp.md} +36 -20
  189. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  190. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  191. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +26 -23
  192. package/docs/architecture/artifact-versions.md +90 -0
  193. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  194. package/docs/{context-engine.md → architecture/context-engine.md} +25 -25
  195. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  196. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  197. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  198. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  199. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  200. package/docs/{model-catalog.md → architecture/model-catalog.md} +40 -17
  201. package/docs/{observability.md → architecture/observability.md} +26 -13
  202. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  203. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +55 -20
  204. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +35 -24
  205. package/docs/{safety-model.md → architecture/safety-model.md} +20 -15
  206. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  207. package/docs/architecture/time-conventions.md +125 -0
  208. package/docs/{trace-store.md → architecture/trace-store.md} +26 -13
  209. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  210. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  211. package/docs/{built-in-agents.md → guide/built-in-agents.md} +70 -46
  212. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +73 -62
  213. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -444
  214. package/docs/guide/configuration-reference.md +1158 -0
  215. package/docs/{environment-variables.md → guide/environment-variables.md} +31 -27
  216. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +8 -3
  217. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  218. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +47 -49
  219. package/docs/{glossary.md → guide/glossary.md} +14 -11
  220. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +45 -14
  221. package/docs/guide/panes-and-files.md +290 -0
  222. package/docs/{proactive-memory.md → guide/proactive-memory.md} +79 -66
  223. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  224. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +7 -3
  225. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  226. package/docs/{troubleshooting.md → guide/troubleshooting.md} +10 -5
  227. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +13 -10
  228. package/docs/history/release-cut-checklist.md +207 -0
  229. package/docs/{development-pipeline.md → process/development-pipeline.md} +24 -26
  230. package/docs/process/documentation-coverage.md +100 -0
  231. package/docs/process/documentation-guide.md +187 -0
  232. package/docs/{eval-runner.md → process/eval-runner.md} +41 -50
  233. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  234. package/docs/{evolution.md → process/evolution.md} +2 -2
  235. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +17 -10
  236. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  237. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  238. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  239. package/evals/README.md +5 -0
  240. package/evals/behavioral-corpus-grader.mjs +103 -0
  241. package/evals/behavioral-machinery-baseline.json +2276 -0
  242. package/evals/behavioral-machinery-driver.ts +250 -0
  243. package/evals/behavioral-machinery-support.ts +253 -0
  244. package/evals/behavioral-machinery.yaml +614 -0
  245. package/evals/behavioral-model-negative-control.yaml +68 -0
  246. package/evals/behavioral-model.yaml +216 -0
  247. package/evals/fixtures/behavioral-facts.txt +3 -0
  248. package/evals/fixtures/behavioral-main.ts +7 -0
  249. package/evals/fixtures/decoy/note.txt +2 -0
  250. package/evals/fixtures/private/credentials.txt +1 -0
  251. package/evals/tracked-metrics-baseline.yaml +229 -0
  252. package/evals/tracked-metrics-grader.mjs +129 -0
  253. package/package.json +13 -21
  254. package/skills/README.md +51 -42
  255. package/skills/coding/ast-grep/SKILL.md +9 -3
  256. package/skills/coding/coding-standards/SKILL.md +9 -3
  257. package/skills/coding/prototype/SKILL.md +9 -3
  258. package/skills/coding/tdd/SKILL.md +9 -3
  259. package/skills/context/context-handoff/SKILL.md +13 -4
  260. package/skills/context/context-handoff/evals.md +3 -3
  261. package/skills/context/context-prime/SKILL.md +9 -3
  262. package/skills/context/context-prime/evals.md +2 -2
  263. package/skills/git/file-ticket/SKILL.md +10 -5
  264. package/skills/git/file-ticket/evals.md +2 -2
  265. package/skills/git/fix-issue/SKILL.md +12 -5
  266. package/skills/git/fix-issue/evals.md +4 -4
  267. package/skills/git/resolve-merge-conflicts/SKILL.md +9 -3
  268. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  269. package/skills/git/ship/SKILL.md +10 -4
  270. package/skills/git/ship/evals.md +4 -4
  271. package/skills/git/worktree-create/SKILL.md +8 -3
  272. package/skills/git/worktree-create/evals.md +6 -6
  273. package/skills/git/worktree-merge/SKILL.md +8 -3
  274. package/skills/git/worktree-merge/evals.md +6 -6
  275. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +22 -12
  276. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +5 -4
  277. package/skills/meta/clio-coder-test/SKILL.md +146 -0
  278. package/skills/meta/{clio-test → clio-coder-test}/evals.md +10 -5
  279. package/skills/meta/clio-coder-test/references/harness.md +102 -0
  280. package/skills/meta/clio-coder-test/references/test-map.md +96 -0
  281. package/skills/meta/credentials/SKILL.md +10 -3
  282. package/skills/meta/find-skills/SKILL.md +9 -3
  283. package/skills/meta/herdr/SKILL.md +9 -3
  284. package/skills/meta/skill-craft/SKILL.md +39 -16
  285. package/skills/planning/architecture/SKILL.md +9 -3
  286. package/skills/planning/backlog/SKILL.md +9 -3
  287. package/skills/planning/prd/SKILL.md +9 -3
  288. package/skills/planning/product-intent/SKILL.md +9 -3
  289. package/skills/planning/tech-spec/SKILL.md +9 -3
  290. package/skills/registry.yaml +66 -66
  291. package/skills/research/arxiv-literature/SKILL.md +9 -3
  292. package/skills/research/experiment-protocol/SKILL.md +10 -3
  293. package/skills/research/scientific-debugging/SKILL.md +10 -3
  294. package/skills/research/scientific-debugging/evals.md +2 -2
  295. package/skills/research/scientific-modernization/SKILL.md +10 -3
  296. package/skills/skill-marketplace.json +285 -66
  297. package/skills/workflow/cut-it/SKILL.md +11 -3
  298. package/skills/workflow/design-council/SKILL.md +12 -3
  299. package/skills/workflow/grill-me/SKILL.md +9 -3
  300. package/skills/workflow/workflow-distiller/SKILL.md +9 -3
  301. package/src/cli/acp.ts +2 -2
  302. package/src/cli/args.ts +2 -2
  303. package/src/cli/auth.ts +2 -2
  304. package/src/cli/bootstrap-generate.ts +6 -6
  305. package/src/cli/clio.ts +6 -1
  306. package/src/cli/config-inspect.ts +68 -15
  307. package/src/cli/configure-interop.ts +1 -1
  308. package/src/cli/configure.ts +27 -31
  309. package/src/cli/default-target.ts +1 -1
  310. package/src/cli/docs.ts +28 -20
  311. package/src/cli/doctor-naming.ts +323 -0
  312. package/src/cli/doctor-panes.ts +46 -14
  313. package/src/cli/doctor-toolchain.ts +31 -10
  314. package/src/cli/doctor.ts +15 -1
  315. package/src/cli/eval-inventory.ts +8 -8
  316. package/src/cli/eval.ts +1 -2
  317. package/src/cli/evidence-detail.ts +1 -1
  318. package/src/cli/evidence-inventory.ts +1 -1
  319. package/src/cli/extensions.ts +2 -1
  320. package/src/cli/fleet-decisions.ts +1 -1
  321. package/src/cli/fleet-inspect.ts +1 -1
  322. package/src/cli/fleet-preflight.ts +1 -1
  323. package/src/cli/fleet-verify.ts +1 -1
  324. package/src/cli/fleet-view.ts +40 -23
  325. package/src/cli/fleet.ts +9 -6
  326. package/src/cli/index.ts +2 -1
  327. package/src/cli/internal-dispatch.ts +3 -4
  328. package/src/cli/interop-inspect.ts +2 -2
  329. package/src/cli/models.ts +3 -3
  330. package/src/cli/modes/print.ts +1 -1
  331. package/src/cli/panes.ts +19 -5
  332. package/src/cli/reset.ts +1 -1
  333. package/src/cli/run.ts +13 -17
  334. package/src/cli/share.ts +6 -2
  335. package/src/cli/skills-eval.ts +14 -14
  336. package/src/cli/targets.ts +25 -30
  337. package/src/cli/trace-inspect.ts +1 -1
  338. package/src/cli/trace.ts +96 -4
  339. package/src/cli/uninstall.ts +2 -2
  340. package/src/cli/upgrade.ts +29 -34
  341. package/src/cli/usage.ts +2 -2
  342. package/src/cli/validate-model.ts +1 -1
  343. package/src/cli/verifiers-inspect.ts +1 -1
  344. package/src/cli/wiki-generate.ts +6 -6
  345. package/src/core/artifact-paths.ts +1 -1
  346. package/src/core/bash-exec.ts +132 -87
  347. package/src/core/boot-trace.ts +3 -3
  348. package/src/core/bus-events.ts +51 -6
  349. package/src/core/bus-trace.ts +2 -2
  350. package/src/core/compile-cache.ts +1 -1
  351. package/src/core/config.ts +1066 -886
  352. package/src/core/defaults.ts +326 -530
  353. package/src/core/dispatch-outcome.ts +16 -0
  354. package/src/core/domain-loader.ts +6 -4
  355. package/src/core/event-bus.ts +1 -1
  356. package/src/core/file-references.ts +78 -88
  357. package/src/core/git-commit-attribution.ts +3 -9
  358. package/src/core/guardrails.ts +33 -52
  359. package/src/core/naming-compat.ts +45 -0
  360. package/src/core/naming-events.ts +62 -0
  361. package/src/core/prompt-hint.ts +9 -0
  362. package/src/core/recent-models.ts +1 -7
  363. package/src/core/residency-protection.ts +4 -8
  364. package/src/core/resolve-config-value.ts +1 -1
  365. package/src/core/response-model-id.ts +0 -14
  366. package/src/core/session-routing.ts +84 -74
  367. package/src/core/skill-activation.ts +18 -0
  368. package/src/core/termination.ts +4 -4
  369. package/src/core/timers.ts +2 -12
  370. package/src/domains/agents/builtins/architect.md +2 -3
  371. package/src/domains/agents/builtins/coder.md +3 -2
  372. package/src/domains/agents/builtins/debugger.md +2 -2
  373. package/src/domains/agents/builtins/documenter.md +2 -2
  374. package/src/domains/agents/builtins/git-master.md +1 -1
  375. package/src/domains/agents/builtins/oracle.md +1 -1
  376. package/src/domains/agents/builtins/provenance.md +1 -1
  377. package/src/domains/agents/builtins/researcher.md +1 -1
  378. package/src/domains/agents/builtins/scout.md +1 -1
  379. package/src/domains/agents/builtins/tester.md +2 -2
  380. package/src/domains/agents/builtins/verifier.md +2 -2
  381. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  382. package/src/domains/agents/catalog.ts +14 -26
  383. package/src/domains/agents/contract.ts +2 -0
  384. package/src/domains/agents/extension.ts +26 -4
  385. package/src/domains/agents/registry.ts +7 -7
  386. package/src/domains/agents/result-contract.ts +1 -1
  387. package/src/domains/agents/spec.ts +0 -11
  388. package/src/domains/config/classify.ts +35 -47
  389. package/src/domains/config/extension.ts +5 -5
  390. package/src/domains/config/keybindings.ts +56 -47
  391. package/src/domains/config/watcher.ts +1 -1
  392. package/src/domains/context/codewiki/indexer.ts +1 -1
  393. package/src/domains/context/extension.ts +3 -6
  394. package/src/domains/context/prompt-context.ts +1 -1
  395. package/src/domains/context/wiki/assemble.ts +2 -2
  396. package/src/domains/context/working-set/path-index.ts +1 -0
  397. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  398. package/src/domains/context/working-set/replay/report.ts +1 -1
  399. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  400. package/src/domains/dispatch/active-route-planner.ts +2 -2
  401. package/src/domains/dispatch/agent-candidates.ts +1 -1
  402. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  403. package/src/domains/dispatch/agent-ledger.ts +1 -1
  404. package/src/domains/dispatch/assignment.ts +5 -5
  405. package/src/domains/dispatch/capability-match.ts +10 -0
  406. package/src/domains/dispatch/capacity-lease.ts +2 -5
  407. package/src/domains/dispatch/code-step.ts +1 -1
  408. package/src/domains/dispatch/contract.ts +2 -2
  409. package/src/domains/dispatch/extension.ts +169 -82
  410. package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
  411. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  412. package/src/domains/dispatch/fleet-run.ts +0 -7
  413. package/src/domains/dispatch/gate-decisions.ts +25 -14
  414. package/src/domains/dispatch/host-verification.ts +435 -39
  415. package/src/domains/dispatch/intent-requirements.ts +10 -0
  416. package/src/domains/dispatch/intent.ts +18 -1
  417. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  418. package/src/domains/dispatch/path-scope.ts +220 -70
  419. package/src/domains/dispatch/placement.ts +2 -2
  420. package/src/domains/dispatch/receipt-findings.ts +1 -1
  421. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  422. package/src/domains/dispatch/reservation-store.ts +0 -23
  423. package/src/domains/dispatch/route-decision.ts +1 -1
  424. package/src/domains/dispatch/route-history.ts +1 -1
  425. package/src/domains/dispatch/route-policy.ts +1 -1
  426. package/src/domains/dispatch/route-readiness.ts +0 -28
  427. package/src/domains/dispatch/run-event-journal.ts +9 -19
  428. package/src/domains/dispatch/state.ts +2 -3
  429. package/src/domains/dispatch/tool-stats.ts +1 -1
  430. package/src/domains/dispatch/transport.ts +47 -40
  431. package/src/domains/dispatch/types.ts +58 -6
  432. package/src/domains/dispatch/worker-protocol.ts +2 -2
  433. package/src/domains/eval/artifacts/store.ts +10 -4
  434. package/src/domains/eval/compare/thresholds.ts +0 -8
  435. package/src/domains/eval/execution-provenance.ts +1 -1
  436. package/src/domains/eval/metrics/token-stream.ts +0 -7
  437. package/src/domains/eval/report.ts +1 -1
  438. package/src/domains/eval/runner.ts +1 -1
  439. package/src/domains/eval/runners/clio-run.ts +7 -6
  440. package/src/domains/eval/runners/external-command.ts +4 -3
  441. package/src/domains/eval/schema/artifact.ts +1 -1
  442. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  443. package/src/domains/eval/schema/behavioral.ts +7 -6
  444. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  445. package/src/domains/eval/schema/naming.ts +10 -0
  446. package/src/domains/eval/schema/suite.ts +2 -2
  447. package/src/domains/eval/schema/validate.ts +9 -5
  448. package/src/domains/eval/schema/verdict.ts +4 -2
  449. package/src/domains/eval/store.ts +20 -3
  450. package/src/domains/eval/suites/run.ts +12 -6
  451. package/src/domains/eval/types.ts +1 -1
  452. package/src/domains/eval/workspaces/git.ts +1 -1
  453. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  454. package/src/domains/evidence/build.ts +13 -5
  455. package/src/domains/evidence/trust-status.ts +10 -1
  456. package/src/domains/extensions/contract.ts +15 -1
  457. package/src/domains/extensions/discovery.ts +238 -41
  458. package/src/domains/extensions/extension.ts +105 -6
  459. package/src/domains/extensions/index.ts +24 -0
  460. package/src/domains/extensions/integrity.ts +189 -0
  461. package/src/domains/extensions/manager.ts +17 -1
  462. package/src/domains/extensions/resource-path.ts +27 -0
  463. package/src/domains/extensions/resources.ts +18 -38
  464. package/src/domains/extensions/snapshot-store.ts +39 -0
  465. package/src/domains/extensions/snapshot.ts +180 -0
  466. package/src/domains/extensions/state.ts +385 -57
  467. package/src/domains/extensions/types.ts +118 -1
  468. package/src/domains/interop/consent.ts +7 -7
  469. package/src/domains/interop/extension.ts +1 -1
  470. package/src/domains/lifecycle/doctor.ts +27 -21
  471. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  472. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  473. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  474. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  475. package/src/domains/lifecycle/migrations/index.ts +22 -1
  476. package/src/domains/lifecycle/naming-history.ts +153 -0
  477. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  478. package/src/domains/lifecycle/naming-resources.ts +276 -0
  479. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  480. package/src/domains/lifecycle/naming-yazi.ts +86 -0
  481. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  482. package/src/domains/memory/task-memory-handoff.ts +6 -3
  483. package/src/domains/middleware/contract.ts +26 -0
  484. package/src/domains/middleware/extension.ts +24 -24
  485. package/src/domains/middleware/hook-receipts.ts +27 -4
  486. package/src/domains/middleware/hooks-io.ts +65 -32
  487. package/src/domains/middleware/hooks.ts +64 -0
  488. package/src/domains/middleware/index.ts +35 -4
  489. package/src/domains/middleware/marketplace-offer.ts +339 -0
  490. package/src/domains/middleware/registrations.ts +326 -0
  491. package/src/domains/middleware/runtime.ts +30 -2
  492. package/src/domains/middleware/snapshot.ts +20 -7
  493. package/src/domains/mux/contract.ts +195 -25
  494. package/src/domains/mux/detect.ts +23 -6
  495. package/src/domains/mux/dock-controller.ts +365 -0
  496. package/src/domains/mux/extension.ts +7 -1
  497. package/src/domains/mux/index.ts +21 -1
  498. package/src/domains/mux/operations.ts +72 -5
  499. package/src/domains/mux/protocol.ts +19 -6
  500. package/src/domains/mux/socket-client.ts +167 -19
  501. package/src/domains/mux/types.ts +49 -6
  502. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  503. package/src/domains/mux/yazi/event-stream.ts +6 -4
  504. package/src/domains/mux/yazi/profile.ts +1 -1
  505. package/src/domains/mux/yazi/session.ts +79 -7
  506. package/src/domains/mux/yazi/theme.ts +117 -17
  507. package/src/domains/observability/contract.ts +10 -11
  508. package/src/domains/observability/extension.ts +12 -4
  509. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  510. package/src/domains/observability/projection.ts +15 -91
  511. package/src/domains/observability/trace-store.ts +65 -19
  512. package/src/domains/prompts/compiler.ts +75 -55
  513. package/src/domains/prompts/contract.ts +15 -3
  514. package/src/domains/prompts/extension.ts +100 -12
  515. package/src/domains/prompts/fragments/identity/clio-worker.md +2 -4
  516. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  517. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  518. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  519. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  520. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  521. package/src/domains/prompts/fragments/operating/skills.md +11 -18
  522. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  523. package/src/domains/providers/extension.ts +5 -5
  524. package/src/domains/providers/index.ts +1 -1
  525. package/src/domains/providers/knowledge-base-path.ts +1 -1
  526. package/src/domains/providers/model-runtime-capabilities.ts +99 -23
  527. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  528. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +671 -106
  529. package/src/domains/providers/plugins.ts +1 -1
  530. package/src/domains/providers/resolver.ts +1 -1
  531. package/src/domains/providers/runtime-resolution.ts +31 -0
  532. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  533. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  534. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  535. package/src/domains/providers/runtimes/common/probe-helpers.ts +9 -4
  536. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  537. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  538. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  539. package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
  540. package/src/domains/providers/types/cost-provenance.ts +19 -0
  541. package/src/domains/providers/types/knowledge-base.ts +13 -0
  542. package/src/domains/providers/types/local-model-quirks.ts +87 -39
  543. package/src/domains/providers/types/target-descriptor.ts +3 -3
  544. package/src/domains/resources/extension.ts +1 -1
  545. package/src/domains/resources/library.ts +6 -6
  546. package/src/domains/resources/prompts/loader.ts +1 -1
  547. package/src/domains/resources/skills/content-hash.ts +7 -6
  548. package/src/domains/resources/skills/evals.ts +1 -1
  549. package/src/domains/resources/skills/install.ts +36 -12
  550. package/src/domains/resources/skills/loader.ts +41 -18
  551. package/src/domains/resources/skills/marketplace.ts +21 -2
  552. package/src/domains/resources/skills/promotion.ts +214 -0
  553. package/src/domains/safety/audit.ts +2 -2
  554. package/src/domains/safety/call-target.ts +1 -1
  555. package/src/domains/safety/finish-contract.ts +2 -1
  556. package/src/domains/safety/loop-detector.ts +7 -4
  557. package/src/domains/safety/run-effects.ts +1 -1
  558. package/src/domains/scheduling/extension.ts +4 -4
  559. package/src/domains/session/archive-readers.ts +9 -1
  560. package/src/domains/session/compaction/branch-summary.ts +4 -0
  561. package/src/domains/session/compaction/compact.ts +1 -1
  562. package/src/domains/session/compaction/tokens.ts +4 -0
  563. package/src/domains/session/context-accounting.ts +1 -1
  564. package/src/domains/session/decision-board.ts +1 -1
  565. package/src/domains/session/extension.ts +1 -1
  566. package/src/domains/session/handoff.ts +2 -2
  567. package/src/domains/session/prompt-manifest.ts +0 -5
  568. package/src/domains/session/protected-artifact-journal.ts +12 -6
  569. package/src/domains/session/retry.ts +1 -1
  570. package/src/domains/session/task-board.ts +10 -9
  571. package/src/domains/share/archive.ts +249 -43
  572. package/src/domains/toolchain/install.ts +1 -1
  573. package/src/engine/acp/adapter.ts +3 -3
  574. package/src/engine/acp/event-mapper.ts +3 -3
  575. package/src/engine/acp/server.ts +89 -35
  576. package/src/engine/acp/tool-mediator.ts +2 -2
  577. package/src/engine/acp/types.ts +1 -1
  578. package/src/engine/alcf-oauth.ts +5 -5
  579. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  580. package/src/engine/api-registry.ts +1 -1
  581. package/src/engine/apis/llamacpp-residency.ts +4 -23
  582. package/src/engine/apis/lmstudio.ts +4 -9
  583. package/src/engine/apis/ollama-native.ts +9 -9
  584. package/src/engine/apis/openai-completions.ts +30 -27
  585. package/src/engine/apis/output-budget.ts +8 -18
  586. package/src/engine/apis/residency.ts +10 -35
  587. package/src/engine/claude/sdk-module.ts +1 -12
  588. package/src/engine/claude/sdk-runtime.ts +6 -6
  589. package/src/engine/claude/subprocess-runtime.ts +1 -1
  590. package/src/engine/claude/tool-safety.ts +4 -4
  591. package/src/engine/gemma-channel-filter.ts +19 -0
  592. package/src/engine/loop-guard.ts +92 -17
  593. package/src/engine/session.ts +14 -7
  594. package/src/engine/tui-primitives.ts +1 -1
  595. package/src/engine/worker-events.ts +6 -6
  596. package/src/engine/worker-runtime.ts +54 -24
  597. package/src/engine/worker-tools.ts +3 -1
  598. package/src/entry/extension-hook-sources.ts +28 -0
  599. package/src/entry/extension-reload.ts +309 -0
  600. package/src/entry/orchestrator.ts +163 -120
  601. package/src/interactive/application-controller.ts +23 -22
  602. package/src/interactive/bus-notices.ts +10 -3
  603. package/src/interactive/chat-loop-messages.ts +3 -13
  604. package/src/interactive/chat-loop.ts +18 -9
  605. package/src/interactive/chat-panel.ts +37 -14
  606. package/src/interactive/chat-renderer.ts +71 -7
  607. package/src/interactive/clio-editor.ts +105 -1
  608. package/src/interactive/context-activity.ts +8 -6
  609. package/src/interactive/context-meter.ts +3 -6
  610. package/src/interactive/context-overlay.ts +1 -1
  611. package/src/interactive/cost-overlay.ts +1 -1
  612. package/src/interactive/council-grid.ts +2 -2
  613. package/src/interactive/dispatch-board.ts +36 -44
  614. package/src/interactive/editor-bash.ts +21 -0
  615. package/src/interactive/editor-steer.ts +9 -4
  616. package/src/interactive/editor-submit.ts +24 -18
  617. package/src/interactive/external-editor.ts +1 -1
  618. package/src/interactive/file-reference-completion.ts +360 -0
  619. package/src/interactive/footer/dashboard.ts +15 -17
  620. package/src/interactive/footer/notifications.ts +14 -8
  621. package/src/interactive/footer/widgets.ts +15 -44
  622. package/src/interactive/interactive-application.ts +116 -61
  623. package/src/interactive/interactive-event-projection.ts +1 -1
  624. package/src/interactive/interactive-input-runtime.ts +6 -2
  625. package/src/interactive/interactive-presentation.ts +22 -17
  626. package/src/interactive/interactive-shell.ts +2 -2
  627. package/src/interactive/interactive-slash-runtime.ts +65 -17
  628. package/src/interactive/interactive-subscriptions.ts +1 -1
  629. package/src/interactive/interactive-tickers.ts +1 -1
  630. package/src/interactive/keybinding-manager.ts +4 -4
  631. package/src/interactive/layout.ts +1 -1
  632. package/src/interactive/memory-overlay.ts +2 -2
  633. package/src/interactive/modal-marker.ts +2 -21
  634. package/src/interactive/mutation-preview.ts +1 -1
  635. package/src/interactive/overlay-frame.ts +4 -12
  636. package/src/interactive/overlay-general-openers.ts +6 -2
  637. package/src/interactive/overlay-key-routing.ts +7 -7
  638. package/src/interactive/overlay-lifecycle.ts +1 -1
  639. package/src/interactive/overlay-model-selectors.ts +3 -3
  640. package/src/interactive/overlays/agents.ts +2 -2
  641. package/src/interactive/overlays/ask-user.ts +25 -11
  642. package/src/interactive/overlays/context-reset.ts +28 -4
  643. package/src/interactive/overlays/cwd-fallback.ts +28 -4
  644. package/src/interactive/overlays/decisions.ts +4 -2
  645. package/src/interactive/overlays/extensions.ts +9 -1
  646. package/src/interactive/overlays/fleet-run-approval.ts +3 -3
  647. package/src/interactive/overlays/handoff-review.ts +2 -2
  648. package/src/interactive/overlays/help-reference.ts +13 -0
  649. package/src/interactive/overlays/interop.ts +1 -1
  650. package/src/interactive/overlays/library-install-confirm.ts +1 -1
  651. package/src/interactive/overlays/message-picker.ts +1 -1
  652. package/src/interactive/overlays/model-selector.ts +39 -31
  653. package/src/interactive/overlays/prompts.ts +10 -4
  654. package/src/interactive/overlays/session-selector.ts +2 -2
  655. package/src/interactive/overlays/settings.ts +360 -303
  656. package/src/interactive/overlays/side-question.ts +2 -2
  657. package/src/interactive/overlays/skills-hub.ts +8 -8
  658. package/src/interactive/overlays/tree-selector.ts +2 -2
  659. package/src/interactive/panes-runtime.ts +145 -43
  660. package/src/interactive/permission-overlay.ts +2 -2
  661. package/src/interactive/prompt-cache-identity.ts +88 -0
  662. package/src/interactive/renderers/retry-status.ts +12 -4
  663. package/src/interactive/renderers/tool-execution.ts +4 -4
  664. package/src/interactive/session-transcript.ts +3 -3
  665. package/src/interactive/slash-autocomplete.ts +454 -165
  666. package/src/interactive/slash-commands.ts +401 -190
  667. package/src/interactive/slash-spec.ts +160 -17
  668. package/src/interactive/status/controller.ts +2 -2
  669. package/src/interactive/stream-pacing-policy.ts +1 -24
  670. package/src/interactive/tasks-overlay.ts +20 -13
  671. package/src/interactive/terminal-lease.ts +6 -7
  672. package/src/interactive/turn-context.ts +41 -26
  673. package/src/interactive/turn-persistence.ts +2 -2
  674. package/src/interactive/turn-prewarm.ts +2 -2
  675. package/src/interactive/turn-runtime.ts +8 -8
  676. package/src/interactive/turn-state.ts +1 -1
  677. package/src/interactive/view/artifacts.ts +12 -9
  678. package/src/interactive/view/view-overlay.ts +13 -10
  679. package/src/interactive/watch-pane.ts +38 -10
  680. package/src/interactive/welcome-dashboard.ts +15 -15
  681. package/src/interactive/worker-progress.ts +4 -4
  682. package/src/interactive/worker-receipts.ts +1 -1
  683. package/src/interactive/worker-stream.ts +1 -4
  684. package/src/interactive/yazi-bridge.ts +72 -11
  685. package/src/tools/agent-tools.ts +30 -1
  686. package/src/tools/artifact.ts +2 -2
  687. package/src/tools/ask-user.ts +6 -6
  688. package/src/tools/bash.ts +2 -2
  689. package/src/tools/bootstrap.ts +4 -0
  690. package/src/tools/builtin-tool-catalog.ts +52 -22
  691. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  692. package/src/tools/codewiki/code-nav.ts +99 -13
  693. package/src/tools/compete-worktrees.ts +27 -17
  694. package/src/tools/context/docs-engine.ts +20 -7
  695. package/src/tools/context/index.ts +44 -13
  696. package/src/tools/core-bootstrap.ts +28 -6
  697. package/src/tools/credential-present.ts +1 -2
  698. package/src/tools/dispatch-admission.ts +4 -2
  699. package/src/tools/dispatch-arguments.ts +6 -2
  700. package/src/tools/dispatch-plan.ts +48 -15
  701. package/src/tools/dispatch-run-events.ts +13 -11
  702. package/src/tools/dispatch-runner.ts +11 -6
  703. package/src/tools/dispatch-schema.ts +338 -0
  704. package/src/tools/dispatch-types.ts +3 -0
  705. package/src/tools/dispatch.ts +9 -254
  706. package/src/tools/find.ts +1 -6
  707. package/src/tools/ledger.ts +3 -5
  708. package/src/tools/monitor-surface.ts +5 -13
  709. package/src/tools/monitor.ts +4 -4
  710. package/src/tools/observation.ts +4 -5
  711. package/src/tools/observers.ts +0 -33
  712. package/src/tools/panes-surface.ts +4 -11
  713. package/src/tools/panes.ts +4 -2
  714. package/src/tools/policy.ts +15 -2
  715. package/src/tools/read.ts +5 -6
  716. package/src/tools/registry.ts +30 -7
  717. package/src/tools/result-shaping.ts +18 -14
  718. package/src/tools/steer-surface.ts +1 -1
  719. package/src/tools/task-worktree.ts +28 -7
  720. package/src/tools/tasks.ts +1 -1
  721. package/src/tools/truncate.ts +6 -5
  722. package/src/tools/verify/authoring.ts +3 -6
  723. package/src/tools/verify/frontend.ts +1 -1
  724. package/src/tools/verify/surface.ts +6 -12
  725. package/src/tools/web-fetch-surface.ts +1 -3
  726. package/src/tools/web-fetch.ts +1 -1
  727. package/src/worker/entry.ts +4 -3
  728. package/src/worker/protocol.ts +16 -14
  729. package/src/worker/spec-contract.ts +2 -2
  730. package/src/worker/stdin-demux.ts +2 -2
  731. package/dist/chunk-36EJLSQQ.js +0 -814
  732. package/dist/chunk-GXNLGKAB.js +0 -571
  733. package/dist/chunk-K7VKOLQQ.js +0 -15
  734. package/dist/chunk-PMZCIOCJ.js +0 -25
  735. package/dist/chunk-SUCTJL45.js +0 -45
  736. package/dist/chunk-SUW5DORT.js +0 -819
  737. package/dist/chunk-TZ3SGWZZ.js +0 -48
  738. package/dist/chunk-UOV2BYIW.js +0 -107
  739. package/dist/chunk-VFA6GDY5.js +0 -1625
  740. package/dist/doctor-QOA5FNY5.js +0 -313
  741. package/dist/fleet-view-ZCON35AG.js +0 -102
  742. package/dist/panes-HMABYVO4.js +0 -58
  743. package/docs/artifact-versions.md +0 -67
  744. package/docs/documentation-coverage.md +0 -46
  745. package/docs/documentation-guide.md +0 -167
  746. package/docs/release-cut-checklist.md +0 -193
  747. package/docs/time-conventions.md +0 -101
  748. package/skills/meta/clio-test/SKILL.md +0 -133
  749. package/skills/meta/clio-test/references/harness.md +0 -126
  750. package/skills/meta/clio-test/references/test-map.md +0 -69
  751. package/src/engine/apis/degraded-inference.ts +0 -95
@@ -2,8 +2,8 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  PANES_PRESETS,
4
4
  PANES_PRESET_IDS,
5
- isPanesPresetId
6
- } from "./chunk-YJX4SHTD.js";
5
+ resolvePanesPresetId
6
+ } from "./chunk-35MSIRKH.js";
7
7
  import {
8
8
  AdmissionCanceledError,
9
9
  WORKER_OUTPUT_MAX_BYTES,
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-T56WDKA5.js";
12
12
  import {
13
13
  parseSkillCommand
14
- } from "./chunk-VYMXRQI6.js";
14
+ } from "./chunk-O3YUNJZ2.js";
15
15
  import {
16
16
  TOOL_PROFILE_NAMES,
17
17
  isToolProfileName
@@ -25,16 +25,16 @@ import {
25
25
  import {
26
26
  parseCouncilReport,
27
27
  parseOracleResult
28
- } from "./chunk-DYJP44XW.js";
28
+ } from "./chunk-PGF63K6I.js";
29
29
  import {
30
30
  resolveModelReference
31
- } from "./chunk-DQITNCXG.js";
31
+ } from "./chunk-BYMNWQ7O.js";
32
32
  import {
33
33
  BusChannels
34
- } from "./chunk-HLW2MRKE.js";
34
+ } from "./chunk-F4EKGO4N.js";
35
35
  import {
36
36
  THINKING_LEVELS
37
- } from "./chunk-GXNLGKAB.js";
37
+ } from "./chunk-UXCU4E3T.js";
38
38
  import {
39
39
  init_esm_shims
40
40
  } from "./chunk-3R73A4XB.js";
@@ -178,24 +178,35 @@ function isLibraryTab(value) {
178
178
  return LIBRARY_TABS.some((tab) => tab.id === value);
179
179
  }
180
180
 
181
- // src/interactive/overlays/settings-sections.ts
182
- init_esm_shims();
183
- var SETTINGS_SECTIONS = [
184
- { id: "safety", label: "Autonomy & Safety", group: "CORE" },
185
- { id: "orchestrator", label: "Orchestrator", group: "CORE" },
186
- { id: "fleet", label: "Fleet", group: "ROUTING" },
187
- { id: "targets", label: "Targets", group: "ROUTING" },
188
- { id: "models", label: "Models", group: "ROUTING" },
189
- { id: "budget", label: "Budget", group: "RUNTIME" },
190
- { id: "compaction", label: "Compaction", group: "RUNTIME" },
191
- { id: "retry", label: "Retry", group: "RUNTIME" },
192
- { id: "terminal", label: "Terminal", group: "EXPERIENCE" },
193
- { id: "watchdog", label: "Watchdog", group: "EXPERIENCE" },
194
- { id: "advanced", label: "Advanced", group: "EXPERIENCE" }
195
- ];
196
-
197
181
  // src/interactive/slash-spec.ts
198
182
  init_esm_shims();
183
+ var COMPLETION_SLOT_NAMES = [
184
+ "agents",
185
+ "agent-profiles",
186
+ "worker-runtimes",
187
+ "targets",
188
+ "models",
189
+ "capabilities",
190
+ "external-agents",
191
+ "rosters",
192
+ "shareable-runs",
193
+ "skills",
194
+ "fleet-contracts",
195
+ "fleet-vars",
196
+ "fleet-var-values",
197
+ "tasks",
198
+ "context-refs",
199
+ "receipts",
200
+ "pane-runs-agents",
201
+ "pane-presets",
202
+ "pane-targets",
203
+ "library-tabs",
204
+ "thinking-levels",
205
+ "settings-areas",
206
+ "settings-groups",
207
+ "help-queries",
208
+ "paths"
209
+ ];
199
210
  function getFlagValuePlaceholder(flag) {
200
211
  if (flag.valueName) return flag.valueName;
201
212
  if (flag.values && flag.values.length > 0) {
@@ -426,6 +437,54 @@ function parseArgs(spec, argsLine) {
426
437
  ...rest !== void 0 ? { rest } : {}
427
438
  };
428
439
  }
440
+ function completionTokens(text) {
441
+ const tokens = [];
442
+ let index = 0;
443
+ while (index < text.length) {
444
+ while (index < text.length && /\s/.test(text[index] ?? "")) index++;
445
+ if (index >= text.length) break;
446
+ const start = index;
447
+ let quote;
448
+ if (text[index] === '"' || text[index] === "'") {
449
+ quote = text[index];
450
+ index++;
451
+ }
452
+ const contentStart = index;
453
+ let value = "";
454
+ while (index < text.length) {
455
+ const char = text[index] ?? "";
456
+ if (quote) {
457
+ if (char === quote) break;
458
+ } else if (/\s/.test(char)) {
459
+ break;
460
+ } else if (char === '"' || char === "'") {
461
+ const embedded = char;
462
+ index++;
463
+ while (index < text.length && text[index] !== embedded) value += text[index++] ?? "";
464
+ if (text[index] === embedded) index++;
465
+ continue;
466
+ }
467
+ value += char;
468
+ index++;
469
+ }
470
+ const contentEnd = index;
471
+ if (quote && text[index] === quote) index++;
472
+ tokens.push({ value, start, end: index, contentStart, contentEnd, ...quote ? { quote } : {} });
473
+ }
474
+ return tokens;
475
+ }
476
+ function tokenAtCursor(text, cursor) {
477
+ const safeCursor = Math.max(0, Math.min(cursor, text.length));
478
+ const tokens = completionTokens(text);
479
+ const containing = tokens.find((token) => safeCursor >= token.start && safeCursor <= token.end);
480
+ if (containing) {
481
+ return { current: containing, completed: tokens.filter((token) => token.end <= containing.start) };
482
+ }
483
+ return {
484
+ current: { value: "", start: safeCursor, end: safeCursor, contentStart: safeCursor, contentEnd: safeCursor },
485
+ completed: tokens.filter((token) => token.end <= safeCursor)
486
+ };
487
+ }
429
488
  function walkCompletedTokens(spec, tokens) {
430
489
  const flagSpecs = spec.flags ?? [];
431
490
  const positionalSpecs = spec.positionals ?? [];
@@ -453,28 +512,40 @@ function walkCompletedTokens(spec, tokens) {
453
512
  }
454
513
  function flagCompletions(spec, walk, current) {
455
514
  const available = (spec.flags ?? []).filter((flag) => flag.repeatable === true || !walk.usedFlags.has(flag.name));
456
- const rows = available.filter((flag) => flag.name.startsWith(current)).map((flag) => ({ flag, name: flag.name }));
515
+ const lower = current.toLowerCase();
516
+ const rows = available.filter((flag) => flag.name.toLowerCase().startsWith(lower)).map((flag) => ({ flag, name: flag.name }));
457
517
  return rows.map(({ flag, name }) => ({
458
518
  token: name,
459
- ...flag.takesValue ? { hint: `<${getFlagValuePlaceholder(flag)}>` } : {}
519
+ ...flag.takesValue ? { hint: `<${getFlagValuePlaceholder(flag)}>` } : {},
520
+ hasNextSlot: flag.takesValue === true
460
521
  }));
461
522
  }
462
- function completeArgs(spec, argumentText) {
463
- const trailing = argumentText.match(/\S*$/)?.[0] ?? "";
464
- const tokenStart = argumentText.length - trailing.length;
465
- const current = trailing;
466
- const completed = argumentText.slice(0, tokenStart).split(/\s+/).filter((token) => token.length > 0);
523
+ function completeArgs(spec, argumentText, cursor = argumentText.length) {
524
+ const { current: currentToken, completed: completedTokens } = tokenAtCursor(argumentText, cursor);
525
+ const current = currentToken.value.slice(0, Math.max(0, cursor - currentToken.contentStart));
526
+ const completed = completedTokens.map((token) => token.value);
527
+ const range = {
528
+ tokenStart: currentToken.contentStart,
529
+ tokenEnd: currentToken.contentEnd,
530
+ ...currentToken.quote ? { quote: currentToken.quote } : {}
531
+ };
467
532
  const completions = [];
468
533
  let active = spec;
469
534
  let walkTokens = completed;
535
+ let submenu;
470
536
  if (spec.subcommands) {
471
537
  const first = completed[0];
472
538
  if (first === void 0) {
473
539
  for (const [name, subSpec] of Object.entries(spec.subcommands)) {
474
- if (!name.startsWith(current)) continue;
540
+ if (!name.toLowerCase().startsWith(current.toLowerCase())) continue;
475
541
  const hint = renderArgsSpec(subSpec);
476
- completions.push({ token: name, ...hint.length > 0 ? { hint } : {} });
542
+ completions.push({
543
+ token: name,
544
+ ...hint.length > 0 ? { hint } : {},
545
+ hasNextSlot: hint.length > 0
546
+ });
477
547
  }
548
+ submenu = { parent: "", canGoBack: true };
478
549
  } else if (spec.subcommands[first]) {
479
550
  active = spec.subcommands[first];
480
551
  walkTokens = completed.slice(1);
@@ -482,20 +553,36 @@ function completeArgs(spec, argumentText) {
482
553
  }
483
554
  const walk = walkCompletedTokens(active, walkTokens);
484
555
  if (walk.restBegun) {
485
- return completions.length > 0 ? { completions, tokenStart } : null;
556
+ return completions.length > 0 ? { completions, ...range, ...submenu ? { submenu } : {} } : null;
486
557
  }
487
558
  if (walk.awaitingValue) {
488
559
  for (const value of walk.awaitingValue.values ?? []) {
489
- if (value.startsWith(current)) completions.push({ token: value });
560
+ if (value.toLowerCase().startsWith(current.toLowerCase())) completions.push({ token: value, hasNextSlot: true });
561
+ }
562
+ if (walk.awaitingValue.completionSlot) {
563
+ completions.push({ token: current, completionSlot: walk.awaitingValue.completionSlot, hasNextSlot: true });
490
564
  }
491
- return completions.length > 0 ? { completions, tokenStart } : null;
565
+ return completions.length > 0 ? { completions, ...range, ...submenu ? { submenu } : {} } : null;
492
566
  }
493
567
  const atRest = (active.positionals ?? [])[walk.positionalIndex]?.rest === true;
568
+ const positional = (active.positionals ?? [])[walk.positionalIndex];
569
+ for (const value of positional?.values ?? []) {
570
+ if (value.toLowerCase().startsWith(current.toLowerCase())) {
571
+ completions.push({ token: value, hasNextSlot: walk.positionalIndex + 1 < (active.positionals?.length ?? 0) });
572
+ }
573
+ }
574
+ if (positional?.completionSlot && !current.startsWith("-")) {
575
+ completions.push({
576
+ token: current,
577
+ completionSlot: positional.completionSlot,
578
+ hasNextSlot: walk.positionalIndex + 1 < (active.positionals?.length ?? 0)
579
+ });
580
+ }
494
581
  const flagsParseable = !atRest || active.parseFlagsBeforeRest === true;
495
582
  if (flagsParseable && (current.length === 0 || current.startsWith("-"))) {
496
583
  completions.push(...flagCompletions(active, walk, current));
497
584
  }
498
- return completions.length > 0 ? { completions, tokenStart } : null;
585
+ return completions.length > 0 ? { completions, ...range, ...submenu ? { submenu } : {} } : null;
499
586
  }
500
587
  function matchFromSpec(entry, trimmed) {
501
588
  const matchedPrefix = `/${entry.name}`;
@@ -547,7 +634,7 @@ function isThinkingEvent(event) {
547
634
  return assistantEvent?.type === "thinking_delta";
548
635
  }
549
636
  function toolEventAction(event) {
550
- if (event.type !== "clio_tool_start" && event.type !== "clio_tool_finish") return null;
637
+ if (event.type !== "clio_coder_tool_start" && event.type !== "clio_coder_tool_finish") return null;
551
638
  const payload = isRecord(event.payload) ? event.payload : null;
552
639
  const tool = nonEmptyString(payload?.tool);
553
640
  if (tool === void 0) return null;
@@ -708,7 +795,7 @@ function createWorkerProgressFold() {
708
795
  betweenAssistantMessages = true;
709
796
  }
710
797
  const action = toolEventAction(event);
711
- if (action !== null && event.type === "clio_tool_start") {
798
+ if (action !== null && event.type === "clio_coder_tool_start") {
712
799
  if (action.toolCallId !== void 0) {
713
800
  const duplicate = pendingActionsById.get(action.toolCallId);
714
801
  if (duplicate !== void 0) removePendingAction(duplicate);
@@ -720,7 +807,7 @@ function createWorkerProgressFold() {
720
807
  touch();
721
808
  setPhase("tool");
722
809
  changed = true;
723
- } else if (action !== null && event.type === "clio_tool_finish") {
810
+ } else if (action !== null && event.type === "clio_coder_tool_finish") {
724
811
  const finished = (action.toolCallId !== void 0 ? pendingActionsById.get(action.toolCallId) : void 0) ?? lastPendingActionForTool(action.tool) ?? action;
725
812
  removePendingAction(finished);
726
813
  currentAction = pendingActions[pendingActions.length - 1] ?? null;
@@ -1032,6 +1119,15 @@ function selectWorkerRunToShare(entries, id) {
1032
1119
  }
1033
1120
 
1034
1121
  // src/interactive/slash-commands.ts
1122
+ var SETTINGS_AREA_IDS = [
1123
+ "chat",
1124
+ "fleet",
1125
+ "targets",
1126
+ "context",
1127
+ "safety",
1128
+ "interface",
1129
+ "integrations"
1130
+ ];
1035
1131
  function shareReceipt(agentId, receipt, deps) {
1036
1132
  if (!deps.submitOperatorNote) {
1037
1133
  deps.notice("error", "--share is not wired in this session; the result stayed local");
@@ -1247,13 +1343,13 @@ function formatUserTaskHandoff(task) {
1247
1343
  const note = task.note ? ` ${task.note}.` : "";
1248
1344
  return `Operator task ${task.id}: ${task.title}.${note} Pick it up with tasks action="pick" id="${task.id}" and work it when appropriate.`;
1249
1345
  }
1250
- var SLASH_COMMAND_GROUPS = ["Run", "Inspect", "Configure", "Sessions"];
1346
+ var SLASH_COMMAND_GROUPS = ["Work", "Inspect", "Configure", "Session"];
1251
1347
  var RUN_THINKING_LEVELS = THINKING_LEVELS;
1252
1348
  function isRunThinkingLevel(value) {
1253
1349
  return RUN_THINKING_LEVELS.some((level) => level === value);
1254
1350
  }
1255
- function isSettingsSectionId(value) {
1256
- return SETTINGS_SECTIONS.some((section) => section.id === value);
1351
+ function isSettingsAreaId(value) {
1352
+ return SETTINGS_AREA_IDS.some((area) => area === value);
1257
1353
  }
1258
1354
  var COMPACT_POSITIONALS = [
1259
1355
  { name: "instructions", required: false, rest: true }
@@ -1262,17 +1358,6 @@ var RECALL_POSITIONALS = [{ name: "ref", required: true }];
1262
1358
  function fromArgsOrUsage(name, command) {
1263
1359
  return (parsed) => parsed.error ? { kind: "usage-error", command: name, reason: parsed.error } : command;
1264
1360
  }
1265
- function settingsDeepLink(name, section, description, rowId) {
1266
- return {
1267
- name,
1268
- description,
1269
- group: "Configure",
1270
- kinds: [],
1271
- args: {},
1272
- fromArgs: fromArgsOrUsage(name, { kind: "settings", section, ...rowId ? { rowId } : {} }),
1273
- handle: () => void 0
1274
- };
1275
- }
1276
1361
  function usageNotice(entry, subcommand) {
1277
1362
  return usageLine(entry, subcommand).trim();
1278
1363
  }
@@ -1282,10 +1367,15 @@ function formatPanesStatus(status) {
1282
1367
  `panes: mode=${status.mode} ${status.available ? "available" : "unavailable"} (${server})`,
1283
1368
  ` ${status.reason}`,
1284
1369
  ...status.socketPath ? [` socket ${status.socketPath}`] : [],
1285
- ` settings: enabled=${status.settings.enabled} notifications=${status.settings.notifications} journal=${status.settings.journal}`,
1370
+ ` settings: enabled=${status.settings.enabled} notifications=${status.settings.notifications} layout=${status.settings.layout} journal=${status.settings.journal}`,
1286
1371
  ` files: enabled=${status.settings.yazi.enabled} mode=${status.settings.yazi.mode} profile=${status.settings.yazi.profile} followCwd=${status.settings.yazi.followCwd}`,
1287
1372
  ` file pane: mode=${status.yazi.mode} pane=${status.yazi.paneId ?? "none"} cwd=${status.yazi.paneCwd ?? "unknown"} lastLine=${status.yazi.lastLineAt === null ? "never" : new Date(status.yazi.lastLineAt).toISOString()} dropped=${status.yazi.droppedLines}`
1288
1373
  ];
1374
+ if (status.docks.length > 0) {
1375
+ lines.push(
1376
+ ` docks: ${status.docks.map((dock) => `${dock.slot}=${dock.paneId} @${(dock.targetShare * 100).toFixed(0)}%`).join(", ")}`
1377
+ );
1378
+ }
1289
1379
  if (status.panes.length === 0) {
1290
1380
  lines.push(" no Clio-owned panes");
1291
1381
  } else {
@@ -1303,7 +1393,7 @@ var BUILTIN_SLASH_COMMANDS = [
1303
1393
  {
1304
1394
  name: "quit",
1305
1395
  description: "Exit Clio Coder",
1306
- group: "Sessions",
1396
+ group: "Session",
1307
1397
  kinds: ["quit"],
1308
1398
  args: {},
1309
1399
  fromArgs: fromArgsOrUsage("quit", { kind: "quit" }),
@@ -1329,7 +1419,7 @@ var BUILTIN_SLASH_COMMANDS = [
1329
1419
  {
1330
1420
  name: "skill",
1331
1421
  description: "Open the Skills Hub or invoke a skill",
1332
- group: "Run",
1422
+ group: "Work",
1333
1423
  kinds: ["skill-selector", "skill-invocation"],
1334
1424
  args: {
1335
1425
  positionals: [
@@ -1356,65 +1446,81 @@ var BUILTIN_SLASH_COMMANDS = [
1356
1446
  }
1357
1447
  },
1358
1448
  {
1359
- name: "library",
1360
- description: "Open the Skills Hub on a resource library tab",
1361
- group: "Run",
1362
- kinds: ["library"],
1363
- args: { positionals: [{ name: "kind", required: false }] },
1449
+ name: "resources",
1450
+ description: "Browse skills, prompts, libraries, and extensions",
1451
+ group: "Inspect",
1452
+ kinds: ["resources"],
1453
+ subcommandDescriptions: {
1454
+ skills: "Browse installed skills",
1455
+ prompts: "Browse prompt templates",
1456
+ library: "Browse resource libraries",
1457
+ extensions: "Browse installed extensions; `reload` commits a new extension generation"
1458
+ },
1459
+ args: {
1460
+ subcommands: {
1461
+ skills: {},
1462
+ prompts: {},
1463
+ library: { positionals: [{ name: "kind", required: false }] },
1464
+ extensions: { positionals: [{ name: "action", required: false, values: ["reload"] }] }
1465
+ }
1466
+ },
1364
1467
  fromArgs(parsed) {
1365
- if (parsed.error) return { kind: "usage-error", command: "library", reason: parsed.error };
1468
+ if (parsed.error) return { kind: "usage-error", command: "resources", reason: parsed.error };
1469
+ if (parsed.subcommand === void 0 || parsed.subcommand === "skills")
1470
+ return { kind: "resources", family: "skills" };
1471
+ if (parsed.subcommand === "prompts") return { kind: "resources", family: "prompts" };
1472
+ if (parsed.subcommand === "extensions") {
1473
+ const action = parsed.positionals[0];
1474
+ if (action === void 0) return { kind: "resources", family: "extensions" };
1475
+ if (action === "reload") return { kind: "resources", family: "extensions", action: "reload" };
1476
+ return { kind: "usage-error", command: "resources", reason: `Unknown action: ${action} (one of reload)` };
1477
+ }
1366
1478
  const tab = parsed.positionals[0];
1367
- if (tab === void 0) return { kind: "library" };
1479
+ if (tab === void 0) return { kind: "resources" };
1368
1480
  if (!isLibraryTab(tab)) {
1369
1481
  const known = LIBRARY_TABS.map((entry) => entry.id).join(", ");
1370
- return { kind: "usage-error", command: "library", reason: `Unknown kind: ${tab} (one of ${known})` };
1482
+ return { kind: "usage-error", command: "resources", reason: `Unknown kind: ${tab} (one of ${known})` };
1371
1483
  }
1372
- return { kind: "library", tab };
1484
+ return { kind: "resources", tab };
1373
1485
  },
1374
1486
  handle(command, ctx) {
1375
- if (command.kind === "library") ctx.openSkillsHub?.(command.tab);
1487
+ if (command.kind !== "resources") return;
1488
+ if (command.family === "prompts") ctx.openPrompts();
1489
+ else if (command.family === "extensions") {
1490
+ if (command.action === "reload") reloadExtensionsCommand(ctx);
1491
+ else ctx.openExtensions();
1492
+ } else ctx.openSkillsHub?.(command.tab);
1376
1493
  }
1377
1494
  },
1378
1495
  {
1379
- name: "prompts",
1380
- description: "List prompt templates",
1381
- group: "Inspect",
1382
- kinds: ["prompts"],
1383
- args: {},
1384
- fromArgs: fromArgsOrUsage("prompts", { kind: "prompts" }),
1385
- handle(_command, ctx) {
1386
- ctx.openPrompts();
1387
- }
1388
- },
1389
- {
1390
- name: "extensions",
1391
- description: "List installed extensions",
1392
- group: "Inspect",
1393
- kinds: ["extensions"],
1394
- args: {},
1395
- fromArgs: fromArgsOrUsage("extensions", { kind: "extensions" }),
1396
- handle(_command, ctx) {
1397
- ctx.openExtensions?.();
1398
- }
1399
- },
1400
- {
1401
- name: "interop",
1402
- description: "Review other coding agents detected on this machine",
1403
- group: "Inspect",
1404
- kinds: ["interop"],
1405
- args: {},
1406
- fromArgs: fromArgsOrUsage("interop", { kind: "interop" }),
1407
- handle(_command, ctx) {
1408
- ctx.openInterop?.();
1496
+ name: "share",
1497
+ description: "Share a worker result with the main agent",
1498
+ group: "Work",
1499
+ kinds: ["share"],
1500
+ args: { positionals: [{ name: "run-id", required: false }] },
1501
+ fromArgs(parsed) {
1502
+ const retiredArchiveVerb = parsed.positionals[0];
1503
+ if (retiredArchiveVerb === "export" || retiredArchiveVerb === "import") {
1504
+ return {
1505
+ kind: "usage-error",
1506
+ command: "share",
1507
+ reason: `/share ${retiredArchiveVerb} is retired and did not run; use /archive ${retiredArchiveVerb}`
1508
+ };
1509
+ }
1510
+ if (parsed.error) return { kind: "usage-error", command: "share", reason: parsed.error };
1511
+ return { kind: "share", ...parsed.positionals[0] ? { runId: parsed.positionals[0] } : {} };
1512
+ },
1513
+ handle(command, ctx) {
1514
+ if (command.kind === "share") shareWorkerRun(command.runId, ctx);
1409
1515
  }
1410
1516
  },
1411
1517
  {
1412
- name: "share",
1413
- description: "Share a worker result with the main agent, or export and import Clio archives",
1414
- group: "Sessions",
1415
- kinds: ["share"],
1518
+ name: "archive",
1519
+ description: "Export or import a full Clio archive",
1520
+ group: "Session",
1521
+ kinds: ["archive-export", "archive-import", "archive-usage"],
1522
+ subcommandDescriptions: { export: "Export a full Clio archive", import: "Import a full Clio archive" },
1416
1523
  args: {
1417
- positionals: [{ name: "runId", required: false }],
1418
1524
  subcommands: {
1419
1525
  export: {
1420
1526
  positionals: [{ name: "path", required: true }]
@@ -1429,54 +1535,44 @@ var BUILTIN_SLASH_COMMANDS = [
1429
1535
  const subcommand = parsed.subcommand === "export" || parsed.subcommand === "import" ? parsed.subcommand : void 0;
1430
1536
  if (parsed.error) {
1431
1537
  return {
1432
- kind: "share",
1433
- action: "usage",
1538
+ kind: "archive-usage",
1434
1539
  ...subcommand !== void 0 ? { subcommand } : {},
1435
1540
  error: parsed.error
1436
1541
  };
1437
1542
  }
1438
1543
  const path = parsed.positionals[0];
1439
- if (subcommand === "export" && path !== void 0) return { kind: "share", action: "export", path };
1544
+ if (subcommand === "export" && path !== void 0) return { kind: "archive-export", path };
1440
1545
  if (subcommand === "import" && path !== void 0) {
1441
1546
  return {
1442
- kind: "share",
1443
- action: "import",
1547
+ kind: "archive-import",
1444
1548
  path,
1445
1549
  dryRun: parsed.flags.has("--dry-run"),
1446
1550
  force: parsed.flags.has("--force")
1447
1551
  };
1448
1552
  }
1449
- if (subcommand === void 0) {
1450
- return { kind: "share", action: "worker-run", ...path !== void 0 ? { runId: path } : {} };
1451
- }
1452
- return { kind: "share", action: "usage", ...subcommand !== void 0 ? { subcommand } : {} };
1553
+ return { kind: "archive-usage", ...subcommand !== void 0 ? { subcommand } : {} };
1453
1554
  },
1454
1555
  handle(command, ctx) {
1455
- if (command.kind !== "share") return;
1456
- if (command.action === "worker-run") {
1457
- shareWorkerRun(command.runId, ctx);
1458
- return;
1459
- }
1460
- if (command.action === "usage") {
1461
- const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === "share");
1556
+ if (command.kind === "archive-usage") {
1557
+ const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === "archive");
1462
1558
  if (!entry) return;
1463
1559
  const usage = usageNotice(entry, command.subcommand);
1464
1560
  ctx.notice("info", command.error ? `${command.error}
1465
1561
  ${usage}` : usage);
1466
1562
  return;
1467
1563
  }
1468
- if (command.action === "export") {
1564
+ if (command.kind === "archive-export") {
1469
1565
  if (!ctx.exportShareArchive) {
1470
- ctx.notice("error", "share export is not wired");
1566
+ ctx.notice("error", "archive export is not wired");
1471
1567
  return;
1472
1568
  }
1473
1569
  const result = ctx.exportShareArchive(command.path);
1474
1570
  ctx.notice("success", `exported ${result.fileCount} item(s) to ${result.path}`);
1475
1571
  return;
1476
1572
  }
1477
- if (command.action === "import") {
1573
+ if (command.kind === "archive-import") {
1478
1574
  if (!ctx.importShareArchive) {
1479
- ctx.notice("error", "share import is not wired");
1575
+ ctx.notice("error", "archive import is not wired");
1480
1576
  return;
1481
1577
  }
1482
1578
  const plan = ctx.importShareArchive(command.path, { dryRun: command.dryRun, force: command.force });
@@ -1497,7 +1593,7 @@ ${usage}` : usage);
1497
1593
  {
1498
1594
  name: "run",
1499
1595
  description: "Run a fleet agent",
1500
- group: "Run",
1596
+ group: "Work",
1501
1597
  kinds: ["run", "run-usage"],
1502
1598
  args: {
1503
1599
  parseFlagsBeforeRest: true,
@@ -1578,7 +1674,7 @@ ${usage}` : usage);
1578
1674
  {
1579
1675
  name: "delegate",
1580
1676
  description: "Run an ACP delegation agent",
1581
- group: "Run",
1677
+ group: "Work",
1582
1678
  kinds: ["delegate", "delegate-usage"],
1583
1679
  args: {
1584
1680
  parseFlagsBeforeRest: true,
@@ -1625,7 +1721,7 @@ ${usage}` : usage);
1625
1721
  {
1626
1722
  name: "btw",
1627
1723
  description: "Ask a side question that never enters the session transcript",
1628
- group: "Run",
1724
+ group: "Work",
1629
1725
  kinds: ["btw", "btw-usage"],
1630
1726
  args: {
1631
1727
  positionals: [{ name: "question", required: true, rest: true }]
@@ -1648,7 +1744,7 @@ ${usage}` : usage);
1648
1744
  {
1649
1745
  name: "oracle",
1650
1746
  description: "Ask a read-only advisor to challenge a question against this session's settled decisions",
1651
- group: "Run",
1747
+ group: "Work",
1652
1748
  kinds: ["oracle", "oracle-usage"],
1653
1749
  args: {
1654
1750
  positionals: [{ name: "question", required: true, rest: true }]
@@ -1674,7 +1770,7 @@ ${usage}` : usage);
1674
1770
  {
1675
1771
  name: "council",
1676
1772
  description: "Ask a roster of read-only members the same task, with an optional vote or judge synthesis",
1677
- group: "Run",
1773
+ group: "Work",
1678
1774
  kinds: ["council", "council-usage"],
1679
1775
  args: {
1680
1776
  parseFlagsBeforeRest: true,
@@ -1724,16 +1820,24 @@ ${usage}` : usage);
1724
1820
  },
1725
1821
  {
1726
1822
  name: "agents",
1727
- description: "List Clio agents and ACP delegation agents",
1823
+ description: "List agents or connect a detected external agent",
1728
1824
  group: "Inspect",
1729
1825
  kinds: ["agents"],
1730
- args: {},
1731
- fromArgs: fromArgsOrUsage("agents", { kind: "agents" }),
1732
- handle(_command, ctx) {
1733
- ctx.openAgents();
1826
+ subcommandDescriptions: {
1827
+ list: "List native and external agents",
1828
+ connect: "Review detected external-agent proposals"
1829
+ },
1830
+ args: { subcommands: { list: {}, connect: {} } },
1831
+ fromArgs(parsed) {
1832
+ if (parsed.error) return { kind: "usage-error", command: "agents", reason: parsed.error };
1833
+ return { kind: "agents", ...parsed.subcommand === "connect" ? { connect: true } : {} };
1834
+ },
1835
+ handle(command, ctx) {
1836
+ if (command.kind !== "agents") return;
1837
+ if (command.connect) ctx.openInterop?.();
1838
+ else ctx.openAgents();
1734
1839
  }
1735
1840
  },
1736
- settingsDeepLink("targets", "targets", "Open Settings \u2192 Targets: health, use, connect, probe, remove"),
1737
1841
  {
1738
1842
  name: "cost",
1739
1843
  description: "Show session token and cost totals",
@@ -1818,9 +1922,9 @@ ${usage}` : usage);
1818
1922
  },
1819
1923
  {
1820
1924
  name: "fleet",
1821
- description: "Open Settings \u2192 Fleet, or run a fleet contract with an approval preview",
1822
- group: "Configure",
1823
- kinds: ["fleet-run", "fleet-run-usage"],
1925
+ description: "Open Fleet Runs or run a fleet contract with an approval preview",
1926
+ group: "Work",
1927
+ kinds: ["fleet", "fleet-run", "fleet-run-usage"],
1824
1928
  subcommandDescriptions: { run: "Preview and run a repo-owned fleet contract" },
1825
1929
  args: {
1826
1930
  subcommands: {
@@ -1830,15 +1934,9 @@ ${usage}` : usage);
1830
1934
  }
1831
1935
  }
1832
1936
  },
1833
- /**
1834
- * `/fleet` alone keeps the settings deep link it has always been, and
1835
- * only `run` parses as a command of its own, so an operator who types
1836
- * `/fleet` out of habit still lands in Settings → Fleet. Anything else
1837
- * on the line stays the usage error every other deep link reports.
1838
- */
1839
1937
  fromArgs(parsed) {
1840
1938
  if (parsed.subcommand !== "run") {
1841
- return parsed.error ? { kind: "usage-error", command: "fleet", reason: parsed.error } : { kind: "settings", section: "fleet" };
1939
+ return parsed.error ? { kind: "usage-error", command: "fleet", reason: parsed.error } : { kind: "fleet" };
1842
1940
  }
1843
1941
  if (parsed.error) return { kind: "fleet-run-usage", reason: parsed.error };
1844
1942
  const name = parsed.positionals[0] ?? "";
@@ -1853,6 +1951,11 @@ ${usage}` : usage);
1853
1951
  return { kind: "fleet-run", name, vars };
1854
1952
  },
1855
1953
  handle(command, ctx) {
1954
+ if (command.kind === "fleet") {
1955
+ if (ctx.openFleetRuns) ctx.openFleetRuns();
1956
+ else ctx.notice("error", "Fleet Runs is not wired in this session");
1957
+ return;
1958
+ }
1856
1959
  if (command.kind === "fleet-run-usage") {
1857
1960
  const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === "fleet");
1858
1961
  const usage = entry ? usageNotice(entry, "run") : "usage: /fleet run <name> [--var key=value ...]";
@@ -2036,19 +2139,21 @@ ${usage}` : usage);
2036
2139
  name: "panes",
2037
2140
  description: "Inspect the pane layer, watch a live run in a pane, or open a utility pane",
2038
2141
  group: "Inspect",
2039
- kinds: ["panes", "panes-show", "panes-open", "panes-close", "panes-usage"],
2142
+ kinds: ["panes", "panes-show", "panes-open", "panes-zoom", "panes-close", "panes-usage"],
2040
2143
  args: {
2041
2144
  subcommands: {
2042
2145
  show: { positionals: [{ name: "run-or-agent", required: true }] },
2043
2146
  // A rest positional, so an argv pane keeps its own flags: the parser
2044
2147
  // would otherwise refuse `--follow` as an unknown flag of `/panes`.
2045
2148
  open: { positionals: [{ name: "preset-or-argv", required: true, rest: true }] },
2149
+ zoom: { positionals: [{ name: "target", required: false }] },
2046
2150
  close: { positionals: [{ name: "target", required: false }] }
2047
2151
  }
2048
2152
  },
2049
2153
  subcommandDescriptions: {
2050
2154
  show: "watch a live run or agent in the watch pane",
2051
- open: `open a utility pane (${PANES_PRESET_IDS.join(", ")}, or a command)`,
2155
+ open: `open a utility pane (${PANES_PRESET_IDS.join(", ")}, \`files --once\` for one pick, or a command)`,
2156
+ zoom: "toggle zoom on a Clio-owned pane (default: the watch pane)",
2052
2157
  close: "close a Clio-owned pane, or all of them"
2053
2158
  },
2054
2159
  fromArgs(parsed) {
@@ -2061,12 +2166,16 @@ ${usage}` : usage);
2061
2166
  if (rest.length === 0) return { kind: "panes-usage", reason: "Missing required argument: preset-or-argv" };
2062
2167
  const argv = rest.split(/\s+/).filter((token) => token.length > 0);
2063
2168
  const first = argv[0] ?? "";
2064
- if (argv.length === 1 && isPanesPresetId(first)) return { kind: "panes-open", preset: first };
2065
- if (argv.length === 2 && first === "yazi" && argv[1] === "--once") {
2066
- return { kind: "panes-open", preset: "yazi", once: true };
2169
+ const preset = resolvePanesPresetId(first);
2170
+ if (argv.length === 1 && preset !== null) return { kind: "panes-open", preset };
2171
+ if (argv.length === 2 && preset === "files" && argv[1] === "--once") {
2172
+ return { kind: "panes-open", preset: "files", once: true };
2067
2173
  }
2068
2174
  return { kind: "panes-open", argv };
2069
2175
  }
2176
+ if (parsed.subcommand === "zoom") {
2177
+ return { kind: "panes-zoom", target: parsed.positionals[0] ?? "" };
2178
+ }
2070
2179
  if (parsed.subcommand === "close") {
2071
2180
  return { kind: "panes-close", target: parsed.positionals[0] ?? "all" };
2072
2181
  }
@@ -2086,7 +2195,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
2086
2195
  if (!panes) {
2087
2196
  ctx.notice(
2088
2197
  "info",
2089
- "panes are inactive: this session started without them. Restart with `clio-coder --with-panes`, or set panes.enabled=auto"
2198
+ "panes are inactive: this session started without them. Restart with `clio-coder --with-panes`, or set interface.panes.enabled=auto"
2090
2199
  );
2091
2200
  return;
2092
2201
  }
@@ -2121,7 +2230,12 @@ ${usageNotice(entry)}` : usageNotice(entry));
2121
2230
  ...command.once ? { once: true } : {}
2122
2231
  });
2123
2232
  if (result.status === "opened") {
2124
- if (result.paneId !== null) ctx.notice("success", `opened pane ${result.label} (${result.paneId})`);
2233
+ if (result.paneId !== null) {
2234
+ ctx.notice(
2235
+ "success",
2236
+ result.existing ? `focused pane ${result.label} (${result.paneId})` : `opened pane ${result.label} (${result.paneId})`
2237
+ );
2238
+ }
2125
2239
  } else if (result.status === "missing-binary") {
2126
2240
  ctx.io.stdout(`${result.detail}
2127
2241
  `);
@@ -2132,6 +2246,19 @@ ${usageNotice(entry)}` : usageNotice(entry));
2132
2246
  });
2133
2247
  return;
2134
2248
  }
2249
+ if (command.kind === "panes-zoom") {
2250
+ runLocal(async () => {
2251
+ const result = await panes.zoom(command.target);
2252
+ if (result.status === "zoomed") {
2253
+ ctx.notice("success", `toggled zoom on ${result.label} (${result.paneId})`);
2254
+ } else if (result.status === "not-found") {
2255
+ ctx.notice("warn", `no Clio-owned pane matches ${result.target}`);
2256
+ } else {
2257
+ ctx.notice("warn", result.reason);
2258
+ }
2259
+ });
2260
+ return;
2261
+ }
2135
2262
  if (command.kind !== "panes-close") return;
2136
2263
  runLocal(async () => {
2137
2264
  const result = await panes.close(command.target);
@@ -2146,18 +2273,80 @@ ${usageNotice(entry)}` : usageNotice(entry));
2146
2273
  });
2147
2274
  }
2148
2275
  },
2276
+ {
2277
+ name: "files",
2278
+ description: "Toggle the files pane; picks land in the composer as @ mentions",
2279
+ group: "Inspect",
2280
+ kinds: ["files", "files-usage"],
2281
+ args: { positionals: [{ name: "action", required: false }] },
2282
+ subcommandDescriptions: {
2283
+ open: "open the files pane, or focus it when it is already open",
2284
+ close: "close the files pane",
2285
+ pick: "borrow the files pane for one selection, then close it"
2286
+ },
2287
+ fromArgs(parsed) {
2288
+ if (parsed.error) return { kind: "files-usage", reason: parsed.error };
2289
+ const action = parsed.positionals[0];
2290
+ if (action === void 0) return { kind: "files", action: "toggle" };
2291
+ if (action === "open" || action === "close" || action === "pick" || action === "toggle") {
2292
+ return { kind: "files", action };
2293
+ }
2294
+ return { kind: "files-usage", reason: `Unexpected argument: ${action}` };
2295
+ },
2296
+ handle(command, ctx) {
2297
+ if (command.kind === "files-usage") {
2298
+ ctx.notice("info", `${command.reason}
2299
+ usage: /files [open|close|pick]`);
2300
+ return;
2301
+ }
2302
+ if (command.kind !== "files") return;
2303
+ const panes = ctx.panes;
2304
+ if (!panes) {
2305
+ ctx.notice(
2306
+ "info",
2307
+ "the files pane is inactive: this session started without panes. Restart with `clio-coder --with-panes`, or set interface.panes.enabled=auto"
2308
+ );
2309
+ return;
2310
+ }
2311
+ const runLocal = ctx.runLocalOperation ?? ((operation) => void operation());
2312
+ runLocal(async () => {
2313
+ const result = await panes.files(command.action);
2314
+ if (result.status === "opened") {
2315
+ if (result.paneId !== null) {
2316
+ ctx.notice(
2317
+ "success",
2318
+ result.existing ? `files pane focused (${result.paneId})` : `files pane opened (${result.paneId})`
2319
+ );
2320
+ }
2321
+ } else if (result.status === "closed") {
2322
+ ctx.notice("info", "files pane closed");
2323
+ } else if (result.status === "missing-binary") {
2324
+ ctx.io.stdout(`${result.detail}
2325
+ `);
2326
+ ctx.render();
2327
+ } else {
2328
+ ctx.notice("warn", result.reason);
2329
+ }
2330
+ });
2331
+ }
2332
+ },
2149
2333
  {
2150
2334
  name: "thinking",
2151
- description: "Set the chat thinking level, or open Settings \u2192 Orchestrator",
2335
+ description: "Set the chat thinking level",
2152
2336
  group: "Configure",
2153
- kinds: ["thinking-set"],
2337
+ kinds: ["thinking-set", "thinking-picker"],
2154
2338
  args: { positionals: [{ name: "level", required: false }] },
2155
2339
  fromArgs(parsed) {
2156
2340
  if (parsed.error) return { kind: "usage-error", command: "thinking", reason: parsed.error };
2157
2341
  const level = parsed.positionals[0];
2158
- return level ? { kind: "thinking-set", level } : { kind: "settings", section: "orchestrator", rowId: "orchestrator.thinkingLevel" };
2342
+ return level ? { kind: "thinking-set", level } : { kind: "thinking-picker" };
2159
2343
  },
2160
2344
  handle(command, ctx) {
2345
+ if (command.kind === "thinking-picker") {
2346
+ if (ctx.openThinkingPicker) ctx.openThinkingPicker();
2347
+ else ctx.notice("error", "thinking picker is not wired in this session");
2348
+ return;
2349
+ }
2161
2350
  if (command.kind !== "thinking-set") return;
2162
2351
  const result = ctx.setThinkingLevel?.(command.level) ?? { status: "unavailable" };
2163
2352
  if (result.status === "applied") {
@@ -2172,16 +2361,21 @@ ${usageNotice(entry)}` : usageNotice(entry));
2172
2361
  },
2173
2362
  {
2174
2363
  name: "output",
2175
- description: "Set transcript detail (minimal, default, verbose), or open Settings \u2192 Terminal",
2364
+ description: "Set transcript detail to minimal, default, or verbose",
2176
2365
  group: "Configure",
2177
- kinds: ["output-set"],
2366
+ kinds: ["output-set", "output-picker"],
2178
2367
  args: { positionals: [{ name: "verbosity", required: false }] },
2179
2368
  fromArgs(parsed) {
2180
2369
  if (parsed.error) return { kind: "usage-error", command: "output", reason: parsed.error };
2181
2370
  const verbosity = parsed.positionals[0];
2182
- return verbosity ? { kind: "output-set", verbosity } : { kind: "settings", section: "terminal", rowId: "terminal.outputVerbosity" };
2371
+ return verbosity ? { kind: "output-set", verbosity } : { kind: "output-picker" };
2183
2372
  },
2184
2373
  handle(command, ctx) {
2374
+ if (command.kind === "output-picker") {
2375
+ if (ctx.openOutputPicker) ctx.openOutputPicker();
2376
+ else ctx.notice("error", "output picker is not wired in this session");
2377
+ return;
2378
+ }
2185
2379
  if (command.kind !== "output-set") return;
2186
2380
  const result = ctx.setOutputVerbosity?.(command.verbosity) ?? { status: "unavailable" };
2187
2381
  if (result.status === "applied") {
@@ -2237,36 +2431,38 @@ ${usageNotice(entry)}` : usageNotice(entry));
2237
2431
  })();
2238
2432
  }
2239
2433
  },
2240
- settingsDeepLink(
2241
- "scoped-models",
2242
- "models",
2243
- "Open Settings \u2192 Models: the Alt+J / Alt+K cycle set and favorites",
2244
- "scope"
2245
- ),
2246
2434
  {
2247
2435
  name: "settings",
2248
2436
  description: "Open interactive settings",
2249
2437
  group: "Configure",
2250
2438
  kinds: ["settings"],
2251
- args: { positionals: [{ name: "section", required: false }] },
2439
+ args: {
2440
+ positionals: [
2441
+ { name: "area", required: false },
2442
+ { name: "group", required: false }
2443
+ ]
2444
+ },
2252
2445
  fromArgs(parsed) {
2253
2446
  if (parsed.error) return { kind: "usage-error", command: "settings", reason: parsed.error };
2254
- const section = parsed.positionals[0];
2255
- if (section === void 0) return { kind: "settings" };
2256
- if (!isSettingsSectionId(section)) {
2257
- const known = SETTINGS_SECTIONS.map((entry) => entry.id).join(", ");
2258
- return { kind: "usage-error", command: "settings", reason: `Unknown section: ${section} (one of ${known})` };
2447
+ const area = parsed.positionals[0];
2448
+ if (area === void 0) return { kind: "settings" };
2449
+ if (!isSettingsAreaId(area)) {
2450
+ return {
2451
+ kind: "usage-error",
2452
+ command: "settings",
2453
+ reason: `Unknown area: ${area} (one of ${SETTINGS_AREA_IDS.join(", ")})`
2454
+ };
2259
2455
  }
2260
- return { kind: "settings", section };
2456
+ return { kind: "settings", area, ...parsed.positionals[1] ? { group: parsed.positionals[1] } : {} };
2261
2457
  },
2262
2458
  handle(command, ctx) {
2263
- if (command.kind === "settings") ctx.openSettings(command.section, command.rowId);
2459
+ if (command.kind === "settings") ctx.openSettings(command.area, command.group);
2264
2460
  }
2265
2461
  },
2266
2462
  {
2267
2463
  name: "resume",
2268
2464
  description: "Resume a past session",
2269
- group: "Sessions",
2465
+ group: "Session",
2270
2466
  kinds: ["resume"],
2271
2467
  args: {},
2272
2468
  fromArgs: fromArgsOrUsage("resume", { kind: "resume" }),
@@ -2277,7 +2473,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
2277
2473
  {
2278
2474
  name: "new",
2279
2475
  description: "Start a fresh session",
2280
- group: "Sessions",
2476
+ group: "Session",
2281
2477
  kinds: ["new"],
2282
2478
  args: {},
2283
2479
  fromArgs: fromArgsOrUsage("new", { kind: "new" }),
@@ -2288,7 +2484,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
2288
2484
  {
2289
2485
  name: "handoff",
2290
2486
  description: "Hand this session's working state to a fresh session for a stated goal",
2291
- group: "Sessions",
2487
+ group: "Session",
2292
2488
  kinds: ["handoff", "handoff-usage"],
2293
2489
  args: {
2294
2490
  positionals: [{ name: "goal", required: true, rest: true }]
@@ -2311,7 +2507,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
2311
2507
  {
2312
2508
  name: "tree",
2313
2509
  description: "Open session tree navigator",
2314
- group: "Sessions",
2510
+ group: "Session",
2315
2511
  kinds: ["tree"],
2316
2512
  args: {},
2317
2513
  fromArgs: fromArgsOrUsage("tree", { kind: "tree" }),
@@ -2322,7 +2518,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
2322
2518
  {
2323
2519
  name: "fork",
2324
2520
  description: "Fork from an assistant turn",
2325
- group: "Sessions",
2521
+ group: "Session",
2326
2522
  kinds: ["fork"],
2327
2523
  args: {},
2328
2524
  fromArgs: fromArgsOrUsage("fork", { kind: "fork" }),
@@ -2333,7 +2529,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
2333
2529
  {
2334
2530
  name: "export",
2335
2531
  description: "Export a self-contained HTML transcript by default; a .md path writes Markdown",
2336
- group: "Sessions",
2532
+ group: "Session",
2337
2533
  kinds: ["export"],
2338
2534
  args: {
2339
2535
  positionals: [{ name: "path", required: false }]
@@ -2364,6 +2560,54 @@ for (const entry of BUILTIN_SLASH_COMMANDS) {
2364
2560
  }
2365
2561
  var COMMAND_SHAPED_TOKEN = /^[A-Za-z][A-Za-z0-9:-]*$/u;
2366
2562
  var COMMAND_ESCAPE = "\\/";
2563
+ var RETIRED_COMMAND_HINTS = Object.freeze({
2564
+ status: "Use the footer or Alt+U for status; /cost, /context, and /fleet inspect their own domains.",
2565
+ receipts: "Use /view or /view verify <run-id>.",
2566
+ "context-init": "Use /context init.",
2567
+ "context-clear": "Use /context reset for project context or /new for a fresh session.",
2568
+ "context-view": "Use /context.",
2569
+ compact: "Use /context compact [instructions].",
2570
+ skills: "Use /skill or /resources skills.",
2571
+ exit: "Use /quit.",
2572
+ config: "Use /settings.",
2573
+ ctx: "Use /context.",
2574
+ models: "Use /model.",
2575
+ clear: "Use /new for a fresh session or /context reset for project context.",
2576
+ library: "Use /resources library [kind].",
2577
+ prompts: "Use /resources prompts.",
2578
+ extensions: "Use /resources extensions.",
2579
+ interop: "Use /agents connect.",
2580
+ targets: "Use /settings targets.",
2581
+ "scoped-models": "Use /settings chat model-picker."
2582
+ });
2583
+ function retiredCommandHint(token) {
2584
+ if (/^skills?:[^\s]+$/u.test(token)) return "Use /skill <name> [task].";
2585
+ return RETIRED_COMMAND_HINTS[token];
2586
+ }
2587
+ function formatExtensionReloadNotice(outcome) {
2588
+ if (outcome.status !== "committed") {
2589
+ return ["error", `extensions: reload rejected (${outcome.reason}); generation ${outcome.generation} stays active`];
2590
+ }
2591
+ const delta = outcome.changed ? `changed: +${outcome.added.length} -${outcome.removed.length} ~${outcome.modified.length}` : "unchanged";
2592
+ const issueCount = outcome.hooks.fileIssues + outcome.hooks.issues;
2593
+ const hookParts = [`${outcome.hooks.registered} registered`];
2594
+ if (outcome.hooks.dropped > 0) hookParts.push(`${outcome.hooks.dropped} dropped`);
2595
+ if (issueCount > 0) hookParts.push(`${issueCount} issue${issueCount === 1 ? "" : "s"}`);
2596
+ if (outcome.hooks.overridden > 0) hookParts.push(`${outcome.hooks.overridden} overridden`);
2597
+ const level = outcome.hooks.dropped > 0 || issueCount > 0 ? "warn" : "success";
2598
+ return [level, `extensions: generation ${outcome.generation} committed (${delta}); hooks: ${hookParts.join(", ")}`];
2599
+ }
2600
+ function reloadExtensionsCommand(ctx) {
2601
+ if (!ctx.reloadExtensions) {
2602
+ ctx.notice("warn", "extensions: reload is unavailable in this session; restart to pick up installed changes");
2603
+ return;
2604
+ }
2605
+ const outcome = ctx.reloadExtensions();
2606
+ const [level, text] = formatExtensionReloadNotice(outcome);
2607
+ ctx.notice(level, text);
2608
+ for (const line of outcome.lines) ctx.notice("warn", line);
2609
+ if (outcome.status === "committed") ctx.openExtensions();
2610
+ }
2367
2611
  function parseSlashCommand(input) {
2368
2612
  const trimmed = input.trim();
2369
2613
  if (trimmed.length === 0) return { kind: "empty" };
@@ -2385,6 +2629,12 @@ function dispatchSlashCommand(command, ctx) {
2385
2629
  return "accepted";
2386
2630
  }
2387
2631
  if (command.kind === "unknown-command") {
2632
+ const retiredHint = retiredCommandHint(command.token);
2633
+ if (retiredHint) {
2634
+ ctx.notice("error", `/${command.token} is retired and did not run. ${retiredHint}`);
2635
+ ctx.render();
2636
+ return "rejected";
2637
+ }
2388
2638
  const expansion = ctx.expandPromptTemplate?.(command.text);
2389
2639
  if (expansion?.expanded === true) {
2390
2640
  ctx.submitChat(command.text);
@@ -2407,8 +2657,41 @@ function dispatchSlashCommand(command, ctx) {
2407
2657
  entry.handle(command, ctx);
2408
2658
  return "accepted";
2409
2659
  }
2660
+ var COMMAND_ORDER = [
2661
+ "run",
2662
+ "fleet",
2663
+ "delegate",
2664
+ "council",
2665
+ "oracle",
2666
+ "btw",
2667
+ "share",
2668
+ "skill",
2669
+ "agents",
2670
+ "tasks",
2671
+ "context",
2672
+ "memory",
2673
+ "view",
2674
+ "panes",
2675
+ "cost",
2676
+ "decisions",
2677
+ "resources",
2678
+ "help",
2679
+ "model",
2680
+ "thinking",
2681
+ "output",
2682
+ "settings",
2683
+ "new",
2684
+ "resume",
2685
+ "handoff",
2686
+ "fork",
2687
+ "tree",
2688
+ "export",
2689
+ "archive",
2690
+ "quit"
2691
+ ];
2692
+ var COMMAND_ORDER_INDEX = new Map(COMMAND_ORDER.map((name, index) => [name, index]));
2410
2693
  function commandReference() {
2411
- return BUILTIN_SLASH_COMMANDS.filter((entry) => entry.hidden !== true).map((entry) => {
2694
+ return BUILTIN_SLASH_COMMANDS.filter((entry) => entry.hidden !== true).slice().sort((a, b) => (COMMAND_ORDER_INDEX.get(a.name) ?? 99) - (COMMAND_ORDER_INDEX.get(b.name) ?? 99)).map((entry) => {
2412
2695
  const usage = usageLine(entry).replace(/^\nusage:\s*/, "").replace(/\n$/, "");
2413
2696
  return {
2414
2697
  name: entry.name,
@@ -2431,17 +2714,17 @@ export {
2431
2714
  createWorkerStream,
2432
2715
  isWorkerShareNote,
2433
2716
  LIBRARY_TABS,
2434
- SETTINGS_SECTIONS,
2717
+ COMPLETION_SLOT_NAMES,
2435
2718
  renderArgsSpec,
2436
2719
  completeArgs,
2720
+ SETTINGS_AREA_IDS,
2437
2721
  handleRun,
2438
- formatReceiptVerificationBlock,
2439
2722
  formatUserTaskHandoff,
2440
2723
  SLASH_COMMAND_GROUPS,
2441
- formatPanesStatus,
2442
2724
  BUILTIN_SLASH_COMMANDS,
2725
+ formatExtensionReloadNotice,
2443
2726
  parseSlashCommand,
2444
2727
  dispatchSlashCommand,
2445
2728
  commandReference
2446
2729
  };
2447
- //# sourceMappingURL=chunk-C2LTL2W6.js.map
2730
+ //# sourceMappingURL=chunk-RLYRBIYQ.js.map