@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
@@ -4,8 +4,9 @@
4
4
  * can resolve both against user overrides stored in `settings.yaml`.
5
5
  *
6
6
  * The `Keybindings` interface in pi-tui is extensible via declaration merging.
7
- * Adding `clio.*` ids here makes them typed everywhere the manager is used:
8
- * pass a wrong id to `matches("clio.typo", ...)` and the compiler complains.
7
+ * Adding `clio-coder.*` ids here makes them typed everywhere the manager is
8
+ * used: pass a wrong id to `matches("clio-coder.typo", ...)` and the compiler
9
+ * complains.
9
10
  */
10
11
 
11
12
  import type { KeybindingDefinitions } from "../../engine/tui.js";
@@ -18,28 +19,28 @@ import { TUI_KEYBINDINGS } from "../../engine/tui.js";
18
19
  * live in `resolveCtrlCAction` and are not a simple keybinding.
19
20
  */
20
21
  export interface ClioAppKeybindings {
21
- "clio.thinking.cycle": true;
22
- "clio.exit": true;
23
- "clio.status.toggle": true;
24
- "clio.session.tree": true;
25
- "clio.dispatchBoard.toggle": true;
26
- "clio.tasks.open": true;
27
- "clio.decisions.open": true;
28
- "clio.dispatch.background": true;
29
- "clio.model.select": true;
30
- "clio.model.cycleForward": true;
31
- "clio.model.cycleBackward": true;
32
- "clio.tool.expand": true;
33
- "clio.tool.expandAll": true;
34
- "clio.tool.liveOutput": true;
35
- "clio.thinking.expand": true;
36
- "clio.thinking.expandAll": true;
37
- "clio.editor.external": true;
38
- "clio.message.followUp": true;
39
- "clio.message.interrupt": true;
40
- "clio.message.dequeue": true;
41
- "clio.notifications.dismiss": true;
42
- "clio.leader": true;
22
+ "clio-coder.thinking.cycle": true;
23
+ "clio-coder.exit": true;
24
+ "clio-coder.status.toggle": true;
25
+ "clio-coder.session.tree": true;
26
+ "clio-coder.dispatchBoard.toggle": true;
27
+ "clio-coder.tasks.open": true;
28
+ "clio-coder.decisions.open": true;
29
+ "clio-coder.dispatch.background": true;
30
+ "clio-coder.model.select": true;
31
+ "clio-coder.model.cycleForward": true;
32
+ "clio-coder.model.cycleBackward": true;
33
+ "clio-coder.tool.expand": true;
34
+ "clio-coder.tool.expandAll": true;
35
+ "clio-coder.tool.liveOutput": true;
36
+ "clio-coder.thinking.expand": true;
37
+ "clio-coder.thinking.expandAll": true;
38
+ "clio-coder.editor.external": true;
39
+ "clio-coder.message.followUp": true;
40
+ "clio-coder.message.interrupt": true;
41
+ "clio-coder.message.dequeue": true;
42
+ "clio-coder.notifications.dismiss": true;
43
+ "clio-coder.leader": true;
43
44
  }
44
45
 
45
46
  export type ClioKeybinding = keyof ClioAppKeybindings;
@@ -47,7 +48,7 @@ export type ClioKeybinding = keyof ClioAppKeybindings;
47
48
  /**
48
49
  * Declaration merge: pi-tui's `Keybindings` interface is open so downstream
49
50
  * packages register their action ids. After this block, `KeybindingsManager`
50
- * returned from `createKeybindingManager` accepts `clio.*` ids with full
51
+ * returned from `createKeybindingManager` accepts `clio-coder.*` ids with full
51
52
  * TypeScript checking.
52
53
  */
53
54
  declare module "@earendil-works/pi-tui" {
@@ -69,37 +70,37 @@ declare module "@earendil-works/pi-tui" {
69
70
  * net for user rebinds.
70
71
  */
71
72
  export const CLIO_APP_KEYBINDINGS = {
72
- "clio.thinking.cycle": {
73
+ "clio-coder.thinking.cycle": {
73
74
  defaultKeys: "shift+tab",
74
75
  description: "Cycle orchestrator thinking level",
75
76
  },
76
- "clio.exit": {
77
+ "clio-coder.exit": {
77
78
  defaultKeys: "ctrl+d",
78
79
  description: "Exit when the editor is empty",
79
80
  },
80
- "clio.status.toggle": {
81
+ "clio-coder.status.toggle": {
81
82
  defaultKeys: "alt+u",
82
83
  description: "Toggle the footer dashboard (compact / expanded)",
83
84
  },
84
- "clio.session.tree": {
85
+ "clio-coder.session.tree": {
85
86
  defaultKeys: "alt+t",
86
87
  description: "Open the /tree navigator",
87
88
  },
88
- "clio.dispatchBoard.toggle": {
89
+ "clio-coder.dispatchBoard.toggle": {
89
90
  defaultKeys: "alt+w",
90
91
  description: "Toggle the dispatch (workers) board overlay",
91
92
  },
92
- "clio.tasks.open": {
93
+ "clio-coder.tasks.open": {
93
94
  // Approved application-boundary override of pi-tui editor word-back.
94
95
  defaultKeys: "alt+b",
95
96
  description: "Open the composite session and operator task board",
96
97
  },
97
- "clio.decisions.open": {
98
+ "clio-coder.decisions.open": {
98
99
  // Approved application-boundary override of pi-tui editor word-delete.
99
100
  defaultKeys: "alt+d",
100
101
  description: "Open the settled interview decision board",
101
102
  },
102
- "clio.dispatch.background": {
103
+ "clio-coder.dispatch.background": {
103
104
  // Ctrl+B alone is pi-tui's editor cursor-left, so the Claude Code chord
104
105
  // cannot be the primary here. Alt+S ("send to background") keeps the app
105
106
  // scheme and earns the Ctrl+G leader fallback, which only alt+<letter>
@@ -107,56 +108,56 @@ export const CLIO_APP_KEYBINDINGS = {
107
108
  defaultKeys: ["alt+s", "ctrl+alt+b"],
108
109
  description: "Send the running attached dispatch to the background as a detached batch",
109
110
  },
110
- "clio.model.select": {
111
+ "clio-coder.model.select": {
111
112
  defaultKeys: "alt+l",
112
113
  description: "Open the model + targets selector",
113
114
  },
114
- "clio.model.cycleForward": {
115
+ "clio-coder.model.cycleForward": {
115
116
  defaultKeys: "alt+j",
116
117
  description: "Cycle to next scoped model",
117
118
  },
118
- "clio.model.cycleBackward": {
119
+ "clio-coder.model.cycleBackward": {
119
120
  defaultKeys: "alt+k",
120
121
  description: "Cycle to previous scoped model",
121
122
  },
122
- "clio.tool.expand": {
123
+ "clio-coder.tool.expand": {
123
124
  defaultKeys: "alt+o",
124
125
  description:
125
126
  "Fold or unfold the newest tool call or worker block between its one-line summary and full details, overriding the /output level for that block",
126
127
  },
127
- "clio.tool.expandAll": {
128
+ "clio-coder.tool.expandAll": {
128
129
  // Alt+Shift+letter is commonly consumed by OS keyboard-layout switching.
129
130
  // Keep it discoverable, but pair it with the legacy-safe Ctrl+Alt form.
130
131
  defaultKeys: ["ctrl+alt+o", "alt+shift+o"],
131
132
  description:
132
133
  "Fold or unfold every tool call and worker block at once, overriding the /output level; changing /output clears the overrides",
133
134
  },
134
- "clio.tool.liveOutput": {
135
+ "clio-coder.tool.liveOutput": {
135
136
  defaultKeys: "alt+p",
136
137
  description: "Toggle streaming partial tool output in expanded tool bodies",
137
138
  },
138
- "clio.thinking.expand": {
139
+ "clio-coder.thinking.expand": {
139
140
  defaultKeys: "alt+r",
140
141
  description:
141
142
  "Toggle the latest thinking block between hidden marker and full body (no effect while /output verbose pins it open)",
142
143
  },
143
- "clio.thinking.expandAll": {
144
+ "clio-coder.thinking.expandAll": {
144
145
  // Ctrl+Alt+R is the fallback for terminals/OSes that do not forward
145
146
  // Alt+Shift+R as a distinct key event.
146
147
  defaultKeys: ["ctrl+alt+r", "alt+shift+r"],
147
148
  description:
148
149
  "Toggle all thinking blocks between hidden markers and full bodies, overriding the /output level; changing /output clears the overrides",
149
150
  },
150
- "clio.editor.external": {
151
+ "clio-coder.editor.external": {
151
152
  defaultKeys: "alt+g",
152
153
  description: "Open the current input in an external editor",
153
154
  },
154
- "clio.message.followUp": {
155
+ "clio-coder.message.followUp": {
155
156
  defaultKeys: "alt+enter",
156
157
  description:
157
158
  "End of turn: queue the current input for delivery when the active run settles (Enter delivers it at the next slot, between tool batches)",
158
159
  },
159
- "clio.message.interrupt": {
160
+ "clio-coder.message.interrupt": {
160
161
  // Alt+I keeps the app scheme and earns the Ctrl+G leader fallback. A
161
162
  // Ctrl+Enter chord was rejected because legacy terminals send it as a
162
163
  // plain Enter, which would turn every send into a cancel.
@@ -164,15 +165,15 @@ export const CLIO_APP_KEYBINDINGS = {
164
165
  description:
165
166
  "Interrupt: cancel the active run and deliver the current input now (refused while an attached dispatch runs or a permission ask is parked; the input then queues for the next slot)",
166
167
  },
167
- "clio.message.dequeue": {
168
+ "clio-coder.message.dequeue": {
168
169
  defaultKeys: "alt+up",
169
170
  description: "Restore queued steering and follow-up messages to the editor",
170
171
  },
171
- "clio.notifications.dismiss": {
172
+ "clio-coder.notifications.dismiss": {
172
173
  defaultKeys: "alt+x",
173
174
  description: "Dismiss footer notifications",
174
175
  },
175
- "clio.leader": {
176
+ "clio-coder.leader": {
176
177
  defaultKeys: "ctrl+g",
177
178
  description: "Start portable leader-key fallback for Alt shortcuts",
178
179
  },
@@ -28,7 +28,7 @@ export function startConfigWatcher(cb: WatcherCallback): ConfigWatcher {
28
28
  }, 80);
29
29
  });
30
30
  } catch (err) {
31
- console.error("[clio:config] watcher setup failed:", err);
31
+ console.error("[clio-coder:config] watcher setup failed:", err);
32
32
  }
33
33
 
34
34
  return {
@@ -752,7 +752,7 @@ function mergeTreeSitterWithRegexImports(
752
752
  };
753
753
  }
754
754
 
755
- export function fallbackExtraction(language: CodewikiLanguage, relPath: string, text: string): LanguageExtraction {
755
+ function fallbackExtraction(language: CodewikiLanguage, relPath: string, text: string): LanguageExtraction {
756
756
  return extractWithExtractors(fallbackExtractors, language, relPath, text);
757
757
  }
758
758
 
@@ -146,15 +146,15 @@ function collectStartupHints(cwd: string, options: ContextBundleOptions = {}): s
146
146
  projectType !== "unknown" &&
147
147
  options.noContextFiles !== true
148
148
  ) {
149
- hints.push("clio: No CLIO-CODER.md detected. Run /context init to explore the repo and bootstrap context.");
149
+ hints.push("clio-coder: No CLIO-CODER.md detected. Run /context init to explore the repo and bootstrap context.");
150
150
  }
151
151
  for (const issue of clio.errors) {
152
- hints.push(`clio: malformed ${issue.path} ignored: ${issue.error}`);
152
+ hints.push(`clio-coder: malformed ${issue.path} ignored: ${issue.error}`);
153
153
  }
154
154
  const state = readClioState(cwd);
155
155
  if (!state) return hints;
156
156
  if (state.contextSources !== undefined && adoptionSourcesChanged(state.contextSources, { cwd })) {
157
- hints.push("clio: Imported agent context changed. Run /context init --adopt to refresh.");
157
+ hints.push("clio-coder: Imported agent context changed. Run /context init --adopt to refresh.");
158
158
  }
159
159
  return hints;
160
160
  }
@@ -32,7 +32,7 @@ export function renderPromptContext(cwd: string): ProjectPromptContext {
32
32
  const clioMd: ParsedClioMd | null = loadedClioMd.value;
33
33
  for (const file of loadedClioMd.files) pieces.push(renderProjectContextFragment(file.value, file.path));
34
34
  for (const issue of loadedClioMd.errors) {
35
- warnings.push(`clio: malformed ${issue.path} ignored: ${issue.error}`);
35
+ warnings.push(`clio-coder: malformed ${issue.path} ignored: ${issue.error}`);
36
36
  }
37
37
  // Said where the handbook would have been: a model that sees no project
38
38
  // context spends its first tool call reading CLIO-CODER.md and gets
@@ -39,7 +39,7 @@ const SOURCE_CITATION =
39
39
  const INTERNAL_LINK = /\[[^\]]*\]\((?![a-z][a-z\d+.-]*:|\/\/|#)([^)\s]+\.md)(?:#[^)\s]*)?\)/gi;
40
40
 
41
41
  /** Marker line carrying a page's unrepaired references; regenerated every pass. */
42
- const REPAIR_NOTE = /^<!-- clio:wiki .*-->$/gm;
42
+ const REPAIR_NOTE = /^<!-- (?:clio-coder|clio):wiki .*-->$/gm;
43
43
 
44
44
  export interface WikiPageIssue {
45
45
  page: string;
@@ -79,7 +79,7 @@ function renderRepairNote(issues: ReadonlyArray<WikiPageIssue>): string {
79
79
  const parts: string[] = [];
80
80
  if (links.length > 0) parts.push(`unresolved links: ${[...new Set(links)].join(", ")}`);
81
81
  if (citations.length > 0) parts.push(`unresolved sources: ${[...new Set(citations)].join(", ")}`);
82
- return parts.length === 0 ? "" : `\n<!-- clio:wiki ${parts.join("; ")} -->\n`;
82
+ return parts.length === 0 ? "" : `\n<!-- clio-coder:wiki ${parts.join("; ")} -->\n`;
83
83
  }
84
84
 
85
85
  /**
@@ -144,10 +144,6 @@ function measure(input: ReplayMeasurement): MeasuredTrace {
144
144
  };
145
145
  }
146
146
 
147
- export function measureReplayTrace(input: ReplayMeasurement): ReplayMetrics {
148
- return measure(input).metrics;
149
- }
150
-
151
147
  function mean(values: ReadonlyArray<number>): number {
152
148
  return values.length === 0 ? 0 : values.reduce((sum, value) => sum + value, 0) / values.length;
153
149
  }
@@ -49,7 +49,7 @@ function metricObject(metrics: ReplayMetrics, turnsToFirstSummaryCount: number):
49
49
  export function renderReplayJson(input: ReplayReportInput): string {
50
50
  const filtered = Object.fromEntries(Object.entries(input.cascade.filtered).sort(([a], [b]) => a.localeCompare(b)));
51
51
  const artifact = {
52
- schema: "clio-context-replay-v2",
52
+ schema: "clio-coder-context-replay-v2",
53
53
  config: {
54
54
  policies: [...input.config.policies],
55
55
  budgets: [...input.config.budgets],
@@ -93,7 +93,7 @@ export const SYNTHETIC_CORPORA: ReadonlyArray<SyntheticCorpusSpec> = [
93
93
  },
94
94
  ];
95
95
 
96
- export function syntheticCorpus(id: string): SyntheticCorpusSpec | undefined {
96
+ function syntheticCorpus(id: string): SyntheticCorpusSpec | undefined {
97
97
  return SYNTHETIC_CORPORA.find((spec) => spec.id === id);
98
98
  }
99
99
 
@@ -258,7 +258,7 @@ function testOutput(files: ReadonlyArray<RepoFile>, failing: RepoFile | null): s
258
258
  }
259
259
 
260
260
  /** Generate one trace of the corpus. `index` selects the trace; the spec's seed and index fix every byte. */
261
- export function generateSyntheticTrace(spec: SyntheticCorpusSpec, index: number): Trace {
261
+ function generateSyntheticTrace(spec: SyntheticCorpusSpec, index: number): Trace {
262
262
  const rnd = mulberry32(spec.seed * 1000 + index);
263
263
  const between = (low: number, high: number): number => low + Math.floor(rnd() * (high - low + 1));
264
264
  const pick = <T>(items: ReadonlyArray<T>): T => items[Math.floor(rnd() * items.length)] as T;
@@ -80,8 +80,8 @@ function enabled(input: ActivationInputs): boolean {
80
80
  input.settings !== undefined &&
81
81
  posture !== "manual" &&
82
82
  input.failover === "approved" &&
83
- input.settings.activePostures.includes(posture as (typeof input.settings.activePostures)[number]) &&
84
- input.settings.agentAutomation.activeAgentRoles.length > 0
83
+ input.settings.postures.includes(posture as (typeof input.settings.postures)[number]) &&
84
+ input.settings.agentRoles.length > 0
85
85
  );
86
86
  }
87
87
  return (
@@ -0,0 +1,9 @@
1
+ /** A queued assignment was intentionally canceled before it acquired capacity. */
2
+ export class AdmissionCanceledError extends Error {
3
+ readonly code = "admission_canceled" as const;
4
+
5
+ constructor(message = "dispatch: admission canceled before a capacity slot opened") {
6
+ super(message);
7
+ this.name = "AdmissionCanceledError";
8
+ }
9
+ }
@@ -2,6 +2,7 @@ import { randomBytes } from "node:crypto";
2
2
  import { endpointLabel } from "../providers/endpoint-capacity.js";
3
3
  import type { ActionClass } from "../safety/action-classifier.js";
4
4
  import type { ScopeSpec } from "../safety/scope.js";
5
+ import { AdmissionCanceledError } from "./admission-error.js";
5
6
  import { createAdmissionQueue } from "./admission-queue.js";
6
7
  import {
7
8
  acquireCapacityLease,
@@ -131,7 +132,12 @@ function describeAdmissionFailure(input: {
131
132
  holders === undefined
132
133
  ? "the supplied capacity snapshot does not attribute the occupied slots"
133
134
  : describeEndpointCapacityHolders(holders);
134
- return `dispatch: admission denied: endpoint '${endpointLabel(input.endpointKey)}' capacity reached (${endpointActive}/${endpointLimit} slots): ${occupancy}; collect in-flight runs or point workers at a second server`;
135
+ const queued = input.queueDepth > 0 ? `, ${input.queueDepth} more queued` : "";
136
+ return [
137
+ `dispatch: admission timed out after ${Math.round(input.waitedMs)}ms waiting for an endpoint slot`,
138
+ ` on '${endpointLabel(input.endpointKey)}' (${endpointActive}/${endpointLimit} slots${queued}): ${occupancy}.`,
139
+ " Wait for the running request to settle or dispatch this work again.",
140
+ ].join("");
135
141
  }
136
142
  }
137
143
  const nodeLimit = input.limits.nodes[input.nodeId];
@@ -202,14 +208,9 @@ export function createCapacityAdmissionController(options: {
202
208
  admittedLease = request.value();
203
209
  return true;
204
210
  } catch (error) {
205
- // Endpoint saturation is a named refusal because waiting would keep a
206
- // model request queued behind the same inference scheduler. Existing
207
- // node and global admission retain their bounded wait behavior.
208
- if (error instanceof Error && /endpoint '.*' capacity reached/u.test(error.message)) {
209
- queue.fail(request.requestId, error);
210
- return false;
211
- }
212
- // Node and global capacity can wait. Anything else fails the request.
211
+ // Saturation at any capacity dimension is transient and keeps its
212
+ // assignment in the one bounded admission queue. Unavailable capacity,
213
+ // draining, corrupt state, and every other error still fail immediately.
213
214
  if (error instanceof Error && /capacity reached/.test(error.message)) return false;
214
215
  queue.fail(request.requestId, error instanceof Error ? error : new Error(String(error)));
215
216
  return false;
@@ -278,18 +279,18 @@ export function createCapacityAdmissionController(options: {
278
279
  pumpNow();
279
280
  const outcome = await outcomePromise;
280
281
  if (outcome.state !== "admitted") {
281
- throw new Error(
282
- describeAdmissionFailure({
283
- state: outcome.state,
284
- nodeId: input.nodeId,
285
- ...(input.endpointKey !== undefined ? { endpointKey: input.endpointKey } : {}),
286
- waitedMs: now() - queuedAt,
287
- overdueAtQueueMs: queuedAt - input.deadlineAt,
288
- queueDepth: queue.size(),
289
- limits: options.limits(),
290
- usage: options.usage?.() ?? capacityLeaseUsage({ nowMs: now() }),
291
- }),
292
- );
282
+ const detail = describeAdmissionFailure({
283
+ state: outcome.state,
284
+ nodeId: input.nodeId,
285
+ ...(input.endpointKey !== undefined ? { endpointKey: input.endpointKey } : {}),
286
+ waitedMs: now() - queuedAt,
287
+ overdueAtQueueMs: queuedAt - input.deadlineAt,
288
+ queueDepth: queue.size(),
289
+ limits: options.limits(),
290
+ usage: options.usage?.() ?? capacityLeaseUsage({ nowMs: now() }),
291
+ });
292
+ if (outcome.state === "canceled") throw new AdmissionCanceledError(detail);
293
+ throw new Error(detail);
293
294
  }
294
295
  const lease = acquired.get(input.assignmentId);
295
296
  if (!lease) throw new Error("dispatch: admitted request has no capacity lease");
@@ -249,7 +249,7 @@ function candidateRejections(spec: AgentSpec, intent: AgentTaskIntent): string[]
249
249
  }
250
250
 
251
251
  /** Hard filters first; display-only category is deliberately never read. */
252
- export function evaluateAgentCandidates(specs: ReadonlyArray<AgentSpec>, intent: AgentTaskIntent): AgentCandidateSet {
252
+ function evaluateAgentCandidates(specs: ReadonlyArray<AgentSpec>, intent: AgentTaskIntent): AgentCandidateSet {
253
253
  if (specs.length > AGENT_CANDIDATE_LIMIT) {
254
254
  throw new Error(
255
255
  `dispatch routing configuration error: agent candidate overflow (${specs.length}/${AGENT_CANDIDATE_LIMIT})`,
@@ -251,7 +251,7 @@ export function agentLedgerContribution(id: string, runId: string): AgentLedgerC
251
251
  .filter((entry) => entry.runId === runId)
252
252
  .sort((left, right) => left.sequence - right.sequence);
253
253
  const digest = createHash("sha256")
254
- .update(`clio.agentLedger:${canonicalJson(mine)}`, "utf8")
254
+ .update(`clio-coder.agentLedger:${canonicalJson(mine)}`, "utf8")
255
255
  .digest("hex");
256
256
  return { posted: contribution.posted, refused: contribution.refused, digest };
257
257
  }
@@ -124,7 +124,7 @@ export function corroboration(entries: ReadonlyArray<AgentLedgerEntry>): Corrobo
124
124
  }
125
125
 
126
126
  /** Entry ids targeted by a review that did not pass. */
127
- export function disputes(entries: ReadonlyArray<AgentLedgerEntry>): ReadonlySet<string> {
127
+ function disputes(entries: ReadonlyArray<AgentLedgerEntry>): ReadonlySet<string> {
128
128
  const disputed = new Set<string>();
129
129
  for (const entry of entries) {
130
130
  if (entry.body.kind === "review" && !entry.body.passed) disputed.add(entry.body.target);
@@ -44,9 +44,9 @@ export interface AssignmentPolicy {
44
44
  }
45
45
 
46
46
  export interface RoutingActivationSnapshot {
47
- activeRoles: ReadonlyArray<ActiveRoutingRole>;
48
- activePostures: ReadonlyArray<ActiveRoutingPosture>;
49
- agentAutomation: { activeAgentRoles: ReadonlyArray<ActiveAgentRole> };
47
+ roles: ReadonlyArray<ActiveRoutingRole>;
48
+ postures: ReadonlyArray<ActiveRoutingPosture>;
49
+ agentRoles: ReadonlyArray<ActiveAgentRole>;
50
50
  }
51
51
 
52
52
  /** Activation is explicit in both dimensions and never widens mutation authority. */
@@ -60,8 +60,8 @@ export function activeRoutingEnabled(input: {
60
60
  if (input.posture === "manual" || input.failover !== "approved") return false;
61
61
  if (input.capabilityClass !== "read-only" && input.capabilityClass !== "verification") return false;
62
62
  return (
63
- input.settings.activeRoles.includes(input.role as ActiveRoutingRole) &&
64
- input.settings.activePostures.includes(input.posture as ActiveRoutingPosture)
63
+ input.settings.roles.includes(input.role as ActiveRoutingRole) &&
64
+ input.settings.postures.includes(input.posture as ActiveRoutingPosture)
65
65
  );
66
66
  }
67
67
 
@@ -68,7 +68,7 @@ export interface LeaseOwnerProbe {
68
68
  alive?(pid: number): boolean;
69
69
  }
70
70
 
71
- export function capacityStatePath(): string {
71
+ function capacityStatePath(): string {
72
72
  return join(clioStateDir(), "dispatch-admission.json");
73
73
  }
74
74
  /** The admission state file itself keys the one cross-process transaction lock. */
@@ -263,6 +263,26 @@ export function describeEndpointCapacityHolders(holders: EndpointCapacityHolders
263
263
  return `${named} ${total === 1 ? "holds" : "hold"} ${total === 1 ? "the slot" : "the slots"}`;
264
264
  }
265
265
 
266
+ /**
267
+ * The ways past a saturated inference endpoint, in the order an operator can
268
+ * act on them.
269
+ *
270
+ * `maxConcurrentRequests` is named because the conservative default of one slot
271
+ * is a guess about an unprobed server, and on a server started with
272
+ * `--parallel 4` it is simply wrong. Without that sentence the denial reads as
273
+ * a hardware limit and the operator has no reason to look for a setting.
274
+ *
275
+ * `rosterFloor` is the smallest same-wave width the caller's topology can have.
276
+ * A council runs its whole roster in one wave, so "dispatch fewer at once" is
277
+ * not a move it has; saying so keeps the remedy honest.
278
+ */
279
+ export function endpointCapacityRemedy(input?: { rosterFloor?: number }): string {
280
+ const ways =
281
+ "set this target's maxConcurrentRequests to the slot count the server was started with, collect in-flight runs, or point workers at a second server";
282
+ if (input?.rosterFloor === undefined) return `reduce the same-wave worker count, ${ways}`;
283
+ return `a council runs its whole roster in one wave and cannot go below ${input.rosterFloor} members, so ${ways}`;
284
+ }
285
+
266
286
  function assertCapacity(
267
287
  file: CapacityStateFile,
268
288
  nodeId: string,
@@ -299,7 +319,7 @@ function assertCapacity(
299
319
  const used = holders.leases + holders.reservations + holders.foregroundStreams;
300
320
  if (used >= endpointLimit)
301
321
  throw new Error(
302
- `dispatch: admission denied: endpoint '${endpointLabel(endpointKey)}' capacity reached (${used}/${endpointLimit} slots): ${describeEndpointCapacityHolders(holders)}; collect in-flight runs or point workers at a second server`,
322
+ `dispatch: admission denied: endpoint '${endpointLabel(endpointKey)}' capacity reached (${used}/${endpointLimit} slots): ${describeEndpointCapacityHolders(holders)}; ${endpointCapacityRemedy()}`,
303
323
  );
304
324
  }
305
325
  }
@@ -488,10 +508,7 @@ export function createNodeLeaseUsageReader(options: {
488
508
  };
489
509
  }
490
510
 
491
- export function listCapacityLeases(options?: {
492
- nowMs?: number;
493
- probe?: LeaseOwnerProbe;
494
- }): ReadonlyArray<CapacityLease> {
511
+ function listCapacityLeases(options?: { nowMs?: number; probe?: LeaseOwnerProbe }): ReadonlyArray<CapacityLease> {
495
512
  return withStateFileLockSync(capacityStateLockPath(), () => {
496
513
  const file = readCapacityStateUnsafe();
497
514
  const before = file.leases.length;
@@ -145,7 +145,7 @@ function resolveCwd(command: FleetCommand, workspaceRoot: string): string {
145
145
  }
146
146
 
147
147
  /** Closed environment: the base allowlist plus whatever this command declared. */
148
- export function codeStepEnv(command: FleetCommand, source: NodeJS.ProcessEnv): NodeJS.ProcessEnv {
148
+ function codeStepEnv(command: FleetCommand, source: NodeJS.ProcessEnv): NodeJS.ProcessEnv {
149
149
  const names = [...FLEET_COMMAND_BASE_ENV, ...command.env];
150
150
  const env: NodeJS.ProcessEnv = {};
151
151
  for (const name of names) {
@@ -308,7 +308,7 @@ export interface DispatchContract {
308
308
  * assignment id addresses its current attempt. The text is sent as a JSON
309
309
  * line on the worker's open stdin and injected into its transcript at the
310
310
  * next loop boundary; the worker acknowledges runtime acceptance with a
311
- * `clio_steer_received` event. Throws with an operator-facing message when
311
+ * `clio_coder_steer_received` event. Throws with an operator-facing message when
312
312
  * the run is unknown or inactive, when the runtime is a single-shot
313
313
  * subprocess or ACP delegation, or when the worker's stdin is already gone.
314
314
  */
@@ -319,7 +319,7 @@ export interface DispatchContract {
319
319
  * running native worker. A logical assignment id addresses its current attempt (onPermission="escalate"). Writes a
320
320
  * `permission_decision` JSON line on the worker's open stdin; the worker
321
321
  * releases or denies the parked tool call and acks with a
322
- * `clio_permission_resolved` event. Human-only: no model-facing tool can
322
+ * `clio_coder_permission_resolved` event. Human-only: no model-facing tool can
323
323
  * reach this. Throws with an operator-facing message when the run is
324
324
  * unknown or no longer active, when the run kind has no stdin channel
325
325
  * (acp-delegation), or when the worker's stdin is already gone. Mirrors