@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
package/src/cli/run.ts CHANGED
@@ -148,7 +148,7 @@ async function assemblePrompt(parsed: RunCliArgs): Promise<{
148
148
  * path, not a skill package, or validation failure such as a missing
149
149
  * description). Exported for contracts tests.
150
150
  */
151
- export function explicitSkillPathErrors(skillPaths: ReadonlyArray<string>): string[] {
151
+ function explicitSkillPathErrors(skillPaths: ReadonlyArray<string>): string[] {
152
152
  const errors: string[] = [];
153
153
  for (const skillPath of skillPaths) {
154
154
  const list = loadSkills({ disableDiscovery: true, explicitSkillPaths: [skillPath] });
@@ -187,7 +187,7 @@ export function explicitSkillPathErrors(skillPaths: ReadonlyArray<string>): stri
187
187
  * closure sits on. Boundaries rule6 in `tests/boundaries/check-boundaries.ts`
188
188
  * holds both halves of that.
189
189
  */
190
- export async function unknownSlashCommandRefusal(task: string): Promise<string | null> {
190
+ async function unknownSlashCommandRefusal(task: string): Promise<string | null> {
191
191
  if (!task.trim().startsWith("/")) return null;
192
192
  const { parseSlashCommand } = await import("../interactive/slash-commands.js");
193
193
  const command = parseSlashCommand(task);
@@ -376,9 +376,9 @@ async function runDispatch(
376
376
  // does. The journal never reads settings.yaml itself: it sits on the
377
377
  // dispatch event path, where a settings read would be both a cost and a
378
378
  // throw site.
379
- configureRunEventJournal(baseSettings.panes.journal);
380
- effectiveSettings =
381
- parsed.autonomy === undefined ? baseSettings : { ...structuredClone(baseSettings), autonomy: parsed.autonomy };
379
+ configureRunEventJournal(baseSettings.fleet.history.journal);
380
+ effectiveSettings = structuredClone(baseSettings);
381
+ if (parsed.autonomy !== undefined) effectiveSettings.safety.autonomy = parsed.autonomy;
382
382
  const dispatch = loaded.getContract<DispatchContract>("dispatch");
383
383
  if (!dispatch) {
384
384
  process.stderr.write("dispatch domain unavailable\n");
@@ -394,19 +394,15 @@ async function runDispatch(
394
394
  return 1;
395
395
  }
396
396
  const settings = effectiveSettings;
397
- const profileTargetId = parsed.agentProfile ? settings.workers?.profiles?.[parsed.agentProfile]?.target : undefined;
397
+ const profileTargetId = parsed.agentProfile ? settings.fleet?.profiles?.[parsed.agentProfile]?.target : undefined;
398
398
  const runtimeByTarget = new Map(settings.targets.map((target) => [target.id, target.runtime] as const));
399
399
  const runtimeTargetId = parsed.agentRuntime
400
- ? [settings.workers?.default, ...Object.values(settings.workers?.profiles ?? {})].find(
400
+ ? [settings.fleet?.default, ...Object.values(settings.fleet?.profiles ?? {})].find(
401
401
  (profile) => profile?.target && runtimeByTarget.get(profile.target) === parsed.agentRuntime,
402
402
  )?.target
403
403
  : undefined;
404
404
  const targetId =
405
- parsed.target ??
406
- profileTargetId ??
407
- runtimeTargetId ??
408
- settings.workers?.default?.target ??
409
- settings.orchestrator?.target;
405
+ parsed.target ?? profileTargetId ?? runtimeTargetId ?? settings.fleet?.default?.target ?? settings.chat?.target;
410
406
  const target = targetId ? providers.getTarget(targetId) : null;
411
407
  const runtime = target ? providers.getRuntime(target.runtime) : null;
412
408
  if (!target || !runtime) {
@@ -441,7 +437,7 @@ async function runDispatch(
441
437
  if (skillPaths.length > 0) dispatchReq.skillPaths = skillPaths;
442
438
  try {
443
439
  const settings = effectiveSettings;
444
- if (settings.skills?.trustProjectCompatRoots) {
440
+ if (settings.integrations.projectResources?.trustProjectImports) {
445
441
  dispatchReq.trustProjectCompatRoots = true;
446
442
  }
447
443
  } catch {
@@ -451,8 +447,8 @@ async function runDispatch(
451
447
  let memorySection = "";
452
448
  try {
453
449
  const records = loadMemoryRecordsSync(clioDataDir());
454
- const boundProfileName = parsed.agentProfile ?? effectiveSettings.workers.agentBindings[parsed.agentId];
455
- const boundProfile = boundProfileName ? effectiveSettings.workers.profiles[boundProfileName] : undefined;
450
+ const boundProfileName = parsed.agentProfile ?? effectiveSettings.fleet.agentProfiles[parsed.agentId];
451
+ const boundProfile = boundProfileName ? effectiveSettings.fleet.profiles[boundProfileName] : undefined;
456
452
  const configuredRuntime = (targetId: string | null | undefined): string | undefined =>
457
453
  effectiveSettings.targets.find((target) => target.id === targetId)?.runtime;
458
454
  const profileRuntimeId = configuredRuntime(boundProfile?.target);
package/src/cli/share.ts CHANGED
@@ -233,7 +233,7 @@ export function runShareCommand(argv: ReadonlyArray<string>): number {
233
233
  const archive = plan.archive;
234
234
  if (archive) {
235
235
  process.stdout.write(
236
- `archive: ${archive.manifest.format} clio=${archive.manifest.clioVersion} files=${archive.files.length} created=${archive.manifest.createdAt}\n`,
236
+ `archive: ${archive.manifest.format} clio-coder=${archive.manifest.clioCoderVersion} files=${archive.files.length} created=${archive.manifest.createdAt}\n`,
237
237
  );
238
238
  }
239
239
  }
@@ -311,7 +311,7 @@ type EvalArm = "baseline" | "treatment" | "judge";
311
311
  *
312
312
  * @internal Exported for contract tests.
313
313
  */
314
- export function armRunArgs(
314
+ function armRunArgs(
315
315
  arm: EvalArm,
316
316
  prompt: string,
317
317
  options: { target?: string | undefined; skillBaseDir?: string | undefined } = {},
@@ -335,7 +335,7 @@ export function armRunArgs(
335
335
  *
336
336
  * @internal Exported for contract tests.
337
337
  */
338
- export function permissionWallReason(arm: EvalArm, run: CapturedRun): string | null {
338
+ function permissionWallReason(arm: EvalArm, run: CapturedRun): string | null {
339
339
  const haystack = `${run.transcript}\n${run.finalText}`;
340
340
  let blocked = 0;
341
341
  let at = haystack.indexOf(HEADLESS_PERMISSION_DENIED_MARKER);
@@ -360,7 +360,7 @@ function unmeasuredBullets(scenario: SkillEvalScenario, reason: string): ScoredB
360
360
  *
361
361
  * @internal Exported for contract tests.
362
362
  */
363
- export function evalChildEnv(allowNetwork: boolean, env: NodeJS.ProcessEnv = process.env): NodeJS.ProcessEnv {
363
+ function evalChildEnv(allowNetwork: boolean, env: NodeJS.ProcessEnv = process.env): NodeJS.ProcessEnv {
364
364
  const childEnv: NodeJS.ProcessEnv = { ...env };
365
365
  if (allowNetwork) Reflect.deleteProperty(childEnv, NO_NETWORK_TOOLS_ENV);
366
366
  else childEnv[NO_NETWORK_TOOLS_ENV] = "1";
@@ -378,7 +378,7 @@ export function evalChildEnv(allowNetwork: boolean, env: NodeJS.ProcessEnv = pro
378
378
  * the catalog answers only for a name no root installed, which is the skill
379
379
  * author's case in this repository.
380
380
  */
381
- export function resolveSkillBaseDir(
381
+ function resolveSkillBaseDir(
382
382
  nameOrPath: string,
383
383
  cwd: string,
384
384
  ): { baseDir: string | null; origin?: string; error?: string } {
@@ -442,7 +442,7 @@ async function runScenario(
442
442
  // Published per-scenario figure: monotonic so a clock correction during a
443
443
  // long sweep cannot land in one row's wall time.
444
444
  const scenarioStart = performance.now();
445
- const workspace = await mkdtemp(join(tmpdir(), "clio-skill-eval-seed-"));
445
+ const workspace = await mkdtemp(join(tmpdir(), "clio-coder-skill-eval-seed-"));
446
446
  let runWorkspaces: MaterializedSkillEvalWorkspaces | null = null;
447
447
  try {
448
448
  if (workspaceOverride !== null) await copyWorkspace(workspaceOverride, workspace);
@@ -570,7 +570,7 @@ export interface MaterializedSkillEvalWorkspaces {
570
570
  * cooperative model, not as an isolation guarantee.
571
571
  */
572
572
  async function armWorkspace(created: string[]): Promise<string> {
573
- const root = await mkdtemp(join(tmpdir(), "clio-skill-eval-"));
573
+ const root = await mkdtemp(join(tmpdir(), "clio-coder-skill-eval-"));
574
574
  created.push(root);
575
575
  const workspace = join(root, "workspace");
576
576
  await mkdir(workspace, { recursive: true });
@@ -578,7 +578,7 @@ async function armWorkspace(created: string[]): Promise<string> {
578
578
  }
579
579
 
580
580
  /** @internal Exported for contract tests. */
581
- export async function materializeSkillEvalWorkspaces(seedWorkspace: string): Promise<MaterializedSkillEvalWorkspaces> {
581
+ async function materializeSkillEvalWorkspaces(seedWorkspace: string): Promise<MaterializedSkillEvalWorkspaces> {
582
582
  const created: string[] = [];
583
583
  try {
584
584
  const baseline = await armWorkspace(created);
@@ -814,7 +814,7 @@ function loadsSkillBody(tool: string, args: unknown): boolean {
814
814
  }
815
815
 
816
816
  /** @internal Exported for contract tests. */
817
- export function parseRunStdout(stdout: string): { sessionId: string | null; transcript: string; finalText: string } {
817
+ function parseRunStdout(stdout: string): { sessionId: string | null; transcript: string; finalText: string } {
818
818
  let sessionId: string | null = null;
819
819
  const lines: string[] = [];
820
820
  let finalText = "";
@@ -938,7 +938,7 @@ function judgeVerdictAbsenceReason(judge: CapturedRun): string {
938
938
  }
939
939
 
940
940
  /** Exported for contracts tests. */
941
- export function parseJudgeVerdicts(scenario: SkillEvalScenario, judge: CapturedRun): ScoredBullet[] {
941
+ function parseJudgeVerdicts(scenario: SkillEvalScenario, judge: CapturedRun): ScoredBullet[] {
942
942
  const parsed = extractBulletsObject(judge.finalText) ?? extractBulletsObject(judge.transcript);
943
943
  // No verdict object anywhere in the judge run. The scenario was not scored,
944
944
  // which is a fact about the judge, so every bullet stays unmeasured rather
@@ -982,7 +982,7 @@ export function parseJudgeVerdicts(scenario: SkillEvalScenario, judge: CapturedR
982
982
  * content, so this walks candidate `{` openers around the first "bullets" key
983
983
  * and balance-scans to the matching close brace.
984
984
  */
985
- export function extractBulletsObject(text: string): Record<string, unknown> | null {
985
+ function extractBulletsObject(text: string): Record<string, unknown> | null {
986
986
  const stripped = text.replace(/```(?:json)?/g, "");
987
987
  const bulletsAt = stripped.indexOf('"bullets"');
988
988
  if (bulletsAt < 0) return null;
@@ -1085,7 +1085,7 @@ function synthesizeArtifact(
1085
1085
  evalId,
1086
1086
  taskFile: evalsPath,
1087
1087
  taskFileHash: contentHash,
1088
- clio: evalClioProvenance(),
1088
+ clioCoder: evalClioProvenance(),
1089
1089
  environment: evalEnvironmentProvenance(),
1090
1090
  target: target ?? null,
1091
1091
  model: null,
@@ -205,8 +205,7 @@ export async function runTargetsCommand(args: ReadonlyArray<string>): Promise<nu
205
205
  if (parsed.json) {
206
206
  const settings = readSettings();
207
207
  const candidateFor = (status: TargetStatus): string | null => {
208
- const orchestratorModel =
209
- settings.orchestrator?.target === status.target.id ? (settings.orchestrator?.model ?? null) : null;
208
+ const orchestratorModel = settings.chat?.target === status.target.id ? (settings.chat?.model ?? null) : null;
210
209
  return orchestratorModel ?? status.target.defaultModel ?? null;
211
210
  };
212
211
  const rows = filtered.map((status) => {
@@ -467,11 +466,11 @@ function runProfileRemove(args: ReadonlyArray<string>): number {
467
466
  }
468
467
  ensureClioState();
469
468
  const settings = readSettings();
470
- if (!settings.workers.profiles[parsed.name]) {
469
+ if (!settings.fleet.profiles[parsed.name]) {
471
470
  printError(`no fleet profile named ${parsed.name}`);
472
471
  return 1;
473
472
  }
474
- const boundAgents = Object.entries(settings.workers.agentBindings)
473
+ const boundAgents = Object.entries(settings.fleet.agentProfiles)
475
474
  .filter(([, profileName]) => profileName === parsed.name)
476
475
  .map(([agentId]) => agentId);
477
476
  if (boundAgents.length > 0 && !parsed.force) {
@@ -510,23 +509,23 @@ function runProfileRename(args: ReadonlyArray<string>): number {
510
509
  }
511
510
  ensureClioState();
512
511
  const settings = readSettings();
513
- if (!settings.workers.profiles[parsed.oldName]) {
512
+ if (!settings.fleet.profiles[parsed.oldName]) {
514
513
  printError(`no fleet profile named ${parsed.oldName}`);
515
514
  return 1;
516
515
  }
517
- if (settings.workers.profiles[parsed.newName]) {
516
+ if (settings.fleet.profiles[parsed.newName]) {
518
517
  printError(`fleet profile already exists: ${parsed.newName}`);
519
518
  return 2;
520
519
  }
521
520
  let updatedBindings = 0;
522
521
  updateSettings((fresh) => {
523
- const profile = fresh.workers.profiles[parsed.oldName];
522
+ const profile = fresh.fleet.profiles[parsed.oldName];
524
523
  if (!profile) return;
525
- fresh.workers.profiles[parsed.newName] = profile;
526
- delete fresh.workers.profiles[parsed.oldName];
527
- for (const [agentId, profileName] of Object.entries(fresh.workers.agentBindings)) {
524
+ fresh.fleet.profiles[parsed.newName] = profile;
525
+ delete fresh.fleet.profiles[parsed.oldName];
526
+ for (const [agentId, profileName] of Object.entries(fresh.fleet.agentProfiles)) {
528
527
  if (profileName !== parsed.oldName) continue;
529
- fresh.workers.agentBindings[agentId] = parsed.newName;
528
+ fresh.fleet.agentProfiles[agentId] = parsed.newName;
530
529
  updatedBindings += 1;
531
530
  }
532
531
  });
@@ -551,13 +550,13 @@ function runProfileBind(args: ReadonlyArray<string>): number {
551
550
  }
552
551
  ensureClioState();
553
552
  const settings = readSettings();
554
- if (settings.delegation.agents.some((agent) => agent.id === parsed.agentId)) {
553
+ if (settings.integrations.externalAgents.entries.some((agent) => agent.id === parsed.agentId)) {
555
554
  printError(
556
555
  `cannot bind ACP delegation agent '${parsed.agentId}' to a fleet profile; ACP agents use their own runner and ignore native target routing`,
557
556
  );
558
557
  return 1;
559
558
  }
560
- if (!settings.workers.profiles[parsed.profileName]) {
559
+ if (!settings.fleet.profiles[parsed.profileName]) {
561
560
  process.stderr.write(
562
561
  `${chalk.yellow("warning:")} fleet profile '${parsed.profileName}' is not configured; binding will resolve after the profile exists\n`,
563
562
  );
@@ -581,12 +580,12 @@ function runProfileUnbind(args: ReadonlyArray<string>): number {
581
580
  }
582
581
  ensureClioState();
583
582
  const settings = readSettings();
584
- if (!settings.workers.agentBindings[parsed]) {
583
+ if (!settings.fleet.agentProfiles[parsed]) {
585
584
  printError(`agent ${parsed} is not bound to a fleet profile`);
586
585
  return 1;
587
586
  }
588
587
  updateSettings((fresh) => {
589
- delete fresh.workers.agentBindings[parsed];
588
+ delete fresh.fleet.agentProfiles[parsed];
590
589
  });
591
590
  printOk(`unbound agent ${parsed}`);
592
591
  return 0;
@@ -608,10 +607,10 @@ function runProfileBindings(args: ReadonlyArray<string>): number {
608
607
  }
609
608
  ensureClioState();
610
609
  const settings = readSettings();
611
- const rows = Object.entries(settings.workers.agentBindings)
610
+ const rows = Object.entries(settings.fleet.agentProfiles)
612
611
  .sort(([a], [b]) => a.localeCompare(b))
613
612
  .map(([agentId, profileName]) => {
614
- const profile = settings.workers.profiles[profileName];
613
+ const profile = settings.fleet.profiles[profileName];
615
614
  return {
616
615
  agentId,
617
616
  profile: profileName,
@@ -686,7 +685,7 @@ function runFleet(args: ReadonlyArray<string>, usage = "clio-coder targets fleet
686
685
  ensureClioState();
687
686
  const settings = readSettings();
688
687
  const byId = new Map(settings.targets.map((target) => [target.id, target] as const));
689
- const rows = Object.entries(settings.workers.profiles).map(([name, profile]) => {
688
+ const rows = Object.entries(settings.fleet.profiles).map(([name, profile]) => {
690
689
  const target = profile.target ? byId.get(profile.target) : undefined;
691
690
  return {
692
691
  name,
@@ -782,7 +781,7 @@ function runConvert(args: ReadonlyArray<string>): number {
782
781
  printOk(`target ${id} already uses runtime ${runtimeId}`);
783
782
  return 0;
784
783
  }
785
- if (settings.orchestrator.target === id && !isOrchestratorEligibleRuntime(runtime)) {
784
+ if (settings.chat.target === id && !isOrchestratorEligibleRuntime(runtime)) {
786
785
  printError(`cannot convert orchestrator target '${id}' to non-HTTP/native runtime '${runtime.id}'`);
787
786
  return 1;
788
787
  }
@@ -917,7 +916,7 @@ function tableWidths(rows: ReadonlyArray<TargetTableRow>, width: number): Target
917
916
  * cut to its width, marked the same way. Colour is dropped on those rows because
918
917
  * the ansi bytes would sit inside the cut; a wrapped row costs more than colour.
919
918
  */
920
- export function formatTargetTable(
919
+ function formatTargetTable(
921
920
  rows: ReadonlyArray<TargetTableRow>,
922
921
  width: number,
923
922
  paintHealth: (cell: string, row: TargetTableRow) => string = (cell) => cell,
@@ -972,7 +971,7 @@ function renderTable(providers: ProvidersContract, entries: ReadonlyArray<Target
972
971
  }
973
972
  }
974
973
 
975
- export function targetTableRow(providers: ProvidersContract, status: TargetStatus): TargetTableRow {
974
+ function targetTableRow(providers: ProvidersContract, status: TargetStatus): TargetTableRow {
976
975
  const diagnostic = degradedHealthDiagnostic(status);
977
976
  return {
978
977
  id: status.target.id,
@@ -1034,7 +1033,7 @@ function capabilityBadges(caps: CapabilityFlags): string {
1034
1033
  * no states (cloud targets); "resident: none" when states are known and
1035
1034
  * nothing is loaded, so a cold box is distinguishable from an unknown one.
1036
1035
  */
1037
- export function residentModelsSummary(states: TargetStatus["discoveredModelStates"]): string | null {
1036
+ function residentModelsSummary(states: TargetStatus["discoveredModelStates"]): string | null {
1038
1037
  if (!states) return null;
1039
1038
  const entries = Object.entries(states);
1040
1039
  if (entries.length === 0) return null;
@@ -1049,7 +1048,7 @@ export function residentModelsSummary(states: TargetStatus["discoveredModelState
1049
1048
  * capability the target reported. Saying so is the difference between a number
1050
1049
  * a user can plan against and one they cannot.
1051
1050
  */
1052
- export function formatContextWindow(
1051
+ function formatContextWindow(
1053
1052
  status: Pick<TargetStatus, "capabilities" | "contextWindowProvenance"> &
1054
1053
  Partial<Pick<TargetStatus, "target" | "discoveredModelStates">>,
1055
1054
  ): string {
@@ -1065,7 +1064,7 @@ export function formatContextWindow(
1065
1064
  : `ctx ${window}`;
1066
1065
  }
1067
1066
 
1068
- export function formatNotes(status: TargetStatus): string {
1067
+ function formatNotes(status: TargetStatus): string {
1069
1068
  const parts: string[] = [];
1070
1069
  const diagnostic = degradedHealthDiagnostic(status);
1071
1070
  // The health diagnosis leads because gateway, context, and residency facts
@@ -166,7 +166,7 @@ function processSummary(reader: TraceReader, runId: string): TraceInspectProcess
166
166
  }
167
167
 
168
168
  /** Pure payload builder, exported so the fixed contract is testable without subprocess capture. */
169
- export function traceInspectSnapshot(
169
+ function traceInspectSnapshot(
170
170
  now: () => number = Date.now,
171
171
  databasePath: string = traceDatabasePath(clioStatePath()),
172
172
  ): TraceInspectSnapshot {
package/src/cli/trace.ts CHANGED
@@ -4,6 +4,7 @@ import { resolve } from "node:path";
4
4
  import { fileURLToPath, pathToFileURL } from "node:url";
5
5
  import { clioStatePath } from "../core/xdg.js";
6
6
  import {
7
+ assertTraceSelectOnly,
7
8
  DEFAULT_TRACE_RETENTION_POLICY,
8
9
  resolveTraceRetentionPolicy,
9
10
  TRACE_EVENT_POLL_LIMIT,
@@ -149,6 +150,14 @@ export async function runTraceCommand(args: string[]): Promise<number> {
149
150
  process.stderr.write("trace sql requires a SELECT query\n");
150
151
  return 2;
151
152
  }
153
+ if (command === "sql") {
154
+ try {
155
+ assertTraceSelectOnly(sqlQuery);
156
+ } catch (error) {
157
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
158
+ return 2;
159
+ }
160
+ }
152
161
 
153
162
  if (command === "ui") return runTraceUi(parsed.db, parsed.port);
154
163
 
@@ -378,6 +387,38 @@ function missingDatabase(parsed: ParsedTraceArgs): number {
378
387
  );
379
388
  return 1;
380
389
  }
390
+ if (parsed.json && parsed.positional[0] === "runs") {
391
+ process.stdout.write("[]\n");
392
+ return 0;
393
+ }
394
+ if (parsed.json && parsed.positional[0] === "prune") {
395
+ let policy: ReturnType<typeof resolveTraceRetentionPolicy>;
396
+ try {
397
+ policy = resolveTraceRetentionPolicy({
398
+ ...(parsed.maxAgeDays === undefined ? {} : { maxAgeDays: parsed.maxAgeDays }),
399
+ ...(parsed.maxBytes === undefined ? {} : { maxBytes: parsed.maxBytes }),
400
+ });
401
+ } catch (error) {
402
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
403
+ return 1;
404
+ }
405
+ process.stdout.write(
406
+ `${JSON.stringify(
407
+ {
408
+ available: false,
409
+ policy,
410
+ runsRemoved: 0,
411
+ rowsRemoved: 0,
412
+ bytesRemoved: 0,
413
+ vacuumed: false,
414
+ protectedRuns: 0,
415
+ },
416
+ null,
417
+ 2,
418
+ )}\n`,
419
+ );
420
+ return 0;
421
+ }
381
422
  process.stdout.write(
382
423
  `no trace database yet at ${parsed.db}. rows are recorded when a dispatch executes or an interactive turn runs; run \`clio-coder run "<task>"\` or start a session to create one.\n`,
383
424
  );
@@ -90,7 +90,7 @@ export interface ProjectContextInventory {
90
90
  * rather than one per session. Directories whose `.clio-coder/` is already gone are
91
91
  * dropped, because an inventory of nothing to do is noise.
92
92
  */
93
- export function projectContextInventory(stateDir: string): ProjectContextInventory {
93
+ function projectContextInventory(stateDir: string): ProjectContextInventory {
94
94
  const root = join(stateDir, "sessions");
95
95
  let hashes: string[];
96
96
  try {
@@ -298,7 +298,7 @@ function readNpmPrefix(): string | null {
298
298
  * that cannot be resolved is dangling, which is still something the operator
299
299
  * will hit and still not this installation.
300
300
  */
301
- export function otherClioOnPath(pathClio: string | null, localLink: string): string | null {
301
+ function otherClioOnPath(pathClio: string | null, localLink: string): string | null {
302
302
  if (pathClio === null) return null;
303
303
  if (pathClio === localLink) return null;
304
304
  const resolve = (path: string): string | null => {
@@ -1,12 +1,8 @@
1
1
  import { spawn } from "node:child_process";
2
- import { loadDomains } from "../core/domain-loader.js";
3
2
  import { initializeClioHome } from "../core/init.js";
4
3
  import { clioStateDir } from "../core/xdg.js";
5
- import { ConfigDomainModule } from "../domains/config/index.js";
6
- import type { LifecycleContract } from "../domains/lifecycle/contract.js";
7
- import { LifecycleDomainModule } from "../domains/lifecycle/index.js";
8
4
  import { detectInstallMethod } from "../domains/lifecycle/install-method.js";
9
- import { listMigrations } from "../domains/lifecycle/migrations/index.js";
5
+ import { listMigrations, runPending } from "../domains/lifecycle/migrations/index.js";
10
6
  import { readStateInfo } from "../domains/lifecycle/state.js";
11
7
  import { getVersionInfo } from "../domains/lifecycle/version.js";
12
8
  import { printError, printHeader, printOk } from "./shared.js";
@@ -229,36 +225,35 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
229
225
  if (opts.skipMigrations) {
230
226
  process.stdout.write("[upgrade] skipping migrations (--skip-migrations)\n");
231
227
  } else {
232
- const loaded = await loadDomains([ConfigDomainModule, LifecycleDomainModule]);
228
+ // Migrations run on the state tree directly rather than through the
229
+ // lifecycle domain. Loading that domain pulls in `config`, whose start
230
+ // runs the strict settings reader, and a settings-repairing migration is
231
+ // precisely the one that cannot get past it: `clio-coder upgrade` on a
232
+ // home whose settings.yaml names a retired key failed the domain load and
233
+ // never reached the migration that removes the key. A runner that needs
234
+ // valid config in order to repair invalid config can never run. The
235
+ // domain's `runMigrations` is a passthrough to this same function, so
236
+ // nothing is lost by calling it where the circularity does not exist.
237
+ let result: Awaited<ReturnType<typeof runPending>>;
233
238
  try {
234
- const lifecycle = loaded.getContract<LifecycleContract>("lifecycle");
235
- if (!lifecycle) {
236
- printError("lifecycle domain unavailable");
237
- return 1;
238
- }
239
- let result: Awaited<ReturnType<LifecycleContract["runMigrations"]>>;
240
- try {
241
- result = await lifecycle.runMigrations(stateDir);
242
- } catch (err) {
243
- // A migration reports why it could not run, but on its own that reads
244
- // as the whole upgrade being impossible. It is not: the rest of the
245
- // upgrade is independent of it, and naming the flag that runs the rest
246
- // is the difference between a stuck operator and a moved one.
247
- printError(
248
- `migration failed: ${err instanceof Error ? err.message : String(err)}`,
249
- "the rest of the upgrade does not depend on it; run `clio-coder upgrade --skip-migrations` to continue, then fix the cause and re-run `clio-coder upgrade`.",
250
- );
251
- return 1;
252
- }
253
- appliedIds = [...result.applied];
254
- appliedCount = appliedIds.length;
255
- if (appliedCount === 0) {
256
- process.stdout.write("[upgrade] no pending migrations\n");
257
- } else {
258
- for (const id of appliedIds) process.stdout.write(`[upgrade] applied migration ${id}\n`);
259
- }
260
- } finally {
261
- await loaded.stop();
239
+ result = await runPending(stateDir);
240
+ } catch (err) {
241
+ // A migration reports why it could not run, but on its own that reads
242
+ // as the whole upgrade being impossible. It is not: the rest of the
243
+ // upgrade is independent of it, and naming the flag that runs the rest
244
+ // is the difference between a stuck operator and a moved one.
245
+ printError(
246
+ `migration failed: ${err instanceof Error ? err.message : String(err)}`,
247
+ "the rest of the upgrade does not depend on it; run `clio-coder upgrade --skip-migrations` to continue, then fix the cause and re-run `clio-coder upgrade`.",
248
+ );
249
+ return 1;
250
+ }
251
+ appliedIds = [...result.applied];
252
+ appliedCount = appliedIds.length;
253
+ if (appliedCount === 0) {
254
+ process.stdout.write("[upgrade] no pending migrations\n");
255
+ } else {
256
+ for (const id of appliedIds) process.stdout.write(`[upgrade] applied migration ${id}\n`);
262
257
  }
263
258
  }
264
259
 
package/src/cli/usage.ts CHANGED
@@ -788,7 +788,7 @@ function indent(text: string): string {
788
788
  .join("\n");
789
789
  }
790
790
 
791
- export function inWindow(iso: string, start: number, end: number): boolean {
791
+ function inWindow(iso: string, start: number, end: number): boolean {
792
792
  const value = Date.parse(iso);
793
793
  return Number.isFinite(value) && value >= start && value <= end + USAGE_WINDOW_FUTURE_SKEW_MS;
794
794
  }
@@ -968,7 +968,7 @@ function bashCommandFromToolCallPayload(payload: unknown): string | null {
968
968
  * assignments dropped, verb plus subcommand kept, flags kept with values
969
969
  * stripped, remaining arguments dropped.
970
970
  */
971
- export function bashShape(command: string): string {
971
+ function bashShape(command: string): string {
972
972
  const firstLine = command.split("\n").find((line) => {
973
973
  const trimmed = line.trim();
974
974
  return trimmed.length > 0 && !trimmed.startsWith("#");
@@ -39,7 +39,7 @@ function describeLiveTarget(live: LiveModelInventory): string {
39
39
  }
40
40
 
41
41
  /** The refusal `configure` prints for a model the live target does not advertise. */
42
- export function formatUnadvertisedModelReason(modelId: string, live: LiveModelInventory): string {
42
+ function formatUnadvertisedModelReason(modelId: string, live: LiveModelInventory): string {
43
43
  const resident = live.resident.length > 0 ? live.resident.join(", ") : "none";
44
44
  return (
45
45
  `${describeLiveTarget(live)} does not advertise model '${modelId}'. ` +
@@ -283,7 +283,7 @@ function projectCheck(check: AuthoringCheck): VerifiersInspectCheck | null {
283
283
 
284
284
  const ORIGIN_RANK: Record<VerifierOrigin, number> = { "package-script": 0, catalog: 1, proposed: 2 };
285
285
 
286
- export function verifiersInspectSnapshot(
286
+ function verifiersInspectSnapshot(
287
287
  now: () => number = Date.now,
288
288
  workspaceRoot: string = process.cwd(),
289
289
  ): VerifiersInspectSnapshot {
@@ -149,7 +149,7 @@ async function drainDispatchEvents(
149
149
  let firstBlockReason: string | null = null;
150
150
  // Every event is consumed so finalization cannot block on an unread iterator.
151
151
  for await (const event of events) {
152
- if (!isRecord(event) || event.type !== "clio_tool_finish") continue;
152
+ if (!isRecord(event) || event.type !== "clio_coder_tool_finish") continue;
153
153
  const tool = eventPayloadString(event, "tool");
154
154
  if (!tool) continue;
155
155
  const outcome = eventPayloadString(event, "outcome") ?? "done";
@@ -190,7 +190,7 @@ interface WikiDispatchOutcome {
190
190
  * throws: a failed page must not take down the pages around it, and whatever
191
191
  * the run wrote before it stopped is already on disk.
192
192
  */
193
- export async function runWikiDispatch(input: {
193
+ async function runWikiDispatch(input: {
194
194
  dispatch: DispatchContract;
195
195
  cwd: string;
196
196
  outputDir: string;
@@ -371,7 +371,7 @@ async function runPagePhase(
371
371
  return next;
372
372
  }
373
373
 
374
- export async function generateWikiWithDocumenter(
374
+ async function generateWikiWithDocumenter(
375
375
  dispatch: DispatchContract,
376
376
  input: WikiGenerateInput,
377
377
  route: WikiModelRoute = {},
@@ -472,11 +472,11 @@ export async function resolveDocumenterModelId(route: WikiModelRoute = {}): Prom
472
472
  const providers = loaded.getContract<ProvidersContract>("providers");
473
473
  if (!config || !providers) return UNRESOLVED_DOCUMENTER_MODEL;
474
474
  const settings = config.get();
475
- const workers = settings.workers;
475
+ const workers = settings.fleet;
476
476
  // Keyed on the dispatched agent id and nothing else, because that is what
477
477
  // `placement.ts` reads. Falling back to another agent's binding here would
478
478
  // record a model in wiki metadata that no dispatch ever ran.
479
- const bindingProfileName = workers?.agentBindings?.[WIKI_AGENT_ID];
479
+ const bindingProfileName = workers?.agentProfiles?.[WIKI_AGENT_ID];
480
480
  const profile = bindingProfileName ? workers?.profiles?.[bindingProfileName] : undefined;
481
481
  const targetId = route.target ?? profile?.target ?? workers?.default?.target ?? settings.targets?.[0]?.id ?? null;
482
482
  if (!targetId) return UNRESOLVED_DOCUMENTER_MODEL;
@@ -75,7 +75,7 @@ const LOGIN_ENV_CAPTURE_TIMEOUT_MS = 10_000;
75
75
  let loginEnvCapture: Promise<NodeJS.ProcessEnv | null> | null = null;
76
76
 
77
77
  /** NUL-delimited `env -0` output to an env map; null when unusable (no PATH). */
78
- export function parseNullDelimitedEnv(raw: string): NodeJS.ProcessEnv | null {
78
+ function parseNullDelimitedEnv(raw: string): NodeJS.ProcessEnv | null {
79
79
  const env: NodeJS.ProcessEnv = {};
80
80
  for (const entry of raw.split("\0")) {
81
81
  if (entry.length === 0) continue;
@@ -16,7 +16,7 @@
16
16
  const BOOT_TRACE_ENV = "CLIO_CODER_TRACE_BOOT";
17
17
 
18
18
  /** True when boot tracing is enabled for this process. */
19
- export function isBootTraceEnabled(): boolean {
19
+ function isBootTraceEnabled(): boolean {
20
20
  return process.env[BOOT_TRACE_ENV] === "1";
21
21
  }
22
22
 
@@ -24,11 +24,11 @@ export function isBootTraceEnabled(): boolean {
24
24
  export function formatBootTrace(phase: string, detail?: string): string | null {
25
25
  if (!isBootTraceEnabled()) return null;
26
26
  const suffix = detail !== undefined && detail.length > 0 ? ` (${detail})` : "";
27
- return `[clio:boot] +${performance.now().toFixed(1)}ms ${phase}${suffix}\n`;
27
+ return `[clio-coder:boot] +${performance.now().toFixed(1)}ms ${phase}${suffix}\n`;
28
28
  }
29
29
 
30
30
  /**
31
- * Stamp a boot phase marker to stderr, e.g. `[clio:boot] +742.1ms cli entry`.
31
+ * Stamp a boot phase marker to stderr, e.g. `[clio-coder:boot] +742.1ms cli entry`.
32
32
  * `detail` appends a parenthetical (module counts, ids). No-op unless
33
33
  * `CLIO_CODER_TRACE_BOOT=1`. Never throws: a diagnostic must not affect boot.
34
34
  */
@@ -11,7 +11,7 @@
11
11
  * orchestrator-wide observability, not a domain concern. Add channels to the
12
12
  * `TRACED_CHANNELS` list if a future front needs to observe them.
13
13
  *
14
- * Ordering invariant: the first `[clio:bus] shutdown.requested` line must
14
+ * Ordering invariant: the first `[clio-coder:bus] shutdown.requested` line must
15
15
  * never reach stderr before the `Clio Coder: received <SIGNAL>, shutting down...`
16
16
  * notice written by termination.installSignalHandlers in
17
17
  * src/core/termination.ts. Future edits to termination.ts must preserve that
@@ -47,7 +47,7 @@ export function installBusTracer(): void {
47
47
  const bus = getSharedBus();
48
48
  for (const channel of TRACED_CHANNELS) {
49
49
  bus.on(channel, (payload) => {
50
- process.stderr.write(`[clio:bus] ${channel}${traceSuffix(payload)}\n`);
50
+ process.stderr.write(`[clio-coder:bus] ${channel}${traceSuffix(payload)}\n`);
51
51
  });
52
52
  }
53
53
  }
@@ -65,7 +65,7 @@ export interface CompileCacheHandle {
65
65
  * exercise the settle semantics without flipping the real process-global
66
66
  * cache.
67
67
  */
68
- export function createCompileCache(
68
+ function createCompileCache(
69
69
  enableFn: typeof enableCompileCache = enableCompileCache,
70
70
  rootExists: (dir: string) => boolean = existsSync,
71
71
  ): CompileCacheHandle {