@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
@@ -456,8 +456,8 @@ function calculateUsageCostUsd(meter: RunTokenMeter, pricing: EffectivePricing["
456
456
  * admit a route before settings are resolved, and it defers to the one place
457
457
  * that owns the default rather than restating the number here.
458
458
  */
459
- export function admissionMaxOutputTokens(settings: EffectiveSettings): number {
460
- return settings?.defaults.maxTokens ?? DEFAULT_SETTINGS.defaults.maxTokens;
459
+ function admissionMaxOutputTokens(settings: EffectiveSettings): number {
460
+ return settings?.chat.maxOutputTokens ?? DEFAULT_SETTINGS.chat.maxOutputTokens;
461
461
  }
462
462
 
463
463
  function conservativeRouteAdmissionEstimateUsd(pricing: EffectivePricing, maxOutputTokens: number): number {
@@ -509,7 +509,7 @@ function eventContainsFirstModelToken(event: Record<string, unknown>): boolean {
509
509
  }
510
510
 
511
511
  function eventStartsTool(event: Record<string, unknown>): boolean {
512
- return event.type === "tool_execution_start" || event.type === "clio_tool_start";
512
+ return event.type === "tool_execution_start" || event.type === "clio_coder_tool_start";
513
513
  }
514
514
 
515
515
  function finitePositive(value: unknown): number | undefined {
@@ -686,7 +686,7 @@ async function awaitEventDrain(drained: Promise<void>, graceMs = DISPATCH_DRAIN_
686
686
  function reportDispatchDiagnostic(scope: string, error: unknown): void {
687
687
  const message = error instanceof Error ? error.message : String(error);
688
688
  try {
689
- process.stderr.write(`[clio:dispatch] ${scope}: ${message}\n`);
689
+ process.stderr.write(`[clio-coder:dispatch] ${scope}: ${message}\n`);
690
690
  } catch {
691
691
  // stderr itself is best-effort
692
692
  }
@@ -892,7 +892,7 @@ export interface WorkspaceRootFacts {
892
892
  * claimed `npm test` then "validated" in 4ms. None of that is a model failure.
893
893
  * The harness knows the cwd exactly and was sending it nowhere.
894
894
  */
895
- export function readWorkspaceRootFacts(
895
+ function readWorkspaceRootFacts(
896
896
  cwd: string,
897
897
  readEntries: (dir: string) => Dirent[] = readDirentsSafely,
898
898
  ): WorkspaceRootFacts {
@@ -922,7 +922,7 @@ function readDirentsSafely(dir: string): Dirent[] {
922
922
  * projection of CLIO-CODER.md: a read-only scout that cannot afford the handbook read
923
923
  * still needs its first shell call to land in the right place.
924
924
  */
925
- export function renderWorkerWorkspaceContext(workspace: WorkspaceRootFacts): string {
925
+ function renderWorkerWorkspaceContext(workspace: WorkspaceRootFacts): string {
926
926
  const lines = ["# Workspace", `Root: ${workspace.root}`, "Your process starts here; relative paths resolve from it."];
927
927
  if (workspace.entries.length > 0) {
928
928
  lines.push(`Top level: ${workspace.entries.join(", ")}${workspace.truncated ? ", …" : ""}`);
@@ -975,7 +975,7 @@ function renderPipelineInput(input: PipelineInput): PipelineInputRender {
975
975
  * the command actually printed rather than a summary of it. Like pipeline
976
976
  * input, this is data and is never presented as instructions.
977
977
  */
978
- export function renderPredecessorHandoffs(handoffs: ReadonlyArray<ExecutionHandoff>): WorkerPromptMessage | null {
978
+ function renderPredecessorHandoffs(handoffs: ReadonlyArray<ExecutionHandoff>): WorkerPromptMessage | null {
979
979
  if (handoffs.length === 0) return null;
980
980
  const body = [
981
981
  "Outputs from this step's declared predecessors, in dependency order.",
@@ -1105,7 +1105,7 @@ export interface WorkerDynamicContext {
1105
1105
  * the projected "Verification expectations" body (verification-class runs
1106
1106
  * only); when off, output is byte-identical to the historical renderer.
1107
1107
  */
1108
- export function renderWorkerProjectContext(
1108
+ function renderWorkerProjectContext(
1109
1109
  project: ProjectStructuredContext,
1110
1110
  options: { includeVerification?: boolean } = {},
1111
1111
  ): string {
@@ -1147,7 +1147,7 @@ function workerProjectContextIncludesVerification(body: string): boolean {
1147
1147
  return body.includes("\nVerification expectations:\n");
1148
1148
  }
1149
1149
 
1150
- export function buildDynamicPromptMessages(
1150
+ function buildDynamicPromptMessages(
1151
1151
  req: DispatchRequest,
1152
1152
  dynamicContext: WorkerDynamicContext = {},
1153
1153
  ): WorkerPromptMessage[] {
@@ -1355,7 +1355,7 @@ interface DispatchLifecycleStage {
1355
1355
  interface AcpDelegationLifecycleStage {
1356
1356
  admission: DispatchAdmissionStage;
1357
1357
  pathScope: DispatchPathScope;
1358
- agentConfig: ReturnType<ConfigContract["get"]>["delegation"]["agents"][number];
1358
+ agentConfig: ReturnType<ConfigContract["get"]>["integrations"]["externalAgents"]["entries"][number];
1359
1359
  cwd: string;
1360
1360
  systemPrompt: string;
1361
1361
  dynamicPromptMessages: ReadonlyArray<WorkerPromptMessage>;
@@ -1607,7 +1607,7 @@ function workerToolCallHardCap(settings: EffectiveSettings): number {
1607
1607
  const parsedEnvCap = rawEnvCap && /^[1-9]\d*$/.test(rawEnvCap) ? Number(rawEnvCap) : Number.NaN;
1608
1608
  return Number.isSafeInteger(parsedEnvCap)
1609
1609
  ? parsedEnvCap
1610
- : (settings?.guardrails.workerToolCallCap ?? GUARDRAIL_DEFAULTS.workerToolCallCap);
1610
+ : (settings?.fleet.limits.toolCallsPerRun ?? GUARDRAIL_DEFAULTS.workerToolCallCap);
1611
1611
  }
1612
1612
 
1613
1613
  function resolveEffectiveWorkerBudget(input: {
@@ -1735,15 +1735,15 @@ function acpRuntimeLimitations(): string[] {
1735
1735
  }
1736
1736
 
1737
1737
  function readWorkerTargets(settings: ReturnType<ConfigContract["get"]> | undefined): WorkerTargets {
1738
- const workerDefault = settings?.workers?.default
1738
+ const workerDefault = settings?.fleet?.default
1739
1739
  ? {
1740
- target: settings.workers.default.target ?? null,
1741
- model: settings.workers.default.model ?? null,
1742
- thinkingLevel: (settings.workers.default.thinkingLevel ?? "off") as ThinkingLevel,
1740
+ target: settings.fleet.default.target ?? null,
1741
+ model: settings.fleet.default.model ?? null,
1742
+ thinkingLevel: (settings.fleet.default.thinkingLevel ?? "off") as ThinkingLevel,
1743
1743
  }
1744
1744
  : null;
1745
1745
  const workerProfiles: WorkerProfileMap = {};
1746
- for (const [name, profile] of Object.entries(settings?.workers?.profiles ?? {})) {
1746
+ for (const [name, profile] of Object.entries(settings?.fleet?.profiles ?? {})) {
1747
1747
  workerProfiles[name] = {
1748
1748
  target: profile.target ?? null,
1749
1749
  model: profile.model ?? null,
@@ -1751,7 +1751,7 @@ function readWorkerTargets(settings: ReturnType<ConfigContract["get"]> | undefin
1751
1751
  };
1752
1752
  }
1753
1753
  const agentBindings: WorkerAgentBindingMap = {};
1754
- for (const [agentId, profileName] of Object.entries(settings?.workers?.agentBindings ?? {})) {
1754
+ for (const [agentId, profileName] of Object.entries(settings?.fleet?.agentProfiles ?? {})) {
1755
1755
  const id = agentId.trim();
1756
1756
  const profile = profileName.trim();
1757
1757
  if (id.length > 0 && profile.length > 0) agentBindings[id] = profile;
@@ -1928,17 +1928,17 @@ function buildDispatchWorkerSpec(input: DispatchWorkerSpecInput, config?: Config
1928
1928
  if (input.req.trustProjectCompatRoots !== undefined) {
1929
1929
  spec.trustProjectCompatRoots = input.req.trustProjectCompatRoots;
1930
1930
  } else if (settings) {
1931
- spec.trustProjectCompatRoots = settings.skills.trustProjectCompatRoots === true;
1931
+ spec.trustProjectCompatRoots = settings.integrations.projectResources.trustProjectImports === true;
1932
1932
  }
1933
- spec.gitCommitAttribution = settings?.attribution.gitCommits ?? true;
1933
+ spec.gitCommitAttribution = settings?.integrations.git.commitAttribution ?? true;
1934
1934
  // Non-stall posture (Symphony §10.5): a dispatched worker has no operator
1935
1935
  // to answer a permission prompt by default, so the resolution policy ships
1936
1936
  // with the spec and the worker enforces it within bounded time. Under the
1937
1937
  // escalate posture the configured timeout/fallback bounds ride along so the
1938
1938
  // worker still cannot hang when no operator resolves the ask.
1939
- spec.onPermission = settings?.workers.onPermission ?? "deny";
1939
+ spec.onPermission = settings?.fleet.permissions.mode ?? "deny";
1940
1940
  if (spec.onPermission === "escalate") {
1941
- const escalation = settings?.workers.escalation;
1941
+ const escalation = settings?.fleet.permissions.escalation;
1942
1942
  if (escalation) spec.escalation = { timeoutMs: escalation.timeoutMs, fallback: escalation.fallback };
1943
1943
  }
1944
1944
  assertRuntimeCanHonorWorkerPermissionMode(input.target.runtime, spec.onPermission);
@@ -2032,7 +2032,7 @@ function autonomyEnforcementForAcpDelegation(
2032
2032
  dangerousBypass: true,
2033
2033
  };
2034
2034
  }
2035
- // clio-policy applies the exact autonomy mapping to every permission
2035
+ // clio-coder-policy applies the exact autonomy mapping to every permission
2036
2036
  // request. deny-all is stricter than every autonomy level, but is still a
2037
2037
  // Clio-mediated upper bound rather than an external approximation.
2038
2038
  return { grade: "mediated", autonomy, ...authorityEvidence, externalMode: toolGovernance };
@@ -2426,7 +2426,7 @@ export function createDispatchBundle(
2426
2426
  const heartbeatIntervalMs = options?.heartbeatIntervalMs ?? DEFAULT_HEARTBEAT_INTERVAL_MS;
2427
2427
  const getResilienceCooldownMs = (): number => {
2428
2428
  if (options?.resilienceCooldownMs !== undefined) return options.resilienceCooldownMs;
2429
- const settingsVal = getEffectiveSettings()?.workers?.resilienceCooldownMs;
2429
+ const settingsVal = getEffectiveSettings()?.fleet?.retry.routeCooldownMs;
2430
2430
  if (settingsVal !== undefined && settingsVal >= 0) return settingsVal;
2431
2431
  return DEFAULT_RESILIENCE_COOLDOWN_MS;
2432
2432
  };
@@ -2598,7 +2598,7 @@ export function createDispatchBundle(
2598
2598
  }
2599
2599
 
2600
2600
  function configuredGlobalCapacity(settings: EffectiveSettings): number {
2601
- const configured = settings?.budget.concurrency;
2601
+ const configured = settings?.fleet.concurrency;
2602
2602
  return scheduling.maxWorkers?.() ?? (configured === "auto" || configured === undefined ? 4 : Math.max(1, configured));
2603
2603
  }
2604
2604
 
@@ -2724,7 +2724,7 @@ export function createDispatchBundle(
2724
2724
  const finalizedCosts: Array<{ usd: number; provenance: import("../providers/index.js").CostProvenance }> = [];
2725
2725
 
2726
2726
  function workersMaxRetries(settings: EffectiveSettings = getEffectiveSettings()): number {
2727
- const value = settings?.workers?.maxRetries;
2727
+ const value = settings?.fleet?.retry.maxRetries;
2728
2728
  return typeof value === "number" && Number.isInteger(value) && value >= 0 ? value : 2;
2729
2729
  }
2730
2730
 
@@ -3418,11 +3418,11 @@ export function createDispatchBundle(
3418
3418
  providers,
3419
3419
  );
3420
3420
  enforceCapabilityGate(target.target.id, target.modelCapabilities, req.requiredCapabilities);
3421
- assertRuntimeCanHonorWorkerPermissionMode(target.runtime, settings?.workers.onPermission ?? "deny");
3421
+ assertRuntimeCanHonorWorkerPermissionMode(target.runtime, settings?.fleet.permissions.mode ?? "deny");
3422
3422
  assertWorkerBudgetEnforceable(target.runtime, spec.budget !== null || req.budget !== undefined);
3423
3423
 
3424
3424
  const cwd = req.cwd ?? process.cwd();
3425
- const sessionAutonomy = settings?.autonomy ?? "auto-edit";
3425
+ const sessionAutonomy = settings?.safety.autonomy ?? "auto-edit";
3426
3426
  const effectiveAutonomy = clampWorkerAutonomy(sessionAutonomy, req.autonomy);
3427
3427
  const effectiveTools = withLedgerToolNarrowing(
3428
3428
  effectiveToolNames(admission.allowedTools, target, pathScope.writeBoundaries.length > 0, deniedToolNames(req)),
@@ -3445,7 +3445,7 @@ export function createDispatchBundle(
3445
3445
  recipe.skills !== undefined &&
3446
3446
  recipe.skills.length > 0 &&
3447
3447
  req.noSkills !== true,
3448
- onPermission: settings?.workers.onPermission ?? "deny",
3448
+ onPermission: settings?.fleet.permissions.mode ?? "deny",
3449
3449
  persona: {
3450
3450
  id: `persona.${recipe.id}`,
3451
3451
  relPath: recipe.filepath,
@@ -3473,7 +3473,7 @@ export function createDispatchBundle(
3473
3473
  capabilityClass: spec.capabilityClass,
3474
3474
  projectContextTier: tier,
3475
3475
  autonomy: effectiveAutonomy,
3476
- onPermission: settings?.workers.onPermission ?? "deny",
3476
+ onPermission: settings?.fleet.permissions.mode ?? "deny",
3477
3477
  project,
3478
3478
  workspace: readWorkspaceRootFacts(cwd),
3479
3479
  });
@@ -3493,7 +3493,7 @@ export function createDispatchBundle(
3493
3493
  // Match chat-loop's LOCAL_API_KEY_FALLBACK so dispatch-spawned workers can
3494
3494
  // reach openai-compat local endpoints (LM Studio, llama.cpp) without
3495
3495
  // requiring the user to invent a credential.
3496
- const apiKey = auth?.apiKey ?? (auth === null ? "clio-local-target" : undefined);
3496
+ const apiKey = auth?.apiKey ?? (auth === null ? "clio-coder-local-target" : undefined);
3497
3497
  const runtimeKind: RunKind = target.runtime.kind;
3498
3498
  const limitations = runtimeLimitations(runtimeKind, target.runtime.id);
3499
3499
  return {
@@ -3548,16 +3548,16 @@ export function createDispatchBundle(
3548
3548
  }
3549
3549
  }
3550
3550
  if (!settings) throw new Error("dispatch: effective settings required for ACP delegation");
3551
- const configured = settings.delegation.agents.find((entry) => entry.id === agentId);
3551
+ const configured = settings.integrations.externalAgents.entries.find((entry) => entry.id === agentId);
3552
3552
  if (!configured) throw new Error(`dispatch: ACP delegation agent '${agentId}' not configured`);
3553
- const toolGovernance = configured.toolGovernance ?? "clio-policy";
3553
+ const toolGovernance = configured.toolGovernance ?? "clio-coder-policy";
3554
3554
  if (options?.autonomyOverride === true && toolGovernance === "agent-managed") {
3555
3555
  throw new Error(
3556
- `dispatch: ACP delegation agent '${agentId}' uses toolGovernance='agent-managed', which cannot enforce an explicit one-run autonomy override; choose clio-policy or deny-all governance, or omit --autonomy`,
3556
+ `dispatch: ACP delegation agent '${agentId}' uses toolGovernance='agent-managed', which cannot enforce an explicit one-run autonomy override; choose clio-coder-policy or deny-all governance, or omit --autonomy`,
3557
3557
  );
3558
3558
  }
3559
3559
  const admission = resolveDelegationAdmissionStage(req, safety);
3560
- const sessionAutonomy = settings.autonomy ?? "auto-edit";
3560
+ const sessionAutonomy = settings.safety.autonomy ?? "auto-edit";
3561
3561
  const autonomy = clampWorkerAutonomy(sessionAutonomy, req.autonomy);
3562
3562
  if (toolGovernance === "agent-managed" && autonomy !== sessionAutonomy) {
3563
3563
  throw new Error(
@@ -3755,15 +3755,15 @@ export function createDispatchBundle(
3755
3755
  if (eventContainsFirstModelToken(event)) markObservedPhase("firstModelTokenAt");
3756
3756
  if (eventStartsTool(event)) markObservedPhase("firstToolAt");
3757
3757
  }
3758
- if (event.type === "clio_tool_start" && event.payload && typeof event.payload.tool === "string") {
3758
+ if (event.type === "clio_coder_tool_start" && event.payload && typeof event.payload.tool === "string") {
3759
3759
  recordToolStart(inFlightTools, event.payload);
3760
3760
  }
3761
3761
  // ACP is an external protocol peer, never an authority for Clio's
3762
3762
  // deterministic terminal taxonomy. Ignore even syntactically valid
3763
3763
  // assertions; only a future coordinator-side classifier may set one.
3764
- if (event.type === "clio_run_outcome" && !reportedSpoofedOutcome) {
3764
+ if (event.type === "clio_coder_run_outcome" && !reportedSpoofedOutcome) {
3765
3765
  reportedSpoofedOutcome = true;
3766
- reportDispatchDiagnostic("ACP outcome event", new Error("ignored untrusted clio_run_outcome assertion"));
3766
+ reportDispatchDiagnostic("ACP outcome event", new Error("ignored untrusted clio_coder_run_outcome assertion"));
3767
3767
  }
3768
3768
  if (isRecord(event)) {
3769
3769
  const finishEntry = appendDispatchFinishContractEntry(finishContractEntries, event);
@@ -3794,7 +3794,7 @@ export function createDispatchBundle(
3794
3794
  if (message !== null) failureMessage = message;
3795
3795
  }
3796
3796
  }
3797
- if (event.type === "clio_permission_resolved" && event.payload && typeof event.payload.tool === "string") {
3797
+ if (event.type === "clio_coder_permission_resolved" && event.payload && typeof event.payload.tool === "string") {
3798
3798
  const requestId =
3799
3799
  typeof event.payload.requestId === "string" ? event.payload.requestId : `delegation-permission-${Date.now()}`;
3800
3800
  const origin = runIdForPermissionAudit !== null ? `delegation:${runIdForPermissionAudit}` : "delegation:unknown";
@@ -3820,7 +3820,7 @@ export function createDispatchBundle(
3820
3820
  ...(runIdForPermissionAudit !== null ? { requestedBy: runIdForPermissionAudit } : {}),
3821
3821
  });
3822
3822
  }
3823
- if (event.type === "clio_tool_finish" && event.payload && typeof event.payload.tool === "string") {
3823
+ if (event.type === "clio_coder_tool_finish" && event.payload && typeof event.payload.tool === "string") {
3824
3824
  recordToolCompletion(inFlightTools, event.payload);
3825
3825
  recordToolFinish(toolStats, event.payload);
3826
3826
  if (event.payload.decision === "allowed") safetyDecisionCounts.allowed += 1;
@@ -4022,7 +4022,7 @@ export function createDispatchBundle(
4022
4022
  const finalFailureMessage = result.failureMessage ?? failureMessage;
4023
4023
  const finalToolStats = snapshotToolStats(toolStats);
4024
4024
  const unfinished = snapshotUnfinishedTools(inFlightTools);
4025
- const toolGovernance = lifecycle.agentConfig.toolGovernance ?? "clio-policy";
4025
+ const toolGovernance = lifecycle.agentConfig.toolGovernance ?? "clio-coder-policy";
4026
4026
  return {
4027
4027
  runId: envelope.id,
4028
4028
  agentId: req.agentId,
@@ -4075,7 +4075,7 @@ export function createDispatchBundle(
4075
4075
  dynamicHash: lifecycle.dynamicHash,
4076
4076
  promptSignature: lifecycle.promptSignature,
4077
4077
  toolSignature: lifecycle.toolSignature,
4078
- clioVersion: readClioVersion(),
4078
+ clioCoderVersion: readClioVersion(),
4079
4079
  piMonoVersion: readPiMonoVersion(),
4080
4080
  platform: process.platform,
4081
4081
  nodeVersion: process.version,
@@ -4089,7 +4089,7 @@ export function createDispatchBundle(
4089
4089
  quality: createRunReceiptQuality({ runtimeEnforceable: false, enforcementPassed: null, resultContract: null }),
4090
4090
  autonomyEnforcement: autonomyEnforcementForAcpDelegation(
4091
4091
  lifecycle.autonomy,
4092
- lifecycle.agentConfig.toolGovernance ?? "clio-policy",
4092
+ lifecycle.agentConfig.toolGovernance ?? "clio-coder-policy",
4093
4093
  lifecycle.sessionAutonomy,
4094
4094
  req.autonomy,
4095
4095
  ),
@@ -4119,7 +4119,7 @@ export function createDispatchBundle(
4119
4119
  toolCallsRequested: result.delegation.toolCallsRequested,
4120
4120
  toolCallsApproved: result.delegation.toolCallsApproved,
4121
4121
  toolCallsDenied: result.delegation.toolCallsDenied,
4122
- toolGovernance: lifecycle.agentConfig.toolGovernance ?? "clio-policy",
4122
+ toolGovernance: lifecycle.agentConfig.toolGovernance ?? "clio-coder-policy",
4123
4123
  toolCallLog: acp.toolCallLog(),
4124
4124
  },
4125
4125
  sessionId: result.delegation.acpSessionId,
@@ -4354,7 +4354,7 @@ export function createDispatchBundle(
4354
4354
  const requestedAt = new Date(now()).toISOString();
4355
4355
  const timing: RunPhaseMarks = { requestedAt, decisionStartedAt: requestedAt };
4356
4356
  const settings = getEffectiveSettings();
4357
- const isAcpAgent = settings?.delegation?.agents?.some((entry) => entry.id === req.agentId) ?? false;
4357
+ const isAcpAgent = settings?.integrations.externalAgents?.entries?.some((entry) => entry.id === req.agentId) ?? false;
4358
4358
  if (isAcpAgent && !req.delegationAgentId) {
4359
4359
  req.delegationAgentId = req.agentId;
4360
4360
  }
@@ -4374,7 +4374,7 @@ export function createDispatchBundle(
4374
4374
  const recipe = agents.get(req.agentId);
4375
4375
  const activation = consumeActiveRouteApproval({
4376
4376
  request: req,
4377
- settings: settings?.routing,
4377
+ settings: settings?.fleet.adaptiveRouting,
4378
4378
  capabilityClass: recipe === null ? null : normalizeAgentSpec(recipe).capabilityClass,
4379
4379
  failover: failoverModeFor(req),
4380
4380
  requestedAt,
@@ -4668,7 +4668,7 @@ export function createDispatchBundle(
4668
4668
  context.bus.emit(BusChannels.DispatchProgress, {
4669
4669
  runId,
4670
4670
  agentId: req.agentId,
4671
- event: { type: "clio_write_record_downgraded", payload: downgrade },
4671
+ event: { type: "clio_coder_write_record_downgraded", payload: downgrade },
4672
4672
  });
4673
4673
  },
4674
4674
  });
@@ -4722,8 +4722,8 @@ export function createDispatchBundle(
4722
4722
  policySource?: string;
4723
4723
  reason?: string;
4724
4724
  skillActivation?: unknown;
4725
- // Worker permission-escalation fields (clio_permission_escalated /
4726
- // clio_permission_resolved escalate path).
4725
+ // Worker permission-escalation fields (clio_coder_permission_escalated /
4726
+ // clio_coder_permission_resolved escalate path).
4727
4727
  requestId?: string;
4728
4728
  summary?: string;
4729
4729
  target?: string;
@@ -4736,12 +4736,12 @@ export function createDispatchBundle(
4736
4736
  if (eventContainsFirstModelToken(event)) markObservedPhase("firstModelTokenAt");
4737
4737
  if (eventStartsTool(event)) markObservedPhase("firstToolAt");
4738
4738
  }
4739
- if (event.type === "clio_tool_start" && event.payload && typeof event.payload.tool === "string") {
4739
+ if (event.type === "clio_coder_tool_start" && event.payload && typeof event.payload.tool === "string") {
4740
4740
  recordToolStart(inFlightTools, event.payload);
4741
4741
  }
4742
- if (event.type === "clio_steer_received") acknowledgeSteer(event.payload?.sequence);
4742
+ if (event.type === "clio_coder_steer_received") acknowledgeSteer(event.payload?.sequence);
4743
4743
  if (
4744
- event.type === "clio_run_outcome" &&
4744
+ event.type === "clio_coder_run_outcome" &&
4745
4745
  isRunOutcomeCode(event.payload?.outcomeCode) &&
4746
4746
  event.payload.outcomeCode !== "worker_final_output_missing" &&
4747
4747
  event.payload.outcomeCode !== "host_verification_rejected"
@@ -4764,7 +4764,11 @@ export function createDispatchBundle(
4764
4764
  }
4765
4765
  recordWorkerRunEffect(runEffects, event);
4766
4766
  }
4767
- if (event.type === "clio_permission_escalated" && event.payload && typeof event.payload.requestId === "string") {
4767
+ if (
4768
+ event.type === "clio_coder_permission_escalated" &&
4769
+ event.payload &&
4770
+ typeof event.payload.requestId === "string"
4771
+ ) {
4768
4772
  escalationCounts.requested += 1;
4769
4773
  const ctx = isRecord(event.payload.decision) ? event.payload.decision : null;
4770
4774
  const classification = ctx !== null && isRecord(ctx.classification) ? ctx.classification : null;
@@ -4825,7 +4829,7 @@ export function createDispatchBundle(
4825
4829
  if (message !== null) failureMessage = message;
4826
4830
  }
4827
4831
  }
4828
- if (event.type === "clio_permission_resolved" && event.payload && typeof event.payload.tool === "string") {
4832
+ if (event.type === "clio_coder_permission_resolved" && event.payload && typeof event.payload.tool === "string") {
4829
4833
  // Escalation resolutions already have a request event. Policy
4830
4834
  // deny/fail is non-stalling, so dispatch mints the adjacent pair.
4831
4835
  const source = event.payload.source;
@@ -4878,7 +4882,7 @@ export function createDispatchBundle(
4878
4882
  ...(runIdForPermissionAudit !== null ? { requestedBy: runIdForPermissionAudit } : {}),
4879
4883
  });
4880
4884
  }
4881
- if (event.type === "clio_tool_finish" && event.payload && typeof event.payload.tool === "string") {
4885
+ if (event.type === "clio_coder_tool_finish" && event.payload && typeof event.payload.tool === "string") {
4882
4886
  recordToolCompletion(inFlightTools, event.payload);
4883
4887
  recordToolFinish(toolStats, event.payload);
4884
4888
  if (isSkillActivation(event.payload.skillActivation)) {
@@ -5237,7 +5241,7 @@ export function createDispatchBundle(
5237
5241
  dynamicHash: lifecycle.dynamicHash,
5238
5242
  promptSignature: lifecycle.promptSignature,
5239
5243
  toolSignature: lifecycle.toolSignature,
5240
- clioVersion: readClioVersion(),
5244
+ clioCoderVersion: readClioVersion(),
5241
5245
  piMonoVersion: readPiMonoVersion(),
5242
5246
  platform: process.platform,
5243
5247
  nodeVersion: process.version,
@@ -5262,7 +5266,7 @@ export function createDispatchBundle(
5262
5266
  ...(skillActivations.length > 0 ? { skillActivations: [...skillActivations] } : {}),
5263
5267
  autonomyEnforcement: autonomyEnforcementForWorkerSpec(
5264
5268
  spec,
5265
- lifecycle.settings?.autonomy ?? "auto-edit",
5269
+ lifecycle.settings?.safety.autonomy ?? "auto-edit",
5266
5270
  req.autonomy,
5267
5271
  ),
5268
5272
  safety: {
@@ -5775,7 +5779,7 @@ export function createDispatchBundle(
5775
5779
  req: DispatchRequest,
5776
5780
  settings: EffectiveSettings = getEffectiveSettings(),
5777
5781
  ): DispatchPlanTaskResolution {
5778
- const isAcpAgent = settings?.delegation?.agents?.some((entry) => entry.id === req.agentId) ?? false;
5782
+ const isAcpAgent = settings?.integrations.externalAgents?.entries?.some((entry) => entry.id === req.agentId) ?? false;
5779
5783
  if (isAcpAgent && !req.delegationAgentId) req = { ...req, delegationAgentId: req.agentId };
5780
5784
  const validation = routeValidationProjection(req, true);
5781
5785
  const validated = validateJobSpec(validation.jobSpec);
@@ -5851,7 +5855,7 @@ export function createDispatchBundle(
5851
5855
  req,
5852
5856
  );
5853
5857
  assertPostRuntimeToolCompatibility(req.agentId, agentSpec, effectiveTools, target);
5854
- assertRuntimeCanHonorWorkerPermissionMode(target.runtime, settings?.workers.onPermission ?? "deny");
5858
+ assertRuntimeCanHonorWorkerPermissionMode(target.runtime, settings?.fleet.permissions.mode ?? "deny");
5855
5859
  assertWorkerBudgetEnforceable(target.runtime, agentSpec.budget !== null || req.budget !== undefined);
5856
5860
  assertResponseSchemaEnforceable(target.runtime, target.modelCapabilities, req.responseSchema, effectiveTools.length);
5857
5861
  assertWriteRootsEnforceable(target.runtime, pathScope.writeBoundaries);
@@ -5913,7 +5917,7 @@ export function createDispatchBundle(
5913
5917
  specs,
5914
5918
  request: req,
5915
5919
  mode,
5916
- activeAgentRoles: settings?.routing.agentAutomation.activeAgentRoles ?? [],
5920
+ activeAgentRoles: settings?.fleet.adaptiveRouting.agentRoles ?? [],
5917
5921
  ...(agentIntent === undefined ? {} : { intentOverride: agentIntent }),
5918
5922
  });
5919
5923
  const settingsFingerprint = computeSettingsFingerprint(settings ?? null);
@@ -6008,7 +6012,7 @@ export function createDispatchBundle(
6008
6012
  const recipe = agents.get(req.agentId);
6009
6013
  return planActiveRoute({
6010
6014
  request: req,
6011
- settings: settings?.routing,
6015
+ settings: settings?.fleet.adaptiveRouting,
6012
6016
  capabilityClass: recipe === null ? null : normalizeAgentSpec(recipe).capabilityClass,
6013
6017
  failover: failoverModeFor(req),
6014
6018
  fixed,
@@ -6219,7 +6223,7 @@ export function createDispatchBundle(
6219
6223
  costProvenance: "unknown",
6220
6224
  compiledPromptHash: null,
6221
6225
  staticCompositionHash: null,
6222
- clioVersion: readClioVersion(),
6226
+ clioCoderVersion: readClioVersion(),
6223
6227
  piMonoVersion: readPiMonoVersion(),
6224
6228
  platform: process.platform,
6225
6229
  nodeVersion: process.version,
@@ -40,7 +40,7 @@ import { type ResultContract, resultContractShape } from "../agents/result-contr
40
40
  * its recipe keeps sole authority over the shape. Every other kind is fully
41
41
  * determined by its kind and can be quoted exactly.
42
42
  */
43
- export function fleetNodeAnswerDirective(kind: ResultContract["kind"]): string | null {
43
+ function fleetNodeAnswerDirective(kind: ResultContract["kind"]): string | null {
44
44
  if (kind === "architect-plan") return null;
45
45
  return [
46
46
  `Your result contract for this step is \`${kind}\`.`,
@@ -18,7 +18,6 @@ import { performance } from "node:perf_hooks";
18
18
  import { readClioVersion } from "../../core/package-root.js";
19
19
  import { shellQuote } from "../../core/shell-quote.js";
20
20
  import { clioStateDir } from "../../core/xdg.js";
21
- import { atomicWrite } from "../../engine/session.js";
22
21
  import {
23
22
  evaluateRouteFacts,
24
23
  type FactState,
@@ -92,16 +91,6 @@ export function readFleetPreflightRecords(): FleetPreflightRecord[] {
92
91
  }
93
92
  }
94
93
 
95
- /** Upsert records keyed by (nodeId, projectRoot). */
96
- export function recordFleetPreflight(records: ReadonlyArray<FleetPreflightRecord>): void {
97
- const existing = readFleetPreflightRecords();
98
- const merged = new Map<string, FleetPreflightRecord>();
99
- for (const record of existing) merged.set(`${record.nodeId}\0${record.projectRoot}`, record);
100
- for (const record of records) merged.set(`${record.nodeId}\0${record.projectRoot}`, record);
101
- const file: FleetPreflightStoreFile = { version: 2, records: [...merged.values()] };
102
- atomicWrite(storePath(), JSON.stringify(file, null, 2));
103
- }
104
-
105
94
  export interface FleetPreflightVerdict {
106
95
  ok: boolean;
107
96
  reason: string | null;
@@ -164,7 +153,8 @@ export function routeFactVerdict(
164
153
  return evaluateRouteFacts(targets, resources, requirement, options);
165
154
  }
166
155
 
167
- const PREFLIGHT_MARKER = "clio-preflight/1";
156
+ const PREFLIGHT_MARKER = "clio-coder-preflight/1";
157
+ const LEGACY_PREFLIGHT_MARKER = "clio-preflight/1";
168
158
  const DEFAULT_PREFLIGHT_TIMEOUT_MS = 20_000;
169
159
 
170
160
  /**
@@ -187,8 +177,8 @@ function buildPreflightScript(
187
177
  const cliBase = entry.endsWith(" worker") ? entry.slice(0, -" worker".length) : null;
188
178
  const versionProbe =
189
179
  cliBase !== null
190
- ? `v=$(${cliBase} --version 2>/dev/null | head -n 1); if [ -n "$v" ]; then echo "clio=$v"; else echo clio=missing; fi`
191
- : `echo clio=custom-entry`;
180
+ ? `v=$(${cliBase} --version 2>/dev/null | head -n 1); if [ -n "$v" ]; then echo "clioCoder=$v"; else echo clioCoder=missing; fi`
181
+ : `echo clioCoder=custom-entry`;
192
182
  const lines = [
193
183
  `echo ${shellQuote(PREFLIGHT_MARKER)}`,
194
184
  `if cd ${shellQuote(projectRoot)} 2>/dev/null; then echo cwd=ok; else echo cwd=missing; fi`,
@@ -342,7 +332,7 @@ export async function runFleetNodePreflight(
342
332
  // Probe latency is durable eligibility evidence compared across nodes and
343
333
  // across passes, so it is measured on the monotonic clock.
344
334
  const probeDurationMs = Math.round(performance.now() - probeStartedAt);
345
- if (!result.stdout.includes(PREFLIGHT_MARKER)) {
335
+ if (!result.stdout.includes(PREFLIGHT_MARKER) && !result.stdout.includes(LEGACY_PREFLIGHT_MARKER)) {
346
336
  const stderr = result.stderr.trim().split("\n").slice(-1)[0] ?? "";
347
337
  record.detail = `unreachable (ssh exit ${result.code}${stderr.length > 0 ? `: ${stderr}` : ""})`;
348
338
  return record;
@@ -364,8 +354,9 @@ export async function runFleetNodePreflight(
364
354
  };
365
355
  checks.pathParity = lines.includes("cwd=ok");
366
356
  checks.stateDirWritable = lines.includes("state=ok");
367
- const clioLine = lines.find((line) => line.startsWith("clio="));
368
- const clioValue = clioLine?.slice("clio=".length) ?? "missing";
357
+ const clioCoderLine = lines.find((line) => line.startsWith("clioCoder="));
358
+ const legacyClioLine = lines.find((line) => line.startsWith("clio="));
359
+ const clioValue = clioCoderLine?.slice("clioCoder=".length) ?? legacyClioLine?.slice("clio=".length) ?? "missing";
369
360
  if (clioValue === "custom-entry") {
370
361
  // A custom clioCoderEntry that is not `<cli> worker` cannot be version-probed;
371
362
  // the operator vouches for it. Presence is asserted, match is assumed.
@@ -204,12 +204,6 @@ export interface FleetRunOutcome {
204
204
  planHash: string;
205
205
  result: ExecutionPlanResult;
206
206
  receipts: ReadonlyArray<RunReceipt>;
207
- /**
208
- * The bare sum of every receipt's `costUsd`, which adds unpriced zeros to
209
- * priced dollars and so cannot be rendered on its own. Retained for the
210
- * interactive fleet overlay, which still reads it. Render `totalCost`.
211
- */
212
- totalCostUsd: number;
213
207
  /**
214
208
  * The fold that keeps unpriced calls distinguishable from priced ones, so a
215
209
  * run whose every receipt came back `unknown` renders as not measured rather
@@ -862,7 +856,6 @@ export async function executeFleetRun(input: ExecuteFleetRunInput): Promise<Flee
862
856
  planHash: input.plan.hash,
863
857
  result,
864
858
  receipts,
865
- totalCostUsd: receipts.reduce((sum, receipt) => sum + receipt.costUsd, 0),
866
859
  totalCost: aggregateCostAmounts(
867
860
  receipts.map((receipt) => ({ usd: receipt.costUsd, provenance: receipt.costProvenance })),
868
861
  ),
@@ -380,7 +380,8 @@ function semanticError(value: unknown): string | null {
380
380
  value.winner.index < 1 ||
381
381
  !isSubjectRef(value.winner.subject) ||
382
382
  typeof value.winner.branch !== "string" ||
383
- value.winner.branch !== `clio/compete/${value.group}/${value.winner.index}`
383
+ (value.winner.branch !== `clio-coder/compete/${value.group}/${value.winner.index}` &&
384
+ value.winner.branch !== `clio/compete/${value.group}/${value.winner.index}`)
384
385
  ) {
385
386
  return "gate decision winner invalid";
386
387
  }
@@ -433,9 +434,12 @@ function pendingDecisionPath(id: string, stateDir = clioStateDir()): string {
433
434
  return join(pendingDecisionsDirectory(stateDir), `${id}.json`);
434
435
  }
435
436
 
436
- function decisionPayload(decision: Omit<GateDecisionArtifact, "integrity">): Record<string, unknown> {
437
+ function decisionPayload(
438
+ decision: Omit<GateDecisionArtifact, "integrity">,
439
+ legacyNaming = false,
440
+ ): Record<string, unknown> {
437
441
  return {
438
- contract: "clio.gateDecision.integrity",
442
+ contract: legacyNaming ? "clio.gateDecision.integrity" : "clio-coder.gateDecision.integrity",
439
443
  version: decision.version,
440
444
  id: decision.id,
441
445
  group: decision.group,
@@ -467,9 +471,9 @@ function decisionPayload(decision: Omit<GateDecisionArtifact, "integrity">): Rec
467
471
  };
468
472
  }
469
473
 
470
- function decisionDigest(decision: Omit<GateDecisionArtifact, "integrity">): string {
474
+ function decisionDigest(decision: Omit<GateDecisionArtifact, "integrity">, legacyNaming = false): string {
471
475
  return createHash("sha256")
472
- .update(JSON.stringify(decisionPayload(decision)), "utf8")
476
+ .update(JSON.stringify(decisionPayload(decision, legacyNaming)), "utf8")
473
477
  .digest("hex");
474
478
  }
475
479
 
@@ -502,7 +506,9 @@ export function verifyGateDecisionArtifact(artifact: GateDecisionArtifact): Gate
502
506
  const invalid = semanticError(artifact);
503
507
  if (invalid !== null) return { ok: false, reason: invalid };
504
508
  if (!/^[0-9a-f]{64}$/.test(artifact.integrity.digest)) return { ok: false, reason: "gate decision integrity invalid" };
505
- return decisionDigest(artifactWithoutIntegrity(artifact)) === artifact.integrity.digest
509
+ const withoutIntegrity = artifactWithoutIntegrity(artifact);
510
+ return decisionDigest(withoutIntegrity) === artifact.integrity.digest ||
511
+ decisionDigest(withoutIntegrity, true) === artifact.integrity.digest
506
512
  ? { ok: true }
507
513
  : { ok: false, reason: "gate decision integrity mismatch" };
508
514
  }
@@ -597,10 +603,13 @@ function cloneGateDecisionArtifact(artifact: GateDecisionArtifact): GateDecision
597
603
  };
598
604
  }
599
605
 
600
- function pendingRecordPayload(record: PendingGateRecordWithoutIntegrity): Record<string, unknown> {
606
+ function pendingRecordPayload(
607
+ record: PendingGateRecordWithoutIntegrity,
608
+ legacyNaming = false,
609
+ ): Record<string, unknown> {
601
610
  if (record.kind === "output") {
602
611
  return {
603
- contract: "clio.gateDecision.pending",
612
+ contract: legacyNaming ? "clio.gateDecision.pending" : "clio-coder.gateDecision.pending",
604
613
  version: record.version,
605
614
  kind: record.kind,
606
615
  id: record.id,
@@ -617,12 +626,12 @@ function pendingRecordPayload(record: PendingGateRecordWithoutIntegrity): Record
617
626
  }
618
627
  const decisionWithoutIntegrity = artifactWithoutIntegrity(record.decision);
619
628
  return {
620
- contract: "clio.gateDecision.pending",
629
+ contract: legacyNaming ? "clio.gateDecision.pending" : "clio-coder.gateDecision.pending",
621
630
  version: record.version,
622
631
  kind: record.kind,
623
632
  id: record.id,
624
633
  decision: {
625
- ...decisionPayload(decisionWithoutIntegrity),
634
+ ...decisionPayload(decisionWithoutIntegrity, legacyNaming),
626
635
  integrity: { ...record.decision.integrity },
627
636
  },
628
637
  ...(record.finalOutput !== undefined ? { finalOutput: record.finalOutput } : {}),
@@ -631,9 +640,9 @@ function pendingRecordPayload(record: PendingGateRecordWithoutIntegrity): Record
631
640
  };
632
641
  }
633
642
 
634
- function pendingRecordDigest(record: PendingGateRecordWithoutIntegrity): string {
643
+ function pendingRecordDigest(record: PendingGateRecordWithoutIntegrity, legacyNaming = false): string {
635
644
  return createHash("sha256")
636
- .update(JSON.stringify(pendingRecordPayload(record)), "utf8")
645
+ .update(JSON.stringify(pendingRecordPayload(record, legacyNaming)), "utf8")
637
646
  .digest("hex");
638
647
  }
639
648
 
@@ -721,10 +730,12 @@ function pendingSemanticError(value: unknown): string | null {
721
730
  }
722
731
 
723
732
  /** Verify both the pending envelope and its nested final artifact, when resolved. */
724
- export function verifyPendingGateDecisionRecord(record: PendingGateDecisionRecord): GateDecisionVerification {
733
+ function verifyPendingGateDecisionRecord(record: PendingGateDecisionRecord): GateDecisionVerification {
725
734
  const invalid = pendingSemanticError(record);
726
735
  if (invalid !== null) return { ok: false, reason: invalid };
727
- return pendingRecordDigest(pendingRecordWithoutIntegrity(record)) === record.integrity.digest
736
+ const withoutIntegrity = pendingRecordWithoutIntegrity(record);
737
+ return pendingRecordDigest(withoutIntegrity) === record.integrity.digest ||
738
+ pendingRecordDigest(withoutIntegrity, true) === record.integrity.digest
728
739
  ? { ok: true }
729
740
  : { ok: false, reason: "pending gate decision integrity mismatch" };
730
741
  }