@iowarp/clio-coder 0.3.9 → 0.4.1

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 (733) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/NOTICE +33 -0
  3. package/README.md +121 -16
  4. package/dist/{acp-7LOELQFP.js → acp-ZILU3AUO.js} +19 -18
  5. package/dist/{agents-FIBG2SHA.js → agents-HYWGBGQR.js} +53 -39
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-OI4LIH2I.js → auth-N3QT7CBO.js} +24 -21
  8. package/dist/{builtins-AD25UL3C.js → builtins-UJLMOVOV.js} +6 -6
  9. package/dist/{chunk-I4HZDVNP.js → chunk-2LEAKD4C.js} +2 -3
  10. package/dist/{chunk-465CC7FK.js → chunk-2NM363SV.js} +60 -64
  11. package/dist/{chunk-4H6ULJ3H.js → chunk-2VG7KLYV.js} +1046 -1370
  12. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  13. package/dist/{chunk-NZU6YDNV.js → chunk-3I5NY75V.js} +5 -5
  14. package/dist/{chunk-47CMYGET.js → chunk-3QSOM6PA.js} +2 -2
  15. package/dist/chunk-42FMPA75.js +101 -0
  16. package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
  17. package/dist/{chunk-IHKBWSXF.js → chunk-5QIAJV2D.js} +3 -3
  18. package/dist/chunk-5YHDIDBP.js +97 -0
  19. package/dist/chunk-6CCS4G3W.js +1529 -0
  20. package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
  21. package/dist/{chunk-BVDVID7E.js → chunk-6FN3E6KX.js} +6 -6
  22. package/dist/{chunk-DG4M6ZUE.js → chunk-6HMJX2VU.js} +59 -59
  23. package/dist/{chunk-3MRC2YSQ.js → chunk-6I5ILFOF.js} +3 -2
  24. package/dist/chunk-6NJQITNH.js +1412 -0
  25. package/dist/chunk-6VC4OV3Z.js +365 -0
  26. package/dist/{chunk-LU7P4LHA.js → chunk-72GZI5EV.js} +2 -2
  27. package/dist/{chunk-5T7RBWN2.js → chunk-74YWRRU5.js} +9 -8
  28. package/dist/{chunk-VPTUJU4P.js → chunk-7EPLI7VL.js} +2 -2
  29. package/dist/{chunk-CA42X6KT.js → chunk-7OBGU7UB.js} +7 -7
  30. package/dist/{chunk-56KB5IJP.js → chunk-7PWAODYW.js} +3 -3
  31. package/dist/chunk-7RY5VZPH.js +573 -0
  32. package/dist/{chunk-OEDBCISO.js → chunk-ABLSQ6JX.js} +3 -3
  33. package/dist/{chunk-5HFBWUMU.js → chunk-AFKWHWXF.js} +13 -23
  34. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  35. package/dist/{chunk-WXCJ7VME.js → chunk-AKB4GYDL.js} +7 -7
  36. package/dist/chunk-AP73CFDC.js +308 -0
  37. package/dist/{chunk-4LJX2PUC.js → chunk-BBTJOK6Y.js} +5 -5
  38. package/dist/{chunk-QQ7EKM72.js → chunk-BDPT6GTK.js} +13 -61
  39. package/dist/chunk-BJGUKIG4.js +302 -0
  40. package/dist/chunk-BMS5RKQY.js +27 -0
  41. package/dist/{chunk-TD7UE2L5.js → chunk-BTGG6BG2.js} +81 -40
  42. package/dist/chunk-BTK3SSSK.js +67 -0
  43. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  44. package/dist/chunk-BWW4HLO4.js +301 -0
  45. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  46. package/dist/{chunk-HJB5IUKP.js → chunk-C537JADH.js} +18 -18
  47. package/dist/{chunk-774ILSRL.js → chunk-CDNVLKUX.js} +5 -4
  48. package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
  49. package/dist/{chunk-AEYBF3TB.js → chunk-CWVRRIEI.js} +2 -2
  50. package/dist/chunk-D4CJV46V.js +462 -0
  51. package/dist/chunk-D7E7WCDF.js +27 -0
  52. package/dist/{chunk-5PVQ4SRS.js → chunk-E67WX76H.js} +10 -126
  53. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  54. package/dist/chunk-EIMVLWB3.js +1842 -0
  55. package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
  56. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  57. package/dist/{chunk-3DUR4WUA.js → chunk-FYUN5KZ3.js} +25 -25
  58. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  59. package/dist/chunk-GIZNH63R.js +40 -0
  60. package/dist/chunk-GPPB3JBE.js +688 -0
  61. package/dist/{chunk-B5XRQOLB.js → chunk-GVQJ5CCZ.js} +17 -11
  62. package/dist/chunk-HHV2GANA.js +88 -0
  63. package/dist/chunk-HJWWJ6IL.js +184 -0
  64. package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
  65. package/dist/chunk-HRQMFLJP.js +75 -0
  66. package/dist/{chunk-AD7Y7STJ.js → chunk-HUAS7ITX.js} +107 -97
  67. package/dist/{chunk-O6I4CIEU.js → chunk-I66EAJFY.js} +6 -6
  68. package/dist/{chunk-S4COXYBG.js → chunk-IG7BCQBA.js} +129 -106
  69. package/dist/{chunk-N3PBVRTZ.js → chunk-IXJT6DCX.js} +9 -7
  70. package/dist/chunk-J4HBWF6Y.js +2635 -0
  71. package/dist/chunk-J5LZHVIT.js +284 -0
  72. package/dist/{chunk-GAYUJ7LE.js → chunk-JA5QWE4Z.js} +544 -227
  73. package/dist/{chunk-B5CSFE7B.js → chunk-JIEGK6UF.js} +6 -174
  74. package/dist/{chunk-VKBMFOYV.js → chunk-JZWT5J3Y.js} +23 -27
  75. package/dist/chunk-K6BF4U2H.js +1785 -0
  76. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  77. package/dist/{chunk-YSEHGPCT.js → chunk-MA3H6DM5.js} +6 -6
  78. package/dist/{chunk-EBOC7MT3.js → chunk-MOPSG2X7.js} +9 -9
  79. package/dist/{chunk-KV2AOLDF.js → chunk-MQXIVJ35.js} +18 -29
  80. package/dist/{chunk-P3JGPQFL.js → chunk-N5UK64DP.js} +4 -4
  81. package/dist/chunk-NDDGJUXD.js +81 -0
  82. package/dist/chunk-NEKRRTYW.js +56 -0
  83. package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
  84. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  85. package/dist/{chunk-T3Z6VAAF.js → chunk-OJTRZGR3.js} +53 -92
  86. package/dist/{chunk-5DQRIYDZ.js → chunk-PBP4B7XR.js} +3 -3
  87. package/dist/{chunk-NQ6UCCOD.js → chunk-PJJ6MY27.js} +8 -8
  88. package/dist/chunk-PMZCIOCJ.js +25 -0
  89. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  90. package/dist/{chunk-7C6RYZGQ.js → chunk-PVAMAVBB.js} +5 -4
  91. package/dist/chunk-QDC3K2U3.js +262 -0
  92. package/dist/{chunk-JEQQR47K.js → chunk-QKIFBZKT.js} +173 -14
  93. package/dist/{chunk-R7LNVMCS.js → chunk-QMXC4JB7.js} +70 -78
  94. package/dist/chunk-QSNYB6ZV.js +195 -0
  95. package/dist/chunk-QTFGO774.js +644 -0
  96. package/dist/{chunk-ODFEOB4F.js → chunk-R23Z6K6I.js} +27 -9
  97. package/dist/{chunk-3UUY7R3Z.js → chunk-R32CLGZ6.js} +14 -14
  98. package/dist/chunk-R346GLFC.js +31 -0
  99. package/dist/chunk-RKSR6VSF.js +132 -0
  100. package/dist/{chunk-N5XKWMDW.js → chunk-SCYB3HA4.js} +73 -27
  101. package/dist/{chunk-PZ4I4JE2.js → chunk-SINK3QR6.js} +135 -125
  102. package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
  103. package/dist/chunk-T56WDKA5.js +183 -0
  104. package/dist/{chunk-ECUO3KDP.js → chunk-TD3PGPQA.js} +87 -26
  105. package/dist/{chunk-HKO36JWF.js → chunk-THYWACCR.js} +31 -3
  106. package/dist/{chunk-LXPJXFM5.js → chunk-TVH4ONAM.js} +18 -12
  107. package/dist/chunk-TVHHYFHE.js +255 -0
  108. package/dist/chunk-U2WB7TZS.js +271 -0
  109. package/dist/{chunk-NNNWO6F2.js → chunk-UAPGZHYC.js} +237 -33
  110. package/dist/{chunk-MIX5N5AC.js → chunk-UEDMSP56.js} +415 -160
  111. package/dist/{chunk-WIE7ZOSW.js → chunk-UXN6JT4W.js} +3 -3
  112. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  113. package/dist/{chunk-MV2VUEJC.js → chunk-VEGN6WIQ.js} +2 -2
  114. package/dist/chunk-VKFQTNDV.js +66 -0
  115. package/dist/{chunk-FALJGAWU.js → chunk-VKRH2TCS.js} +2 -2
  116. package/dist/{chunk-A2NJGIB3.js → chunk-VN3SHNBN.js} +2 -2
  117. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  118. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  119. package/dist/{chunk-EQ63NRB7.js → chunk-WNP7O5WZ.js} +3 -3
  120. package/dist/chunk-WR6U3OVP.js +45 -0
  121. package/dist/{chunk-TEO2TLVN.js → chunk-XKA2ICR3.js} +1051 -1196
  122. package/dist/{chunk-3V5AYSEQ.js → chunk-Y45G3AXC.js} +72 -65
  123. package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
  124. package/dist/chunk-YAKGTXEV.js +17 -0
  125. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  126. package/dist/{chunk-YW7UVM5V.js → chunk-ZAZB4JMW.js} +55 -11
  127. package/dist/{chunk-HCBCAYZU.js → chunk-ZJLUDYFY.js} +11 -11
  128. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  129. package/dist/{chunk-IFBNV6H6.js → chunk-ZW55JB7N.js} +3 -3
  130. package/dist/cli/index.js +48 -37
  131. package/dist/clio-IT3G3VQH.js +25 -0
  132. package/dist/{code-nav-LMW275PA.js → code-nav-RK6S7F6E.js} +8 -8
  133. package/dist/codewiki/build-worker.js +1 -1
  134. package/dist/{compile-cache-CVJMMODC.js → compile-cache-OQAVB7Y5.js} +3 -5
  135. package/dist/{components-ZFA3SAER.js → components-UBWCQSRW.js} +6 -6
  136. package/dist/{config-RXS5T3JT.js → config-3QZRWZJF.js} +73 -61
  137. package/dist/configure-FL7Y3KJF.js +54 -0
  138. package/dist/{context-MVOORGMF.js → context-5HE7ODYK.js} +61 -49
  139. package/dist/{context-I3BTOTCS.js → context-KYQFRVDC.js} +11 -11
  140. package/dist/{context-PALKKQYL.js → context-XNHL75JV.js} +43 -28
  141. package/dist/{context-clear-N2WOYZ2K.js → context-clear-N545L53A.js} +60 -48
  142. package/dist/{context-working-set-MIEVECVZ.js → context-working-set-QHKXSV2F.js} +15 -13
  143. package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-RGIE5PCT.js} +109 -72
  144. package/dist/{docs-7LQ23DLM.js → docs-5NAF6AU7.js} +7 -13
  145. package/dist/doctor-ZGPEGHIP.js +772 -0
  146. package/dist/{eval-IJ5VEZDJ.js → eval-GXLL44RD.js} +106 -86
  147. package/dist/eval-inventory-HBWSWQOK.js +315 -0
  148. package/dist/{evidence-L5APPXNV.js → evidence-HWLBRH3Q.js} +209 -51
  149. package/dist/{evolve-RGNKFJ52.js → evolve-FTZBMNVW.js} +57 -45
  150. package/dist/{extensions-7WYWUX5A.js → extensions-VHRBEID7.js} +7 -7
  151. package/dist/{fleet-6CNVBZZP.js → fleet-CKZHJWZJ.js} +215 -114
  152. package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-EXDXBMV6.js} +13 -12
  153. package/dist/fleet-decisions-OTHB6KRL.js +157 -0
  154. package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-YTEZUCUT.js} +20 -17
  155. package/dist/fleet-inspect-SS6YMDCK.js +445 -0
  156. package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-PBY4VYOM.js} +6 -9
  157. package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-KMEM5L3S.js} +25 -20
  158. package/dist/fleet-verify-QD5M7E7Q.js +178 -0
  159. package/dist/fleet-view-WAMJYNDT.js +94 -0
  160. package/dist/{init-VBN2ACVA.js → init-5XQRBOFV.js} +79 -66
  161. package/dist/install-NKNG7KD4.js +13 -0
  162. package/dist/interop-34TVO25M.js +116 -0
  163. package/dist/{library-JHGUMLY2.js → library-3QY6KF57.js} +25 -21
  164. package/dist/{memory-K4OQIYWG.js → memory-L4UTIIIW.js} +59 -47
  165. package/dist/{models-2NCZUWDD.js → models-ZVX3QOWE.js} +47 -37
  166. package/dist/{monitor-MMVTJABD.js → monitor-CEKVSYTS.js} +67 -57
  167. package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-77BAP6BC.js} +7633 -7699
  168. package/dist/panes-7STHOAUJ.js +103 -0
  169. package/dist/panes-SHAUIRXY.js +60 -0
  170. package/dist/{paths-DBXMZMDU.js → paths-L7LGY6RN.js} +6 -6
  171. package/dist/{reset-DD5JGOY3.js → reset-EOLM7GVE.js} +15 -14
  172. package/dist/resources-74GKTLSF.js +115 -0
  173. package/dist/{run-QEGNX7FL.js → run-HBAUJNNZ.js} +139 -98
  174. package/dist/{share-JKD3BQMW.js → share-G3APVLVP.js} +25 -21
  175. package/dist/{skills-LMQIKDOZ.js → skills-35HHUKCR.js} +37 -27
  176. package/dist/{skills-eval-I7X2774U.js → skills-eval-QN4HSHDC.js} +80 -73
  177. package/dist/skills-inventory-J357J34F.js +129 -0
  178. package/dist/slash-commands-JZZCQA32.js +79 -0
  179. package/dist/{steer-CF5TDANS.js → steer-XAVHJM22.js} +4 -4
  180. package/dist/{support-I7LOJLIF.js → support-U7QOWY26.js} +7 -7
  181. package/dist/{targets-RUSR6B5Z.js → targets-DSM6CY3M.js} +67 -59
  182. package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-JOPFUVEM.js} +15 -10
  183. package/dist/tools-MKNWVPBH.js +29 -0
  184. package/dist/{trace-ODOQIVIW.js → trace-ECQ7TIYZ.js} +194 -7
  185. package/dist/tui-primitives-K5PASC3O.js +17 -0
  186. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-N34PCTGJ.js} +6 -8
  187. package/dist/{upgrade-XANW3FXB.js → upgrade-H7TOM7YL.js} +37 -62
  188. package/dist/{usage-4H7ZRXQT.js → usage-X52N3IDJ.js} +70 -59
  189. package/dist/{verifiers-UZXNBZEB.js → verifiers-EJTVVSMA.js} +174 -14
  190. package/dist/{verify-BVKWTNDL.js → verify-YJL6XET2.js} +12 -11
  191. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-MPIFL3LL.js} +3 -4
  192. package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-4NDZTQ4B.js} +86 -75
  193. package/dist/with-panes-OBOBFIIR.js +818 -0
  194. package/dist/worker/entry.js +131 -91
  195. package/docs/README.md +3 -2
  196. package/docs/acp.md +25 -4
  197. package/docs/alcf-provider.md +1 -1
  198. package/docs/architecture.md +2 -2
  199. package/docs/artifact-versions.md +4 -1
  200. package/docs/built-in-agents.md +40 -32
  201. package/docs/capacity-and-scheduling.md +43 -5
  202. package/docs/commands-and-modes.md +39 -4
  203. package/docs/config-knobs-audit.md +3 -0
  204. package/docs/configuration-and-targets.md +138 -167
  205. package/docs/context-engine.md +1 -1
  206. package/docs/development-pipeline.md +19 -0
  207. package/docs/dispatch-typed-intent.md +385 -0
  208. package/docs/documentation-coverage.md +2 -2
  209. package/docs/documentation-guide.md +1 -1
  210. package/docs/environment-variables.md +3 -1
  211. package/docs/eval-runner.md +1 -1
  212. package/docs/evals-internal.md +1 -1
  213. package/docs/evidence-and-memory.md +2 -2
  214. package/docs/evolution.md +1 -1
  215. package/docs/exit-codes-and-output.md +3 -1
  216. package/docs/extensions-and-sharing.md +25 -1
  217. package/docs/fleet-demo-runbook.md +6 -3
  218. package/docs/fleet-dispatch.md +30 -7
  219. package/docs/installation-and-lifecycle.md +16 -3
  220. package/docs/middleware-and-components.md +1 -1
  221. package/docs/model-catalog.md +10 -1
  222. package/docs/observability.md +3 -3
  223. package/docs/proactive-memory.md +1 -1
  224. package/docs/prompt-envelope-and-tools.md +1 -1
  225. package/docs/provider-adapter-cookbook.md +1 -1
  226. package/docs/release-cut-checklist.md +164 -177
  227. package/docs/safety-model.md +2 -2
  228. package/docs/scientific-validation.md +3 -3
  229. package/docs/session-lifecycle.md +1 -1
  230. package/docs/skills-marketplace.md +1 -1
  231. package/docs/tool-usage.md +18 -8
  232. package/docs/trace-store.md +16 -11
  233. package/docs/troubleshooting.md +2 -2
  234. package/docs/tui-design.md +1 -1
  235. package/docs/worker-dispatch-mechanics.md +1 -1
  236. package/evals/README.md +5 -0
  237. package/evals/behavioral-corpus-grader.mjs +103 -0
  238. package/evals/behavioral-machinery-baseline.json +2276 -0
  239. package/evals/behavioral-machinery-driver.ts +250 -0
  240. package/evals/behavioral-machinery-support.ts +253 -0
  241. package/evals/behavioral-machinery.yaml +614 -0
  242. package/evals/behavioral-model-negative-control.yaml +68 -0
  243. package/evals/behavioral-model.yaml +216 -0
  244. package/evals/fixtures/behavioral-facts.txt +3 -0
  245. package/evals/fixtures/behavioral-main.ts +7 -0
  246. package/evals/fixtures/decoy/note.txt +2 -0
  247. package/evals/fixtures/private/credentials.txt +1 -0
  248. package/evals/tracked-metrics-baseline.yaml +229 -0
  249. package/evals/tracked-metrics-grader.mjs +129 -0
  250. package/package.json +8 -16
  251. package/skills/README.md +6 -6
  252. package/skills/coding/ast-grep/SKILL.md +8 -2
  253. package/skills/coding/coding-standards/SKILL.md +8 -2
  254. package/skills/coding/prototype/SKILL.md +8 -2
  255. package/skills/coding/tdd/SKILL.md +8 -2
  256. package/skills/context/context-handoff/SKILL.md +12 -3
  257. package/skills/context/context-handoff/evals.md +3 -3
  258. package/skills/context/context-prime/SKILL.md +8 -2
  259. package/skills/context/context-prime/evals.md +2 -2
  260. package/skills/git/file-ticket/SKILL.md +9 -4
  261. package/skills/git/file-ticket/evals.md +2 -2
  262. package/skills/git/fix-issue/SKILL.md +12 -5
  263. package/skills/git/fix-issue/evals.md +4 -4
  264. package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
  265. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  266. package/skills/git/ship/SKILL.md +9 -3
  267. package/skills/git/ship/evals.md +4 -4
  268. package/skills/git/worktree-create/SKILL.md +7 -2
  269. package/skills/git/worktree-create/evals.md +6 -6
  270. package/skills/git/worktree-merge/SKILL.md +7 -2
  271. package/skills/git/worktree-merge/evals.md +6 -6
  272. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
  273. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
  274. package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
  275. package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
  276. package/skills/meta/credentials/SKILL.md +9 -2
  277. package/skills/meta/find-skills/SKILL.md +8 -2
  278. package/skills/meta/herdr/SKILL.md +8 -2
  279. package/skills/meta/skill-craft/SKILL.md +21 -4
  280. package/skills/planning/architecture/SKILL.md +9 -3
  281. package/skills/planning/backlog/SKILL.md +8 -2
  282. package/skills/planning/prd/SKILL.md +8 -2
  283. package/skills/planning/product-intent/SKILL.md +8 -2
  284. package/skills/planning/tech-spec/SKILL.md +9 -3
  285. package/skills/registry.yaml +66 -66
  286. package/skills/research/arxiv-literature/SKILL.md +8 -2
  287. package/skills/research/experiment-protocol/SKILL.md +9 -2
  288. package/skills/research/scientific-debugging/SKILL.md +9 -2
  289. package/skills/research/scientific-debugging/evals.md +2 -2
  290. package/skills/research/scientific-modernization/SKILL.md +9 -2
  291. package/skills/skill-marketplace.json +257 -38
  292. package/skills/workflow/cut-it/SKILL.md +10 -2
  293. package/skills/workflow/design-council/SKILL.md +11 -2
  294. package/skills/workflow/grill-me/SKILL.md +8 -2
  295. package/skills/workflow/workflow-distiller/SKILL.md +8 -2
  296. package/src/cli/acp.ts +8 -4
  297. package/src/cli/argv.ts +25 -0
  298. package/src/cli/auth.ts +2 -2
  299. package/src/cli/bootstrap-generate.ts +5 -5
  300. package/src/cli/clio.ts +6 -1
  301. package/src/cli/config-inspect.ts +3 -3
  302. package/src/cli/configure-interop.ts +1 -1
  303. package/src/cli/configure.ts +50 -48
  304. package/src/cli/default-target.ts +1 -1
  305. package/src/cli/docs.ts +6 -6
  306. package/src/cli/doctor-naming.ts +323 -0
  307. package/src/cli/doctor-panes.ts +156 -0
  308. package/src/cli/doctor-toolchain.ts +78 -0
  309. package/src/cli/doctor.ts +34 -1
  310. package/src/cli/eval-inventory.ts +436 -0
  311. package/src/cli/eval.ts +13 -0
  312. package/src/cli/evidence-detail.ts +88 -0
  313. package/src/cli/evidence-inventory.ts +183 -0
  314. package/src/cli/evidence.ts +30 -5
  315. package/src/cli/fleet-decisions.ts +69 -0
  316. package/src/cli/fleet-inspect.ts +334 -0
  317. package/src/cli/fleet-preflight.ts +1 -1
  318. package/src/cli/fleet-verify.ts +133 -0
  319. package/src/cli/fleet-view.ts +827 -0
  320. package/src/cli/fleet.ts +154 -40
  321. package/src/cli/index.ts +14 -2
  322. package/src/cli/interop-inspect.ts +128 -0
  323. package/src/cli/interop.ts +34 -0
  324. package/src/cli/models.ts +3 -3
  325. package/src/cli/modes/print.ts +1 -1
  326. package/src/cli/panes.ts +35 -0
  327. package/src/cli/reset.ts +6 -3
  328. package/src/cli/run.ts +67 -13
  329. package/src/cli/share.ts +1 -1
  330. package/src/cli/skills-eval.ts +11 -11
  331. package/src/cli/skills-inventory.ts +185 -0
  332. package/src/cli/skills.ts +16 -13
  333. package/src/cli/targets.ts +23 -24
  334. package/src/cli/tools.ts +321 -0
  335. package/src/cli/trace-inspect.ts +252 -0
  336. package/src/cli/trace.ts +64 -2
  337. package/src/cli/uninstall.ts +2 -2
  338. package/src/cli/upgrade.ts +29 -34
  339. package/src/cli/usage.ts +2 -2
  340. package/src/cli/validate-model.ts +1 -1
  341. package/src/cli/verifiers-inspect.ts +347 -0
  342. package/src/cli/verifiers.ts +9 -0
  343. package/src/cli/wiki-generate.ts +5 -5
  344. package/src/core/bash-exec.ts +1 -1
  345. package/src/core/boot-trace.ts +3 -3
  346. package/src/core/bus-events.ts +4 -0
  347. package/src/core/bus-trace.ts +2 -2
  348. package/src/core/compile-cache.ts +1 -1
  349. package/src/core/config.ts +1070 -845
  350. package/src/core/defaults.ts +342 -463
  351. package/src/core/domain-loader.ts +6 -4
  352. package/src/core/event-bus.ts +1 -1
  353. package/src/core/file-references.ts +78 -88
  354. package/src/core/git-commit-attribution.ts +3 -9
  355. package/src/core/guardrails.ts +24 -4
  356. package/src/core/naming-compat.ts +45 -0
  357. package/src/core/naming-events.ts +62 -0
  358. package/src/core/recent-models.ts +1 -7
  359. package/src/core/residency-protection.ts +4 -8
  360. package/src/core/resolve-config-value.ts +1 -1
  361. package/src/core/response-model-id.ts +0 -14
  362. package/src/core/response-schema.ts +44 -4
  363. package/src/core/session-routing.ts +84 -74
  364. package/src/core/skill-activation.ts +18 -0
  365. package/src/core/termination.ts +4 -4
  366. package/src/core/theme-token-hex.ts +43 -0
  367. package/src/core/timers.ts +2 -12
  368. package/src/core/tool-names.ts +2 -1
  369. package/src/core/xdg.ts +1 -1
  370. package/src/domains/agents/catalog.ts +2 -12
  371. package/src/domains/agents/extension.ts +3 -3
  372. package/src/domains/agents/fleets/build-review.md +0 -3
  373. package/src/domains/agents/fleets/build-test.md +0 -3
  374. package/src/domains/agents/registry.ts +7 -7
  375. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  376. package/src/domains/agents/result-contract.ts +165 -36
  377. package/src/domains/agents/spec.ts +0 -11
  378. package/src/domains/config/classify.ts +37 -46
  379. package/src/domains/config/extension.ts +5 -5
  380. package/src/domains/config/keybindings.ts +48 -47
  381. package/src/domains/config/watcher.ts +1 -1
  382. package/src/domains/context/codewiki/indexer.ts +1 -1
  383. package/src/domains/context/extension.ts +3 -3
  384. package/src/domains/context/prompt-context.ts +1 -1
  385. package/src/domains/context/wiki/assemble.ts +2 -2
  386. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  387. package/src/domains/context/working-set/replay/report.ts +1 -1
  388. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  389. package/src/domains/dispatch/active-route-planner.ts +2 -2
  390. package/src/domains/dispatch/admission-error.ts +9 -0
  391. package/src/domains/dispatch/admission.ts +22 -21
  392. package/src/domains/dispatch/agent-candidates.ts +1 -1
  393. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  394. package/src/domains/dispatch/agent-ledger.ts +1 -1
  395. package/src/domains/dispatch/assignment.ts +5 -5
  396. package/src/domains/dispatch/capacity-lease.ts +23 -6
  397. package/src/domains/dispatch/code-step.ts +1 -1
  398. package/src/domains/dispatch/contract.ts +2 -2
  399. package/src/domains/dispatch/council-topology.ts +398 -0
  400. package/src/domains/dispatch/extension.ts +287 -111
  401. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  402. package/src/domains/dispatch/fleet-plan.ts +7 -2
  403. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  404. package/src/domains/dispatch/fleet-run.ts +59 -3
  405. package/src/domains/dispatch/gate-decisions.ts +36 -15
  406. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  407. package/src/domains/dispatch/gate-topology.ts +289 -0
  408. package/src/domains/dispatch/index.ts +19 -0
  409. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  410. package/src/domains/dispatch/intent.ts +85 -1
  411. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  412. package/src/domains/dispatch/path-scope.ts +0 -61
  413. package/src/domains/dispatch/placement.ts +2 -2
  414. package/src/domains/dispatch/receipt-findings.ts +1 -1
  415. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  416. package/src/domains/dispatch/reservation-store.ts +24 -27
  417. package/src/domains/dispatch/route-decision.ts +1 -1
  418. package/src/domains/dispatch/route-history.ts +1 -1
  419. package/src/domains/dispatch/route-policy.ts +1 -1
  420. package/src/domains/dispatch/route-readiness.ts +0 -28
  421. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  422. package/src/domains/dispatch/run-event-journal.ts +599 -0
  423. package/src/domains/dispatch/state.ts +45 -1
  424. package/src/domains/dispatch/tool-stats.ts +1 -1
  425. package/src/domains/dispatch/transport.ts +2 -19
  426. package/src/domains/dispatch/types.ts +16 -3
  427. package/src/domains/dispatch/validation.ts +33 -8
  428. package/src/domains/dispatch/worker-protocol.ts +2 -2
  429. package/src/domains/eval/artifacts/store.ts +5 -4
  430. package/src/domains/eval/compare/compare.ts +3 -16
  431. package/src/domains/eval/compare/thresholds.ts +0 -8
  432. package/src/domains/eval/execution-provenance.ts +1 -1
  433. package/src/domains/eval/inventory.ts +113 -0
  434. package/src/domains/eval/metrics/token-stream.ts +0 -7
  435. package/src/domains/eval/report.ts +1 -1
  436. package/src/domains/eval/runner.ts +1 -1
  437. package/src/domains/eval/runners/clio-run.ts +7 -6
  438. package/src/domains/eval/runners/external-command.ts +4 -3
  439. package/src/domains/eval/schema/artifact.ts +1 -1
  440. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  441. package/src/domains/eval/schema/behavioral.ts +7 -6
  442. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  443. package/src/domains/eval/schema/naming.ts +10 -0
  444. package/src/domains/eval/schema/serving.ts +31 -0
  445. package/src/domains/eval/schema/suite.ts +2 -2
  446. package/src/domains/eval/schema/validate.ts +9 -5
  447. package/src/domains/eval/schema/verdict.ts +4 -2
  448. package/src/domains/eval/store.ts +12 -2
  449. package/src/domains/eval/suites/run.ts +12 -6
  450. package/src/domains/eval/types.ts +1 -1
  451. package/src/domains/eval/workspaces/git.ts +1 -1
  452. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  453. package/src/domains/evidence/build.ts +13 -5
  454. package/src/domains/evidence/store.ts +6 -0
  455. package/src/domains/interop/consent.ts +7 -7
  456. package/src/domains/interop/extension.ts +1 -1
  457. package/src/domains/lifecycle/doctor.ts +27 -21
  458. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  459. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  460. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  461. package/src/domains/lifecycle/migrations/index.ts +20 -1
  462. package/src/domains/lifecycle/naming-history.ts +153 -0
  463. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  464. package/src/domains/lifecycle/naming-resources.ts +261 -0
  465. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  466. package/src/domains/lifecycle/naming-yazi.ts +81 -0
  467. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  468. package/src/domains/memory/index.ts +0 -1
  469. package/src/domains/memory/task-memory-handoff.ts +6 -3
  470. package/src/domains/memory/task-memory-policy.ts +6 -10
  471. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  472. package/src/domains/middleware/index.ts +7 -0
  473. package/src/domains/middleware/marketplace-offer.ts +339 -0
  474. package/src/domains/middleware/memory-intervention.ts +33 -21
  475. package/src/domains/middleware/runtime.ts +2 -2
  476. package/src/domains/mux/contract.ts +566 -0
  477. package/src/domains/mux/detect.ts +182 -0
  478. package/src/domains/mux/dock-controller.ts +365 -0
  479. package/src/domains/mux/extension.ts +53 -0
  480. package/src/domains/mux/index.ts +116 -0
  481. package/src/domains/mux/manifest.ts +6 -0
  482. package/src/domains/mux/operations.ts +192 -0
  483. package/src/domains/mux/pane-registry.ts +90 -0
  484. package/src/domains/mux/protocol.ts +62 -0
  485. package/src/domains/mux/socket-client.ts +964 -0
  486. package/src/domains/mux/types.ts +265 -0
  487. package/src/domains/mux/viewer-command.ts +59 -0
  488. package/src/domains/mux/yazi/assets/init.lua +2 -0
  489. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  490. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  491. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  492. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  493. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  494. package/src/domains/mux/yazi/event-stream.ts +182 -0
  495. package/src/domains/mux/yazi/profile.ts +299 -0
  496. package/src/domains/mux/yazi/session.ts +251 -0
  497. package/src/domains/mux/yazi/theme.ts +30 -0
  498. package/src/domains/observability/cost.ts +21 -0
  499. package/src/domains/observability/extension.ts +1 -1
  500. package/src/domains/observability/index.ts +2 -0
  501. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  502. package/src/domains/observability/projection.ts +1 -1
  503. package/src/domains/observability/trace-store.ts +63 -11
  504. package/src/domains/prompts/compiler.ts +2 -2
  505. package/src/domains/prompts/extension.ts +3 -3
  506. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
  507. package/src/domains/prompts/fragments/operating/skills.md +25 -18
  508. package/src/domains/providers/endpoint-capacity.ts +154 -22
  509. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  510. package/src/domains/providers/extension.ts +25 -8
  511. package/src/domains/providers/index.ts +22 -0
  512. package/src/domains/providers/knowledge-base-path.ts +1 -1
  513. package/src/domains/providers/model-runtime-capabilities.ts +46 -2
  514. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  515. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
  516. package/src/domains/providers/plugins.ts +1 -1
  517. package/src/domains/providers/resolver.ts +1 -1
  518. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  519. package/src/domains/providers/runtimes/builtins.ts +2 -0
  520. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  521. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  522. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  523. package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
  524. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  525. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  526. package/src/domains/providers/runtimes/protocol/litellm.ts +285 -0
  527. package/src/domains/providers/support.ts +1 -0
  528. package/src/domains/providers/target-model-cache.ts +124 -0
  529. package/src/domains/providers/types/knowledge-base.ts +13 -0
  530. package/src/domains/providers/types/local-model-quirks.ts +2 -2
  531. package/src/domains/providers/types/target-descriptor.ts +3 -3
  532. package/src/domains/resources/extension.ts +1 -1
  533. package/src/domains/resources/index.ts +3 -0
  534. package/src/domains/resources/library.ts +6 -6
  535. package/src/domains/resources/prompts/loader.ts +1 -1
  536. package/src/domains/resources/skills/content-hash.ts +7 -6
  537. package/src/domains/resources/skills/evals.ts +1 -1
  538. package/src/domains/resources/skills/install.ts +36 -12
  539. package/src/domains/resources/skills/loader.ts +72 -13
  540. package/src/domains/resources/skills/marketplace.ts +21 -2
  541. package/src/domains/resources/skills/promotion.ts +214 -0
  542. package/src/domains/safety/action-classifier.ts +6 -0
  543. package/src/domains/safety/audit.ts +2 -2
  544. package/src/domains/safety/finish-contract.ts +2 -1
  545. package/src/domains/safety/run-effects.ts +1 -1
  546. package/src/domains/scheduling/extension.ts +4 -4
  547. package/src/domains/session/archive-readers.ts +9 -1
  548. package/src/domains/session/compaction/branch-summary.ts +4 -0
  549. package/src/domains/session/compaction/compact.ts +1 -1
  550. package/src/domains/session/compaction/tokens.ts +4 -0
  551. package/src/domains/session/context-accounting.ts +1 -1
  552. package/src/domains/session/decision-board.ts +1 -1
  553. package/src/domains/session/extension.ts +1 -1
  554. package/src/domains/session/handoff.ts +2 -2
  555. package/src/domains/session/prompt-manifest.ts +0 -5
  556. package/src/domains/session/protected-artifact-journal.ts +12 -6
  557. package/src/domains/session/retry.ts +1 -1
  558. package/src/domains/share/archive.ts +85 -36
  559. package/src/domains/toolchain/archive.ts +175 -0
  560. package/src/domains/toolchain/contract.ts +28 -0
  561. package/src/domains/toolchain/extension.ts +47 -0
  562. package/src/domains/toolchain/index.ts +39 -0
  563. package/src/domains/toolchain/install.ts +327 -0
  564. package/src/domains/toolchain/manifest.ts +8 -0
  565. package/src/domains/toolchain/paths.ts +34 -0
  566. package/src/domains/toolchain/registry.ts +265 -0
  567. package/src/domains/toolchain/remove.ts +218 -0
  568. package/src/domains/toolchain/resolve.ts +182 -0
  569. package/src/domains/toolchain/types.ts +113 -0
  570. package/src/domains/toolchain/version.ts +88 -0
  571. package/src/engine/acp/adapter.ts +3 -3
  572. package/src/engine/acp/event-mapper.ts +3 -3
  573. package/src/engine/acp/server.ts +440 -96
  574. package/src/engine/acp/tool-mediator.ts +2 -2
  575. package/src/engine/acp/types.ts +20 -2
  576. package/src/engine/alcf-oauth.ts +5 -5
  577. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  578. package/src/engine/api-registry.ts +1 -1
  579. package/src/engine/apis/llamacpp-residency.ts +1 -19
  580. package/src/engine/apis/lmstudio.ts +1 -6
  581. package/src/engine/apis/ollama-native.ts +3 -3
  582. package/src/engine/apis/openai-completions.ts +2 -2
  583. package/src/engine/apis/residency.ts +3 -9
  584. package/src/engine/claude/sdk-module.ts +87 -0
  585. package/src/engine/claude/sdk-runtime.ts +25 -17
  586. package/src/engine/claude/subprocess-runtime.ts +1 -1
  587. package/src/engine/claude/tool-safety.ts +4 -4
  588. package/src/engine/loop-guard.ts +0 -5
  589. package/src/engine/session.ts +14 -7
  590. package/src/engine/tui-primitives.ts +21 -0
  591. package/src/engine/tui.ts +1 -0
  592. package/src/engine/worker-events.ts +6 -6
  593. package/src/engine/worker-runtime.ts +16 -26
  594. package/src/entry/boot-options.ts +2 -0
  595. package/src/entry/orchestrator.ts +207 -90
  596. package/src/entry/panes-activation.ts +31 -0
  597. package/src/entry/with-panes.ts +20 -0
  598. package/src/interactive/application-controller.ts +21 -21
  599. package/src/interactive/bus-notices.ts +2 -2
  600. package/src/interactive/chat-loop.ts +8 -8
  601. package/src/interactive/chat-panel.ts +1 -1
  602. package/src/interactive/clio-editor.ts +105 -1
  603. package/src/interactive/context-activity.ts +8 -6
  604. package/src/interactive/context-meter.ts +3 -6
  605. package/src/interactive/context-overlay.ts +2 -1
  606. package/src/interactive/cost-overlay.ts +3 -1
  607. package/src/interactive/council-grid.ts +3 -5
  608. package/src/interactive/council.ts +11 -0
  609. package/src/interactive/dispatch-board.ts +56 -49
  610. package/src/interactive/editor-bash.ts +21 -0
  611. package/src/interactive/editor-steer.ts +9 -4
  612. package/src/interactive/editor-submit.ts +24 -18
  613. package/src/interactive/external-editor.ts +1 -1
  614. package/src/interactive/file-reference-completion.ts +360 -0
  615. package/src/interactive/footer/dashboard.ts +15 -17
  616. package/src/interactive/footer/notifications.ts +14 -8
  617. package/src/interactive/footer/widgets.ts +2 -44
  618. package/src/interactive/interactive-application.ts +229 -62
  619. package/src/interactive/interactive-event-projection.ts +1 -1
  620. package/src/interactive/interactive-input-runtime.ts +9 -2
  621. package/src/interactive/interactive-presentation.ts +21 -16
  622. package/src/interactive/interactive-shell.ts +2 -2
  623. package/src/interactive/interactive-slash-runtime.ts +99 -23
  624. package/src/interactive/interactive-subscriptions.ts +1 -1
  625. package/src/interactive/interactive-tickers.ts +1 -1
  626. package/src/interactive/keybinding-manager.ts +4 -4
  627. package/src/interactive/layout.ts +1 -1
  628. package/src/interactive/memory-overlay.ts +3 -2
  629. package/src/interactive/modal-marker.ts +151 -0
  630. package/src/interactive/mutation-preview.ts +1 -1
  631. package/src/interactive/mux-bridge.ts +214 -0
  632. package/src/interactive/overlay-frame.ts +62 -14
  633. package/src/interactive/overlay-general-openers.ts +7 -2
  634. package/src/interactive/overlay-key-routing.ts +21 -10
  635. package/src/interactive/overlay-lifecycle.ts +20 -4
  636. package/src/interactive/overlay-model-selectors.ts +43 -6
  637. package/src/interactive/overlay-permission-lifecycle.ts +90 -22
  638. package/src/interactive/overlay-transitions.ts +18 -4
  639. package/src/interactive/overlays/agents.ts +3 -2
  640. package/src/interactive/overlays/ask-user.ts +161 -41
  641. package/src/interactive/overlays/auth-dialog.ts +1 -0
  642. package/src/interactive/overlays/context-reset.ts +29 -4
  643. package/src/interactive/overlays/cwd-fallback.ts +29 -4
  644. package/src/interactive/overlays/decisions.ts +15 -13
  645. package/src/interactive/overlays/extensions.ts +1 -0
  646. package/src/interactive/overlays/fleet-run-approval.ts +4 -3
  647. package/src/interactive/overlays/handoff-review.ts +3 -2
  648. package/src/interactive/overlays/help-reference.ts +2 -0
  649. package/src/interactive/overlays/interop.ts +2 -1
  650. package/src/interactive/overlays/library-install-confirm.ts +2 -1
  651. package/src/interactive/overlays/library-tabs.ts +28 -0
  652. package/src/interactive/overlays/list-overlay.ts +10 -1
  653. package/src/interactive/overlays/message-picker.ts +2 -1
  654. package/src/interactive/overlays/model-scope.ts +86 -0
  655. package/src/interactive/overlays/model-selector.ts +40 -31
  656. package/src/interactive/overlays/prompts.ts +11 -4
  657. package/src/interactive/overlays/session-selector.ts +3 -2
  658. package/src/interactive/overlays/settings-sections.ts +30 -0
  659. package/src/interactive/overlays/settings.ts +849 -268
  660. package/src/interactive/overlays/side-question.ts +3 -2
  661. package/src/interactive/overlays/skills-hub.ts +11 -19
  662. package/src/interactive/overlays/tree-selector.ts +3 -2
  663. package/src/interactive/pane-policy.ts +46 -0
  664. package/src/interactive/panes-runtime.ts +318 -0
  665. package/src/interactive/permission-overlay.ts +2 -2
  666. package/src/interactive/renderers/compaction-summary.ts +29 -0
  667. package/src/interactive/renderers/retry-status.ts +12 -4
  668. package/src/interactive/renderers/tool-execution.ts +4 -4
  669. package/src/interactive/renderers/worker-entry.ts +122 -14
  670. package/src/interactive/session-transcript.ts +3 -3
  671. package/src/interactive/slash-autocomplete.ts +454 -165
  672. package/src/interactive/slash-commands.ts +521 -189
  673. package/src/interactive/slash-spec.ts +160 -17
  674. package/src/interactive/status/controller.ts +2 -2
  675. package/src/interactive/stream-pacing-policy.ts +1 -1
  676. package/src/interactive/tasks-overlay.ts +21 -13
  677. package/src/interactive/terminal-lease.ts +6 -7
  678. package/src/interactive/theme/tokens.ts +3 -14
  679. package/src/interactive/turn-context.ts +58 -13
  680. package/src/interactive/turn-persistence.ts +2 -2
  681. package/src/interactive/turn-prewarm.ts +2 -2
  682. package/src/interactive/turn-runtime.ts +8 -8
  683. package/src/interactive/turn-state.ts +1 -1
  684. package/src/interactive/view/artifacts.ts +120 -9
  685. package/src/interactive/view/view-overlay.ts +14 -10
  686. package/src/interactive/watch-pane.ts +180 -0
  687. package/src/interactive/welcome-dashboard.ts +15 -15
  688. package/src/interactive/worker-progress.ts +11 -5
  689. package/src/interactive/worker-receipts.ts +20 -2
  690. package/src/interactive/worker-stream.ts +6 -4
  691. package/src/interactive/yazi-bridge.ts +451 -0
  692. package/src/tools/ask-user.ts +3 -3
  693. package/src/tools/bash.ts +1 -1
  694. package/src/tools/bootstrap.ts +26 -2
  695. package/src/tools/builtin-tool-catalog.ts +16 -1
  696. package/src/tools/compete-worktrees.ts +108 -17
  697. package/src/tools/context/index.ts +15 -1
  698. package/src/tools/core-bootstrap.ts +2 -1
  699. package/src/tools/dispatch-admission.ts +18 -5
  700. package/src/tools/dispatch-arguments.ts +21 -21
  701. package/src/tools/dispatch-plan.ts +0 -11
  702. package/src/tools/dispatch-run-events.ts +145 -28
  703. package/src/tools/dispatch-runner.ts +40 -13
  704. package/src/tools/dispatch-types.ts +15 -3
  705. package/src/tools/dispatch.ts +2 -2
  706. package/src/tools/executables.ts +17 -14
  707. package/src/tools/find.ts +1 -6
  708. package/src/tools/monitor.ts +4 -4
  709. package/src/tools/observation.ts +54 -4
  710. package/src/tools/observers.ts +0 -33
  711. package/src/tools/panes-surface.ts +38 -0
  712. package/src/tools/panes.ts +112 -0
  713. package/src/tools/policy.ts +10 -1
  714. package/src/tools/presentation.ts +1 -0
  715. package/src/tools/task-worktree.ts +28 -7
  716. package/src/tools/verify/authoring.ts +3 -6
  717. package/src/tools/verify/frontend.ts +1 -1
  718. package/src/tools/web-fetch.ts +1 -1
  719. package/src/worker/entry.ts +4 -3
  720. package/src/worker/protocol.ts +16 -14
  721. package/src/worker/spec-contract.ts +2 -2
  722. package/src/worker/stdin-demux.ts +2 -2
  723. package/dist/chunk-D73KXYPF.js +0 -37
  724. package/dist/chunk-MLOK6ZOS.js +0 -2888
  725. package/dist/chunk-PNY46YEY.js +0 -1581
  726. package/dist/chunk-XDOQXGFO.js +0 -515
  727. package/dist/chunk-YKOFT37S.js +0 -279
  728. package/dist/clio-LT5V7SSZ.js +0 -26
  729. package/dist/configure-2WYWSCSD.js +0 -49
  730. package/dist/doctor-TWBWFK5V.js +0 -165
  731. package/src/engine/apis/degraded-inference.ts +0 -95
  732. /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
  733. /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
@@ -12,6 +12,8 @@ import type { ExtensionsContract } from "../domains/extensions/index.js";
12
12
  import type { InteropContract } from "../domains/interop/index.js";
13
13
  import type { TaskMemoryOperatorStatus } from "../domains/memory/index.js";
14
14
  import { openDetachedBatchViews } from "../domains/middleware/index.js";
15
+ import type { MuxContract } from "../domains/mux/index.js";
16
+ import type { PanesOperations, PanesWatchController } from "../domains/mux/operations.js";
15
17
  import type { ObservabilityContract } from "../domains/observability/index.js";
16
18
  import type { ProvidersContract, ThinkingLevel } from "../domains/providers/index.js";
17
19
  import type { ResourcesContract } from "../domains/resources/index.js";
@@ -40,8 +42,10 @@ import { createProcessInteractiveShell, getActiveRenderTrace } from "./interacti
40
42
  import { createInteractiveSlashRuntime, resolveAvailableThinkingLevels } from "./interactive-slash-runtime.js";
41
43
  import { createInteractiveSubscriptions } from "./interactive-subscriptions.js";
42
44
  import { createInteractiveTickers } from "./interactive-tickers.js";
45
+ import type { createMuxBridge } from "./mux-bridge.js";
43
46
  import { createOverlayLifecycle, type OverlayLifecycleController, type OverlayState } from "./overlay-lifecycle.js";
44
47
  import { interopOverlaySurface } from "./overlays/interop.js";
48
+ import { paneWatchDecision } from "./pane-policy.js";
45
49
  import { writeInputWedgeDump } from "./render-trace.js";
46
50
  import { settleChatBeforeSessionSwitch } from "./session-switch-settlement.js";
47
51
  import { createSessionTranscript } from "./session-transcript.js";
@@ -49,11 +53,14 @@ import type {
49
53
  ContextClearCommandOptions,
50
54
  InitCommandOptions,
51
55
  RunIo,
56
+ SettingsAreaId,
52
57
  TaskMemorySeedCommandResult,
53
58
  } from "./slash-commands.js";
54
59
  import { processAutoPacingAllowed, resolveSmoothStreamingMode } from "./stream-pacing-policy.js";
55
60
  import type { TerminalLease } from "./terminal-lease.js";
61
+ import type { createWatchPaneController } from "./watch-pane.js";
56
62
  import { createWorkspaceFacts } from "./workspace-facts.js";
63
+ import type { createYaziBridge, YaziBridge } from "./yazi-bridge.js";
57
64
 
58
65
  export {
59
66
  IDLE_LEADER_STATE,
@@ -85,20 +92,6 @@ export {
85
92
  type SlashCommandKind,
86
93
  } from "./slash-commands.js";
87
94
 
88
- export function shouldAnnouncePermissionRequest(
89
- seenRequestIds: Set<string>,
90
- requestId: string,
91
- maxSize = 2048,
92
- ): boolean {
93
- if (seenRequestIds.has(requestId)) return false;
94
- seenRequestIds.add(requestId);
95
- if (seenRequestIds.size > maxSize) {
96
- const oldest = seenRequestIds.values().next().value;
97
- if (oldest !== undefined) seenRequestIds.delete(oldest);
98
- }
99
- return true;
100
- }
101
-
102
95
  export function isLiveWorkerEscalationRequest(payload: PermissionRequestedPayload): boolean {
103
96
  if (typeof payload.requestId !== "string") return false;
104
97
  if (payload.escalation !== true) return false;
@@ -130,6 +123,36 @@ export interface InteractiveDeps {
130
123
  extensions?: ExtensionsContract;
131
124
  interop?: InteropContract;
132
125
  share?: ShareContract;
126
+ /**
127
+ * Pane layer. A `none` contract still reaches the interactive surface so the
128
+ * files preset can use its terminal chooser; every mux operation remains
129
+ * best-effort and never reaches a dispatch or a turn.
130
+ */
131
+ mux?: MuxContract;
132
+ /**
133
+ * Pane-layer operations behind `/panes` and the `panes` tool. Built by the
134
+ * composition root so the tool registry and this surface drive one instance.
135
+ */
136
+ panes?: PanesOperations;
137
+ /**
138
+ * Factory seam for the dispatch-to-pane bridge, so a contract test can drive
139
+ * it without a TUI. Production leaves it unset and gets `createMuxBridge`.
140
+ */
141
+ createMuxBridge?: typeof createMuxBridge;
142
+ /** Bind the file-pane return path after the composer and TUI exist. */
143
+ attachYaziBridge?: (bridge: YaziBridge) => () => void;
144
+ /**
145
+ * Watch-pane factory from the `--with-panes` composition root; absent on a
146
+ * plain boot. The controller it builds backs Enter in the workers view.
147
+ */
148
+ createWatchPane?: typeof createWatchPaneController;
149
+ /** Bind the watch controller into the shared PanesOperations for `/panes show`. */
150
+ attachWatchPane?: (controller: PanesWatchController) => () => void;
151
+ /**
152
+ * File-pane factory. Supplied by the `--with-panes` composition root (or a
153
+ * contract test); absent on a plain boot, which therefore loads no yazi code.
154
+ */
155
+ createYaziBridge?: typeof createYaziBridge;
133
156
  /**
134
157
  * Shared tool registry. When wired, the permission overlay opens automatically
135
158
  * whenever a tool call is parked waiting for operator confirmation, and the
@@ -173,12 +196,19 @@ export interface InteractiveDeps {
173
196
  registerAskUserHandler?: (handler: AskUserHandler) => () => void;
174
197
  /** Live CLIO-CODER.md and memory state for the footer Context quadrant. */
175
198
  getContextState?: (cwd?: string) => ContextState;
176
- /** Persist a thinking level set by `/thinking <level>` or `/model <pattern>:<level>`. */
177
- onSetThinkingLevel?: (level: ThinkingLevel) => void;
199
+ /**
200
+ * Persist a thinking level set by `/thinking <level>` or `/model <pattern>:<level>`.
201
+ * Scope "session" leaves settings.yaml alone; omitted means the historical
202
+ * write-through, which is what the Shift+Tab cycle and `/thinking` still want.
203
+ */
204
+ onSetThinkingLevel?: (level: ThinkingLevel, scope?: "session" | "global") => void;
178
205
  /** Persist the next thinking level when Shift+Tab is pressed. */
179
206
  onCycleThinking?: () => void;
180
- /** Persist the orchestrator target selected in /model. */
181
- onSelectModel?: (ref: { target: string; model: string }) => void;
207
+ /**
208
+ * Apply the orchestrator target selected in /model at the scope the operator
209
+ * chose. "session" routes this session only and never touches settings.yaml.
210
+ */
211
+ onSelectModel?: (ref: { target: string; model: string }, scope: "session" | "global") => void;
182
212
  /** Write handler the /settings overlay uses to persist cycled values. */
183
213
  writeSettings?: (next: ClioSettings) => void;
184
214
  /**
@@ -200,7 +230,7 @@ export interface InteractiveDeps {
200
230
  onForkSession?: (parentTurnId: string) => void;
201
231
  /**
202
232
  * Run `/context compact` for the current session. Resolves the compaction model
203
- * (settings.compaction.model with fallback to the orchestrator target),
233
+ * (settings.context.compaction.model with fallback to the chat target),
204
234
  * reads session entries, streams a summary via the session compaction
205
235
  * engine, and persists a compactionSummary entry.
206
236
  */
@@ -239,7 +269,7 @@ export interface InteractiveSubmitExpansion {
239
269
  pendingSkillRequests: PendingSkillRequest[];
240
270
  }
241
271
 
242
- export async function expandInteractiveSubmitAsync(
272
+ async function expandInteractiveSubmitAsync(
243
273
  text: string,
244
274
  resources: ResourcesContract | undefined,
245
275
  cwd = process.cwd(),
@@ -271,7 +301,7 @@ function availableInteractiveThinkingLevels(deps: InteractiveDeps): ReadonlyArra
271
301
  export interface KeyBindingDeps {
272
302
  /**
273
303
  * Keybinding lookup injected by startInteractive. Defaults come from
274
- * CLIO_KEYBINDINGS; user overrides from settings.keybindings. Tests may
304
+ * CLIO_KEYBINDINGS; user overrides from settings.interface.keybindings. Tests may
275
305
  * substitute a narrower matcher via createKeybindingManagerForTesting.
276
306
  */
277
307
  matches: (data: string, id: ClioKeybinding) => boolean;
@@ -322,73 +352,73 @@ export function resolveCtrlCAction(deps: CtrlCActionDeps): CtrlCAction {
322
352
  return "arm-shutdown";
323
353
  }
324
354
 
325
- export function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): boolean {
355
+ function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): boolean {
326
356
  switch (id) {
327
- case "clio.notifications.dismiss":
357
+ case "clio-coder.notifications.dismiss":
328
358
  deps.dismissNotifications();
329
359
  return true;
330
- case "clio.tool.expand":
360
+ case "clio-coder.tool.expand":
331
361
  deps.toggleToolExpansion();
332
362
  return true;
333
- case "clio.tool.expandAll":
363
+ case "clio-coder.tool.expandAll":
334
364
  deps.toggleAllToolExpansion();
335
365
  return true;
336
- case "clio.tool.liveOutput":
366
+ case "clio-coder.tool.liveOutput":
337
367
  deps.toggleLiveToolOutput();
338
368
  return true;
339
- case "clio.editor.external":
369
+ case "clio-coder.editor.external":
340
370
  deps.openExternalEditor();
341
371
  return true;
342
- case "clio.message.followUp":
372
+ case "clio-coder.message.followUp":
343
373
  deps.queueFollowUp();
344
374
  return true;
345
- case "clio.message.interrupt":
375
+ case "clio-coder.message.interrupt":
346
376
  deps.interruptWithMessage();
347
377
  return true;
348
- case "clio.message.dequeue":
378
+ case "clio-coder.message.dequeue":
349
379
  deps.restoreQueuedFollowUps();
350
380
  return true;
351
- case "clio.thinking.expand":
381
+ case "clio-coder.thinking.expand":
352
382
  deps.toggleThinkingExpansion();
353
383
  return true;
354
- case "clio.thinking.expandAll":
384
+ case "clio-coder.thinking.expandAll":
355
385
  deps.toggleAllThinkingExpansion();
356
386
  return true;
357
- case "clio.status.toggle":
387
+ case "clio-coder.status.toggle":
358
388
  deps.toggleStatus();
359
389
  return true;
360
- case "clio.thinking.cycle":
390
+ case "clio-coder.thinking.cycle":
361
391
  deps.cycleThinking();
362
392
  return true;
363
- case "clio.session.tree":
393
+ case "clio-coder.session.tree":
364
394
  deps.openTree();
365
395
  return true;
366
- case "clio.dispatchBoard.toggle":
396
+ case "clio-coder.dispatchBoard.toggle":
367
397
  deps.toggleDispatchBoard();
368
398
  return true;
369
- case "clio.tasks.open":
399
+ case "clio-coder.tasks.open":
370
400
  deps.openTasks();
371
401
  return true;
372
- case "clio.decisions.open":
402
+ case "clio-coder.decisions.open":
373
403
  deps.openDecisions();
374
404
  return true;
375
- case "clio.dispatch.background":
405
+ case "clio-coder.dispatch.background":
376
406
  deps.backgroundDispatch();
377
407
  return true;
378
- case "clio.model.select":
408
+ case "clio-coder.model.select":
379
409
  deps.openModelSelector();
380
410
  return true;
381
- case "clio.model.cycleBackward":
411
+ case "clio-coder.model.cycleBackward":
382
412
  deps.cycleScopedModelBackward();
383
413
  return true;
384
- case "clio.model.cycleForward":
414
+ case "clio-coder.model.cycleForward":
385
415
  deps.cycleScopedModelForward();
386
416
  return true;
387
- case "clio.exit":
417
+ case "clio-coder.exit":
388
418
  if (deps.canExit && !deps.canExit()) return false;
389
419
  deps.requestShutdown();
390
420
  return true;
391
- case "clio.leader":
421
+ case "clio-coder.leader":
392
422
  return false;
393
423
  }
394
424
  }
@@ -396,20 +426,20 @@ export function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDe
396
426
  /** Pure key router: returns true when the input was consumed. */
397
427
  export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean {
398
428
  const order: ClioKeybinding[] = [
399
- "clio.status.toggle",
400
- "clio.thinking.cycle",
401
- "clio.session.tree",
402
- "clio.dispatchBoard.toggle",
403
- "clio.tasks.open",
404
- "clio.decisions.open",
405
- "clio.dispatch.background",
406
- "clio.model.select",
429
+ "clio-coder.status.toggle",
430
+ "clio-coder.thinking.cycle",
431
+ "clio-coder.session.tree",
432
+ "clio-coder.dispatchBoard.toggle",
433
+ "clio-coder.tasks.open",
434
+ "clio-coder.decisions.open",
435
+ "clio-coder.dispatch.background",
436
+ "clio-coder.model.select",
407
437
  // Match cycleBackward before cycleForward so a user rebind where one key
408
438
  // is a prefix of the other resolves to the more specific binding first.
409
439
  // The defaults (alt+k / alt+j) do not prefix-match each other.
410
- "clio.model.cycleBackward",
411
- "clio.model.cycleForward",
412
- "clio.exit",
440
+ "clio-coder.model.cycleBackward",
441
+ "clio-coder.model.cycleForward",
442
+ "clio-coder.exit",
413
443
  ];
414
444
  for (const id of order) {
415
445
  if (deps.matches(data, id)) return dispatchInteractiveAction(id, deps);
@@ -418,13 +448,13 @@ export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean
418
448
  }
419
449
 
420
450
  export async function createInteractiveApplication(deps: InteractiveDeps): Promise<number> {
421
- const initialSmoothStreaming = resolveSmoothStreamingMode(deps.getSettings?.().terminal.smoothStreaming ?? "off");
451
+ const initialSmoothStreaming = resolveSmoothStreamingMode(deps.getSettings?.().interface.smoothStreaming ?? "off");
422
452
  const initialAutoPacingAllowed = processAutoPacingAllowed(false);
423
453
  const lease = deps.terminalLease;
424
454
  const shell =
425
455
  lease?.shell ??
426
456
  createProcessInteractiveShell({
427
- tuiMode: deps.getSettings?.().terminal.tuiMode ?? "regular",
457
+ tuiMode: deps.getSettings?.().interface.mode ?? "regular",
428
458
  streamPacingActive:
429
459
  initialSmoothStreaming === "on" || (initialSmoothStreaming === "auto" && initialAutoPacingAllowed),
430
460
  ...(deps.onFirstFrameCommit ? { onFirstFrameCommit: deps.onFirstFrameCommit } : {}),
@@ -567,6 +597,31 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
567
597
  chatRenderer,
568
598
  io,
569
599
  } = presentation;
600
+ // The factory arrives only from an active `--with-panes` boot (or a test); a
601
+ // plain session has no deps.panes and no factory, and loads no yazi code.
602
+ const yaziBridge =
603
+ deps.panes && deps.createYaziBridge
604
+ ? deps.createYaziBridge({
605
+ ...(deps.mux ? { mux: deps.mux } : {}),
606
+ getDraft: () => editor.getText(),
607
+ setDraft: (text) => editor.setText(text),
608
+ requestRender: () => tui.requestRender(),
609
+ notice: (level, text) => notify(level, text, `yazi:${level}`),
610
+ getCwd: () => process.cwd(),
611
+ getSettings: () =>
612
+ deps.getSettings?.().interface.panes.files ?? {
613
+ mode: "companion",
614
+ profile: "managed",
615
+ followCwd: true,
616
+ },
617
+ stopUi: () => tui.stop(),
618
+ startUi: () => {
619
+ tui.start();
620
+ tui.requestRender(true);
621
+ },
622
+ })
623
+ : null;
624
+ const detachYaziBridge = yaziBridge ? deps.attachYaziBridge?.(yaziBridge) : undefined;
570
625
  refreshPresentationFooter = () => footer.refresh();
571
626
  const agentProgress = createAgentProgress(terminal);
572
627
  // Desktop notifications are a protocol write on the terminal owner, issued
@@ -575,7 +630,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
575
630
  // `CLIO_CODER_INTERACTIVE=1` forced the interactive surface on.
576
631
  const desktopNotifications = createInteractiveDesktopNotifications({
577
632
  write: (data) => terminal.write(data),
578
- enabled: () => deps.getSettings?.().terminal.notify ?? false,
633
+ enabled: () => deps.getSettings?.().interface.desktopNotifications ?? false,
579
634
  interactiveTty: () => process.stdout.isTTY === true,
580
635
  getOpenBatches: () => openDetachedBatchViews(deps.dispatch),
581
636
  });
@@ -617,7 +672,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
617
672
  appendTranscriptNotice: (level, text) => appendNotice(level, text, busNoticeSink),
618
673
  refreshSettingsOverlay: () => overlayLifecycle.refreshSettingsOverlay(),
619
674
  onConfigHotReload: (settings) => {
620
- const mode = resolveSmoothStreamingMode(settings.terminal.smoothStreaming);
675
+ const mode = resolveSmoothStreamingMode(settings.interface.smoothStreaming);
621
676
  const autoAllowed = processAutoPacingAllowed(shell.hasObservedBackpressure());
622
677
  chatRenderer.setSmoothStreamingMode(mode);
623
678
  shell.setStreamPacingActive(mode === "on" || (mode === "auto" && autoAllowed));
@@ -674,6 +729,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
674
729
  openSideQuestion: (question) => openSideQuestionOverlayState(question),
675
730
  startHandoff: (goal) => startHandoffState(goal),
676
731
  startFleetRun: (name, vars) => startFleetRunState(name, vars),
732
+ openFleetRuns: () => toggleDispatchBoardOverlay(),
677
733
  ...(toolRegistry ? { runCouncilDispatch: (args) => dispatchCouncilThroughRegistry(toolRegistry, args) } : {}),
678
734
  openContextView: () => openContextViewOverlayState(),
679
735
  openTasks: () => openTasksOverlayState(),
@@ -681,8 +737,25 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
681
737
  openMemory: () => openMemoryOverlayState(),
682
738
  ...(deps.seedTaskMemory ? { seedTaskMemory: deps.seedTaskMemory } : {}),
683
739
  openView: (filter) => openViewOverlayState(filter),
740
+ ...(deps.panes ? { panes: deps.panes } : {}),
684
741
  openModel: () => openModelOverlayState(),
685
- openSettings: (section, rowId) => openSettingsOverlayState(section, rowId),
742
+ openModelScope: (ref) => openModelScopeState(ref),
743
+ openSettings: (area, group) => {
744
+ if (!area) return openSettingsOverlayState();
745
+ // Compatibility adapter until the seven-area Settings shell replaces
746
+ // the legacy section ids. Slash grammar never exposes these old names.
747
+ if (area === "chat" && group === "model-picker") return openSettingsOverlayState("models", "scope");
748
+ const section = {
749
+ chat: "orchestrator",
750
+ fleet: "fleet",
751
+ targets: "targets",
752
+ context: "compaction",
753
+ safety: "safety",
754
+ interface: "terminal",
755
+ integrations: "advanced",
756
+ } satisfies Record<SettingsAreaId, Parameters<typeof openSettingsOverlayState>[0]>;
757
+ openSettingsOverlayState(section[area]);
758
+ },
686
759
  openResume: () => openResumeOverlayState(),
687
760
  startNewSession: () => startNewSession(),
688
761
  openTree: () => openTreeOverlayState(),
@@ -789,6 +862,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
789
862
  openMemoryOverlayState,
790
863
  openViewOverlayState,
791
864
  openModelOverlayState,
865
+ openModelScopeState,
792
866
  openSettingsOverlayState,
793
867
  openResumeOverlayState,
794
868
  openTreeOverlayState,
@@ -799,6 +873,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
799
873
  openPromptsOverlayState,
800
874
  openExtensionsOverlayState,
801
875
  openInteropOverlayState,
876
+ toggleDispatchBoardOverlay,
802
877
  } = overlayLifecycle;
803
878
 
804
879
  const dispatchSteering = createDispatchSteering({
@@ -866,6 +941,80 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
866
941
  };
867
942
  notify(outcome.ok ? "success" : "info", outcome.message, "dispatch:background");
868
943
  };
944
+ // Built only when a pane host answered detection, so a session with no
945
+ // panes subscribes to nothing and the bus handlers do not exist at all.
946
+ // The factories arrive from the `--with-panes` composition root (or a
947
+ // test); a plain session loads none of the bridge code.
948
+ const mux = deps.mux;
949
+ const muxBridge =
950
+ mux && mux.mode !== "none" && deps.createMuxBridge
951
+ ? deps.createMuxBridge({
952
+ bus: deps.bus,
953
+ mux,
954
+ notificationsPolicy: () => deps.getSettings?.().interface.panes.notifications ?? "failures",
955
+ log: (level, message) => {
956
+ if (level === "warning") notify("warning", message, "mux:bridge");
957
+ },
958
+ notice: (level, text) => appendNotice(level, text, busNoticeSink),
959
+ })
960
+ : null;
961
+ // The workers-view watch pane: opened on Enter over a live run, retargeted
962
+ // by arrow keys through its selection file. `/panes show` and the panes
963
+ // tool drive the same controller through the shared operations object.
964
+ const watchPane =
965
+ mux && mux.mode !== "none" && deps.createWatchPane
966
+ ? deps.createWatchPane({
967
+ mux,
968
+ getCwd: () => process.cwd(),
969
+ getWorkersRatio: () => deps.getSettings?.().interface.panes.workers.ratio ?? 0.34,
970
+ })
971
+ : null;
972
+ const detachWatchPane = watchPane ? deps.attachWatchPane?.(watchPane) : undefined;
973
+ // Boot composition per `interface.panes.layout`: `workers` opens the workers
974
+ // dock parked on "no selection"; `cockpit` adds the files dock. Fire and
975
+ // forget, and only against a live pane host: a boot must never fall through
976
+ // to the in-terminal chooser or block the first paint on socket traffic.
977
+ {
978
+ const bootSettings = deps.getSettings?.();
979
+ const layout = bootSettings?.interface.panes.layout ?? "off";
980
+ if (layout !== "off" && mux?.available()) {
981
+ void watchPane?.ensureOpen();
982
+ if (layout === "cockpit" && bootSettings?.interface.panes.files.enabled) void yaziBridge?.open();
983
+ }
984
+ }
985
+ const selectedWatchableRun = (): { runId: string; agentId: string } | null => {
986
+ if (!watchPane) return null;
987
+ const row = dispatchBoard.selectedRow();
988
+ if (!row) return null;
989
+ const decision = paneWatchDecision({ source: "workers-view", runStatus: row.status });
990
+ return decision.open ? { runId: row.runId, agentId: row.agentId } : null;
991
+ };
992
+ /**
993
+ * Enter in the workers view. True means the watch pane took the key; false
994
+ * (panes off, nothing watchable under the policy) falls back to the inline
995
+ * worker-progress detail, so a terminal run's Enter still expands its card.
996
+ */
997
+ const watchSelectedDispatch = (): boolean => {
998
+ const selected = selectedWatchableRun();
999
+ if (!watchPane || !selected) return false;
1000
+ void watchPane.watch(selected.runId).then((result) => {
1001
+ if (result.status === "watching") {
1002
+ if (result.opened) {
1003
+ notify("success", `watching ${selected.agentId} (${selected.runId}) in a pane`, "panes:watch");
1004
+ }
1005
+ } else {
1006
+ notify("warning", result.reason, "panes:watch");
1007
+ }
1008
+ tui.requestRender();
1009
+ });
1010
+ return true;
1011
+ };
1012
+ /** Arrow keys: the watch pane follows the cursor, but only once it exists. */
1013
+ const followBoardSelection = (): void => {
1014
+ if (!watchPane?.isOpen()) return;
1015
+ const selected = selectedWatchableRun();
1016
+ if (selected) watchPane.follow(selected.runId);
1017
+ };
869
1018
  const interactiveSubscriptions = createInteractiveSubscriptions({
870
1019
  bus: deps.bus,
871
1020
  refreshFooter: () => footer.refresh(),
@@ -916,7 +1065,18 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
916
1065
  onShutdownArmedChange: (armed) => {
917
1066
  shutdownArmed = armed;
918
1067
  },
919
- dispatchBoard,
1068
+ dispatchBoard: {
1069
+ selectPrevious: () => {
1070
+ dispatchBoard.selectPrevious();
1071
+ followBoardSelection();
1072
+ },
1073
+ selectNext: () => {
1074
+ dispatchBoard.selectNext();
1075
+ followBoardSelection();
1076
+ },
1077
+ toggleDetail: () => dispatchBoard.toggleDetail(),
1078
+ },
1079
+ watchSelectedDispatch,
920
1080
  steerSelectedDispatch,
921
1081
  cancelSelectedDispatch,
922
1082
  cancelActiveEditorBash: () => editorSubmit.cancelActiveEditorBash(),
@@ -955,7 +1115,14 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
955
1115
  disposeOverlay: overlayLifecycle.dispose,
956
1116
  stopAgentProgress: agentProgress.stop,
957
1117
  disposeChat: () => deps.chat.dispose(),
958
- disposeSubscriptions: interactiveSubscriptions.dispose,
1118
+ disposeSubscriptions: () => {
1119
+ detachYaziBridge?.();
1120
+ yaziBridge?.dispose();
1121
+ detachWatchPane?.();
1122
+ watchPane?.dispose();
1123
+ muxBridge?.dispose();
1124
+ interactiveSubscriptions.dispose();
1125
+ },
959
1126
  },
960
1127
  beforeStopUi: (() => {
961
1128
  let settlement: Promise<void> | null = null;
@@ -218,7 +218,7 @@ export function createInteractiveEventProjection(deps: InteractiveEventProjectio
218
218
 
219
219
  remainingUnsubscribers.push(
220
220
  deps.chat.onEvent((event) => {
221
- const showProgress = deps.getSettings?.().terminal.showTerminalProgress ?? false;
221
+ const showProgress = deps.getSettings?.().interface.terminalProgress ?? false;
222
222
  if (event.type === "agent_start" && showProgress) deps.startTerminalProgress();
223
223
  else if (event.type === "agent_end") {
224
224
  deps.stopTerminalProgress();
@@ -82,6 +82,8 @@ export interface InteractiveInputRuntimeDeps {
82
82
  selectNext(): void;
83
83
  toggleDetail(): void;
84
84
  };
85
+ /** Enter in the workers view; false falls through to the detail toggle. */
86
+ watchSelectedDispatch: () => boolean;
85
87
  steerSelectedDispatch: () => void;
86
88
  cancelSelectedDispatch: () => void;
87
89
  cancelActiveEditorBash: () => boolean;
@@ -183,7 +185,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
183
185
  restoreQueuedFollowUps: deps.editorSubmit.restoreQueuedFollowUpsToEditor,
184
186
  });
185
187
  const leaderKeys = createLeaderKeyController({
186
- matchesLeader: (input) => deps.keybindings.matches(input, "clio.leader"),
188
+ matchesLeader: (input) => deps.keybindings.matches(input, "clio-coder.leader"),
187
189
  leaderTargets: () => deps.keybindings.leaderTargets(),
188
190
  dispatchAction: (id) => deps.dispatchAction(id, keyActionDeps()),
189
191
  isRelease: isKeyRelease,
@@ -238,6 +240,11 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
238
240
  deps.dispatchBoard.toggleDetail();
239
241
  deps.requestRender();
240
242
  },
243
+ watchSelectedDispatch: () => {
244
+ const handled = deps.watchSelectedDispatch();
245
+ if (handled) deps.requestRender();
246
+ return handled;
247
+ },
241
248
  steerSelectedDispatch: deps.steerSelectedDispatch,
242
249
  cancelSelectedDispatch: deps.cancelSelectedDispatch,
243
250
  cancelAskUser: () => deps.overlay.cancelAskUser(),
@@ -295,7 +302,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
295
302
  deps.reportShutdownFailure ??
296
303
  ((step, error) => {
297
304
  process.stderr.write(
298
- `[clio:interactive] ${step} failed: ${error instanceof Error ? error.message : String(error)}\n`,
305
+ `[clio-coder:interactive] ${step} failed: ${error instanceof Error ? error.message : String(error)}\n`,
299
306
  );
300
307
  }),
301
308
  });
@@ -1,5 +1,6 @@
1
1
  import { performance } from "node:perf_hooks";
2
2
  import type { ClioSettings } from "../core/config.js";
3
+ import { DEFAULT_SETTINGS } from "../core/defaults.js";
3
4
  import type { SafeEventBus } from "../core/event-bus.js";
4
5
  import type { ContextState } from "../domains/context/index.js";
5
6
  import type { DispatchContract } from "../domains/dispatch/contract.js";
@@ -209,7 +210,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
209
210
  const getCwd = deps.getCwd ?? (() => process.cwd());
210
211
  const now = deps.now ?? performance.now.bind(performance);
211
212
  const requestRender = (): void => deps.tui.requestRender();
212
- const settings = deps.getSettings?.() ?? ({ keybindings: {} } as ClioSettings);
213
+ const settings = deps.getSettings?.() ?? structuredClone(DEFAULT_SETTINGS);
213
214
  const keybindings = deps.keybindings ?? factories.createKeybindings(settings);
214
215
  const { getExtensionStats, getLiveWorkspaceSnapshot, getWorkspaceSnapshot, refreshLiveWorkspaceGit } =
215
216
  deps.workspaceFacts;
@@ -229,15 +230,15 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
229
230
  const renderTrace = getActiveRenderTrace();
230
231
  const chatPanel = factories.createChatPanel({
231
232
  getToolExpandKey: () => {
232
- const first = keybindings.getKeys("clio.tool.expand")[0];
233
+ const first = keybindings.getKeys("clio-coder.tool.expand")[0];
233
234
  return typeof first === "string" && first.length > 0 ? first : undefined;
234
235
  },
235
- getOutputVerbosity: () => deps.getSettings?.().terminal.outputVerbosity ?? "default",
236
+ getOutputVerbosity: () => deps.getSettings?.().interface.outputDetail ?? "default",
236
237
  ...(renderTrace ? { onRenderMetrics: (metrics) => renderTrace.recordPanelRender(metrics) } : {}),
237
238
  });
238
239
  const followUpQueuePanel = factories.createFollowUpQueuePanel({
239
240
  getDequeueKey: () => {
240
- const first = keybindings.getKeys("clio.message.dequeue")[0];
241
+ const first = keybindings.getKeys("clio-coder.message.dequeue")[0];
241
242
  return typeof first === "string" && first.length > 0 ? first : undefined;
242
243
  },
243
244
  });
@@ -320,8 +321,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
320
321
  outputTokens,
321
322
  durationMs,
322
323
  ttftMs: Math.max(0, liveThroughput.firstDeltaAt - liveThroughput.startedAt),
323
- providerId: settings?.orchestrator?.target ?? "",
324
- modelId: settings?.orchestrator?.model ?? "",
324
+ providerId: settings?.chat?.target ?? "",
325
+ modelId: settings?.chat?.model ?? "",
325
326
  recordedAt: Date.now(),
326
327
  };
327
328
  };
@@ -337,7 +338,11 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
337
338
  };
338
339
  const dismissContextBootstrapNotices = (): void => {
339
340
  for (const notice of notifications.list()) {
340
- if (/^clio: (No CLIO\.md detected|malformed CLIO\.md ignored|Imported agent context changed)/.test(notice.text)) {
341
+ if (
342
+ /^(?:clio-coder|clio): (No CLIO(?:-CODER)?\.md detected|malformed CLIO(?:-CODER)?\.md ignored|Imported agent context changed)/.test(
343
+ notice.text,
344
+ )
345
+ ) {
341
346
  notifications.dismiss(notice.id);
342
347
  }
343
348
  }
@@ -390,7 +395,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
390
395
  },
391
396
  getLastTurnSummary: () => lastTurnSummary,
392
397
  getNotifications: () => notifications.list(),
393
- dismissKeyLabel: formatKeyLabel(keybindings.getKeys("clio.notifications.dismiss")[0]),
398
+ dismissKeyLabel: formatKeyLabel(keybindings.getKeys("clio-coder.notifications.dismiss")[0]),
394
399
  };
395
400
  footer = factories.buildFooter(footerDeps);
396
401
  const unsubscribeObservability = deps.observability.subscribe((snapshot) => {
@@ -403,18 +408,18 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
403
408
  getModelLabel: () => {
404
409
  const current = deps.getSettings?.();
405
410
  // The rail is the narrowest of the three, so it drops the spaces.
406
- return formatTargetLabel(current?.orchestrator?.target, current?.orchestrator?.model, { separator: "·" });
411
+ return formatTargetLabel(current?.chat?.target, current?.chat?.model, { separator: "·" });
407
412
  },
408
413
  getThinkingLabel: () => {
409
414
  const current = deps.getSettings?.();
410
415
  return (
411
416
  resolveModelRuntimeCapabilitiesForProviders(
412
417
  deps.providers,
413
- current?.orchestrator?.target,
414
- current?.orchestrator?.model,
415
- current?.orchestrator?.thinkingLevel ?? "off",
418
+ current?.chat?.target,
419
+ current?.chat?.model,
420
+ current?.chat?.thinkingLevel ?? "off",
416
421
  )?.thinking.display ??
417
- current?.orchestrator?.thinkingLevel ??
422
+ current?.chat?.thinkingLevel ??
418
423
  "off"
419
424
  );
420
425
  },
@@ -447,7 +452,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
447
452
  ? {
448
453
  streamIngress: deps.resolveStreamIngress,
449
454
  getSmoothStreamingMode: () => {
450
- const mode = resolveSmoothStreamingMode(deps.getSettings?.().terminal.smoothStreaming ?? "off");
455
+ const mode = resolveSmoothStreamingMode(deps.getSettings?.().interface.smoothStreaming ?? "off");
451
456
  const autoAllowed = processAutoPacingAllowed(deps.hasObservedBackpressure?.() ?? false);
452
457
  deps.onSmoothStreamingMode?.(mode, mode === "on" || (mode === "auto" && autoAllowed));
453
458
  return mode;
@@ -487,8 +492,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
487
492
  footer: footer.view,
488
493
  },
489
494
  {
490
- mode: settings.terminal?.tuiMode ?? "regular",
491
- fullscreenScrollbar: settings.terminal?.fullscreenScrollbar ?? "auto",
495
+ mode: settings.interface?.mode ?? "regular",
496
+ fullscreenScrollbar: settings.interface?.fullscreenScrollbar ?? "auto",
492
497
  },
493
498
  );
494
499
  deps.mount?.(root, editor);