@iowarp/clio-coder 0.3.9 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (733) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/NOTICE +33 -0
  3. package/README.md +121 -16
  4. package/dist/{acp-7LOELQFP.js → acp-ZILU3AUO.js} +19 -18
  5. package/dist/{agents-FIBG2SHA.js → agents-HYWGBGQR.js} +53 -39
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-OI4LIH2I.js → auth-N3QT7CBO.js} +24 -21
  8. package/dist/{builtins-AD25UL3C.js → builtins-UJLMOVOV.js} +6 -6
  9. package/dist/{chunk-I4HZDVNP.js → chunk-2LEAKD4C.js} +2 -3
  10. package/dist/{chunk-465CC7FK.js → chunk-2NM363SV.js} +60 -64
  11. package/dist/{chunk-4H6ULJ3H.js → chunk-2VG7KLYV.js} +1046 -1370
  12. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  13. package/dist/{chunk-NZU6YDNV.js → chunk-3I5NY75V.js} +5 -5
  14. package/dist/{chunk-47CMYGET.js → chunk-3QSOM6PA.js} +2 -2
  15. package/dist/chunk-42FMPA75.js +101 -0
  16. package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
  17. package/dist/{chunk-IHKBWSXF.js → chunk-5QIAJV2D.js} +3 -3
  18. package/dist/chunk-5YHDIDBP.js +97 -0
  19. package/dist/chunk-6CCS4G3W.js +1529 -0
  20. package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
  21. package/dist/{chunk-BVDVID7E.js → chunk-6FN3E6KX.js} +6 -6
  22. package/dist/{chunk-DG4M6ZUE.js → chunk-6HMJX2VU.js} +59 -59
  23. package/dist/{chunk-3MRC2YSQ.js → chunk-6I5ILFOF.js} +3 -2
  24. package/dist/chunk-6NJQITNH.js +1412 -0
  25. package/dist/chunk-6VC4OV3Z.js +365 -0
  26. package/dist/{chunk-LU7P4LHA.js → chunk-72GZI5EV.js} +2 -2
  27. package/dist/{chunk-5T7RBWN2.js → chunk-74YWRRU5.js} +9 -8
  28. package/dist/{chunk-VPTUJU4P.js → chunk-7EPLI7VL.js} +2 -2
  29. package/dist/{chunk-CA42X6KT.js → chunk-7OBGU7UB.js} +7 -7
  30. package/dist/{chunk-56KB5IJP.js → chunk-7PWAODYW.js} +3 -3
  31. package/dist/chunk-7RY5VZPH.js +573 -0
  32. package/dist/{chunk-OEDBCISO.js → chunk-ABLSQ6JX.js} +3 -3
  33. package/dist/{chunk-5HFBWUMU.js → chunk-AFKWHWXF.js} +13 -23
  34. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  35. package/dist/{chunk-WXCJ7VME.js → chunk-AKB4GYDL.js} +7 -7
  36. package/dist/chunk-AP73CFDC.js +308 -0
  37. package/dist/{chunk-4LJX2PUC.js → chunk-BBTJOK6Y.js} +5 -5
  38. package/dist/{chunk-QQ7EKM72.js → chunk-BDPT6GTK.js} +13 -61
  39. package/dist/chunk-BJGUKIG4.js +302 -0
  40. package/dist/chunk-BMS5RKQY.js +27 -0
  41. package/dist/{chunk-TD7UE2L5.js → chunk-BTGG6BG2.js} +81 -40
  42. package/dist/chunk-BTK3SSSK.js +67 -0
  43. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  44. package/dist/chunk-BWW4HLO4.js +301 -0
  45. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  46. package/dist/{chunk-HJB5IUKP.js → chunk-C537JADH.js} +18 -18
  47. package/dist/{chunk-774ILSRL.js → chunk-CDNVLKUX.js} +5 -4
  48. package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
  49. package/dist/{chunk-AEYBF3TB.js → chunk-CWVRRIEI.js} +2 -2
  50. package/dist/chunk-D4CJV46V.js +462 -0
  51. package/dist/chunk-D7E7WCDF.js +27 -0
  52. package/dist/{chunk-5PVQ4SRS.js → chunk-E67WX76H.js} +10 -126
  53. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  54. package/dist/chunk-EIMVLWB3.js +1842 -0
  55. package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
  56. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  57. package/dist/{chunk-3DUR4WUA.js → chunk-FYUN5KZ3.js} +25 -25
  58. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  59. package/dist/chunk-GIZNH63R.js +40 -0
  60. package/dist/chunk-GPPB3JBE.js +688 -0
  61. package/dist/{chunk-B5XRQOLB.js → chunk-GVQJ5CCZ.js} +17 -11
  62. package/dist/chunk-HHV2GANA.js +88 -0
  63. package/dist/chunk-HJWWJ6IL.js +184 -0
  64. package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
  65. package/dist/chunk-HRQMFLJP.js +75 -0
  66. package/dist/{chunk-AD7Y7STJ.js → chunk-HUAS7ITX.js} +107 -97
  67. package/dist/{chunk-O6I4CIEU.js → chunk-I66EAJFY.js} +6 -6
  68. package/dist/{chunk-S4COXYBG.js → chunk-IG7BCQBA.js} +129 -106
  69. package/dist/{chunk-N3PBVRTZ.js → chunk-IXJT6DCX.js} +9 -7
  70. package/dist/chunk-J4HBWF6Y.js +2635 -0
  71. package/dist/chunk-J5LZHVIT.js +284 -0
  72. package/dist/{chunk-GAYUJ7LE.js → chunk-JA5QWE4Z.js} +544 -227
  73. package/dist/{chunk-B5CSFE7B.js → chunk-JIEGK6UF.js} +6 -174
  74. package/dist/{chunk-VKBMFOYV.js → chunk-JZWT5J3Y.js} +23 -27
  75. package/dist/chunk-K6BF4U2H.js +1785 -0
  76. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  77. package/dist/{chunk-YSEHGPCT.js → chunk-MA3H6DM5.js} +6 -6
  78. package/dist/{chunk-EBOC7MT3.js → chunk-MOPSG2X7.js} +9 -9
  79. package/dist/{chunk-KV2AOLDF.js → chunk-MQXIVJ35.js} +18 -29
  80. package/dist/{chunk-P3JGPQFL.js → chunk-N5UK64DP.js} +4 -4
  81. package/dist/chunk-NDDGJUXD.js +81 -0
  82. package/dist/chunk-NEKRRTYW.js +56 -0
  83. package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
  84. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  85. package/dist/{chunk-T3Z6VAAF.js → chunk-OJTRZGR3.js} +53 -92
  86. package/dist/{chunk-5DQRIYDZ.js → chunk-PBP4B7XR.js} +3 -3
  87. package/dist/{chunk-NQ6UCCOD.js → chunk-PJJ6MY27.js} +8 -8
  88. package/dist/chunk-PMZCIOCJ.js +25 -0
  89. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  90. package/dist/{chunk-7C6RYZGQ.js → chunk-PVAMAVBB.js} +5 -4
  91. package/dist/chunk-QDC3K2U3.js +262 -0
  92. package/dist/{chunk-JEQQR47K.js → chunk-QKIFBZKT.js} +173 -14
  93. package/dist/{chunk-R7LNVMCS.js → chunk-QMXC4JB7.js} +70 -78
  94. package/dist/chunk-QSNYB6ZV.js +195 -0
  95. package/dist/chunk-QTFGO774.js +644 -0
  96. package/dist/{chunk-ODFEOB4F.js → chunk-R23Z6K6I.js} +27 -9
  97. package/dist/{chunk-3UUY7R3Z.js → chunk-R32CLGZ6.js} +14 -14
  98. package/dist/chunk-R346GLFC.js +31 -0
  99. package/dist/chunk-RKSR6VSF.js +132 -0
  100. package/dist/{chunk-N5XKWMDW.js → chunk-SCYB3HA4.js} +73 -27
  101. package/dist/{chunk-PZ4I4JE2.js → chunk-SINK3QR6.js} +135 -125
  102. package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
  103. package/dist/chunk-T56WDKA5.js +183 -0
  104. package/dist/{chunk-ECUO3KDP.js → chunk-TD3PGPQA.js} +87 -26
  105. package/dist/{chunk-HKO36JWF.js → chunk-THYWACCR.js} +31 -3
  106. package/dist/{chunk-LXPJXFM5.js → chunk-TVH4ONAM.js} +18 -12
  107. package/dist/chunk-TVHHYFHE.js +255 -0
  108. package/dist/chunk-U2WB7TZS.js +271 -0
  109. package/dist/{chunk-NNNWO6F2.js → chunk-UAPGZHYC.js} +237 -33
  110. package/dist/{chunk-MIX5N5AC.js → chunk-UEDMSP56.js} +415 -160
  111. package/dist/{chunk-WIE7ZOSW.js → chunk-UXN6JT4W.js} +3 -3
  112. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  113. package/dist/{chunk-MV2VUEJC.js → chunk-VEGN6WIQ.js} +2 -2
  114. package/dist/chunk-VKFQTNDV.js +66 -0
  115. package/dist/{chunk-FALJGAWU.js → chunk-VKRH2TCS.js} +2 -2
  116. package/dist/{chunk-A2NJGIB3.js → chunk-VN3SHNBN.js} +2 -2
  117. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  118. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  119. package/dist/{chunk-EQ63NRB7.js → chunk-WNP7O5WZ.js} +3 -3
  120. package/dist/chunk-WR6U3OVP.js +45 -0
  121. package/dist/{chunk-TEO2TLVN.js → chunk-XKA2ICR3.js} +1051 -1196
  122. package/dist/{chunk-3V5AYSEQ.js → chunk-Y45G3AXC.js} +72 -65
  123. package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
  124. package/dist/chunk-YAKGTXEV.js +17 -0
  125. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  126. package/dist/{chunk-YW7UVM5V.js → chunk-ZAZB4JMW.js} +55 -11
  127. package/dist/{chunk-HCBCAYZU.js → chunk-ZJLUDYFY.js} +11 -11
  128. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  129. package/dist/{chunk-IFBNV6H6.js → chunk-ZW55JB7N.js} +3 -3
  130. package/dist/cli/index.js +48 -37
  131. package/dist/clio-IT3G3VQH.js +25 -0
  132. package/dist/{code-nav-LMW275PA.js → code-nav-RK6S7F6E.js} +8 -8
  133. package/dist/codewiki/build-worker.js +1 -1
  134. package/dist/{compile-cache-CVJMMODC.js → compile-cache-OQAVB7Y5.js} +3 -5
  135. package/dist/{components-ZFA3SAER.js → components-UBWCQSRW.js} +6 -6
  136. package/dist/{config-RXS5T3JT.js → config-3QZRWZJF.js} +73 -61
  137. package/dist/configure-FL7Y3KJF.js +54 -0
  138. package/dist/{context-MVOORGMF.js → context-5HE7ODYK.js} +61 -49
  139. package/dist/{context-I3BTOTCS.js → context-KYQFRVDC.js} +11 -11
  140. package/dist/{context-PALKKQYL.js → context-XNHL75JV.js} +43 -28
  141. package/dist/{context-clear-N2WOYZ2K.js → context-clear-N545L53A.js} +60 -48
  142. package/dist/{context-working-set-MIEVECVZ.js → context-working-set-QHKXSV2F.js} +15 -13
  143. package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-RGIE5PCT.js} +109 -72
  144. package/dist/{docs-7LQ23DLM.js → docs-5NAF6AU7.js} +7 -13
  145. package/dist/doctor-ZGPEGHIP.js +772 -0
  146. package/dist/{eval-IJ5VEZDJ.js → eval-GXLL44RD.js} +106 -86
  147. package/dist/eval-inventory-HBWSWQOK.js +315 -0
  148. package/dist/{evidence-L5APPXNV.js → evidence-HWLBRH3Q.js} +209 -51
  149. package/dist/{evolve-RGNKFJ52.js → evolve-FTZBMNVW.js} +57 -45
  150. package/dist/{extensions-7WYWUX5A.js → extensions-VHRBEID7.js} +7 -7
  151. package/dist/{fleet-6CNVBZZP.js → fleet-CKZHJWZJ.js} +215 -114
  152. package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-EXDXBMV6.js} +13 -12
  153. package/dist/fleet-decisions-OTHB6KRL.js +157 -0
  154. package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-YTEZUCUT.js} +20 -17
  155. package/dist/fleet-inspect-SS6YMDCK.js +445 -0
  156. package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-PBY4VYOM.js} +6 -9
  157. package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-KMEM5L3S.js} +25 -20
  158. package/dist/fleet-verify-QD5M7E7Q.js +178 -0
  159. package/dist/fleet-view-WAMJYNDT.js +94 -0
  160. package/dist/{init-VBN2ACVA.js → init-5XQRBOFV.js} +79 -66
  161. package/dist/install-NKNG7KD4.js +13 -0
  162. package/dist/interop-34TVO25M.js +116 -0
  163. package/dist/{library-JHGUMLY2.js → library-3QY6KF57.js} +25 -21
  164. package/dist/{memory-K4OQIYWG.js → memory-L4UTIIIW.js} +59 -47
  165. package/dist/{models-2NCZUWDD.js → models-ZVX3QOWE.js} +47 -37
  166. package/dist/{monitor-MMVTJABD.js → monitor-CEKVSYTS.js} +67 -57
  167. package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-77BAP6BC.js} +7633 -7699
  168. package/dist/panes-7STHOAUJ.js +103 -0
  169. package/dist/panes-SHAUIRXY.js +60 -0
  170. package/dist/{paths-DBXMZMDU.js → paths-L7LGY6RN.js} +6 -6
  171. package/dist/{reset-DD5JGOY3.js → reset-EOLM7GVE.js} +15 -14
  172. package/dist/resources-74GKTLSF.js +115 -0
  173. package/dist/{run-QEGNX7FL.js → run-HBAUJNNZ.js} +139 -98
  174. package/dist/{share-JKD3BQMW.js → share-G3APVLVP.js} +25 -21
  175. package/dist/{skills-LMQIKDOZ.js → skills-35HHUKCR.js} +37 -27
  176. package/dist/{skills-eval-I7X2774U.js → skills-eval-QN4HSHDC.js} +80 -73
  177. package/dist/skills-inventory-J357J34F.js +129 -0
  178. package/dist/slash-commands-JZZCQA32.js +79 -0
  179. package/dist/{steer-CF5TDANS.js → steer-XAVHJM22.js} +4 -4
  180. package/dist/{support-I7LOJLIF.js → support-U7QOWY26.js} +7 -7
  181. package/dist/{targets-RUSR6B5Z.js → targets-DSM6CY3M.js} +67 -59
  182. package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-JOPFUVEM.js} +15 -10
  183. package/dist/tools-MKNWVPBH.js +29 -0
  184. package/dist/{trace-ODOQIVIW.js → trace-ECQ7TIYZ.js} +194 -7
  185. package/dist/tui-primitives-K5PASC3O.js +17 -0
  186. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-N34PCTGJ.js} +6 -8
  187. package/dist/{upgrade-XANW3FXB.js → upgrade-H7TOM7YL.js} +37 -62
  188. package/dist/{usage-4H7ZRXQT.js → usage-X52N3IDJ.js} +70 -59
  189. package/dist/{verifiers-UZXNBZEB.js → verifiers-EJTVVSMA.js} +174 -14
  190. package/dist/{verify-BVKWTNDL.js → verify-YJL6XET2.js} +12 -11
  191. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-MPIFL3LL.js} +3 -4
  192. package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-4NDZTQ4B.js} +86 -75
  193. package/dist/with-panes-OBOBFIIR.js +818 -0
  194. package/dist/worker/entry.js +131 -91
  195. package/docs/README.md +3 -2
  196. package/docs/acp.md +25 -4
  197. package/docs/alcf-provider.md +1 -1
  198. package/docs/architecture.md +2 -2
  199. package/docs/artifact-versions.md +4 -1
  200. package/docs/built-in-agents.md +40 -32
  201. package/docs/capacity-and-scheduling.md +43 -5
  202. package/docs/commands-and-modes.md +39 -4
  203. package/docs/config-knobs-audit.md +3 -0
  204. package/docs/configuration-and-targets.md +138 -167
  205. package/docs/context-engine.md +1 -1
  206. package/docs/development-pipeline.md +19 -0
  207. package/docs/dispatch-typed-intent.md +385 -0
  208. package/docs/documentation-coverage.md +2 -2
  209. package/docs/documentation-guide.md +1 -1
  210. package/docs/environment-variables.md +3 -1
  211. package/docs/eval-runner.md +1 -1
  212. package/docs/evals-internal.md +1 -1
  213. package/docs/evidence-and-memory.md +2 -2
  214. package/docs/evolution.md +1 -1
  215. package/docs/exit-codes-and-output.md +3 -1
  216. package/docs/extensions-and-sharing.md +25 -1
  217. package/docs/fleet-demo-runbook.md +6 -3
  218. package/docs/fleet-dispatch.md +30 -7
  219. package/docs/installation-and-lifecycle.md +16 -3
  220. package/docs/middleware-and-components.md +1 -1
  221. package/docs/model-catalog.md +10 -1
  222. package/docs/observability.md +3 -3
  223. package/docs/proactive-memory.md +1 -1
  224. package/docs/prompt-envelope-and-tools.md +1 -1
  225. package/docs/provider-adapter-cookbook.md +1 -1
  226. package/docs/release-cut-checklist.md +164 -177
  227. package/docs/safety-model.md +2 -2
  228. package/docs/scientific-validation.md +3 -3
  229. package/docs/session-lifecycle.md +1 -1
  230. package/docs/skills-marketplace.md +1 -1
  231. package/docs/tool-usage.md +18 -8
  232. package/docs/trace-store.md +16 -11
  233. package/docs/troubleshooting.md +2 -2
  234. package/docs/tui-design.md +1 -1
  235. package/docs/worker-dispatch-mechanics.md +1 -1
  236. package/evals/README.md +5 -0
  237. package/evals/behavioral-corpus-grader.mjs +103 -0
  238. package/evals/behavioral-machinery-baseline.json +2276 -0
  239. package/evals/behavioral-machinery-driver.ts +250 -0
  240. package/evals/behavioral-machinery-support.ts +253 -0
  241. package/evals/behavioral-machinery.yaml +614 -0
  242. package/evals/behavioral-model-negative-control.yaml +68 -0
  243. package/evals/behavioral-model.yaml +216 -0
  244. package/evals/fixtures/behavioral-facts.txt +3 -0
  245. package/evals/fixtures/behavioral-main.ts +7 -0
  246. package/evals/fixtures/decoy/note.txt +2 -0
  247. package/evals/fixtures/private/credentials.txt +1 -0
  248. package/evals/tracked-metrics-baseline.yaml +229 -0
  249. package/evals/tracked-metrics-grader.mjs +129 -0
  250. package/package.json +8 -16
  251. package/skills/README.md +6 -6
  252. package/skills/coding/ast-grep/SKILL.md +8 -2
  253. package/skills/coding/coding-standards/SKILL.md +8 -2
  254. package/skills/coding/prototype/SKILL.md +8 -2
  255. package/skills/coding/tdd/SKILL.md +8 -2
  256. package/skills/context/context-handoff/SKILL.md +12 -3
  257. package/skills/context/context-handoff/evals.md +3 -3
  258. package/skills/context/context-prime/SKILL.md +8 -2
  259. package/skills/context/context-prime/evals.md +2 -2
  260. package/skills/git/file-ticket/SKILL.md +9 -4
  261. package/skills/git/file-ticket/evals.md +2 -2
  262. package/skills/git/fix-issue/SKILL.md +12 -5
  263. package/skills/git/fix-issue/evals.md +4 -4
  264. package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
  265. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  266. package/skills/git/ship/SKILL.md +9 -3
  267. package/skills/git/ship/evals.md +4 -4
  268. package/skills/git/worktree-create/SKILL.md +7 -2
  269. package/skills/git/worktree-create/evals.md +6 -6
  270. package/skills/git/worktree-merge/SKILL.md +7 -2
  271. package/skills/git/worktree-merge/evals.md +6 -6
  272. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
  273. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
  274. package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
  275. package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
  276. package/skills/meta/credentials/SKILL.md +9 -2
  277. package/skills/meta/find-skills/SKILL.md +8 -2
  278. package/skills/meta/herdr/SKILL.md +8 -2
  279. package/skills/meta/skill-craft/SKILL.md +21 -4
  280. package/skills/planning/architecture/SKILL.md +9 -3
  281. package/skills/planning/backlog/SKILL.md +8 -2
  282. package/skills/planning/prd/SKILL.md +8 -2
  283. package/skills/planning/product-intent/SKILL.md +8 -2
  284. package/skills/planning/tech-spec/SKILL.md +9 -3
  285. package/skills/registry.yaml +66 -66
  286. package/skills/research/arxiv-literature/SKILL.md +8 -2
  287. package/skills/research/experiment-protocol/SKILL.md +9 -2
  288. package/skills/research/scientific-debugging/SKILL.md +9 -2
  289. package/skills/research/scientific-debugging/evals.md +2 -2
  290. package/skills/research/scientific-modernization/SKILL.md +9 -2
  291. package/skills/skill-marketplace.json +257 -38
  292. package/skills/workflow/cut-it/SKILL.md +10 -2
  293. package/skills/workflow/design-council/SKILL.md +11 -2
  294. package/skills/workflow/grill-me/SKILL.md +8 -2
  295. package/skills/workflow/workflow-distiller/SKILL.md +8 -2
  296. package/src/cli/acp.ts +8 -4
  297. package/src/cli/argv.ts +25 -0
  298. package/src/cli/auth.ts +2 -2
  299. package/src/cli/bootstrap-generate.ts +5 -5
  300. package/src/cli/clio.ts +6 -1
  301. package/src/cli/config-inspect.ts +3 -3
  302. package/src/cli/configure-interop.ts +1 -1
  303. package/src/cli/configure.ts +50 -48
  304. package/src/cli/default-target.ts +1 -1
  305. package/src/cli/docs.ts +6 -6
  306. package/src/cli/doctor-naming.ts +323 -0
  307. package/src/cli/doctor-panes.ts +156 -0
  308. package/src/cli/doctor-toolchain.ts +78 -0
  309. package/src/cli/doctor.ts +34 -1
  310. package/src/cli/eval-inventory.ts +436 -0
  311. package/src/cli/eval.ts +13 -0
  312. package/src/cli/evidence-detail.ts +88 -0
  313. package/src/cli/evidence-inventory.ts +183 -0
  314. package/src/cli/evidence.ts +30 -5
  315. package/src/cli/fleet-decisions.ts +69 -0
  316. package/src/cli/fleet-inspect.ts +334 -0
  317. package/src/cli/fleet-preflight.ts +1 -1
  318. package/src/cli/fleet-verify.ts +133 -0
  319. package/src/cli/fleet-view.ts +827 -0
  320. package/src/cli/fleet.ts +154 -40
  321. package/src/cli/index.ts +14 -2
  322. package/src/cli/interop-inspect.ts +128 -0
  323. package/src/cli/interop.ts +34 -0
  324. package/src/cli/models.ts +3 -3
  325. package/src/cli/modes/print.ts +1 -1
  326. package/src/cli/panes.ts +35 -0
  327. package/src/cli/reset.ts +6 -3
  328. package/src/cli/run.ts +67 -13
  329. package/src/cli/share.ts +1 -1
  330. package/src/cli/skills-eval.ts +11 -11
  331. package/src/cli/skills-inventory.ts +185 -0
  332. package/src/cli/skills.ts +16 -13
  333. package/src/cli/targets.ts +23 -24
  334. package/src/cli/tools.ts +321 -0
  335. package/src/cli/trace-inspect.ts +252 -0
  336. package/src/cli/trace.ts +64 -2
  337. package/src/cli/uninstall.ts +2 -2
  338. package/src/cli/upgrade.ts +29 -34
  339. package/src/cli/usage.ts +2 -2
  340. package/src/cli/validate-model.ts +1 -1
  341. package/src/cli/verifiers-inspect.ts +347 -0
  342. package/src/cli/verifiers.ts +9 -0
  343. package/src/cli/wiki-generate.ts +5 -5
  344. package/src/core/bash-exec.ts +1 -1
  345. package/src/core/boot-trace.ts +3 -3
  346. package/src/core/bus-events.ts +4 -0
  347. package/src/core/bus-trace.ts +2 -2
  348. package/src/core/compile-cache.ts +1 -1
  349. package/src/core/config.ts +1070 -845
  350. package/src/core/defaults.ts +342 -463
  351. package/src/core/domain-loader.ts +6 -4
  352. package/src/core/event-bus.ts +1 -1
  353. package/src/core/file-references.ts +78 -88
  354. package/src/core/git-commit-attribution.ts +3 -9
  355. package/src/core/guardrails.ts +24 -4
  356. package/src/core/naming-compat.ts +45 -0
  357. package/src/core/naming-events.ts +62 -0
  358. package/src/core/recent-models.ts +1 -7
  359. package/src/core/residency-protection.ts +4 -8
  360. package/src/core/resolve-config-value.ts +1 -1
  361. package/src/core/response-model-id.ts +0 -14
  362. package/src/core/response-schema.ts +44 -4
  363. package/src/core/session-routing.ts +84 -74
  364. package/src/core/skill-activation.ts +18 -0
  365. package/src/core/termination.ts +4 -4
  366. package/src/core/theme-token-hex.ts +43 -0
  367. package/src/core/timers.ts +2 -12
  368. package/src/core/tool-names.ts +2 -1
  369. package/src/core/xdg.ts +1 -1
  370. package/src/domains/agents/catalog.ts +2 -12
  371. package/src/domains/agents/extension.ts +3 -3
  372. package/src/domains/agents/fleets/build-review.md +0 -3
  373. package/src/domains/agents/fleets/build-test.md +0 -3
  374. package/src/domains/agents/registry.ts +7 -7
  375. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  376. package/src/domains/agents/result-contract.ts +165 -36
  377. package/src/domains/agents/spec.ts +0 -11
  378. package/src/domains/config/classify.ts +37 -46
  379. package/src/domains/config/extension.ts +5 -5
  380. package/src/domains/config/keybindings.ts +48 -47
  381. package/src/domains/config/watcher.ts +1 -1
  382. package/src/domains/context/codewiki/indexer.ts +1 -1
  383. package/src/domains/context/extension.ts +3 -3
  384. package/src/domains/context/prompt-context.ts +1 -1
  385. package/src/domains/context/wiki/assemble.ts +2 -2
  386. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  387. package/src/domains/context/working-set/replay/report.ts +1 -1
  388. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  389. package/src/domains/dispatch/active-route-planner.ts +2 -2
  390. package/src/domains/dispatch/admission-error.ts +9 -0
  391. package/src/domains/dispatch/admission.ts +22 -21
  392. package/src/domains/dispatch/agent-candidates.ts +1 -1
  393. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  394. package/src/domains/dispatch/agent-ledger.ts +1 -1
  395. package/src/domains/dispatch/assignment.ts +5 -5
  396. package/src/domains/dispatch/capacity-lease.ts +23 -6
  397. package/src/domains/dispatch/code-step.ts +1 -1
  398. package/src/domains/dispatch/contract.ts +2 -2
  399. package/src/domains/dispatch/council-topology.ts +398 -0
  400. package/src/domains/dispatch/extension.ts +287 -111
  401. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  402. package/src/domains/dispatch/fleet-plan.ts +7 -2
  403. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  404. package/src/domains/dispatch/fleet-run.ts +59 -3
  405. package/src/domains/dispatch/gate-decisions.ts +36 -15
  406. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  407. package/src/domains/dispatch/gate-topology.ts +289 -0
  408. package/src/domains/dispatch/index.ts +19 -0
  409. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  410. package/src/domains/dispatch/intent.ts +85 -1
  411. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  412. package/src/domains/dispatch/path-scope.ts +0 -61
  413. package/src/domains/dispatch/placement.ts +2 -2
  414. package/src/domains/dispatch/receipt-findings.ts +1 -1
  415. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  416. package/src/domains/dispatch/reservation-store.ts +24 -27
  417. package/src/domains/dispatch/route-decision.ts +1 -1
  418. package/src/domains/dispatch/route-history.ts +1 -1
  419. package/src/domains/dispatch/route-policy.ts +1 -1
  420. package/src/domains/dispatch/route-readiness.ts +0 -28
  421. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  422. package/src/domains/dispatch/run-event-journal.ts +599 -0
  423. package/src/domains/dispatch/state.ts +45 -1
  424. package/src/domains/dispatch/tool-stats.ts +1 -1
  425. package/src/domains/dispatch/transport.ts +2 -19
  426. package/src/domains/dispatch/types.ts +16 -3
  427. package/src/domains/dispatch/validation.ts +33 -8
  428. package/src/domains/dispatch/worker-protocol.ts +2 -2
  429. package/src/domains/eval/artifacts/store.ts +5 -4
  430. package/src/domains/eval/compare/compare.ts +3 -16
  431. package/src/domains/eval/compare/thresholds.ts +0 -8
  432. package/src/domains/eval/execution-provenance.ts +1 -1
  433. package/src/domains/eval/inventory.ts +113 -0
  434. package/src/domains/eval/metrics/token-stream.ts +0 -7
  435. package/src/domains/eval/report.ts +1 -1
  436. package/src/domains/eval/runner.ts +1 -1
  437. package/src/domains/eval/runners/clio-run.ts +7 -6
  438. package/src/domains/eval/runners/external-command.ts +4 -3
  439. package/src/domains/eval/schema/artifact.ts +1 -1
  440. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  441. package/src/domains/eval/schema/behavioral.ts +7 -6
  442. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  443. package/src/domains/eval/schema/naming.ts +10 -0
  444. package/src/domains/eval/schema/serving.ts +31 -0
  445. package/src/domains/eval/schema/suite.ts +2 -2
  446. package/src/domains/eval/schema/validate.ts +9 -5
  447. package/src/domains/eval/schema/verdict.ts +4 -2
  448. package/src/domains/eval/store.ts +12 -2
  449. package/src/domains/eval/suites/run.ts +12 -6
  450. package/src/domains/eval/types.ts +1 -1
  451. package/src/domains/eval/workspaces/git.ts +1 -1
  452. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  453. package/src/domains/evidence/build.ts +13 -5
  454. package/src/domains/evidence/store.ts +6 -0
  455. package/src/domains/interop/consent.ts +7 -7
  456. package/src/domains/interop/extension.ts +1 -1
  457. package/src/domains/lifecycle/doctor.ts +27 -21
  458. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  459. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  460. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  461. package/src/domains/lifecycle/migrations/index.ts +20 -1
  462. package/src/domains/lifecycle/naming-history.ts +153 -0
  463. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  464. package/src/domains/lifecycle/naming-resources.ts +261 -0
  465. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  466. package/src/domains/lifecycle/naming-yazi.ts +81 -0
  467. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  468. package/src/domains/memory/index.ts +0 -1
  469. package/src/domains/memory/task-memory-handoff.ts +6 -3
  470. package/src/domains/memory/task-memory-policy.ts +6 -10
  471. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  472. package/src/domains/middleware/index.ts +7 -0
  473. package/src/domains/middleware/marketplace-offer.ts +339 -0
  474. package/src/domains/middleware/memory-intervention.ts +33 -21
  475. package/src/domains/middleware/runtime.ts +2 -2
  476. package/src/domains/mux/contract.ts +566 -0
  477. package/src/domains/mux/detect.ts +182 -0
  478. package/src/domains/mux/dock-controller.ts +365 -0
  479. package/src/domains/mux/extension.ts +53 -0
  480. package/src/domains/mux/index.ts +116 -0
  481. package/src/domains/mux/manifest.ts +6 -0
  482. package/src/domains/mux/operations.ts +192 -0
  483. package/src/domains/mux/pane-registry.ts +90 -0
  484. package/src/domains/mux/protocol.ts +62 -0
  485. package/src/domains/mux/socket-client.ts +964 -0
  486. package/src/domains/mux/types.ts +265 -0
  487. package/src/domains/mux/viewer-command.ts +59 -0
  488. package/src/domains/mux/yazi/assets/init.lua +2 -0
  489. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  490. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  491. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  492. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  493. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  494. package/src/domains/mux/yazi/event-stream.ts +182 -0
  495. package/src/domains/mux/yazi/profile.ts +299 -0
  496. package/src/domains/mux/yazi/session.ts +251 -0
  497. package/src/domains/mux/yazi/theme.ts +30 -0
  498. package/src/domains/observability/cost.ts +21 -0
  499. package/src/domains/observability/extension.ts +1 -1
  500. package/src/domains/observability/index.ts +2 -0
  501. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  502. package/src/domains/observability/projection.ts +1 -1
  503. package/src/domains/observability/trace-store.ts +63 -11
  504. package/src/domains/prompts/compiler.ts +2 -2
  505. package/src/domains/prompts/extension.ts +3 -3
  506. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
  507. package/src/domains/prompts/fragments/operating/skills.md +25 -18
  508. package/src/domains/providers/endpoint-capacity.ts +154 -22
  509. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  510. package/src/domains/providers/extension.ts +25 -8
  511. package/src/domains/providers/index.ts +22 -0
  512. package/src/domains/providers/knowledge-base-path.ts +1 -1
  513. package/src/domains/providers/model-runtime-capabilities.ts +46 -2
  514. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  515. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
  516. package/src/domains/providers/plugins.ts +1 -1
  517. package/src/domains/providers/resolver.ts +1 -1
  518. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  519. package/src/domains/providers/runtimes/builtins.ts +2 -0
  520. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  521. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  522. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  523. package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
  524. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  525. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  526. package/src/domains/providers/runtimes/protocol/litellm.ts +285 -0
  527. package/src/domains/providers/support.ts +1 -0
  528. package/src/domains/providers/target-model-cache.ts +124 -0
  529. package/src/domains/providers/types/knowledge-base.ts +13 -0
  530. package/src/domains/providers/types/local-model-quirks.ts +2 -2
  531. package/src/domains/providers/types/target-descriptor.ts +3 -3
  532. package/src/domains/resources/extension.ts +1 -1
  533. package/src/domains/resources/index.ts +3 -0
  534. package/src/domains/resources/library.ts +6 -6
  535. package/src/domains/resources/prompts/loader.ts +1 -1
  536. package/src/domains/resources/skills/content-hash.ts +7 -6
  537. package/src/domains/resources/skills/evals.ts +1 -1
  538. package/src/domains/resources/skills/install.ts +36 -12
  539. package/src/domains/resources/skills/loader.ts +72 -13
  540. package/src/domains/resources/skills/marketplace.ts +21 -2
  541. package/src/domains/resources/skills/promotion.ts +214 -0
  542. package/src/domains/safety/action-classifier.ts +6 -0
  543. package/src/domains/safety/audit.ts +2 -2
  544. package/src/domains/safety/finish-contract.ts +2 -1
  545. package/src/domains/safety/run-effects.ts +1 -1
  546. package/src/domains/scheduling/extension.ts +4 -4
  547. package/src/domains/session/archive-readers.ts +9 -1
  548. package/src/domains/session/compaction/branch-summary.ts +4 -0
  549. package/src/domains/session/compaction/compact.ts +1 -1
  550. package/src/domains/session/compaction/tokens.ts +4 -0
  551. package/src/domains/session/context-accounting.ts +1 -1
  552. package/src/domains/session/decision-board.ts +1 -1
  553. package/src/domains/session/extension.ts +1 -1
  554. package/src/domains/session/handoff.ts +2 -2
  555. package/src/domains/session/prompt-manifest.ts +0 -5
  556. package/src/domains/session/protected-artifact-journal.ts +12 -6
  557. package/src/domains/session/retry.ts +1 -1
  558. package/src/domains/share/archive.ts +85 -36
  559. package/src/domains/toolchain/archive.ts +175 -0
  560. package/src/domains/toolchain/contract.ts +28 -0
  561. package/src/domains/toolchain/extension.ts +47 -0
  562. package/src/domains/toolchain/index.ts +39 -0
  563. package/src/domains/toolchain/install.ts +327 -0
  564. package/src/domains/toolchain/manifest.ts +8 -0
  565. package/src/domains/toolchain/paths.ts +34 -0
  566. package/src/domains/toolchain/registry.ts +265 -0
  567. package/src/domains/toolchain/remove.ts +218 -0
  568. package/src/domains/toolchain/resolve.ts +182 -0
  569. package/src/domains/toolchain/types.ts +113 -0
  570. package/src/domains/toolchain/version.ts +88 -0
  571. package/src/engine/acp/adapter.ts +3 -3
  572. package/src/engine/acp/event-mapper.ts +3 -3
  573. package/src/engine/acp/server.ts +440 -96
  574. package/src/engine/acp/tool-mediator.ts +2 -2
  575. package/src/engine/acp/types.ts +20 -2
  576. package/src/engine/alcf-oauth.ts +5 -5
  577. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  578. package/src/engine/api-registry.ts +1 -1
  579. package/src/engine/apis/llamacpp-residency.ts +1 -19
  580. package/src/engine/apis/lmstudio.ts +1 -6
  581. package/src/engine/apis/ollama-native.ts +3 -3
  582. package/src/engine/apis/openai-completions.ts +2 -2
  583. package/src/engine/apis/residency.ts +3 -9
  584. package/src/engine/claude/sdk-module.ts +87 -0
  585. package/src/engine/claude/sdk-runtime.ts +25 -17
  586. package/src/engine/claude/subprocess-runtime.ts +1 -1
  587. package/src/engine/claude/tool-safety.ts +4 -4
  588. package/src/engine/loop-guard.ts +0 -5
  589. package/src/engine/session.ts +14 -7
  590. package/src/engine/tui-primitives.ts +21 -0
  591. package/src/engine/tui.ts +1 -0
  592. package/src/engine/worker-events.ts +6 -6
  593. package/src/engine/worker-runtime.ts +16 -26
  594. package/src/entry/boot-options.ts +2 -0
  595. package/src/entry/orchestrator.ts +207 -90
  596. package/src/entry/panes-activation.ts +31 -0
  597. package/src/entry/with-panes.ts +20 -0
  598. package/src/interactive/application-controller.ts +21 -21
  599. package/src/interactive/bus-notices.ts +2 -2
  600. package/src/interactive/chat-loop.ts +8 -8
  601. package/src/interactive/chat-panel.ts +1 -1
  602. package/src/interactive/clio-editor.ts +105 -1
  603. package/src/interactive/context-activity.ts +8 -6
  604. package/src/interactive/context-meter.ts +3 -6
  605. package/src/interactive/context-overlay.ts +2 -1
  606. package/src/interactive/cost-overlay.ts +3 -1
  607. package/src/interactive/council-grid.ts +3 -5
  608. package/src/interactive/council.ts +11 -0
  609. package/src/interactive/dispatch-board.ts +56 -49
  610. package/src/interactive/editor-bash.ts +21 -0
  611. package/src/interactive/editor-steer.ts +9 -4
  612. package/src/interactive/editor-submit.ts +24 -18
  613. package/src/interactive/external-editor.ts +1 -1
  614. package/src/interactive/file-reference-completion.ts +360 -0
  615. package/src/interactive/footer/dashboard.ts +15 -17
  616. package/src/interactive/footer/notifications.ts +14 -8
  617. package/src/interactive/footer/widgets.ts +2 -44
  618. package/src/interactive/interactive-application.ts +229 -62
  619. package/src/interactive/interactive-event-projection.ts +1 -1
  620. package/src/interactive/interactive-input-runtime.ts +9 -2
  621. package/src/interactive/interactive-presentation.ts +21 -16
  622. package/src/interactive/interactive-shell.ts +2 -2
  623. package/src/interactive/interactive-slash-runtime.ts +99 -23
  624. package/src/interactive/interactive-subscriptions.ts +1 -1
  625. package/src/interactive/interactive-tickers.ts +1 -1
  626. package/src/interactive/keybinding-manager.ts +4 -4
  627. package/src/interactive/layout.ts +1 -1
  628. package/src/interactive/memory-overlay.ts +3 -2
  629. package/src/interactive/modal-marker.ts +151 -0
  630. package/src/interactive/mutation-preview.ts +1 -1
  631. package/src/interactive/mux-bridge.ts +214 -0
  632. package/src/interactive/overlay-frame.ts +62 -14
  633. package/src/interactive/overlay-general-openers.ts +7 -2
  634. package/src/interactive/overlay-key-routing.ts +21 -10
  635. package/src/interactive/overlay-lifecycle.ts +20 -4
  636. package/src/interactive/overlay-model-selectors.ts +43 -6
  637. package/src/interactive/overlay-permission-lifecycle.ts +90 -22
  638. package/src/interactive/overlay-transitions.ts +18 -4
  639. package/src/interactive/overlays/agents.ts +3 -2
  640. package/src/interactive/overlays/ask-user.ts +161 -41
  641. package/src/interactive/overlays/auth-dialog.ts +1 -0
  642. package/src/interactive/overlays/context-reset.ts +29 -4
  643. package/src/interactive/overlays/cwd-fallback.ts +29 -4
  644. package/src/interactive/overlays/decisions.ts +15 -13
  645. package/src/interactive/overlays/extensions.ts +1 -0
  646. package/src/interactive/overlays/fleet-run-approval.ts +4 -3
  647. package/src/interactive/overlays/handoff-review.ts +3 -2
  648. package/src/interactive/overlays/help-reference.ts +2 -0
  649. package/src/interactive/overlays/interop.ts +2 -1
  650. package/src/interactive/overlays/library-install-confirm.ts +2 -1
  651. package/src/interactive/overlays/library-tabs.ts +28 -0
  652. package/src/interactive/overlays/list-overlay.ts +10 -1
  653. package/src/interactive/overlays/message-picker.ts +2 -1
  654. package/src/interactive/overlays/model-scope.ts +86 -0
  655. package/src/interactive/overlays/model-selector.ts +40 -31
  656. package/src/interactive/overlays/prompts.ts +11 -4
  657. package/src/interactive/overlays/session-selector.ts +3 -2
  658. package/src/interactive/overlays/settings-sections.ts +30 -0
  659. package/src/interactive/overlays/settings.ts +849 -268
  660. package/src/interactive/overlays/side-question.ts +3 -2
  661. package/src/interactive/overlays/skills-hub.ts +11 -19
  662. package/src/interactive/overlays/tree-selector.ts +3 -2
  663. package/src/interactive/pane-policy.ts +46 -0
  664. package/src/interactive/panes-runtime.ts +318 -0
  665. package/src/interactive/permission-overlay.ts +2 -2
  666. package/src/interactive/renderers/compaction-summary.ts +29 -0
  667. package/src/interactive/renderers/retry-status.ts +12 -4
  668. package/src/interactive/renderers/tool-execution.ts +4 -4
  669. package/src/interactive/renderers/worker-entry.ts +122 -14
  670. package/src/interactive/session-transcript.ts +3 -3
  671. package/src/interactive/slash-autocomplete.ts +454 -165
  672. package/src/interactive/slash-commands.ts +521 -189
  673. package/src/interactive/slash-spec.ts +160 -17
  674. package/src/interactive/status/controller.ts +2 -2
  675. package/src/interactive/stream-pacing-policy.ts +1 -1
  676. package/src/interactive/tasks-overlay.ts +21 -13
  677. package/src/interactive/terminal-lease.ts +6 -7
  678. package/src/interactive/theme/tokens.ts +3 -14
  679. package/src/interactive/turn-context.ts +58 -13
  680. package/src/interactive/turn-persistence.ts +2 -2
  681. package/src/interactive/turn-prewarm.ts +2 -2
  682. package/src/interactive/turn-runtime.ts +8 -8
  683. package/src/interactive/turn-state.ts +1 -1
  684. package/src/interactive/view/artifacts.ts +120 -9
  685. package/src/interactive/view/view-overlay.ts +14 -10
  686. package/src/interactive/watch-pane.ts +180 -0
  687. package/src/interactive/welcome-dashboard.ts +15 -15
  688. package/src/interactive/worker-progress.ts +11 -5
  689. package/src/interactive/worker-receipts.ts +20 -2
  690. package/src/interactive/worker-stream.ts +6 -4
  691. package/src/interactive/yazi-bridge.ts +451 -0
  692. package/src/tools/ask-user.ts +3 -3
  693. package/src/tools/bash.ts +1 -1
  694. package/src/tools/bootstrap.ts +26 -2
  695. package/src/tools/builtin-tool-catalog.ts +16 -1
  696. package/src/tools/compete-worktrees.ts +108 -17
  697. package/src/tools/context/index.ts +15 -1
  698. package/src/tools/core-bootstrap.ts +2 -1
  699. package/src/tools/dispatch-admission.ts +18 -5
  700. package/src/tools/dispatch-arguments.ts +21 -21
  701. package/src/tools/dispatch-plan.ts +0 -11
  702. package/src/tools/dispatch-run-events.ts +145 -28
  703. package/src/tools/dispatch-runner.ts +40 -13
  704. package/src/tools/dispatch-types.ts +15 -3
  705. package/src/tools/dispatch.ts +2 -2
  706. package/src/tools/executables.ts +17 -14
  707. package/src/tools/find.ts +1 -6
  708. package/src/tools/monitor.ts +4 -4
  709. package/src/tools/observation.ts +54 -4
  710. package/src/tools/observers.ts +0 -33
  711. package/src/tools/panes-surface.ts +38 -0
  712. package/src/tools/panes.ts +112 -0
  713. package/src/tools/policy.ts +10 -1
  714. package/src/tools/presentation.ts +1 -0
  715. package/src/tools/task-worktree.ts +28 -7
  716. package/src/tools/verify/authoring.ts +3 -6
  717. package/src/tools/verify/frontend.ts +1 -1
  718. package/src/tools/web-fetch.ts +1 -1
  719. package/src/worker/entry.ts +4 -3
  720. package/src/worker/protocol.ts +16 -14
  721. package/src/worker/spec-contract.ts +2 -2
  722. package/src/worker/stdin-demux.ts +2 -2
  723. package/dist/chunk-D73KXYPF.js +0 -37
  724. package/dist/chunk-MLOK6ZOS.js +0 -2888
  725. package/dist/chunk-PNY46YEY.js +0 -1581
  726. package/dist/chunk-XDOQXGFO.js +0 -515
  727. package/dist/chunk-YKOFT37S.js +0 -279
  728. package/dist/clio-LT5V7SSZ.js +0 -26
  729. package/dist/configure-2WYWSCSD.js +0 -49
  730. package/dist/doctor-TWBWFK5V.js +0 -165
  731. package/src/engine/apis/degraded-inference.ts +0 -95
  732. /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
  733. /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
@@ -129,7 +129,7 @@ export const CANONICAL_METRIC_PREFIXES = ["tools.calls.", "tools.blocked."] as c
129
129
 
130
130
  export type EvalMetricName = (typeof CANONICAL_METRICS)[number];
131
131
  export type EvalAssertionOp = "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
132
- export type EvalRunnerKind = "clio-run" | "context-index" | "context-init" | "external-command";
132
+ export type EvalRunnerKind = "clio-coder-run" | "context-index" | "context-init" | "external-command";
133
133
  export type EvalWorkspaceKind = "local" | "git" | "temp-copy";
134
134
 
135
135
  export interface EvalMetricAssertion {
@@ -189,7 +189,7 @@ export interface EvalRunnerV2 {
189
189
  /** One-run headless authority used to exercise allow and deny recovery. */
190
190
  autonomy?: "read-only" | "suggest" | "auto-edit" | "full-auto";
191
191
  /**
192
- * Fleet agent recipe id for the clio-run runner. When set the runner
192
+ * Fleet agent recipe id for the clio-coder-run runner. When set the runner
193
193
  * invokes `clio-coder run --agent <id> --json`, whose stream ends with the full
194
194
  * sealed RunReceipt, so receipt-derived evidence metrics resolve. Without
195
195
  * it the main-agent headless path runs and emits no receipt.
@@ -1,5 +1,6 @@
1
1
  import { parseEvalBehaviorScenarioV1 } from "./behavioral.js";
2
2
  import { parseEvalExecutionMatrixDimensionsV1 } from "./execution-envelope.js";
3
+ import { normalizeEvalRunnerKind } from "./naming.js";
3
4
  import {
4
5
  EVAL_SUITE_V2_VERSION,
5
6
  type EvalAssertionOp,
@@ -10,7 +11,7 @@ import {
10
11
  type EvalWorkspaceKind,
11
12
  } from "./suite.js";
12
13
 
13
- const RUNNER_KINDS = new Set<EvalRunnerKind>(["clio-run", "context-index", "context-init", "external-command"]);
14
+ const RUNNER_KINDS = new Set<EvalRunnerKind>(["clio-coder-run", "context-index", "context-init", "external-command"]);
14
15
  const WORKSPACE_KINDS = new Set<EvalWorkspaceKind>(["local", "git", "temp-copy"]);
15
16
  const OPS = new Set<EvalAssertionOp>(["lt", "lte", "gt", "gte", "eq", "neq"]);
16
17
 
@@ -203,9 +204,12 @@ function readRunner(
203
204
  issues.push({ path, message: "expected object" });
204
205
  return null;
205
206
  }
206
- const kind = value.kind;
207
+ const kind = normalizeEvalRunnerKind(value.kind);
207
208
  if (typeof kind !== "string" || !RUNNER_KINDS.has(kind as EvalRunnerKind)) {
208
- issues.push({ path: `${path}.kind`, message: "expected clio-run, context-index, context-init, or external-command" });
209
+ issues.push({
210
+ path: `${path}.kind`,
211
+ message: "expected clio-coder-run, context-index, context-init, or external-command",
212
+ });
209
213
  return null;
210
214
  }
211
215
  const prompt = optionalString(value, "prompt");
@@ -214,8 +218,8 @@ function readRunner(
214
218
  if (autonomy !== undefined && !["read-only", "suggest", "auto-edit", "full-auto"].includes(autonomy)) {
215
219
  issues.push({ path: `${path}.autonomy`, message: "expected read-only, suggest, auto-edit, or full-auto" });
216
220
  }
217
- if (agent !== undefined && kind !== "clio-run") {
218
- issues.push({ path: `${path}.agent`, message: "agent is only valid on the clio-run runner" });
221
+ if (agent !== undefined && kind !== "clio-coder-run") {
222
+ issues.push({ path: `${path}.agent`, message: "agent is only valid on the clio-coder-run runner" });
219
223
  }
220
224
  const command = optionalString(value, "command");
221
225
  return {
@@ -1,4 +1,6 @@
1
- export const EVAL_VERDICT_SCHEMA_V1 = "clio.eval.verdict.v1" as const;
1
+ import { normalizeEvalSchemaId } from "./naming.js";
2
+
3
+ export const EVAL_VERDICT_SCHEMA_V1 = "clio-coder.eval.verdict.v1" as const;
2
4
 
3
5
  export const EVAL_TRACKED_METRIC_NAMES = [
4
6
  "modelCalls",
@@ -68,7 +70,7 @@ export type EvalVerdictParseResult = { ok: true; verdict: EvalVerdictEnvelopeV1
68
70
  /** Parse the v1 verdict and reject contradictions that could publish a false pass. */
69
71
  export function parseEvalVerdictEnvelopeV1(value: unknown, source = "verdict"): EvalVerdictEnvelopeV1 {
70
72
  const record = asRecord(value, source);
71
- if (record.schema !== EVAL_VERDICT_SCHEMA_V1) {
73
+ if (normalizeEvalSchemaId(record.schema) !== EVAL_VERDICT_SCHEMA_V1) {
72
74
  throw new Error(`${source}.schema: expected ${EVAL_VERDICT_SCHEMA_V1}`);
73
75
  }
74
76
  const scenarioId = readNonEmptyString(record, source, "scenarioId");
@@ -118,7 +118,7 @@ function parseArtifact(value: unknown, source: string): EvalRunArtifact {
118
118
  evalId: readString(value, source, "evalId"),
119
119
  taskFile: readString(value, source, "taskFile"),
120
120
  taskFileHash: readString(value, source, "taskFileHash"),
121
- clio: parseClioProvenance(readRequiredArtifactField(value, source, "clio"), `${source}.clio`),
121
+ clioCoder: parseClioProvenance(readEvalProvenance(value, source), `${source}.clioCoder`),
122
122
  environment: parseEnvironmentProvenance(
123
123
  readRequiredArtifactField(value, source, "environment"),
124
124
  `${source}.environment`,
@@ -235,7 +235,7 @@ function parseRunPaths(value: unknown, source: string): EvalRunPaths {
235
235
  function readRequiredArtifactField(
236
236
  record: Record<string, unknown>,
237
237
  source: string,
238
- field: "clio" | "environment" | "paths",
238
+ field: "environment" | "paths",
239
239
  ): unknown {
240
240
  const value = record[field];
241
241
  if (value === undefined) {
@@ -246,6 +246,16 @@ function readRequiredArtifactField(
246
246
  return value;
247
247
  }
248
248
 
249
+ function readEvalProvenance(record: Record<string, unknown>, source: string): unknown {
250
+ const value = record.clioCoder ?? record.clio;
251
+ if (value === undefined) {
252
+ throw new Error(
253
+ `eval artifact has an invalid schema: missing required field 'clioCoder' in ${source}. Re-run the evaluation suite to generate a complete artifact.`,
254
+ );
255
+ }
256
+ return value;
257
+ }
258
+
249
259
  function parseHarnessMetrics(value: unknown, source: string): EvalHarnessMetrics {
250
260
  if (!isRecord(value)) throw new Error(`${source}: expected object`);
251
261
  return {
@@ -1,6 +1,7 @@
1
1
  import { mkdtemp, rm, writeFile } from "node:fs/promises";
2
2
  import { tmpdir } from "node:os";
3
3
  import { resolve } from "node:path";
4
+ import { namingCompatibilityEnvironment } from "../../../core/naming-compat.js";
4
5
  import { resolveMetricAssertion } from "../compare/thresholds.js";
5
6
  import { buildEvalExecutionEnvelopeV1, type EvalExecutionObservationV1 } from "../execution-provenance.js";
6
7
  import { aggregateEvalVerdicts } from "../metrics/aggregate.js";
@@ -32,6 +33,7 @@ import { type EvalRunnerOutput, runExternalCommandRunner } from "../runners/exte
32
33
  import { adaptSuiteV2ResultToBehaviorV1, adaptSuiteV2ResultToVerdictV1 } from "../schema/adapter.js";
33
34
  import type { EvalArtifactResultV4, EvalArtifactV4 } from "../schema/artifact.js";
34
35
  import { buildEvalBehaviorMetricsV1 } from "../schema/behavioral-metrics.js";
36
+ import { normalizeEvalSchemaId } from "../schema/naming.js";
35
37
  import type { EvalServingConfigurationV1 } from "../schema/serving.js";
36
38
  import type { EvalMetricAssertion, EvalSuiteTargetV2, LoadedEvalSuiteV2 } from "../schema/suite.js";
37
39
  import { createEvalId } from "../store.js";
@@ -102,7 +104,7 @@ export async function runEvalSuiteV2(
102
104
  }
103
105
 
104
106
  /** Known receipt cost of one finished matrix item; unpriced runs count zero. */
105
- export function resultCostUsd(result: Pick<EvalArtifactResultV4, "metrics">): number {
107
+ function resultCostUsd(result: Pick<EvalArtifactResultV4, "metrics">): number {
106
108
  const value = result.metrics["cost.usd"];
107
109
  return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : 0;
108
110
  }
@@ -156,7 +158,7 @@ async function runMatrixItem(
156
158
  // state directory would mix sibling processes' runs and yesterday's sessions
157
159
  // into the reading; pinning it here also means an item leaves nothing behind
158
160
  // in the operator's own state.
159
- const stateDir = await mkdtemp(resolve(tempCopy?.tempRoot ?? tmpdir(), "clio-eval-state-"));
161
+ const stateDir = await mkdtemp(resolve(tempCopy?.tempRoot ?? tmpdir(), "clio-coder-eval-state-"));
160
162
  try {
161
163
  workspace = await prepareWorkspace(loaded.baseDir, task, freshWorkspace, tempCopy);
162
164
  const setup = await runCommandVerifiers(task.workspace.setup ?? [], workspace.dir, task.timeoutMs);
@@ -178,7 +180,11 @@ async function runMatrixItem(
178
180
  // the workers it attested are still running.
179
181
  const journalMetrics = invariantMetrics(stateDir, receiptExitCode);
180
182
  const measurement = await measureTaskOutcome(task, workspace.dir, {
181
- CLIO_EVAL_RUNNER_STDOUT_FILE: runnerStdoutFile,
183
+ ...namingCompatibilityEnvironment(
184
+ "CLIO_CODER_EVAL_RUNNER_STDOUT_FILE",
185
+ "CLIO_EVAL_RUNNER_STDOUT_FILE",
186
+ runnerStdoutFile,
187
+ ),
182
188
  });
183
189
  executionObservation = measurement.executionObservation;
184
190
  const metrics: Record<string, number | string | boolean | null> = {
@@ -407,13 +413,13 @@ function graderBehaviorMeasurement(stdout: string): {
407
413
  continue;
408
414
  }
409
415
  if (!isRecord(value)) continue;
410
- if (value.schema === "clio.eval.measure.v1" && isRecord(value.metrics)) {
416
+ if (normalizeEvalSchemaId(value.schema) === "clio-coder.eval.measure.v1" && isRecord(value.metrics)) {
411
417
  for (const [key, metric] of Object.entries(value.metrics)) {
412
418
  if (key !== "claims.unsupported" && key !== "completion.reported") continue;
413
419
  if (typeof metric === "boolean" || (typeof metric === "number" && Number.isFinite(metric))) metrics[key] = metric;
414
420
  }
415
421
  }
416
- if (value.schema === "clio.eval.execution-observation.v1") {
422
+ if (normalizeEvalSchemaId(value.schema) === "clio-coder.eval.execution-observation.v1") {
417
423
  executionObservation = parseExecutionObservation(value);
418
424
  }
419
425
  }
@@ -503,7 +509,7 @@ function buildArtifact(
503
509
  version: 4,
504
510
  evalId,
505
511
  suite: { id: loaded.suite.suite.id, hash: loaded.hash },
506
- clio: evalClioProvenance({ entry: clioEntry }),
512
+ clioCoder: evalClioProvenance({ entry: clioEntry }),
507
513
  environment: evalEnvironmentProvenance(),
508
514
  matrix: {
509
515
  ...artifactMatrixIdentity(loaded.suite.matrix.targets),
@@ -126,7 +126,7 @@ export interface EvalRunArtifact {
126
126
  evalId: string;
127
127
  taskFile: string;
128
128
  taskFileHash: string;
129
- clio: EvalClioProvenance;
129
+ clioCoder: EvalClioProvenance;
130
130
  environment: EvalEnvironmentProvenance;
131
131
  target: string | null;
132
132
  model: string | null;
@@ -7,7 +7,7 @@ import type { PreparedEvalWorkspace } from "./local.js";
7
7
 
8
8
  export async function prepareGitWorkspace(workspace: EvalWorkspaceV2): Promise<PreparedEvalWorkspace> {
9
9
  if (workspace.url === undefined) throw new Error("git workspace requires url");
10
- const dest = await mkdtemp(resolve(tmpdir(), "clio-eval-git-"));
10
+ const dest = await mkdtemp(resolve(tmpdir(), "clio-coder-eval-git-"));
11
11
  try {
12
12
  await runGit(["clone", "--quiet", workspace.url, dest], process.cwd());
13
13
  const ref = workspace.checkout ?? workspace.commit;
@@ -33,7 +33,7 @@ export async function prepareTempCopyWorkspace(
33
33
  options: PrepareTempCopyWorkspaceOptions = {},
34
34
  ): Promise<PreparedEvalWorkspace> {
35
35
  const source = resolve(baseDir, workspace.path ?? ".");
36
- const dest = await mkdtemp(resolve(options.tempRoot ?? tmpdir(), "clio-eval-workspace-"));
36
+ const dest = await mkdtemp(resolve(options.tempRoot ?? tmpdir(), "clio-coder-eval-workspace-"));
37
37
  try {
38
38
  const selection = await gitCopySelection(source);
39
39
  const excludes = workspace.excludes ?? [];
@@ -56,6 +56,7 @@ const MAX_TASK_CHARS = 500;
56
56
  const TRANSCRIPT_TEXT_MAX_CHARS = 500;
57
57
  const TOOL_PREVIEW_MAX_CHARS = 240;
58
58
  const TASK_LEDGER_ROW_LIMIT = 200;
59
+ const MODEL_PRIVATE_MARKER = "[not sent to model]";
59
60
 
60
61
  export interface BuildEvidenceOptions {
61
62
  /** Evidence bundles are written under <dataDir>/evidence/. */
@@ -892,6 +893,7 @@ function sessionToolEvents(entries: ReadonlyArray<LinkedSessionEntry>): Evidence
892
893
  for (const linked of entries) {
893
894
  const entry = linked.entry;
894
895
  if (entry.kind === "bashExecution") {
896
+ const contextMarker = entry.excludeFromContext === true ? `${MODEL_PRIVATE_MARKER} ` : "";
895
897
  events.push({
896
898
  source: "session-entry",
897
899
  runId: linked.link.runId,
@@ -906,8 +908,8 @@ function sessionToolEvents(entries: ReadonlyArray<LinkedSessionEntry>): Evidence
906
908
  timestamp: entry.timestamp,
907
909
  linkKind: "session-bash-execution",
908
910
  confidence: "exact",
909
- argsPreview: truncateText(entry.command, TOOL_PREVIEW_MAX_CHARS),
910
- resultPreview: truncateText(entry.output, TOOL_PREVIEW_MAX_CHARS),
911
+ argsPreview: truncateText(`${contextMarker}${entry.command}`, TOOL_PREVIEW_MAX_CHARS),
912
+ resultPreview: truncateText(`${contextMarker}${entry.output}`, TOOL_PREVIEW_MAX_CHARS),
911
913
  });
912
914
  continue;
913
915
  }
@@ -1354,9 +1356,10 @@ function renderSessionTranscriptEntry(linked: LinkedSessionEntry): string[] {
1354
1356
  }
1355
1357
  if (entry.kind === "bashExecution") {
1356
1358
  const status = entry.cancelled ? "cancelled" : entry.exitCode === null ? "exit=?" : `exit=${entry.exitCode}`;
1359
+ const contextMarker = entry.excludeFromContext === true ? ` ${MODEL_PRIVATE_MARKER}` : "";
1357
1360
  return [
1358
- `${prefix} bash ${status}: $ ${truncateText(entry.command, TRANSCRIPT_TEXT_MAX_CHARS)}`,
1359
- ` output: ${previewUnknown(entry.output)}`,
1361
+ `${prefix} bash ${status}${contextMarker}: $ ${truncateText(entry.command, TRANSCRIPT_TEXT_MAX_CHARS)}`,
1362
+ ` output${contextMarker}: ${previewUnknown(entry.output)}`,
1360
1363
  ];
1361
1364
  }
1362
1365
  if (entry.kind === "branchSummary")
@@ -1625,7 +1628,7 @@ function parseRunReceipt(value: unknown, source: string): RunReceipt {
1625
1628
  costUsd: readNumber(value, source, "costUsd"),
1626
1629
  compiledPromptHash: readNullableString(value, source, "compiledPromptHash"),
1627
1630
  staticCompositionHash: readNullableString(value, source, "staticCompositionHash"),
1628
- clioVersion: readString(value, source, "clioVersion"),
1631
+ clioCoderVersion: readReceiptVersion(value, source),
1629
1632
  piMonoVersion: readString(value, source, "piMonoVersion"),
1630
1633
  platform: readString(value, source, "platform"),
1631
1634
  nodeVersion: readString(value, source, "nodeVersion"),
@@ -1640,6 +1643,11 @@ function parseRunReceipt(value: unknown, source: string): RunReceipt {
1640
1643
  };
1641
1644
  }
1642
1645
 
1646
+ function readReceiptVersion(value: Record<string, unknown>, source: string): string {
1647
+ if (typeof value.clioCoderVersion === "string") return value.clioCoderVersion;
1648
+ return readString(value, source, "clioVersion");
1649
+ }
1650
+
1643
1651
  function readToolStats(record: Record<string, unknown>, source: string, field: string): ToolCallStat[] {
1644
1652
  const value = record[field];
1645
1653
  if (!Array.isArray(value)) throw new Error(`${source}.${field}: expected array`);
@@ -205,6 +205,11 @@ function parseOverview(value: unknown, source: string): EvidenceOverview {
205
205
  const totals = readTotals(value.totals, `${source}.totals`);
206
206
  const tags = readStringArray(value, source, "tags") as EvidenceOverview["tags"];
207
207
  const files = readStringArray(value, source, "files");
208
+ // Additive since the redaction pass landed, so a bundle written before it
209
+ // simply has no count. Reading it optionally is what keeps the declared
210
+ // field reachable: it was written to disk and then dropped on the way back.
211
+ const redactionCount =
212
+ typeof value.redactionCount === "number" && Number.isFinite(value.redactionCount) ? value.redactionCount : undefined;
208
213
  return {
209
214
  version: 1,
210
215
  evidenceId,
@@ -224,6 +229,7 @@ function parseOverview(value: unknown, source: string): EvidenceOverview {
224
229
  totals,
225
230
  tags,
226
231
  files,
232
+ ...(redactionCount === undefined ? {} : { redactionCount }),
227
233
  };
228
234
  }
229
235
 
@@ -24,7 +24,7 @@ export const INHERITED_PROJECT_CONTEXT = "none";
24
24
  /** The delegation entry a given agent kind would be wired as. */
25
25
  export function delegationEntryForKind(
26
26
  kind: InteropAgentKind,
27
- defaults: ClioSettings["delegation"]["defaults"],
27
+ defaults: ClioSettings["integrations"]["externalAgents"]["defaults"],
28
28
  ): DelegationAgentConfig {
29
29
  const recipe = kind.acp;
30
30
  if (recipe === undefined) throw new Error(`interop kind ${kind.id} has no ACP recipe`);
@@ -35,7 +35,7 @@ export function delegationEntryForKind(
35
35
  connectTimeoutMs: defaults.connectTimeoutMs,
36
36
  turnTimeoutMs: defaults.turnTimeoutMs,
37
37
  permissionTimeoutMs: defaults.permissionTimeoutMs,
38
- toolGovernance: "clio-policy",
38
+ toolGovernance: "clio-coder-policy",
39
39
  };
40
40
  }
41
41
 
@@ -45,7 +45,7 @@ export function delegationEntryForKind(
45
45
  * declined agent whose binary or version moved comes back as a fresh proposal.
46
46
  */
47
47
  export function interopProposals(report: InteropReport, settings: ClioSettings): ReadonlyArray<InteropProposal> {
48
- const configured = new Set(settings.delegation.agents.map((agent) => agent.id));
48
+ const configured = new Set(settings.integrations.externalAgents.entries.map((agent) => agent.id));
49
49
  const proposals: InteropProposal[] = [];
50
50
  for (const record of report.agents) {
51
51
  const kind = interopAgentKind(record.kind);
@@ -57,7 +57,7 @@ export function interopProposals(report: InteropReport, settings: ClioSettings):
57
57
  kind: kind.id,
58
58
  label: kind.label,
59
59
  fingerprint: record.fingerprint,
60
- entry: delegationEntryForKind(kind, settings.delegation.defaults),
60
+ entry: delegationEntryForKind(kind, settings.integrations.externalAgents.defaults),
61
61
  needsNetworkInstall: record.adapter !== "present",
62
62
  });
63
63
  }
@@ -149,7 +149,7 @@ export function interopBootHint(report: InteropReport, settings: ClioSettings):
149
149
  (record) => ({ ...record, hintedFingerprint: record.fingerprint }),
150
150
  );
151
151
  const names = fresh.map((proposal) => proposal.entry.id).join(", ");
152
- return `clio: ${names} detected on PATH and not configured. Run /interop to review.`;
152
+ return `clio-coder: ${names} detected on PATH and not configured. Run /interop to review.`;
153
153
  }
154
154
 
155
155
  /**
@@ -167,8 +167,8 @@ export function acceptInteropAgents(ids: ReadonlyArray<InteropAgentId>, report:
167
167
  const wired: string[] = [];
168
168
  updateSettings((settings) => {
169
169
  for (const proposal of proposals) {
170
- if (settings.delegation.agents.some((agent) => agent.id === proposal.entry.id)) continue;
171
- settings.delegation.agents.push({ ...proposal.entry, args: [...proposal.entry.args] });
170
+ if (settings.integrations.externalAgents.entries.some((agent) => agent.id === proposal.entry.id)) continue;
171
+ settings.integrations.externalAgents.entries.push({ ...proposal.entry, args: [...proposal.entry.args] });
172
172
  wired.push(proposal.entry.id);
173
173
  }
174
174
  });
@@ -39,7 +39,7 @@ export function createInteropBundle(_context: DomainContext): DomainBundle<Inter
39
39
  // from the proposals, which read the file, and not yet in the configured
40
40
  // list, which read the snapshot, so it was in neither until a reopen.
41
41
  configured() {
42
- return readSettings().delegation.agents;
42
+ return readSettings().integrations.externalAgents.entries;
43
43
  },
44
44
  accept(ids) {
45
45
  const result = acceptInteropAgents(ids, detected ?? readInteropReport() ?? EMPTY_REPORT);
@@ -491,7 +491,7 @@ export async function runDoctorFleetChecks(projectRoot: string = process.cwd()):
491
491
  }
492
492
  const nodes = settings.fleet?.nodes ?? [];
493
493
  if (nodes.length === 0) return [];
494
- const { recordFleetPreflight, runFleetNodePreflight } = await import("../dispatch/fleet-preflight.js");
494
+ const { runFleetNodePreflight } = await import("../dispatch/fleet-preflight.js");
495
495
  // Endpoint facts are per node. Every configured target is probed from every
496
496
  // node, because a `localhost` URL names a different machine on each one and
497
497
  // an orchestrator-side probe would describe none of them.
@@ -502,12 +502,6 @@ export async function runDoctorFleetChecks(projectRoot: string = process.cwd()):
502
502
  ...(target.defaultModel !== undefined ? { wireModelId: target.defaultModel } : {}),
503
503
  }));
504
504
  const records = await Promise.all(nodes.map((node) => runFleetNodePreflight(node, projectRoot, { targets })));
505
- try {
506
- recordFleetPreflight(records);
507
- } catch {
508
- // The findings below still tell the operator what happened; a store
509
- // write failure just means placement will keep denying these nodes.
510
- }
511
505
  return records.map((record) => ({
512
506
  ok: true,
513
507
  level: record.ok ? "ok" : "warn",
@@ -533,14 +527,26 @@ export async function runDoctorInteropChecks(projectRoot: string = process.cwd()
533
527
  } catch {
534
528
  return [];
535
529
  }
536
- const skills = loadSkills({ cwd: projectRoot });
530
+ const configDir = resolveClioDirs().config;
531
+ // Extension discovery resolves through the ensuring config accessor. With no
532
+ // config root there cannot be user Clio extensions or skills to inspect, so
533
+ // keep the broken partial home untouched and retain the binary checks below.
534
+ const skills = existsSync(configDir) ? loadSkills({ cwd: projectRoot, configDir }) : { items: [], diagnostics: [] };
537
535
  const foreign = skills.items.filter((skill) => FOREIGN_SKILL_SOURCES.has(skill.source));
538
- const report = await detectInteropAgents({
539
- cwd: projectRoot,
540
- probeVersion: true,
541
- skillSources: skills.items.map((skill) => skill.source),
542
- });
543
- const configured = new Set(settings.delegation.agents.map((agent) => agent.id));
536
+ const report = await detectInteropAgents(
537
+ {
538
+ cwd: projectRoot,
539
+ // Version probes use the shared command runner, which prepares managed Git
540
+ // hooks before spawning. Doctor promises observation only, so PATH presence
541
+ // is the strongest safe fact here.
542
+ probeVersion: false,
543
+ skillSources: skills.items.map((skill) => skill.source),
544
+ },
545
+ // Reading the prior report resolves through the ensuring state accessor.
546
+ // Existing decisions are irrelevant to doctor's presence-only projection.
547
+ [],
548
+ );
549
+ const configured = new Set(settings.integrations.externalAgents.entries.map((agent) => agent.id));
544
550
  const findings: DoctorFinding[] = report.agents.map((agent) => {
545
551
  const kind = interopAgentKind(agent.kind);
546
552
  const status = configured.has(agent.kind)
@@ -557,7 +563,7 @@ export async function runDoctorInteropChecks(projectRoot: string = process.cwd()
557
563
  : "";
558
564
  return { ok: true, level: "ok", name: `interop ${agent.kind}`, detail: `${head} (${status})${where}` };
559
565
  });
560
- for (const agent of settings.delegation.agents) {
566
+ for (const agent of settings.integrations.externalAgents.entries) {
561
567
  if (resolveOnPath([agent.command]).presence === "present") continue;
562
568
  findings.push({
563
569
  ok: true,
@@ -618,14 +624,14 @@ function configuredModelRoles(
618
624
  ): ConfiguredModelRole[] {
619
625
  const roles: ConfiguredModelRole[] = [];
620
626
  if (target.defaultModel) roles.push({ role: "defaultModel", model: target.defaultModel });
621
- if (settings.orchestrator.target === target.id && settings.orchestrator.model) {
622
- roles.push({ role: "orchestrator.model", model: settings.orchestrator.model });
627
+ if (settings.chat.target === target.id && settings.chat.model) {
628
+ roles.push({ role: "orchestrator.model", model: settings.chat.model });
623
629
  }
624
- if (settings.background.target === target.id && settings.background.model) {
625
- roles.push({ role: "background.model", model: settings.background.model });
630
+ if (settings.context.memory.target === target.id && settings.context.memory.model) {
631
+ roles.push({ role: "background.model", model: settings.context.memory.model });
626
632
  }
627
- if (settings.workers.default.target === target.id && settings.workers.default.model) {
628
- roles.push({ role: "workers.default.model", model: settings.workers.default.model });
633
+ if (settings.fleet.default.target === target.id && settings.fleet.default.model) {
634
+ roles.push({ role: "workers.default.model", model: settings.fleet.default.model });
629
635
  }
630
636
  return roles;
631
637
  }
@@ -0,0 +1,155 @@
1
+ import { existsSync, mkdirSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+
4
+ import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
5
+ import { settingsPath, withSettingsLock } from "../../../core/config.js";
6
+ import { safeResourceWrite } from "../../../core/safe-resource-write.js";
7
+ import { type MutableNamingStateReport, migrateMutableNamingState } from "../naming-mutable-state.js";
8
+ import { inspectInstalledNamingResources, type NamingResourceReport } from "../naming-resources.js";
9
+ import { inspectToolMarkerNaming, type ToolMarkerNamingReport } from "../naming-tool-markers.js";
10
+ import { regenerateYaziNamingProfile, type YaziNamingRegenerationReport } from "../naming-yazi.js";
11
+ import type { Migration } from "./index.js";
12
+
13
+ export const CLIO_CODER_NAMING_MIGRATION_ID = "2026-09-01-clio-coder-naming";
14
+ export const CLIO_CODER_NAMING_SETTINGS_BACKUP_SUFFIX = ".pre-clio-coder-naming.bak";
15
+
16
+ export interface NamingSettingsTransform {
17
+ document: Record<string, unknown>;
18
+ replacements: string[];
19
+ conflicts: string[];
20
+ }
21
+
22
+ export interface NamingSettingsFileReport {
23
+ path: string;
24
+ changed: boolean;
25
+ backupPath: string | null;
26
+ replacements: string[];
27
+ conflicts: string[];
28
+ }
29
+
30
+ export interface ClioCoderNamingMigrationReport {
31
+ migrationId: typeof CLIO_CODER_NAMING_MIGRATION_ID;
32
+ version: 1;
33
+ settings: NamingSettingsFileReport[];
34
+ toolMarkers: ToolMarkerNamingReport[];
35
+ resources: NamingResourceReport[];
36
+ yazi: YaziNamingRegenerationReport[];
37
+ mutableState: MutableNamingStateReport[];
38
+ }
39
+
40
+ function isPlainObject(value: unknown): value is Record<string, unknown> {
41
+ return typeof value === "object" && value !== null && !Array.isArray(value);
42
+ }
43
+
44
+ function visitNamingValues(value: unknown, path: string, replacements: string[], conflicts: string[]): void {
45
+ if (Array.isArray(value)) {
46
+ for (const [index, entry] of value.entries()) visitNamingValues(entry, `${path}[${index}]`, replacements, conflicts);
47
+ return;
48
+ }
49
+ if (!isPlainObject(value)) return;
50
+
51
+ for (const [key, entry] of Object.entries(value)) {
52
+ const entryPath = path ? `${path}.${key}` : key;
53
+ if (key === "lifecycle" && entry === "clio-managed") {
54
+ value[key] = "clio-coder-managed";
55
+ replacements.push(`${entryPath}: clio-managed -> clio-coder-managed`);
56
+ continue;
57
+ }
58
+ if (key === "toolGovernance" && entry === "clio-policy") {
59
+ value[key] = "clio-coder-policy";
60
+ replacements.push(`${entryPath}: clio-policy -> clio-coder-policy`);
61
+ continue;
62
+ }
63
+ if (key === "keybindings" && isPlainObject(entry)) {
64
+ for (const legacyKey of Object.keys(entry).filter((name) => name.startsWith("clio."))) {
65
+ const canonicalKey = `clio-coder.${legacyKey.slice("clio.".length)}`;
66
+ const legacyPath = `${entryPath}.${legacyKey}`;
67
+ if (Object.hasOwn(entry, canonicalKey)) {
68
+ delete entry[legacyKey];
69
+ conflicts.push(`${legacyPath}: discarded because canonical ${entryPath}.${canonicalKey} wins`);
70
+ continue;
71
+ }
72
+ entry[canonicalKey] = entry[legacyKey];
73
+ delete entry[legacyKey];
74
+ replacements.push(`${legacyPath} -> ${entryPath}.${canonicalKey}`);
75
+ }
76
+ }
77
+ visitNamingValues(entry, entryPath, replacements, conflicts);
78
+ }
79
+ }
80
+
81
+ /** Pure deterministic settings transform shared by upgrade and doctor --fix. */
82
+ export function transformNamingSettingsDocument(raw: unknown): NamingSettingsTransform {
83
+ if (!isPlainObject(raw)) throw new Error("Clio Coder naming migration expected a YAML map at the document root");
84
+ const document = structuredClone(raw);
85
+ const replacements: string[] = [];
86
+ const conflicts: string[] = [];
87
+ visitNamingValues(document, "", replacements, conflicts);
88
+ return { document, replacements, conflicts };
89
+ }
90
+
91
+ /**
92
+ * Rewrite one settings file atomically when it contains deterministic released
93
+ * aliases. The caller owns any cross-process lock needed for the selected file.
94
+ */
95
+ export function migrateNamingSettingsFile(path: string): NamingSettingsFileReport {
96
+ if (!existsSync(path)) return { path, changed: false, backupPath: null, replacements: [], conflicts: [] };
97
+ let parsed: unknown;
98
+ try {
99
+ parsed = parseYaml(readFileSync(path, "utf8"));
100
+ } catch (error) {
101
+ throw new Error(
102
+ `Clio Coder naming migration could not read and parse ${path}: ${error instanceof Error ? error.message : String(error)}`,
103
+ );
104
+ }
105
+ const transformed = transformNamingSettingsDocument(parsed);
106
+ const changed = transformed.replacements.length > 0 || transformed.conflicts.length > 0;
107
+ if (!changed) {
108
+ return {
109
+ path,
110
+ changed: false,
111
+ backupPath: null,
112
+ replacements: transformed.replacements,
113
+ conflicts: transformed.conflicts,
114
+ };
115
+ }
116
+ const backupPath = `${path}${CLIO_CODER_NAMING_SETTINGS_BACKUP_SUFFIX}`;
117
+ safeResourceWrite(path, stringifyYaml(transformed.document), {
118
+ encoding: "utf8",
119
+ mode: 0o644,
120
+ backup: { path: backupPath },
121
+ });
122
+ return {
123
+ path,
124
+ changed: true,
125
+ backupPath,
126
+ replacements: transformed.replacements,
127
+ conflicts: transformed.conflicts,
128
+ };
129
+ }
130
+
131
+ function namingMigrationReportPath(stateDir: string): string {
132
+ return join(stateDir, "migration-reports", `${CLIO_CODER_NAMING_MIGRATION_ID}.json`);
133
+ }
134
+
135
+ const migration: Migration = {
136
+ id: CLIO_CODER_NAMING_MIGRATION_ID,
137
+ async up(stateDir: string): Promise<void> {
138
+ const settings: NamingSettingsFileReport[] = [];
139
+ withSettingsLock(() => settings.push(migrateNamingSettingsFile(settingsPath())));
140
+ const report: ClioCoderNamingMigrationReport = {
141
+ migrationId: CLIO_CODER_NAMING_MIGRATION_ID,
142
+ version: 1,
143
+ settings,
144
+ toolMarkers: inspectToolMarkerNaming({ fix: true }),
145
+ resources: inspectInstalledNamingResources({ fix: true }),
146
+ yazi: [regenerateYaziNamingProfile()],
147
+ mutableState: migrateMutableNamingState(stateDir),
148
+ };
149
+ const target = namingMigrationReportPath(stateDir);
150
+ mkdirSync(join(stateDir, "migration-reports"), { recursive: true });
151
+ safeResourceWrite(target, `${JSON.stringify(report, null, 2)}\n`, { encoding: "utf8", mode: 0o644 });
152
+ },
153
+ };
154
+
155
+ export default migration;