@iowarp/clio-coder 0.4.0 → 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 (581) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +116 -16
  3. package/dist/{acp-G5WJBNCT.js → acp-ZILU3AUO.js} +14 -14
  4. package/dist/{agents-FMV2Q5G4.js → agents-HYWGBGQR.js} +40 -29
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-3IDSJEIK.js → auth-N3QT7CBO.js} +21 -19
  7. package/dist/{builtins-XCZWXSC7.js → builtins-UJLMOVOV.js} +6 -6
  8. package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
  9. package/dist/{chunk-3BT2XMV4.js → chunk-2NM363SV.js} +50 -57
  10. package/dist/{chunk-J4W7KFM7.js → chunk-2VG7KLYV.js} +24 -279
  11. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  12. package/dist/{chunk-K5C3NCBD.js → chunk-3I5NY75V.js} +5 -5
  13. package/dist/{chunk-VAZSBTKF.js → chunk-3QSOM6PA.js} +2 -2
  14. package/dist/{chunk-TZ3SGWZZ.js → chunk-5QIAJV2D.js} +2 -2
  15. package/dist/{chunk-OQBA45DZ.js → chunk-5YHDIDBP.js} +2 -2
  16. package/dist/{chunk-NHLBIGRH.js → chunk-6CCS4G3W.js} +40 -17
  17. package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
  18. package/dist/{chunk-LDQ2ZF2M.js → chunk-6FN3E6KX.js} +5 -5
  19. package/dist/{chunk-X3YGUTOB.js → chunk-6HMJX2VU.js} +59 -59
  20. package/dist/{chunk-VEO4AP2K.js → chunk-6I5ILFOF.js} +3 -2
  21. package/dist/{chunk-B7OBL7PK.js → chunk-6NJQITNH.js} +18 -11
  22. package/dist/{chunk-IQ7KR472.js → chunk-6VC4OV3Z.js} +6 -3
  23. package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
  24. package/dist/{chunk-AB44T6BB.js → chunk-74YWRRU5.js} +8 -7
  25. package/dist/{chunk-SJ5ZKQ4S.js → chunk-7EPLI7VL.js} +2 -2
  26. package/dist/{chunk-HWHKMHUA.js → chunk-7OBGU7UB.js} +3 -3
  27. package/dist/{chunk-2OQE55CK.js → chunk-7PWAODYW.js} +2 -2
  28. package/dist/{chunk-IBEBSCYA.js → chunk-7RY5VZPH.js} +42 -33
  29. package/dist/{chunk-LQ3DZAMX.js → chunk-ABLSQ6JX.js} +2 -2
  30. package/dist/{chunk-QLFS5GO2.js → chunk-AFKWHWXF.js} +12 -22
  31. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  32. package/dist/{chunk-O6TL7WWY.js → chunk-AKB4GYDL.js} +4 -4
  33. package/dist/chunk-AP73CFDC.js +308 -0
  34. package/dist/{chunk-JDG2WCRO.js → chunk-BBTJOK6Y.js} +5 -5
  35. package/dist/{chunk-SP2RXXYO.js → chunk-BDPT6GTK.js} +10 -10
  36. package/dist/{chunk-NQQH3YT7.js → chunk-BJGUKIG4.js} +3 -3
  37. package/dist/{chunk-O4XIVISU.js → chunk-BTGG6BG2.js} +79 -38
  38. package/dist/chunk-BTK3SSSK.js +67 -0
  39. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  40. package/dist/chunk-BWW4HLO4.js +301 -0
  41. package/dist/{chunk-I5VEOC6I.js → chunk-C537JADH.js} +10 -10
  42. package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
  43. package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
  44. package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
  45. package/dist/chunk-D7E7WCDF.js +27 -0
  46. package/dist/{chunk-WZR7K7ZX.js → chunk-E67WX76H.js} +6 -6
  47. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  48. package/dist/chunk-EIMVLWB3.js +1842 -0
  49. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  50. package/dist/{chunk-MLKNTWH2.js → chunk-FYUN5KZ3.js} +21 -21
  51. package/dist/{chunk-YJX4SHTD.js → chunk-GIZNH63R.js} +1 -1
  52. package/dist/{chunk-X75E3D2N.js → chunk-GPPB3JBE.js} +18 -16
  53. package/dist/{chunk-GR5G2PVF.js → chunk-GVQJ5CCZ.js} +15 -10
  54. package/dist/chunk-HJWWJ6IL.js +184 -0
  55. package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
  56. package/dist/{chunk-VYMXRQI6.js → chunk-HUAS7ITX.js} +89 -93
  57. package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
  58. package/dist/{chunk-DYJP44XW.js → chunk-IG7BCQBA.js} +1 -1
  59. package/dist/{chunk-32KWKNSF.js → chunk-IXJT6DCX.js} +3 -3
  60. package/dist/{chunk-C2LTL2W6.js → chunk-J4HBWF6Y.js} +360 -172
  61. package/dist/chunk-J5LZHVIT.js +284 -0
  62. package/dist/{chunk-QLL7ILRG.js → chunk-JA5QWE4Z.js} +510 -202
  63. package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
  64. package/dist/{chunk-36EJLSQQ.js → chunk-JZWT5J3Y.js} +4 -4
  65. package/dist/{chunk-HZHHCK24.js → chunk-K6BF4U2H.js} +476 -322
  66. package/dist/{chunk-Z2RR6MAK.js → chunk-MA3H6DM5.js} +6 -6
  67. package/dist/{chunk-CODPRO7Q.js → chunk-MOPSG2X7.js} +6 -6
  68. package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
  69. package/dist/{chunk-YDFRH54B.js → chunk-N5UK64DP.js} +4 -4
  70. package/dist/chunk-NDDGJUXD.js +81 -0
  71. package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
  72. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  73. package/dist/{chunk-W5VSYASO.js → chunk-OJTRZGR3.js} +46 -87
  74. package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
  75. package/dist/{chunk-3URVFKWK.js → chunk-PJJ6MY27.js} +5 -5
  76. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  77. package/dist/{chunk-GKF55TAZ.js → chunk-PVAMAVBB.js} +3 -2
  78. package/dist/{chunk-6DB53AJS.js → chunk-QKIFBZKT.js} +7 -7
  79. package/dist/{chunk-HJJTYUHX.js → chunk-QMXC4JB7.js} +20 -20
  80. package/dist/chunk-QTFGO774.js +644 -0
  81. package/dist/{chunk-CY6FY24N.js → chunk-R23Z6K6I.js} +2 -2
  82. package/dist/{chunk-ULC6OTWO.js → chunk-R32CLGZ6.js} +13 -13
  83. package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
  84. package/dist/{chunk-F4CKPOEQ.js → chunk-SCYB3HA4.js} +72 -26
  85. package/dist/{chunk-LY4S7GJC.js → chunk-SINK3QR6.js} +18 -16
  86. package/dist/{chunk-U77AMWDL.js → chunk-TD3PGPQA.js} +43 -22
  87. package/dist/{chunk-QBJA7R7N.js → chunk-THYWACCR.js} +2 -2
  88. package/dist/{chunk-QREDIESB.js → chunk-TVH4ONAM.js} +14 -8
  89. package/dist/chunk-U2WB7TZS.js +271 -0
  90. package/dist/{chunk-KFZI4NIL.js → chunk-UAPGZHYC.js} +145 -31
  91. package/dist/{chunk-DQITNCXG.js → chunk-UEDMSP56.js} +29 -14
  92. package/dist/{chunk-3XML7CDN.js → chunk-UXN6JT4W.js} +2 -2
  93. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  94. package/dist/{chunk-BPKCPIL7.js → chunk-VEGN6WIQ.js} +2 -2
  95. package/dist/chunk-VKFQTNDV.js +66 -0
  96. package/dist/{chunk-7MCTRUCE.js → chunk-VKRH2TCS.js} +2 -2
  97. package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
  98. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  99. package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
  100. package/dist/{chunk-SUCTJL45.js → chunk-WR6U3OVP.js} +3 -3
  101. package/dist/{chunk-BUMFYQFY.js → chunk-XKA2ICR3.js} +124 -113
  102. package/dist/{chunk-UXMFQ54G.js → chunk-Y45G3AXC.js} +39 -39
  103. package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
  104. package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
  105. package/dist/{chunk-V5DHCITQ.js → chunk-ZAZB4JMW.js} +23 -12
  106. package/dist/{chunk-Z4TXYIEG.js → chunk-ZJLUDYFY.js} +9 -9
  107. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  108. package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
  109. package/dist/cli/index.js +36 -36
  110. package/dist/{clio-2JXHBBY5.js → clio-IT3G3VQH.js} +12 -13
  111. package/dist/{code-nav-3YYRMYNF.js → code-nav-RK6S7F6E.js} +5 -5
  112. package/dist/codewiki/build-worker.js +1 -1
  113. package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
  114. package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
  115. package/dist/{config-QZPCMYSO.js → config-3QZRWZJF.js} +53 -49
  116. package/dist/{configure-TEGEBYCA.js → configure-FL7Y3KJF.js} +25 -22
  117. package/dist/{context-E6H5RNMC.js → context-5HE7ODYK.js} +47 -43
  118. package/dist/{context-AV7OEZ4D.js → context-KYQFRVDC.js} +11 -11
  119. package/dist/{context-GSXUE4CT.js → context-XNHL75JV.js} +32 -19
  120. package/dist/{context-clear-SHIBYK6T.js → context-clear-N545L53A.js} +47 -43
  121. package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-QHKXSV2F.js} +10 -9
  122. package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-RGIE5PCT.js} +56 -47
  123. package/dist/{docs-23KQS3XK.js → docs-5NAF6AU7.js} +5 -11
  124. package/dist/doctor-ZGPEGHIP.js +772 -0
  125. package/dist/{eval-TFBYQH4H.js → eval-GXLL44RD.js} +63 -45
  126. package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-HBWSWQOK.js} +7 -8
  127. package/dist/{evidence-ERGESKGN.js → evidence-HWLBRH3Q.js} +44 -40
  128. package/dist/{evolve-VDXTSYCJ.js → evolve-FTZBMNVW.js} +43 -39
  129. package/dist/{extensions-7BGBHN57.js → extensions-VHRBEID7.js} +4 -4
  130. package/dist/{fleet-2RRVDF2V.js → fleet-CKZHJWZJ.js} +86 -73
  131. package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EXDXBMV6.js} +10 -9
  132. package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-OTHB6KRL.js} +5 -5
  133. package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-YTEZUCUT.js} +13 -11
  134. package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-SS6YMDCK.js} +44 -41
  135. package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-PBY4VYOM.js} +5 -9
  136. package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-KMEM5L3S.js} +16 -13
  137. package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-QD5M7E7Q.js} +42 -39
  138. package/dist/{fleet-view-ZCON35AG.js → fleet-view-WAMJYNDT.js} +44 -52
  139. package/dist/{init-DN2WWLFE.js → init-5XQRBOFV.js} +63 -58
  140. package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
  141. package/dist/{interop-OZBKXAYL.js → interop-34TVO25M.js} +13 -11
  142. package/dist/{library-YWZG7IMW.js → library-3QY6KF57.js} +17 -14
  143. package/dist/{memory-I4C4HMLW.js → memory-L4UTIIIW.js} +45 -41
  144. package/dist/{models-CEYXJBO6.js → models-ZVX3QOWE.js} +39 -31
  145. package/dist/{monitor-NZ6GCI3P.js → monitor-CEKVSYTS.js} +50 -46
  146. package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-77BAP6BC.js} +1807 -1039
  147. package/dist/{panes-KY6W3V2E.js → panes-7STHOAUJ.js} +4 -4
  148. package/dist/{panes-HMABYVO4.js → panes-SHAUIRXY.js} +10 -8
  149. package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
  150. package/dist/{reset-DQ6FGCSH.js → reset-EOLM7GVE.js} +7 -8
  151. package/dist/{resources-BB3MVJMD.js → resources-74GKTLSF.js} +17 -13
  152. package/dist/{run-H2GQDUER.js → run-HBAUJNNZ.js} +86 -76
  153. package/dist/{share-GTJN6A5O.js → share-G3APVLVP.js} +17 -14
  154. package/dist/{skills-L55TEW6R.js → skills-35HHUKCR.js} +19 -16
  155. package/dist/{skills-eval-XVXPH2JI.js → skills-eval-QN4HSHDC.js} +55 -57
  156. package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-J357J34F.js} +15 -12
  157. package/dist/{slash-commands-ZSGASKJC.js → slash-commands-JZZCQA32.js} +31 -29
  158. package/dist/{steer-RZGSCY4R.js → steer-XAVHJM22.js} +3 -3
  159. package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
  160. package/dist/{targets-NCPZ644J.js → targets-DSM6CY3M.js} +59 -53
  161. package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-JOPFUVEM.js} +14 -9
  162. package/dist/{tools-DAF3DI3C.js → tools-MKNWVPBH.js} +10 -8
  163. package/dist/{trace-FYVW2MQA.js → trace-ECQ7TIYZ.js} +48 -3
  164. package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
  165. package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
  166. package/dist/{upgrade-3XPP6OQL.js → upgrade-H7TOM7YL.js} +35 -62
  167. package/dist/{usage-3NLHGTU2.js → usage-X52N3IDJ.js} +51 -48
  168. package/dist/{verifiers-SSQONKRT.js → verifiers-EJTVVSMA.js} +10 -9
  169. package/dist/{verify-3U6J7FZI.js → verify-YJL6XET2.js} +9 -8
  170. package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPIFL3LL.js} +1 -2
  171. package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-4NDZTQ4B.js} +66 -63
  172. package/dist/{with-panes-MKB46MPQ.js → with-panes-OBOBFIIR.js} +62 -26
  173. package/dist/worker/entry.js +57 -52
  174. package/docs/acp.md +1 -1
  175. package/docs/built-in-agents.md +40 -32
  176. package/docs/commands-and-modes.md +9 -3
  177. package/docs/config-knobs-audit.md +3 -0
  178. package/docs/configuration-and-targets.md +105 -164
  179. package/docs/environment-variables.md +2 -1
  180. package/docs/exit-codes-and-output.md +2 -0
  181. package/docs/fleet-demo-runbook.md +6 -3
  182. package/docs/fleet-dispatch.md +8 -6
  183. package/docs/installation-and-lifecycle.md +1 -1
  184. package/docs/release-cut-checklist.md +164 -177
  185. package/docs/trace-store.md +15 -10
  186. package/docs/troubleshooting.md +1 -1
  187. package/evals/README.md +5 -0
  188. package/evals/behavioral-corpus-grader.mjs +103 -0
  189. package/evals/behavioral-machinery-baseline.json +2276 -0
  190. package/evals/behavioral-machinery-driver.ts +250 -0
  191. package/evals/behavioral-machinery-support.ts +253 -0
  192. package/evals/behavioral-machinery.yaml +614 -0
  193. package/evals/behavioral-model-negative-control.yaml +68 -0
  194. package/evals/behavioral-model.yaml +216 -0
  195. package/evals/fixtures/behavioral-facts.txt +3 -0
  196. package/evals/fixtures/behavioral-main.ts +7 -0
  197. package/evals/fixtures/decoy/note.txt +2 -0
  198. package/evals/fixtures/private/credentials.txt +1 -0
  199. package/evals/tracked-metrics-baseline.yaml +229 -0
  200. package/evals/tracked-metrics-grader.mjs +129 -0
  201. package/package.json +5 -15
  202. package/skills/README.md +6 -6
  203. package/skills/coding/ast-grep/SKILL.md +8 -2
  204. package/skills/coding/coding-standards/SKILL.md +8 -2
  205. package/skills/coding/prototype/SKILL.md +8 -2
  206. package/skills/coding/tdd/SKILL.md +8 -2
  207. package/skills/context/context-handoff/SKILL.md +12 -3
  208. package/skills/context/context-handoff/evals.md +3 -3
  209. package/skills/context/context-prime/SKILL.md +8 -2
  210. package/skills/context/context-prime/evals.md +2 -2
  211. package/skills/git/file-ticket/SKILL.md +9 -4
  212. package/skills/git/file-ticket/evals.md +2 -2
  213. package/skills/git/fix-issue/SKILL.md +12 -5
  214. package/skills/git/fix-issue/evals.md +4 -4
  215. package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
  216. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  217. package/skills/git/ship/SKILL.md +9 -3
  218. package/skills/git/ship/evals.md +4 -4
  219. package/skills/git/worktree-create/SKILL.md +7 -2
  220. package/skills/git/worktree-create/evals.md +6 -6
  221. package/skills/git/worktree-merge/SKILL.md +7 -2
  222. package/skills/git/worktree-merge/evals.md +6 -6
  223. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
  224. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
  225. package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
  226. package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
  227. package/skills/meta/credentials/SKILL.md +9 -2
  228. package/skills/meta/find-skills/SKILL.md +8 -2
  229. package/skills/meta/herdr/SKILL.md +8 -2
  230. package/skills/meta/skill-craft/SKILL.md +21 -4
  231. package/skills/planning/architecture/SKILL.md +9 -3
  232. package/skills/planning/backlog/SKILL.md +8 -2
  233. package/skills/planning/prd/SKILL.md +8 -2
  234. package/skills/planning/product-intent/SKILL.md +8 -2
  235. package/skills/planning/tech-spec/SKILL.md +9 -3
  236. package/skills/registry.yaml +66 -66
  237. package/skills/research/arxiv-literature/SKILL.md +8 -2
  238. package/skills/research/experiment-protocol/SKILL.md +9 -2
  239. package/skills/research/scientific-debugging/SKILL.md +9 -2
  240. package/skills/research/scientific-debugging/evals.md +2 -2
  241. package/skills/research/scientific-modernization/SKILL.md +9 -2
  242. package/skills/skill-marketplace.json +257 -38
  243. package/skills/workflow/cut-it/SKILL.md +10 -2
  244. package/skills/workflow/design-council/SKILL.md +11 -2
  245. package/skills/workflow/grill-me/SKILL.md +8 -2
  246. package/skills/workflow/workflow-distiller/SKILL.md +8 -2
  247. package/src/cli/acp.ts +2 -2
  248. package/src/cli/auth.ts +2 -2
  249. package/src/cli/bootstrap-generate.ts +5 -5
  250. package/src/cli/clio.ts +6 -1
  251. package/src/cli/config-inspect.ts +3 -3
  252. package/src/cli/configure-interop.ts +1 -1
  253. package/src/cli/configure.ts +27 -27
  254. package/src/cli/default-target.ts +1 -1
  255. package/src/cli/docs.ts +6 -6
  256. package/src/cli/doctor-naming.ts +323 -0
  257. package/src/cli/doctor-panes.ts +46 -14
  258. package/src/cli/doctor-toolchain.ts +29 -8
  259. package/src/cli/doctor.ts +15 -1
  260. package/src/cli/eval-inventory.ts +8 -8
  261. package/src/cli/evidence-detail.ts +1 -1
  262. package/src/cli/evidence-inventory.ts +1 -1
  263. package/src/cli/fleet-decisions.ts +1 -1
  264. package/src/cli/fleet-inspect.ts +1 -1
  265. package/src/cli/fleet-preflight.ts +1 -1
  266. package/src/cli/fleet-verify.ts +1 -1
  267. package/src/cli/fleet-view.ts +40 -23
  268. package/src/cli/fleet.ts +8 -5
  269. package/src/cli/interop-inspect.ts +2 -2
  270. package/src/cli/models.ts +3 -3
  271. package/src/cli/modes/print.ts +1 -1
  272. package/src/cli/reset.ts +1 -1
  273. package/src/cli/run.ts +11 -15
  274. package/src/cli/share.ts +1 -1
  275. package/src/cli/skills-eval.ts +11 -11
  276. package/src/cli/targets.ts +23 -24
  277. package/src/cli/trace-inspect.ts +1 -1
  278. package/src/cli/trace.ts +41 -0
  279. package/src/cli/uninstall.ts +2 -2
  280. package/src/cli/upgrade.ts +29 -34
  281. package/src/cli/usage.ts +2 -2
  282. package/src/cli/validate-model.ts +1 -1
  283. package/src/cli/verifiers-inspect.ts +1 -1
  284. package/src/cli/wiki-generate.ts +5 -5
  285. package/src/core/bash-exec.ts +1 -1
  286. package/src/core/boot-trace.ts +3 -3
  287. package/src/core/bus-trace.ts +2 -2
  288. package/src/core/compile-cache.ts +1 -1
  289. package/src/core/config.ts +1062 -886
  290. package/src/core/defaults.ts +321 -528
  291. package/src/core/domain-loader.ts +6 -4
  292. package/src/core/event-bus.ts +1 -1
  293. package/src/core/file-references.ts +78 -88
  294. package/src/core/git-commit-attribution.ts +3 -9
  295. package/src/core/guardrails.ts +24 -4
  296. package/src/core/naming-compat.ts +45 -0
  297. package/src/core/naming-events.ts +62 -0
  298. package/src/core/recent-models.ts +1 -7
  299. package/src/core/residency-protection.ts +4 -8
  300. package/src/core/resolve-config-value.ts +1 -1
  301. package/src/core/response-model-id.ts +0 -14
  302. package/src/core/session-routing.ts +84 -74
  303. package/src/core/skill-activation.ts +18 -0
  304. package/src/core/termination.ts +4 -4
  305. package/src/core/timers.ts +2 -12
  306. package/src/domains/agents/catalog.ts +2 -12
  307. package/src/domains/agents/extension.ts +3 -3
  308. package/src/domains/agents/registry.ts +7 -7
  309. package/src/domains/agents/result-contract.ts +1 -1
  310. package/src/domains/agents/spec.ts +0 -11
  311. package/src/domains/config/classify.ts +35 -47
  312. package/src/domains/config/extension.ts +5 -5
  313. package/src/domains/config/keybindings.ts +48 -47
  314. package/src/domains/config/watcher.ts +1 -1
  315. package/src/domains/context/codewiki/indexer.ts +1 -1
  316. package/src/domains/context/extension.ts +3 -3
  317. package/src/domains/context/prompt-context.ts +1 -1
  318. package/src/domains/context/wiki/assemble.ts +2 -2
  319. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  320. package/src/domains/context/working-set/replay/report.ts +1 -1
  321. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  322. package/src/domains/dispatch/active-route-planner.ts +2 -2
  323. package/src/domains/dispatch/agent-candidates.ts +1 -1
  324. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  325. package/src/domains/dispatch/agent-ledger.ts +1 -1
  326. package/src/domains/dispatch/assignment.ts +5 -5
  327. package/src/domains/dispatch/capacity-lease.ts +2 -5
  328. package/src/domains/dispatch/code-step.ts +1 -1
  329. package/src/domains/dispatch/contract.ts +2 -2
  330. package/src/domains/dispatch/extension.ts +65 -61
  331. package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
  332. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  333. package/src/domains/dispatch/fleet-run.ts +0 -7
  334. package/src/domains/dispatch/gate-decisions.ts +25 -14
  335. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  336. package/src/domains/dispatch/path-scope.ts +0 -61
  337. package/src/domains/dispatch/placement.ts +2 -2
  338. package/src/domains/dispatch/receipt-findings.ts +1 -1
  339. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  340. package/src/domains/dispatch/reservation-store.ts +0 -23
  341. package/src/domains/dispatch/route-decision.ts +1 -1
  342. package/src/domains/dispatch/route-history.ts +1 -1
  343. package/src/domains/dispatch/route-policy.ts +1 -1
  344. package/src/domains/dispatch/route-readiness.ts +0 -28
  345. package/src/domains/dispatch/run-event-journal.ts +6 -5
  346. package/src/domains/dispatch/tool-stats.ts +1 -1
  347. package/src/domains/dispatch/transport.ts +2 -19
  348. package/src/domains/dispatch/types.ts +3 -3
  349. package/src/domains/dispatch/worker-protocol.ts +2 -2
  350. package/src/domains/eval/artifacts/store.ts +5 -4
  351. package/src/domains/eval/compare/thresholds.ts +0 -8
  352. package/src/domains/eval/execution-provenance.ts +1 -1
  353. package/src/domains/eval/metrics/token-stream.ts +0 -7
  354. package/src/domains/eval/report.ts +1 -1
  355. package/src/domains/eval/runner.ts +1 -1
  356. package/src/domains/eval/runners/clio-run.ts +7 -6
  357. package/src/domains/eval/runners/external-command.ts +4 -3
  358. package/src/domains/eval/schema/artifact.ts +1 -1
  359. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  360. package/src/domains/eval/schema/behavioral.ts +7 -6
  361. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  362. package/src/domains/eval/schema/naming.ts +10 -0
  363. package/src/domains/eval/schema/suite.ts +2 -2
  364. package/src/domains/eval/schema/validate.ts +9 -5
  365. package/src/domains/eval/schema/verdict.ts +4 -2
  366. package/src/domains/eval/store.ts +12 -2
  367. package/src/domains/eval/suites/run.ts +12 -6
  368. package/src/domains/eval/types.ts +1 -1
  369. package/src/domains/eval/workspaces/git.ts +1 -1
  370. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  371. package/src/domains/evidence/build.ts +13 -5
  372. package/src/domains/interop/consent.ts +7 -7
  373. package/src/domains/interop/extension.ts +1 -1
  374. package/src/domains/lifecycle/doctor.ts +27 -21
  375. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  376. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  377. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  378. package/src/domains/lifecycle/migrations/index.ts +20 -1
  379. package/src/domains/lifecycle/naming-history.ts +153 -0
  380. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  381. package/src/domains/lifecycle/naming-resources.ts +261 -0
  382. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  383. package/src/domains/lifecycle/naming-yazi.ts +81 -0
  384. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  385. package/src/domains/memory/task-memory-handoff.ts +6 -3
  386. package/src/domains/middleware/index.ts +7 -0
  387. package/src/domains/middleware/marketplace-offer.ts +339 -0
  388. package/src/domains/middleware/runtime.ts +2 -2
  389. package/src/domains/mux/contract.ts +157 -25
  390. package/src/domains/mux/detect.ts +29 -5
  391. package/src/domains/mux/dock-controller.ts +365 -0
  392. package/src/domains/mux/extension.ts +7 -1
  393. package/src/domains/mux/index.ts +20 -0
  394. package/src/domains/mux/operations.ts +28 -0
  395. package/src/domains/mux/protocol.ts +19 -6
  396. package/src/domains/mux/socket-client.ts +167 -19
  397. package/src/domains/mux/types.ts +49 -6
  398. package/src/domains/mux/yazi/event-stream.ts +6 -4
  399. package/src/domains/mux/yazi/profile.ts +1 -1
  400. package/src/domains/mux/yazi/session.ts +26 -3
  401. package/src/domains/observability/extension.ts +1 -1
  402. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  403. package/src/domains/observability/projection.ts +1 -1
  404. package/src/domains/observability/trace-store.ts +22 -12
  405. package/src/domains/prompts/compiler.ts +2 -2
  406. package/src/domains/prompts/extension.ts +3 -3
  407. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
  408. package/src/domains/prompts/fragments/operating/skills.md +25 -18
  409. package/src/domains/providers/extension.ts +5 -5
  410. package/src/domains/providers/knowledge-base-path.ts +1 -1
  411. package/src/domains/providers/model-runtime-capabilities.ts +14 -2
  412. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  413. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
  414. package/src/domains/providers/plugins.ts +1 -1
  415. package/src/domains/providers/resolver.ts +1 -1
  416. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  417. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  418. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  419. package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
  420. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  421. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  422. package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
  423. package/src/domains/providers/types/knowledge-base.ts +13 -0
  424. package/src/domains/providers/types/local-model-quirks.ts +2 -2
  425. package/src/domains/providers/types/target-descriptor.ts +3 -3
  426. package/src/domains/resources/extension.ts +1 -1
  427. package/src/domains/resources/library.ts +6 -6
  428. package/src/domains/resources/prompts/loader.ts +1 -1
  429. package/src/domains/resources/skills/content-hash.ts +7 -6
  430. package/src/domains/resources/skills/evals.ts +1 -1
  431. package/src/domains/resources/skills/install.ts +36 -12
  432. package/src/domains/resources/skills/loader.ts +39 -13
  433. package/src/domains/resources/skills/marketplace.ts +21 -2
  434. package/src/domains/resources/skills/promotion.ts +214 -0
  435. package/src/domains/safety/audit.ts +2 -2
  436. package/src/domains/safety/finish-contract.ts +2 -1
  437. package/src/domains/safety/run-effects.ts +1 -1
  438. package/src/domains/scheduling/extension.ts +4 -4
  439. package/src/domains/session/archive-readers.ts +9 -1
  440. package/src/domains/session/compaction/branch-summary.ts +4 -0
  441. package/src/domains/session/compaction/compact.ts +1 -1
  442. package/src/domains/session/compaction/tokens.ts +4 -0
  443. package/src/domains/session/context-accounting.ts +1 -1
  444. package/src/domains/session/decision-board.ts +1 -1
  445. package/src/domains/session/extension.ts +1 -1
  446. package/src/domains/session/handoff.ts +2 -2
  447. package/src/domains/session/prompt-manifest.ts +0 -5
  448. package/src/domains/session/protected-artifact-journal.ts +12 -6
  449. package/src/domains/session/retry.ts +1 -1
  450. package/src/domains/share/archive.ts +85 -36
  451. package/src/domains/toolchain/install.ts +1 -1
  452. package/src/engine/acp/adapter.ts +3 -3
  453. package/src/engine/acp/event-mapper.ts +3 -3
  454. package/src/engine/acp/server.ts +27 -26
  455. package/src/engine/acp/tool-mediator.ts +2 -2
  456. package/src/engine/acp/types.ts +1 -1
  457. package/src/engine/alcf-oauth.ts +5 -5
  458. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  459. package/src/engine/api-registry.ts +1 -1
  460. package/src/engine/apis/llamacpp-residency.ts +1 -19
  461. package/src/engine/apis/lmstudio.ts +1 -6
  462. package/src/engine/apis/ollama-native.ts +3 -3
  463. package/src/engine/apis/openai-completions.ts +2 -2
  464. package/src/engine/apis/residency.ts +3 -9
  465. package/src/engine/claude/sdk-module.ts +1 -12
  466. package/src/engine/claude/sdk-runtime.ts +6 -6
  467. package/src/engine/claude/subprocess-runtime.ts +1 -1
  468. package/src/engine/claude/tool-safety.ts +4 -4
  469. package/src/engine/loop-guard.ts +0 -5
  470. package/src/engine/session.ts +14 -7
  471. package/src/engine/tui-primitives.ts +1 -1
  472. package/src/engine/worker-events.ts +6 -6
  473. package/src/engine/worker-runtime.ts +14 -13
  474. package/src/entry/orchestrator.ts +107 -88
  475. package/src/interactive/application-controller.ts +21 -21
  476. package/src/interactive/bus-notices.ts +2 -2
  477. package/src/interactive/chat-loop.ts +8 -8
  478. package/src/interactive/chat-panel.ts +1 -1
  479. package/src/interactive/clio-editor.ts +105 -1
  480. package/src/interactive/context-activity.ts +8 -6
  481. package/src/interactive/context-meter.ts +3 -6
  482. package/src/interactive/context-overlay.ts +1 -1
  483. package/src/interactive/cost-overlay.ts +1 -1
  484. package/src/interactive/council-grid.ts +2 -2
  485. package/src/interactive/dispatch-board.ts +30 -33
  486. package/src/interactive/editor-bash.ts +21 -0
  487. package/src/interactive/editor-steer.ts +9 -4
  488. package/src/interactive/editor-submit.ts +24 -18
  489. package/src/interactive/external-editor.ts +1 -1
  490. package/src/interactive/file-reference-completion.ts +360 -0
  491. package/src/interactive/footer/dashboard.ts +15 -17
  492. package/src/interactive/footer/notifications.ts +14 -8
  493. package/src/interactive/footer/widgets.ts +2 -44
  494. package/src/interactive/interactive-application.ts +79 -59
  495. package/src/interactive/interactive-event-projection.ts +1 -1
  496. package/src/interactive/interactive-input-runtime.ts +2 -2
  497. package/src/interactive/interactive-presentation.ts +21 -16
  498. package/src/interactive/interactive-shell.ts +2 -2
  499. package/src/interactive/interactive-slash-runtime.ts +63 -17
  500. package/src/interactive/interactive-subscriptions.ts +1 -1
  501. package/src/interactive/interactive-tickers.ts +1 -1
  502. package/src/interactive/keybinding-manager.ts +4 -4
  503. package/src/interactive/layout.ts +1 -1
  504. package/src/interactive/memory-overlay.ts +2 -2
  505. package/src/interactive/modal-marker.ts +2 -21
  506. package/src/interactive/mutation-preview.ts +1 -1
  507. package/src/interactive/overlay-frame.ts +4 -12
  508. package/src/interactive/overlay-general-openers.ts +6 -2
  509. package/src/interactive/overlay-key-routing.ts +7 -7
  510. package/src/interactive/overlay-lifecycle.ts +1 -1
  511. package/src/interactive/overlay-model-selectors.ts +3 -3
  512. package/src/interactive/overlays/agents.ts +2 -2
  513. package/src/interactive/overlays/ask-user.ts +25 -11
  514. package/src/interactive/overlays/context-reset.ts +28 -4
  515. package/src/interactive/overlays/cwd-fallback.ts +28 -4
  516. package/src/interactive/overlays/decisions.ts +4 -2
  517. package/src/interactive/overlays/fleet-run-approval.ts +3 -3
  518. package/src/interactive/overlays/handoff-review.ts +2 -2
  519. package/src/interactive/overlays/interop.ts +1 -1
  520. package/src/interactive/overlays/library-install-confirm.ts +1 -1
  521. package/src/interactive/overlays/message-picker.ts +1 -1
  522. package/src/interactive/overlays/model-selector.ts +39 -31
  523. package/src/interactive/overlays/prompts.ts +10 -4
  524. package/src/interactive/overlays/session-selector.ts +2 -2
  525. package/src/interactive/overlays/settings.ts +339 -293
  526. package/src/interactive/overlays/side-question.ts +2 -2
  527. package/src/interactive/overlays/skills-hub.ts +8 -8
  528. package/src/interactive/overlays/tree-selector.ts +2 -2
  529. package/src/interactive/panes-runtime.ts +36 -10
  530. package/src/interactive/permission-overlay.ts +2 -2
  531. package/src/interactive/renderers/retry-status.ts +12 -4
  532. package/src/interactive/renderers/tool-execution.ts +4 -4
  533. package/src/interactive/session-transcript.ts +3 -3
  534. package/src/interactive/slash-autocomplete.ts +454 -165
  535. package/src/interactive/slash-commands.ts +279 -183
  536. package/src/interactive/slash-spec.ts +160 -17
  537. package/src/interactive/status/controller.ts +2 -2
  538. package/src/interactive/stream-pacing-policy.ts +1 -1
  539. package/src/interactive/tasks-overlay.ts +20 -13
  540. package/src/interactive/terminal-lease.ts +6 -7
  541. package/src/interactive/turn-context.ts +11 -11
  542. package/src/interactive/turn-persistence.ts +2 -2
  543. package/src/interactive/turn-prewarm.ts +2 -2
  544. package/src/interactive/turn-runtime.ts +8 -8
  545. package/src/interactive/turn-state.ts +1 -1
  546. package/src/interactive/view/artifacts.ts +12 -9
  547. package/src/interactive/view/view-overlay.ts +13 -10
  548. package/src/interactive/watch-pane.ts +38 -10
  549. package/src/interactive/welcome-dashboard.ts +15 -15
  550. package/src/interactive/worker-progress.ts +4 -4
  551. package/src/interactive/worker-receipts.ts +1 -1
  552. package/src/interactive/worker-stream.ts +1 -4
  553. package/src/interactive/yazi-bridge.ts +12 -5
  554. package/src/tools/ask-user.ts +3 -3
  555. package/src/tools/bash.ts +1 -1
  556. package/src/tools/builtin-tool-catalog.ts +1 -1
  557. package/src/tools/compete-worktrees.ts +27 -17
  558. package/src/tools/context/index.ts +15 -1
  559. package/src/tools/dispatch-admission.ts +4 -2
  560. package/src/tools/dispatch-arguments.ts +1 -1
  561. package/src/tools/dispatch-plan.ts +0 -11
  562. package/src/tools/dispatch-run-events.ts +12 -10
  563. package/src/tools/dispatch-runner.ts +11 -6
  564. package/src/tools/dispatch.ts +1 -1
  565. package/src/tools/find.ts +1 -6
  566. package/src/tools/monitor.ts +4 -4
  567. package/src/tools/observers.ts +0 -33
  568. package/src/tools/task-worktree.ts +28 -7
  569. package/src/tools/verify/authoring.ts +3 -6
  570. package/src/tools/verify/frontend.ts +1 -1
  571. package/src/tools/web-fetch.ts +1 -1
  572. package/src/worker/entry.ts +4 -3
  573. package/src/worker/protocol.ts +16 -14
  574. package/src/worker/spec-contract.ts +2 -2
  575. package/src/worker/stdin-demux.ts +2 -2
  576. package/dist/chunk-GXNLGKAB.js +0 -571
  577. package/dist/chunk-VFA6GDY5.js +0 -1625
  578. package/dist/doctor-QOA5FNY5.js +0 -313
  579. package/src/engine/apis/degraded-inference.ts +0 -95
  580. /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
  581. /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
@@ -11,7 +11,7 @@ import { loadDomains } from "../core/domain-loader.js";
11
11
  import type { SafeEventBus } from "../core/event-bus.js";
12
12
  import { expandInlineFileReferencesAsync } from "../core/file-references.js";
13
13
  import { setGitCommitAttributionEnabled } from "../core/git-commit-attribution.js";
14
- import { configureGuardrails } from "../core/guardrails.js";
14
+ import { configureGuardrails, guardrailValuesFromSettings } from "../core/guardrails.js";
15
15
  import { HEADLESS_PERMISSION_DENIED_REASON } from "../core/headless-permission.js";
16
16
  import { rememberRecentModel } from "../core/recent-models.js";
17
17
  import { protectedResidencyModels } from "../core/residency-protection.js";
@@ -85,6 +85,7 @@ import {
85
85
  } from "../domains/middleware/dispatch-nudge.js";
86
86
  import {
87
87
  createHookReceiptLog,
88
+ createMarketplaceOfferRegistration,
88
89
  createMiddlewareToolChoiceControl,
89
90
  createSkillsReminderRegistration,
90
91
  type ExtensionHookRoot,
@@ -128,6 +129,7 @@ import { registerBuiltinRuntimes } from "../domains/providers/runtimes/builtins.
128
129
  import {
129
130
  createResourcesDomainModule,
130
131
  discoverMarketplaceSkills,
132
+ installSkill,
131
133
  modelVisibleSkills,
132
134
  type ResourcesContract,
133
135
  } from "../domains/resources/index.js";
@@ -229,11 +231,11 @@ function bannerConfigurationLine(): string {
229
231
  }
230
232
  // A dangling chat target normalizes to null in the schema, so a deleted
231
233
  // target arrives here as no target at all rather than as a name to report.
232
- const targetId = settings.orchestrator?.target;
234
+ const targetId = settings.chat?.target;
233
235
  if (!targetId) {
234
236
  return chalk.yellow("no model target configured. Run `clio-coder configure` to add one.");
235
237
  }
236
- const model = settings.orchestrator?.model;
238
+ const model = settings.chat?.model;
237
239
  return chalk.dim(`target ${targetId}${model ? ` · model ${model}` : " · no default model"}`);
238
240
  }
239
241
 
@@ -256,7 +258,7 @@ function printJsonSessionHeader(meta: SessionMeta | null): Record<string, unknow
256
258
  cwd: meta.cwd,
257
259
  target: meta.target,
258
260
  model: meta.model,
259
- clioVersion: meta.clioVersion,
261
+ clioCoderVersion: meta.clioCoderVersion,
260
262
  };
261
263
  }
262
264
 
@@ -266,17 +268,17 @@ function applyHeadlessSettingsOverlay(
266
268
  ): ClioSettings {
267
269
  const next = structuredClone(settings);
268
270
  if (!overrides) return next;
269
- const previousTarget = next.orchestrator.target;
271
+ const previousTarget = next.chat.target;
270
272
  if (overrides.target !== undefined) {
271
- next.orchestrator.target = overrides.target;
272
- if (overrides.model === undefined && (previousTarget !== overrides.target || !next.orchestrator.model)) {
273
+ next.chat.target = overrides.target;
274
+ if (overrides.model === undefined && (previousTarget !== overrides.target || !next.chat.model)) {
273
275
  const target = next.targets.find((entry) => entry.id === overrides.target);
274
- if (target) next.orchestrator.model = target.defaultModel ?? null;
276
+ if (target) next.chat.model = target.defaultModel ?? null;
275
277
  }
276
278
  }
277
- if (overrides.model !== undefined) next.orchestrator.model = overrides.model;
278
- if (overrides.thinking !== undefined) next.orchestrator.thinkingLevel = overrides.thinking;
279
- if (overrides.autonomy !== undefined) next.autonomy = overrides.autonomy;
279
+ if (overrides.model !== undefined) next.chat.model = overrides.model;
280
+ if (overrides.thinking !== undefined) next.chat.thinkingLevel = overrides.thinking;
281
+ if (overrides.autonomy !== undefined) next.safety.autonomy = overrides.autonomy;
280
282
  return next;
281
283
  }
282
284
 
@@ -307,9 +309,9 @@ function advanceThinkingLevel(current: ThinkingLevel, available: ReadonlyArray<T
307
309
  * model all send this placeholder so a local llama.cpp or LM Studio endpoint
308
310
  * works without the user inventing a credential.
309
311
  */
310
- const LOCAL_API_KEY_FALLBACK = "clio-local-target";
312
+ const LOCAL_API_KEY_FALLBACK = "clio-coder-local-target";
311
313
 
312
- export async function resolveApiKeyForTarget(
314
+ async function resolveApiKeyForTarget(
313
315
  target: TargetDescriptor,
314
316
  providers: ProvidersContract,
315
317
  signal?: AbortSignal,
@@ -347,8 +349,8 @@ function createBackgroundMemoryModelClient(
347
349
  timeoutMs: number,
348
350
  bus: Pick<SafeEventBus, "emit"> | null,
349
351
  ): BackgroundMemoryRoute | null {
350
- const targetId = settings.background.target?.trim();
351
- const wireModelId = settings.background.model?.trim();
352
+ const targetId = settings.context.memory.target?.trim();
353
+ const wireModelId = settings.context.memory.model?.trim();
352
354
  if (!targetId || !wireModelId) return null;
353
355
  // One model cannot both drive the action agent and think its way through a
354
356
  // memory step: the memory call would contend with the agent's own decoding on
@@ -445,8 +447,8 @@ function createBackgroundMemoryModelClient(
445
447
  */
446
448
  function agentRoleToolWarnings(providers: ProvidersContract, settings: Readonly<ClioSettings>): string[] {
447
449
  const roles: ReadonlyArray<{ label: string; target: string | null; model: string | null }> = [
448
- { label: "orchestrator", target: settings.orchestrator.target, model: settings.orchestrator.model },
449
- { label: "workers.default", target: settings.workers.default.target, model: settings.workers.default.model },
450
+ { label: "orchestrator", target: settings.chat.target, model: settings.chat.model },
451
+ { label: "workers.default", target: settings.fleet.default.target, model: settings.fleet.default.model },
450
452
  ];
451
453
  const warnings: string[] = [];
452
454
  for (const role of roles) {
@@ -478,12 +480,12 @@ function backgroundSharesReasoningModelWithOrchestrator(
478
480
  providers: ProvidersContract,
479
481
  settings: Readonly<ClioSettings>,
480
482
  ): boolean {
481
- const backgroundModel = settings.background.model?.trim();
482
- const orchestratorModel = settings.orchestrator.model?.trim();
483
+ const backgroundModel = settings.context.memory.model?.trim();
484
+ const orchestratorModel = settings.chat.model?.trim();
483
485
  if (!backgroundModel || backgroundModel !== orchestratorModel) return false;
484
- if (settings.background.target?.trim() !== settings.orchestrator.target?.trim()) return false;
486
+ if (settings.context.memory.target?.trim() !== settings.chat.target?.trim()) return false;
485
487
  try {
486
- const status = providers.list().find((entry) => entry.target.id === settings.background.target?.trim());
488
+ const status = providers.list().find((entry) => entry.target.id === settings.context.memory.target?.trim());
487
489
  if (!status) return false;
488
490
  return resolveModelCapabilities(status, backgroundModel, providers.knowledgeBase).reasoning === true;
489
491
  } catch {
@@ -493,7 +495,7 @@ function backgroundSharesReasoningModelWithOrchestrator(
493
495
  }
494
496
  }
495
497
 
496
- export function synthesizeOrchestratorModel(
498
+ function synthesizeOrchestratorModel(
497
499
  providers: ProvidersContract,
498
500
  target: TargetDescriptor,
499
501
  wireModelId: string,
@@ -526,8 +528,8 @@ async function resolveCompactionModel(
526
528
  settings: ClioSettings,
527
529
  providers: ProvidersContract,
528
530
  ): Promise<CompactionResolution | null> {
529
- const targetId = settings.orchestrator?.target ?? null;
530
- const wireModelId = settings.orchestrator?.model ?? null;
531
+ const targetId = settings.chat?.target ?? null;
532
+ const wireModelId = settings.chat?.model ?? null;
531
533
  if (!targetId || !wireModelId) return null;
532
534
  const target = resolveTarget(providers, targetId);
533
535
  if (!target) return null;
@@ -607,7 +609,7 @@ function appendProtectedArtifactRegistryEvent(
607
609
  * subprocess, which makes this the only recording path there is. Returns how
608
610
  * many were folded.
609
611
  */
610
- export function foldDispatchSkillActivations(
612
+ function foldDispatchSkillActivations(
611
613
  session: SessionContract | undefined,
612
614
  payload: { runId?: unknown; skillActivations?: ReadonlyArray<unknown> } | undefined,
613
615
  ): number {
@@ -648,7 +650,7 @@ async function runCompactionFlow(
648
650
  }
649
651
  const resolved = await resolveCompactionModel(settings, providers);
650
652
  if (!resolved) {
651
- throw new Error("no model configured; set orchestrator.target + orchestrator.model");
653
+ throw new Error("no model configured; set chat.target + chat.model");
652
654
  }
653
655
  // Summarize only the active branch: after a /tree switch the raw file
654
656
  // still holds abandoned sibling turns, and a summary that folds them in
@@ -704,7 +706,7 @@ async function runCompactionFlow(
704
706
  * a thrown read/model/persistence failure from the legitimate null no-op that
705
707
  * `runCompactionFlow` returns for an empty session or an unavailable cut.
706
708
  */
707
- export function createProductionAutoCompact(
709
+ function createProductionAutoCompact(
708
710
  session: SessionContract,
709
711
  getSettings: () => ClioSettings,
710
712
  providers: ProvidersContract,
@@ -751,11 +753,11 @@ function estimateTokensAfterCompaction(entries: ReadonlyArray<SessionEntry>, res
751
753
  * ids or target/model refs. Absent scope is a no-op so unconfigured users
752
754
  * feel nothing.
753
755
  */
754
- export function advanceScopedTarget(
756
+ function advanceScopedTarget(
755
757
  settings: Readonly<ClioSettings>,
756
758
  direction: "forward" | "backward",
757
759
  ): { target: string; model: string | null } | null {
758
- const scope = settings.scope ?? [];
760
+ const scope = settings.chat.modelPicker.cycleSet ?? [];
759
761
  if (scope.length === 0) return null;
760
762
  const registry = getRuntimeRegistry();
761
763
  if (registry.list().length === 0) registerBuiltinRuntimes(registry);
@@ -767,8 +769,8 @@ export function advanceScopedTarget(
767
769
  return runtime !== null && isOrchestratorEligibleRuntime(runtime);
768
770
  });
769
771
  if (filteredScope.length === 0) return null;
770
- const activeTarget = settings.orchestrator.target ?? "";
771
- const activeModel = settings.orchestrator.model ?? "";
772
+ const activeTarget = settings.chat.target ?? "";
773
+ const activeModel = settings.chat.model ?? "";
772
774
  const activeCombinedRef = activeTarget.length > 0 && activeModel.length > 0 ? `${activeTarget}/${activeModel}` : "";
773
775
  const idx = filteredScope.findIndex((entry) => entry === activeCombinedRef || entry === activeTarget);
774
776
  const base = idx === -1 ? 0 : idx + (direction === "forward" ? 1 : filteredScope.length - 1);
@@ -866,7 +868,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
866
868
  // is why `panes.enabled` is a restart-scoped row: the decision runs once,
867
869
  // here. An inactive rung loads nothing: the whole extension, mux domain
868
870
  // included, lives behind the dynamic import below.
869
- const muxEnablement = resolvePanesEnablement(options.panes, options.startupSettings?.panes.enabled);
871
+ const muxEnablement = resolvePanesEnablement(options.panes, options.startupSettings?.interface.panes.enabled);
870
872
  const withPanes = muxInteractive && muxEnablement !== "off" ? await import("./with-panes.js") : null;
871
873
 
872
874
  const result = await loadDomains(
@@ -956,7 +958,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
956
958
  bootStderr("Clio Coder: --api-key supplied but providers domain unavailable; ignoring.\n");
957
959
  } else {
958
960
  const settingsNow = applyHeadlessSettingsOverlay(config?.get() ?? readSettings(), options.headless);
959
- const activeTargetId = settingsNow.orchestrator?.target;
961
+ const activeTargetId = settingsNow.chat?.target;
960
962
  const target = resolveTarget(providers, activeTargetId);
961
963
  const runtime = target ? providers.getRuntime(target.runtime) : null;
962
964
  if (target && runtime) {
@@ -1076,7 +1078,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1076
1078
  bus.on(BusChannels.RuntimeNotice, (payload: unknown) => {
1077
1079
  const notice = payload as { level?: string; message?: string } | undefined;
1078
1080
  if (typeof notice?.message !== "string") return;
1079
- process.stderr.write(`[clio:runtime] ${notice.level ?? "info"}: ${notice.message}\n`);
1081
+ process.stderr.write(`[clio-coder:runtime] ${notice.level ?? "info"}: ${notice.message}\n`);
1080
1082
  });
1081
1083
  }
1082
1084
 
@@ -1084,12 +1086,12 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1084
1086
  // resolves settings-first with env as emergency override; install the
1085
1087
  // settings section before any guard registration or tool reads it.
1086
1088
  const resolvedSettings = config?.get() ?? readSettings();
1087
- configureGuardrails(resolvedSettings.guardrails);
1089
+ configureGuardrails(guardrailValuesFromSettings(resolvedSettings));
1088
1090
 
1089
1091
  // The run event journal resolves the same way for the same reason: the sink
1090
1092
  // sits on the dispatch event path, where reading settings.yaml would be both
1091
1093
  // a cost and a throw site, so the composition root installs the value once.
1092
- configureRunEventJournal(resolvedSettings.panes.journal);
1094
+ configureRunEventJournal(resolvedSettings.fleet.history.journal);
1093
1095
 
1094
1096
  // Guard registrations on the middleware contract, in order: loop guard,
1095
1097
  // protected artifacts (last among guards so it absorbs protect_path effects
@@ -1183,7 +1185,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1183
1185
  taskMemoryBank.clear();
1184
1186
  taskMemorySessionId = currentSessionId;
1185
1187
  };
1186
- const memorySettings = (config?.get() ?? readSettings()).memory.intervention;
1188
+ const memorySettings = (config?.get() ?? readSettings()).context.memory;
1187
1189
  // Bound late: the registration is built here, but the buffer a deferred
1188
1190
  // reminder lands in belongs to the chat loop that has not been composed yet.
1189
1191
  let deferredMemoryReminderSink: ((message: string) => void) | null = null;
@@ -1233,12 +1235,12 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1233
1235
  })
1234
1236
  .then((result) => {
1235
1237
  for (const error of result.errors) {
1236
- process.stderr.write(`[clio:memory] proposed record not written for ${error}\n`);
1238
+ process.stderr.write(`[clio-coder:memory] proposed record not written for ${error}\n`);
1237
1239
  }
1238
1240
  })
1239
1241
  .catch((error: unknown) => {
1240
1242
  process.stderr.write(
1241
- `[clio:memory] proposed records not written: ${error instanceof Error ? error.message : String(error)}\n`,
1243
+ `[clio-coder:memory] proposed records not written: ${error instanceof Error ? error.message : String(error)}\n`,
1242
1244
  );
1243
1245
  });
1244
1246
  };
@@ -1252,14 +1254,21 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1252
1254
  onDeferredReminder: (message) => deferredMemoryReminderSink?.(message),
1253
1255
  getSettings: () => {
1254
1256
  ensureTaskMemorySession();
1255
- return effectiveSettingsForDispatch?.().memory.intervention ?? memorySettings;
1257
+ const memory = effectiveSettingsForDispatch?.().context.memory ?? memorySettings;
1258
+ return {
1259
+ enabled: memory.enabled,
1260
+ everyNTools: memory.cadenceToolCalls,
1261
+ windowSteps: memory.trajectorySteps,
1262
+ maxTokens: memory.maxOutputTokens,
1263
+ timeoutMs: memory.timeoutMs,
1264
+ };
1256
1265
  },
1257
1266
  getModelClient: () => {
1258
1267
  const settings = effectiveSettingsForDispatch?.();
1259
1268
  backgroundMemoryRoute =
1260
1269
  settings === undefined
1261
1270
  ? null
1262
- : createBackgroundMemoryModelClient(providers, settings, settings.memory.intervention.timeoutMs, bus);
1271
+ : createBackgroundMemoryModelClient(providers, settings, settings.context.memory.timeoutMs, bus);
1263
1272
  return backgroundMemoryRoute?.client ?? null;
1264
1273
  },
1265
1274
  getModelMaxTokens: (configuredMaxTokens) =>
@@ -1302,10 +1311,10 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1302
1311
  });
1303
1312
  if (!interactive) {
1304
1313
  for (const issue of userHooks.fileIssues) {
1305
- process.stderr.write(`[clio:hooks] ${issue.message}\n`);
1314
+ process.stderr.write(`[clio-coder:hooks] ${issue.message}\n`);
1306
1315
  }
1307
1316
  for (const issue of userHooks.issues) {
1308
- process.stderr.write(`[clio:hooks] ${issue.source.sourcePath}#${issue.index}: ${issue.issues.join("; ")}\n`);
1317
+ process.stderr.write(`[clio-coder:hooks] ${issue.source.sourcePath}#${issue.index}: ${issue.issues.join("; ")}\n`);
1309
1318
  }
1310
1319
  }
1311
1320
  termination.onDrain(() => hookReceiptLog.flush());
@@ -1317,11 +1326,29 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1317
1326
  // through these two functions so a fallback added to one surface cannot
1318
1327
  // silently skip another.
1319
1328
  const resolveBaselineAutonomy = (): AutonomyLevel =>
1320
- effectiveSettingsForDispatch?.().autonomy ??
1329
+ effectiveSettingsForDispatch?.().safety.autonomy ??
1321
1330
  options.headless?.autonomy ??
1322
- (config?.get() ?? readSettings()).autonomy ??
1331
+ (config?.get() ?? readSettings()).safety.autonomy ??
1323
1332
  "auto-edit";
1324
1333
  const resolveEffectiveAutonomy = (): AutonomyLevel => activeAcpSessionAutonomy ?? resolveBaselineAutonomy();
1334
+ // Marketplace self-promotion: coordinator-only by this wiring (never a
1335
+ // dispatch worker), local matcher, consented installs and full-auto
1336
+ // autonomous installs both pass the own-marketplace source gate inside the
1337
+ // registration. Registered here because it needs the effective-autonomy
1338
+ // resolution defined one line up.
1339
+ if (resources) {
1340
+ middleware.registerHook(
1341
+ createMarketplaceOfferRegistration({
1342
+ listInstalledSkillNames: () => resources.skills(process.cwd()).items.map((skill) => skill.name),
1343
+ listMarketplaceEntries: () => discoverMarketplaceSkills({ cwd: process.cwd() }).skills,
1344
+ getAutonomy: resolveEffectiveAutonomy,
1345
+ installEntry: (entry, scope) => {
1346
+ const installed = installSkill({ source: entry.sourceUrl, scope, name: entry.name, cwd: process.cwd() });
1347
+ return { path: installed.path, sourceUrl: installed.sourceUrl, installedHash: installed.installedHash };
1348
+ },
1349
+ }),
1350
+ );
1351
+ }
1325
1352
  const middlewareToolChoice = createMiddlewareToolChoiceControl();
1326
1353
  const toolRegistry = createRegistry({
1327
1354
  safety,
@@ -1466,9 +1493,9 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1466
1493
  // always refusing.
1467
1494
  ...(panes && mux?.mode !== "none" ? { panes } : {}),
1468
1495
  getCostCeilingUsd: () => result.getContract<SchedulingContract>("scheduling")?.ceilingUsd() ?? 0,
1469
- ...(config ? { getWorkerRosters: () => config.get().workers.rosters } : {}),
1496
+ ...(config ? { getWorkerRosters: () => config.get().fleet.rosters } : {}),
1470
1497
  getSkillLoaderOptions: () => ({
1471
- trustProjectCompatRoots: config?.get().skills.trustProjectCompatRoots === true,
1498
+ trustProjectCompatRoots: config?.get().integrations.projectResources.trustProjectImports === true,
1472
1499
  disableDiscovery: options.noSkills === true || options.headless?.noSkills === true,
1473
1500
  ...(options.skillPaths && options.skillPaths.length > 0
1474
1501
  ? { explicitSkillPaths: options.skillPaths }
@@ -1509,7 +1536,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1509
1536
  sessionStateGeneration += 1;
1510
1537
  // Child-process seams read the effective setting from the environment,
1511
1538
  // and the session view may override the saved value.
1512
- setGitCommitAttributionEnabled(getCurrentSettings().attribution.gitCommits);
1539
+ setGitCommitAttributionEnabled(getCurrentSettings().integrations.git.commitAttribution);
1513
1540
  };
1514
1541
  const getCurrentSettings = (): ClioSettings => {
1515
1542
  // Recents live in the data dir (core/recent-models.ts), never in
@@ -1540,15 +1567,11 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1540
1567
  const unsubscribeCommitAttributionSync = bus.on(BusChannels.ConfigHotReload, () => bumpSessionState());
1541
1568
  termination.onDrain(() => unsubscribeCommitAttributionSync());
1542
1569
  const getTaskMemorySeedOffer = (): { source: string; count: number } | null => {
1543
- return taskMemoryHandoffSeedOffer(process.cwd(), getCurrentSettings().memory.intervention.enabled);
1570
+ return taskMemoryHandoffSeedOffer(process.cwd(), getCurrentSettings().context.memory.enabled);
1544
1571
  };
1545
1572
  const seedCurrentTaskMemoryFromHandoff = () => {
1546
1573
  ensureTaskMemorySession();
1547
- return seedTaskMemoryFromNewestHandoff(
1548
- taskMemoryBank,
1549
- process.cwd(),
1550
- getCurrentSettings().memory.intervention.enabled,
1551
- );
1574
+ return seedTaskMemoryFromNewestHandoff(taskMemoryBank, process.cwd(), getCurrentSettings().context.memory.enabled);
1552
1575
  };
1553
1576
  if (resumedSessionAtBoot) {
1554
1577
  const offer = getTaskMemorySeedOffer();
@@ -1568,7 +1591,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1568
1591
  // routing change updates the set on the next read.
1569
1592
  setProtectedModelsProvider(() => protectedResidencyModels(getCurrentSettings()));
1570
1593
 
1571
- const validatedKeybindings = validateKeybindings((config?.get() ?? readSettings()).keybindings ?? {});
1594
+ const validatedKeybindings = validateKeybindings((config?.get() ?? readSettings()).interface.keybindings ?? {});
1572
1595
  const invalidBindings = validatedKeybindings.invalid;
1573
1596
  if (invalidBindings.length > 0) {
1574
1597
  const notice = formatInvalidKeybindingNotice(invalidBindings);
@@ -1627,10 +1650,10 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1627
1650
  const readAcpSafeSettings = (): AcpSafeSettingsSnapshot => {
1628
1651
  const settings = getCurrentSettings();
1629
1652
  return {
1630
- target: settings.orchestrator.target,
1631
- model: settings.orchestrator.model,
1632
- thinkingLevel: settings.orchestrator.thinkingLevel ?? "off",
1633
- autonomy: settings.autonomy,
1653
+ target: settings.chat.target,
1654
+ model: settings.chat.model,
1655
+ thinkingLevel: settings.chat.thinkingLevel ?? "off",
1656
+ autonomy: settings.safety.autonomy,
1634
1657
  };
1635
1658
  };
1636
1659
  /**
@@ -1640,15 +1663,15 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1640
1663
  */
1641
1664
  const commitAcpSafeSettings = (patch: AcpSafeSettingsPatch): AcpSafeSettingsSnapshot => {
1642
1665
  const orchestrator: NonNullable<RoutingPatch["orchestrator"]> = {};
1643
- if (patch["orchestrator.target"] !== undefined) orchestrator.target = patch["orchestrator.target"];
1644
- if (patch["orchestrator.model"] !== undefined) orchestrator.model = patch["orchestrator.model"];
1645
- if (patch["orchestrator.thinkingLevel"] !== undefined) {
1646
- orchestrator.thinkingLevel = patch["orchestrator.thinkingLevel"];
1666
+ if (patch["chat.target"] !== undefined) orchestrator.target = patch["chat.target"];
1667
+ if (patch["chat.model"] !== undefined) orchestrator.model = patch["chat.model"];
1668
+ if (patch["chat.thinkingLevel"] !== undefined) {
1669
+ orchestrator.thinkingLevel = patch["chat.thinkingLevel"];
1647
1670
  }
1648
1671
  const routingPatch: RoutingPatch | null = Object.keys(orchestrator).length > 0 ? { orchestrator } : null;
1649
1672
  persistSavedMutation((saved) => {
1650
1673
  if (routingPatch !== null) mergeRoutingPatchIntoSettings(saved, routingPatch);
1651
- if (patch.autonomy !== undefined) saved.autonomy = patch.autonomy;
1674
+ if (patch["safety.autonomy"] !== undefined) saved.safety.autonomy = patch["safety.autonomy"];
1652
1675
  });
1653
1676
  if (routingPatch !== null) {
1654
1677
  applyRoutingPatch(sessionRouting, routingPatch);
@@ -1747,7 +1770,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1747
1770
  middleware.registerHook(
1748
1771
  createWatchdogRegistration({
1749
1772
  firesOnThisSurface: interactive,
1750
- getSettings: () => (effectiveSettingsForDispatch?.() ?? getCurrentSettings()).watchdog,
1773
+ getSettings: () => (effectiveSettingsForDispatch?.() ?? getCurrentSettings()).safety.review,
1751
1774
  getScope: () => {
1752
1775
  const board = taskBoard.snapshot();
1753
1776
  if (board === null) return null;
@@ -1759,7 +1782,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1759
1782
  dispatch,
1760
1783
  bus,
1761
1784
  ...(agents ? { getAgentRoleFacts: agentRoleFactsResolver((id: string) => agents.getSpec(id)) } : {}),
1762
- target: (effectiveSettingsForDispatch?.() ?? getCurrentSettings()).watchdog.target,
1785
+ target: (effectiveSettingsForDispatch?.() ?? getCurrentSettings()).safety.review.target,
1763
1786
  ...(deferredWatchdogNoticeSink ? { emitNotice: deferredWatchdogNoticeSink } : {}),
1764
1787
  }),
1765
1788
  }),
@@ -1805,7 +1828,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1805
1828
  try {
1806
1829
  const records = loadMemoryRecordsSync(clioDataDir());
1807
1830
  const settings = getCurrentSettings();
1808
- const targetId = session?.current()?.target ?? settings.orchestrator?.target;
1831
+ const targetId = session?.current()?.target ?? settings.chat?.target;
1809
1832
  const runtimeId = targetId ? providers.getTarget(targetId)?.runtime : undefined;
1810
1833
  return buildMemoryPromptSection(records, {
1811
1834
  scopes: ["global", "repo", "runtime"],
@@ -1821,7 +1844,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1821
1844
  const meta = session?.current();
1822
1845
  if (!meta) throw new Error("task memory handoff requires an active session");
1823
1846
  const settings = getCurrentSettings();
1824
- const targetId = meta.target ?? settings.orchestrator?.target;
1847
+ const targetId = meta.target ?? settings.chat?.target;
1825
1848
  const runtimeId = targetId ? providers.getTarget(targetId)?.runtime : undefined;
1826
1849
  return renderTaskMemoryHandoffSource(taskMemoryBank.snapshot(), {
1827
1850
  sessionId: meta.id,
@@ -1930,7 +1953,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1930
1953
  try {
1931
1954
  session.appendEntry({
1932
1955
  kind: "custom",
1933
- customType: "clio.routing-notice",
1956
+ customType: "clio-coder.routing-notice",
1934
1957
  parentTurnId: null,
1935
1958
  data: { kind: notice.kind, level: notice.level, text: notice.text },
1936
1959
  });
@@ -1964,8 +1987,8 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1964
1987
  routing: () => {
1965
1988
  const settings = getCurrentSettings();
1966
1989
  return {
1967
- target: settings.orchestrator.target,
1968
- model: settings.orchestrator.model,
1990
+ target: settings.chat.target,
1991
+ model: settings.chat.model,
1969
1992
  };
1970
1993
  },
1971
1994
  onActiveSessionAutonomyChange: (level) => {
@@ -1977,11 +2000,11 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
1977
2000
  // as a provider's failure body, is kept off the wire and written to
1978
2001
  // the unstructured stderr tail instead.
1979
2002
  diagnostics: (line) => {
1980
- process.stderr.write(`[clio:acp] ${line}\n`);
2003
+ process.stderr.write(`[clio-coder:acp] ${line}\n`);
1981
2004
  },
1982
2005
  permissionTimeoutMs:
1983
2006
  options.acp.permissionTimeoutMs ??
1984
- config?.get().delegation.defaults.permissionTimeoutMs ??
2007
+ config?.get().integrations.externalAgents.defaults.permissionTimeoutMs ??
1985
2008
  DEFAULT_DELEGATION_PERMISSION_TIMEOUT_MS,
1986
2009
  });
1987
2010
  // Same ordering the termination drain hook relies on: an aborted turn's
@@ -2122,8 +2145,8 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
2122
2145
  const settings = getCurrentSettings();
2123
2146
  const bank = taskMemoryBank.snapshot();
2124
2147
  return {
2125
- enabled: settings.memory.intervention.enabled,
2126
- tier: settings.background.target && settings.background.model ? "llm" : "rules",
2148
+ enabled: settings.context.memory.enabled,
2149
+ tier: settings.context.memory.target && settings.context.memory.model ? "llm" : "rules",
2127
2150
  size: taskMemoryBankSize(bank),
2128
2151
  lastDecision: memoryIntervention.lastDecision(),
2129
2152
  bank,
@@ -2225,25 +2248,21 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
2225
2248
  onSetThinkingLevel: (level, scope) => {
2226
2249
  const current = getCurrentSettings();
2227
2250
  const nextLevel =
2228
- resolveModelRuntimeCapabilitiesForProviders(
2229
- providers,
2230
- current.orchestrator.target,
2231
- current.orchestrator.model,
2232
- level,
2233
- )?.thinking.effectiveLevel ?? "off";
2251
+ resolveModelRuntimeCapabilitiesForProviders(providers, current.chat.target, current.chat.model, level)?.thinking
2252
+ .effectiveLevel ?? "off";
2234
2253
  applyRoutingAtScope({ orchestrator: { thinkingLevel: nextLevel } }, scope ?? "global");
2235
2254
  },
2236
2255
  onCycleThinking: () => {
2237
2256
  const current = getCurrentSettings();
2238
2257
  const thinking = resolveModelRuntimeCapabilitiesForProviders(
2239
2258
  providers,
2240
- current.orchestrator.target,
2241
- current.orchestrator.model,
2242
- current.orchestrator.thinkingLevel ?? "off",
2259
+ current.chat.target,
2260
+ current.chat.model,
2261
+ current.chat.thinkingLevel ?? "off",
2243
2262
  )?.thinking;
2244
2263
  const effectiveAvailable = thinking?.supportedLevels ?? (["off"] as ThinkingLevel[]);
2245
2264
  const nextLevel = advanceThinkingLevel(
2246
- thinking?.effectiveLevel ?? current.orchestrator.thinkingLevel ?? "off",
2265
+ thinking?.effectiveLevel ?? current.chat.thinkingLevel ?? "off",
2247
2266
  effectiveAvailable,
2248
2267
  );
2249
2268
  updateSessionRouting({ orchestrator: { thinkingLevel: nextLevel } });
@@ -2268,7 +2287,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
2268
2287
  applyRoutingAtScope({ orchestrator: { target, model } }, scope);
2269
2288
  // Recents live in the state dir, not settings.yaml, and are how a swap
2270
2289
  // stays reachable in the picker. A session-scoped swap still earns one.
2271
- rememberRecentModel(`${target}/${model}`, getCurrentSettings().modelSelector.recentLimit);
2290
+ rememberRecentModel(`${target}/${model}`, getCurrentSettings().chat.modelPicker.recentLimit);
2272
2291
  },
2273
2292
  writeSettings: (next) => applySettingsBlob(next),
2274
2293
  commitSetting: (id, next, scope) => commitSetting(id, next, scope),
@@ -2289,8 +2308,8 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
2289
2308
  onNewSession: () => {
2290
2309
  const settings = getCurrentSettings();
2291
2310
  const input: { cwd: string; target?: string; model?: string } = { cwd: process.cwd() };
2292
- if (settings.orchestrator.target) input.target = settings.orchestrator.target;
2293
- if (settings.orchestrator.model) input.model = settings.orchestrator.model;
2311
+ if (settings.chat.target) input.target = settings.chat.target;
2312
+ if (settings.chat.model) input.model = settings.chat.model;
2294
2313
  session.create(input);
2295
2314
  taskBoard.snapshot();
2296
2315
  ensureTaskMemorySession();
@@ -6,32 +6,32 @@ import { isEscapeKey, type OverlayState, overlayOwnsInput } from "./overlay-life
6
6
  export const APPLICATION_DOUBLE_TAP_MS = 500;
7
7
 
8
8
  const CLOSED_ACTION_ORDER = [
9
- "clio.notifications.dismiss",
10
- "clio.tool.expand",
11
- "clio.tool.expandAll",
12
- "clio.tool.liveOutput",
13
- "clio.editor.external",
14
- "clio.message.followUp",
15
- "clio.message.interrupt",
16
- "clio.message.dequeue",
17
- "clio.thinking.expand",
18
- "clio.thinking.expandAll",
9
+ "clio-coder.notifications.dismiss",
10
+ "clio-coder.tool.expand",
11
+ "clio-coder.tool.expandAll",
12
+ "clio-coder.tool.liveOutput",
13
+ "clio-coder.editor.external",
14
+ "clio-coder.message.followUp",
15
+ "clio-coder.message.interrupt",
16
+ "clio-coder.message.dequeue",
17
+ "clio-coder.thinking.expand",
18
+ "clio-coder.thinking.expandAll",
19
19
  ] as const satisfies ReadonlyArray<ClioKeybinding>;
20
20
 
21
21
  const GLOBAL_ACTION_ORDER = [
22
- "clio.status.toggle",
23
- "clio.thinking.cycle",
24
- "clio.session.tree",
25
- "clio.dispatchBoard.toggle",
26
- "clio.tasks.open",
27
- "clio.decisions.open",
28
- "clio.dispatch.background",
29
- "clio.model.select",
22
+ "clio-coder.status.toggle",
23
+ "clio-coder.thinking.cycle",
24
+ "clio-coder.session.tree",
25
+ "clio-coder.dispatchBoard.toggle",
26
+ "clio-coder.tasks.open",
27
+ "clio-coder.decisions.open",
28
+ "clio-coder.dispatch.background",
29
+ "clio-coder.model.select",
30
30
  // Backward stays ahead of forward so prefix-overlapping user bindings keep
31
31
  // the same more-specific-first behavior as the original input listener.
32
- "clio.model.cycleBackward",
33
- "clio.model.cycleForward",
34
- "clio.exit",
32
+ "clio-coder.model.cycleBackward",
33
+ "clio-coder.model.cycleForward",
34
+ "clio-coder.exit",
35
35
  ] as const satisfies ReadonlyArray<ClioKeybinding>;
36
36
 
37
37
  export type CtrlCAction = "cancel-stream" | "close-overlay" | "clear-editor" | "arm-shutdown" | "shutdown";
@@ -125,7 +125,7 @@ function workerEscalationAxis(
125
125
  return null;
126
126
  }
127
127
 
128
- export function middlewareBudgetWarningKey(payload: unknown): string | null {
128
+ function middlewareBudgetWarningKey(payload: unknown): string | null {
129
129
  if (!isMiddlewareHookFailedPayload(payload)) return null;
130
130
  if (payload.kind !== "budget_exceeded") return null;
131
131
  return `${payload.registrationId}\u0000${payload.hook}`;
@@ -137,7 +137,7 @@ export function middlewareBudgetWarningKey(payload: unknown): string | null {
137
137
  * either way; this warn notice is the operator's only interactive signal
138
138
  * that a guard or assessor is misbehaving.
139
139
  */
140
- export function middlewareHookFailedNotice(
140
+ function middlewareHookFailedNotice(
141
141
  payload: unknown,
142
142
  options: MiddlewareHookFailedNoticeOptions = {},
143
143
  ): BusNotice | null {