@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
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Whether this boot activates the panes extension.
3
+ *
4
+ * The decision is made here, before any panes module loads, because the whole
5
+ * point of the activation model is that a plain boot never pays for the
6
+ * extension: no socket probe, no guest-mode detection, and none of the mux
7
+ * domain's code in the import closure. The orchestrator dynamically imports
8
+ * `src/entry/with-panes.ts` only when this resolves to an active rung, and a
9
+ * built-graph contract test (tests/contracts/instant-shell-import-graph.test.ts)
10
+ * pins that the default boot chunk carries no mux domain code.
11
+ *
12
+ * Precedence: the command-line flag wins in both directions, then the
13
+ * `panes.enabled` setting, then the shipped default of `off`.
14
+ */
15
+
16
+ /** Mirrors `MuxEnablement` in src/domains/mux/detect.ts without importing it. */
17
+ export type PanesEnablement = "auto" | "embedded" | "off";
18
+
19
+ export function resolvePanesEnablement(
20
+ flag: "with" | "without" | undefined,
21
+ setting: PanesEnablement | undefined,
22
+ ): PanesEnablement {
23
+ if (flag === "without") return "off";
24
+ if (flag === "with") {
25
+ // `--with-panes` on a settings file that names `embedded` honors the
26
+ // stronger setting; on `off` or absent settings it activates guest
27
+ // detection, which is the flag's promise.
28
+ return setting === "embedded" ? "embedded" : "auto";
29
+ }
30
+ return setting ?? "off";
31
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The panes extension's composition surface.
3
+ *
4
+ * This is the one module that statically imports panes-only code: the mux
5
+ * domain (socket client, contract, yazi session machinery) and the interactive
6
+ * glue built on it. The orchestrator imports it dynamically, and only when
7
+ * `resolvePanesEnablement` (src/entry/panes-activation.ts) says the extension
8
+ * is active, so a plain `clio-coder` boot never loads any of it. The built
9
+ * import graph is pinned by tests/contracts/instant-shell-import-graph.test.ts:
10
+ * the default boot chunk must carry no mux domain code.
11
+ *
12
+ * Everything re-exported here is a value the orchestrator wires; types cross
13
+ * the seam as type-only imports at the call sites and cost nothing.
14
+ */
15
+
16
+ export { createMuxDomainModule } from "../domains/mux/index.js";
17
+ export { createMuxBridge } from "../interactive/mux-bridge.js";
18
+ export { createPanesRuntime } from "../interactive/panes-runtime.js";
19
+ export { createWatchPaneController } from "../interactive/watch-pane.js";
20
+ export { createYaziBridge } from "../interactive/yazi-bridge.js";
@@ -6,32 +6,32 @@ import { isEscapeKey, type OverlayState, overlayOwnsInput } from "./overlay-life
6
6
  export const APPLICATION_DOUBLE_TAP_MS = 500;
7
7
 
8
8
  const CLOSED_ACTION_ORDER = [
9
- "clio.notifications.dismiss",
10
- "clio.tool.expand",
11
- "clio.tool.expandAll",
12
- "clio.tool.liveOutput",
13
- "clio.editor.external",
14
- "clio.message.followUp",
15
- "clio.message.interrupt",
16
- "clio.message.dequeue",
17
- "clio.thinking.expand",
18
- "clio.thinking.expandAll",
9
+ "clio-coder.notifications.dismiss",
10
+ "clio-coder.tool.expand",
11
+ "clio-coder.tool.expandAll",
12
+ "clio-coder.tool.liveOutput",
13
+ "clio-coder.editor.external",
14
+ "clio-coder.message.followUp",
15
+ "clio-coder.message.interrupt",
16
+ "clio-coder.message.dequeue",
17
+ "clio-coder.thinking.expand",
18
+ "clio-coder.thinking.expandAll",
19
19
  ] as const satisfies ReadonlyArray<ClioKeybinding>;
20
20
 
21
21
  const GLOBAL_ACTION_ORDER = [
22
- "clio.status.toggle",
23
- "clio.thinking.cycle",
24
- "clio.session.tree",
25
- "clio.dispatchBoard.toggle",
26
- "clio.tasks.open",
27
- "clio.decisions.open",
28
- "clio.dispatch.background",
29
- "clio.model.select",
22
+ "clio-coder.status.toggle",
23
+ "clio-coder.thinking.cycle",
24
+ "clio-coder.session.tree",
25
+ "clio-coder.dispatchBoard.toggle",
26
+ "clio-coder.tasks.open",
27
+ "clio-coder.decisions.open",
28
+ "clio-coder.dispatch.background",
29
+ "clio-coder.model.select",
30
30
  // Backward stays ahead of forward so prefix-overlapping user bindings keep
31
31
  // the same more-specific-first behavior as the original input listener.
32
- "clio.model.cycleBackward",
33
- "clio.model.cycleForward",
34
- "clio.exit",
32
+ "clio-coder.model.cycleBackward",
33
+ "clio-coder.model.cycleForward",
34
+ "clio-coder.exit",
35
35
  ] as const satisfies ReadonlyArray<ClioKeybinding>;
36
36
 
37
37
  export type CtrlCAction = "cancel-stream" | "close-overlay" | "clear-editor" | "arm-shutdown" | "shutdown";
@@ -125,7 +125,7 @@ function workerEscalationAxis(
125
125
  return null;
126
126
  }
127
127
 
128
- export function middlewareBudgetWarningKey(payload: unknown): string | null {
128
+ function middlewareBudgetWarningKey(payload: unknown): string | null {
129
129
  if (!isMiddlewareHookFailedPayload(payload)) return null;
130
130
  if (payload.kind !== "budget_exceeded") return null;
131
131
  return `${payload.registrationId}\u0000${payload.hook}`;
@@ -137,7 +137,7 @@ export function middlewareBudgetWarningKey(payload: unknown): string | null {
137
137
  * either way; this warn notice is the operator's only interactive signal
138
138
  * that a guard or assessor is misbehaving.
139
139
  */
140
- export function middlewareHookFailedNotice(
140
+ function middlewareHookFailedNotice(
141
141
  payload: unknown,
142
142
  options: MiddlewareHookFailedNoticeOptions = {},
143
143
  ): BusNotice | null {
@@ -215,7 +215,7 @@ export interface ChatSubmitOptions {
215
215
  * the turn runtime's own local fallback, so a `/btw` round against a local
216
216
  * server authenticates exactly the way a turn against it does.
217
217
  */
218
- const LOCAL_SIDE_QUESTION_API_KEY = "clio-local-target";
218
+ const LOCAL_SIDE_QUESTION_API_KEY = "clio-coder-local-target";
219
219
 
220
220
  /** Closing notice an operator interrupt leaves in the transcript and the ledger. */
221
221
  const INTERRUPT_CANCEL_REASON = "[Clio Coder] run interrupted by operator; delivering the new message now.";
@@ -372,7 +372,7 @@ export interface CreateChatLoopDeps {
372
372
  /**
373
373
  * Whitelist of target ids that the chat-loop is allowed to drive. The
374
374
  * orchestrator composes this from `providers.list()` so an unknown
375
- * `settings.orchestrator.target` surfaces a configuration error before
375
+ * `settings.chat.target` surfaces a configuration error before
376
376
  * the agent is constructed.
377
377
  */
378
378
  knownTargets: () => ReadonlySet<string>;
@@ -527,7 +527,7 @@ export interface CreateChatLoopDeps {
527
527
  registerPrewarmEndpointSlot?: (runtime: AgentRuntime) => (() => void) | null;
528
528
  }
529
529
 
530
- export function reloadProtectedArtifactsForSession(
530
+ function reloadProtectedArtifactsForSession(
531
531
  protectedArtifacts: NonNullable<CreateChatLoopDeps["protectedArtifacts"]>,
532
532
  readSessionEntries: (() => ReadonlyArray<SessionEntry>) | undefined,
533
533
  ): void {
@@ -547,7 +547,7 @@ export function createChatLoop(deps: CreateChatLoopDeps): ChatLoop {
547
547
  const sideQuestionRound = deps.runSideQuestion ?? runSideQuestion;
548
548
  const handoffRound = deps.runHandoffRound ?? runHandoffRound;
549
549
  const middlewareToolChoice = deps.middlewareToolChoice ?? createMiddlewareToolChoiceControl();
550
- const state = createTurnState(deps.getSettings().orchestrator.thinkingLevel ?? "off");
550
+ const state = createTurnState(deps.getSettings().chat.thinkingLevel ?? "off");
551
551
  const toolStartTimes = new Map<string, number>();
552
552
 
553
553
  const preparationListeners = new Set<(phase: TurnPreparationPhase) => void>();
@@ -639,13 +639,13 @@ export function createChatLoop(deps: CreateChatLoopDeps): ChatLoop {
639
639
  * collapsing them sent a client with a configured target to the wrong fix.
640
640
  */
641
641
  const nullRuntimeAdmissionReason = (): string => {
642
- const orchestrator = deps.getSettings().orchestrator;
642
+ const orchestrator = deps.getSettings().chat;
643
643
  const target = orchestrator.target?.trim() ?? "";
644
644
  const model = orchestrator.model?.trim() ?? "";
645
645
  return target.length > 0 && model.length === 0 ? "model-not-configured" : "orchestrator-not-configured";
646
646
  };
647
647
 
648
- const retrySettings = (): RetrySettings => normalizeRetrySettings(deps.getSettings().retry);
648
+ const retrySettings = (): RetrySettings => normalizeRetrySettings(deps.getSettings().chat.retry);
649
649
 
650
650
  const currentToolInvokeOptions = (): Partial<ToolInvokeOptions> => {
651
651
  const options: Partial<ToolInvokeOptions> = {};
@@ -1088,7 +1088,7 @@ export function createChatLoop(deps: CreateChatLoopDeps): ChatLoop {
1088
1088
  // 4. Preflight overflow check, before the user turn is committed.
1089
1089
  // A blocked request must not leave a dangling user entry that the
1090
1090
  // next replay would treat as an unanswered turn.
1091
- const compactionThreshold = deps.getSettings().compaction?.threshold ?? null;
1091
+ const compactionThreshold = deps.getSettings().context.compaction?.threshold ?? null;
1092
1092
  const captureTurnSnapshot = (turnId: string): ContextSnapshot =>
1093
1093
  context.captureRuntimeContextSnapshot(agentRuntime, turnId, compactionThreshold, {
1094
1094
  promptSegments: compiledPrompt
@@ -1179,7 +1179,7 @@ export function createChatLoop(deps: CreateChatLoopDeps): ChatLoop {
1179
1179
  runtimeId: agentRuntime.runtimeId,
1180
1180
  runtimeKind: agentRuntime.runtimeResolution.runtimeKind,
1181
1181
  wireModelId: agentRuntime.wireModelId,
1182
- autonomy: deps.getSettings().autonomy,
1182
+ autonomy: deps.getSettings().safety.autonomy,
1183
1183
  compiledPromptHash: promptHash,
1184
1184
  staticCompositionHash: promptHash,
1185
1185
  promptSignature: promptHash,
@@ -384,7 +384,7 @@ export interface ChatPanel extends Component {
384
384
 
385
385
  export interface ChatPanelOptions {
386
386
  /**
387
- * Resolves the user-visible key string for the `clio.tool.expand`
387
+ * Resolves the user-visible key string for the `clio-coder.tool.expand`
388
388
  * action, which folds and unfolds the newest tool call or worker block.
389
389
  * Returning a non-empty string surfaces a dim ` (<key>)` hint on the one
390
390
  * surface the key would act on: the latest finished collapsed tool subline,
@@ -1,4 +1,12 @@
1
- import { Editor, stripTerminalSequences, type TUI, truncateToWidth, visibleWidth } from "../engine/tui.js";
1
+ import {
2
+ Editor,
3
+ getKeybindings,
4
+ stripTerminalSequences,
5
+ type TUI,
6
+ truncateToWidth,
7
+ visibleWidth,
8
+ } from "../engine/tui.js";
9
+ import { guardPastedEditorOperator } from "./editor-bash.js";
2
10
  import { fitHintEntries } from "./overlay-frame.js";
3
11
  import { type PermissionInspectionHint, permissionHintEntries } from "./permission-hint.js";
4
12
  import type { ClioTheme } from "./theme/index.js";
@@ -154,7 +162,50 @@ function findBottomRail(lines: readonly string[], width: number): number {
154
162
  return -1;
155
163
  }
156
164
 
165
+ function cursorEndsDirectoryPath(editor: Editor): boolean {
166
+ const cursor = editor.getCursor();
167
+ const line = editor.getLines()[cursor.line] ?? "";
168
+ return line.slice(0, cursor.col).endsWith("/");
169
+ }
170
+
171
+ function remapPastedBangOffsets(
172
+ before: string,
173
+ after: string,
174
+ offsets: ReadonlySet<number>,
175
+ markInsertedAsPasted: boolean,
176
+ ): Set<number> {
177
+ let prefix = 0;
178
+ while (prefix < before.length && prefix < after.length && before[prefix] === after[prefix]) prefix += 1;
179
+ let beforeEnd = before.length;
180
+ let afterEnd = after.length;
181
+ while (beforeEnd > prefix && afterEnd > prefix && before[beforeEnd - 1] === after[afterEnd - 1]) {
182
+ beforeEnd -= 1;
183
+ afterEnd -= 1;
184
+ }
185
+
186
+ const next = new Set<number>();
187
+ const shift = afterEnd - prefix - (beforeEnd - prefix);
188
+ for (const offset of offsets) {
189
+ if (offset < prefix) next.add(offset);
190
+ else if (offset >= beforeEnd) next.add(offset + shift);
191
+ }
192
+ if (markInsertedAsPasted) {
193
+ for (let offset = prefix; offset < afterEnd; offset += 1) {
194
+ if (after[offset] === "!") next.add(offset);
195
+ }
196
+ }
197
+ return next;
198
+ }
199
+
200
+ function startsWithPastedOperator(text: string, pastedBangOffsets: ReadonlySet<number>): boolean {
201
+ const first = text.search(/\S/u);
202
+ return first >= 0 && text[first] === "!" && pastedBangOffsets.has(first);
203
+ }
204
+
157
205
  export class ClioEditor extends Editor {
206
+ private pastedBangOffsets = new Set<number>();
207
+ private bracketedPasteActive = false;
208
+
158
209
  constructor(
159
210
  tui: TUI,
160
211
  private readonly chrome: EditorChrome,
@@ -213,6 +264,15 @@ export class ClioEditor extends Editor {
213
264
  return lines;
214
265
  }
215
266
 
267
+ /**
268
+ * Preserve paste provenance for every immediate-send binding, including the
269
+ * alternate paths that invoke the submit controller without an Editor Enter.
270
+ */
271
+ getTextForSubmit(): string {
272
+ const text = this.getExpandedText();
273
+ return startsWithPastedOperator(this.getText(), this.pastedBangOffsets) ? guardPastedEditorOperator(text) : text;
274
+ }
275
+
216
276
  /**
217
277
  * pi-tui's bracketed-paste handling inserts pasted text (including a
218
278
  * trailing newline the paste carried) without submitting: a pasted
@@ -222,8 +282,46 @@ export class ClioEditor extends Editor {
222
282
  * through the same handler the typed-Enter path uses.
223
283
  */
224
284
  override handleInput(data: string): void {
285
+ const openedPaste = data.includes("\x1b[200~");
225
286
  const closedPaste = data.includes("\x1b[201~");
287
+ const pasteMutation = this.bracketedPasteActive || openedPaste;
288
+ const textBeforeInput = this.getText();
289
+ const keybindings = getKeybindings();
290
+ // Pi expands and trims the buffer immediately before onSubmit. Envelope a
291
+ // pasted bang draft for that synchronous handoff so the Bash parser can
292
+ // distinguish it from a typed operator; the submit controller unwraps it
293
+ // before sending the literal prompt onward.
294
+ if (
295
+ startsWithPastedOperator(textBeforeInput, this.pastedBangOffsets) &&
296
+ keybindings.matches(data, "tui.input.submit")
297
+ ) {
298
+ const pastedText = this.getTextForSubmit();
299
+ this.pastedBangOffsets.clear();
300
+ this.bracketedPasteActive = false;
301
+ super.setText(pastedText);
302
+ super.handleInput(data);
303
+ return;
304
+ }
305
+ const completingDirectory =
306
+ this.isShowingAutocomplete() &&
307
+ (keybindings.matches(data, "tui.input.tab") || keybindings.matches(data, "tui.select.confirm"));
308
+ const textBeforeCompletion = completingDirectory ? this.getText() : "";
226
309
  super.handleInput(data);
310
+ if (completingDirectory && this.getText() !== textBeforeCompletion && cursorEndsDirectoryPath(this)) {
311
+ // Directory rows are submenus on the same provider. Re-open immediately
312
+ // after acceptance so ↑/↓ continues in the child tree without requiring
313
+ // a second Tab. Pi's provider request remains the only completion path.
314
+ super.handleInput("\t");
315
+ }
316
+ const textAfterInput = this.getText();
317
+ this.pastedBangOffsets = remapPastedBangOffsets(
318
+ textBeforeInput,
319
+ textAfterInput,
320
+ this.pastedBangOffsets,
321
+ pasteMutation,
322
+ );
323
+ if (openedPaste) this.bracketedPasteActive = true;
324
+ if (closedPaste) this.bracketedPasteActive = false;
227
325
  if (!closedPaste) return;
228
326
  const text = this.getText();
229
327
  if (!text.endsWith("\n")) return;
@@ -232,4 +330,10 @@ export class ClioEditor extends Editor {
232
330
  this.setText("");
233
331
  this.onSubmit?.(command);
234
332
  }
333
+
334
+ override setText(text: string): void {
335
+ this.pastedBangOffsets.clear();
336
+ this.bracketedPasteActive = false;
337
+ super.setText(text);
338
+ }
235
339
  }
@@ -6,6 +6,7 @@ import {
6
6
  type ContextActivityStatus,
7
7
  } from "../core/bus-events.js";
8
8
  import type { SafeEventBus } from "../core/event-bus.js";
9
+ import { wrapTextWithAnsi } from "../engine/tui.js";
9
10
  import { type ClioTheme, clioTheme, formatCompactMs, frame, GLYPH, padAnsi, spinnerFrame } from "./theme/index.js";
10
11
 
11
12
  export interface ContextActivitySnapshot {
@@ -152,17 +153,18 @@ export function formatContextActivityIslandLines(
152
153
  const percent = `${Math.round(activityProgress(activity) * 100)}%`.padStart(4);
153
154
  const progressLine = `${progressBar(theme, activity, barWidth)} ${theme.fg("dim", percent)}`;
154
155
  const message = theme.fg(activity.status === "failed" ? "error" : "muted", activity.message);
155
- // Every row here can outrun a narrow island: at 40 columns the trail stopped
156
- // at "sta" and the message at "refreshed pr", each reading as the whole
157
- // value. padAnsi's default marker is empty, so the marker is passed
158
- // explicitly. The progress bar is sized to fit and never cuts.
156
+ // The trail is compact navigation chrome and marks its cut. The message and
157
+ // detail are the only explanation of this operation, so they wrap in full.
158
+ // The progress bar is sized to fit and never cuts.
159
159
  const body = [
160
160
  padAnsi(topLine, bodyWidth, GLYPH.ellipsis),
161
161
  padAnsi(progressLine, bodyWidth),
162
162
  phaseTrail(theme, activity, bodyWidth),
163
- padAnsi(message, bodyWidth, GLYPH.ellipsis),
163
+ ...wrapTextWithAnsi(message, bodyWidth).map((line) => padAnsi(line, bodyWidth)),
164
164
  ];
165
- if (activity.detail) body.push(padAnsi(theme.fg("dim", activity.detail), bodyWidth, GLYPH.ellipsis));
165
+ if (activity.detail) {
166
+ body.push(...wrapTextWithAnsi(theme.fg("dim", activity.detail), bodyWidth).map((line) => padAnsi(line, bodyWidth)));
167
+ }
166
168
  return frame(theme, "Context", body, width);
167
169
  }
168
170
 
@@ -23,7 +23,7 @@ export const CONTEXT_CATEGORY_TOKEN: Readonly<Record<ContextLedgerCategory, Clio
23
23
  streaming: "accent",
24
24
  };
25
25
 
26
- export function contextCategoryGlyph(category: ContextLedgerCategory): string {
26
+ function contextCategoryGlyph(category: ContextLedgerCategory): string {
27
27
  const filled = visibleSingle(GLYPH.contextFull) ? GLYPH.contextFull : GLYPH.barFull;
28
28
  const free = visibleSingle(GLYPH.contextFree) ? GLYPH.contextFree : GLYPH.barEmpty;
29
29
  // The autocompact reserve is held-back headroom, not consumed context; it
@@ -187,7 +187,7 @@ export type WorkerContextSeverity = "healthy" | "warn" | "critical";
187
187
  export const WORKER_CONTEXT_WARN_PCT = 80;
188
188
  export const WORKER_CONTEXT_CRITICAL_PCT = 95;
189
189
 
190
- export function workerContextSeverity(pct: number): WorkerContextSeverity {
190
+ function workerContextSeverity(pct: number): WorkerContextSeverity {
191
191
  if (pct >= WORKER_CONTEXT_CRITICAL_PCT) return "critical";
192
192
  if (pct >= WORKER_CONTEXT_WARN_PCT) return "warn";
193
193
  return "healthy";
@@ -211,10 +211,7 @@ export interface WorkerContextView {
211
211
  * usage has been observed yet. The percentage is capped at 100: a provider
212
212
  * report past the window is a full window, not a >100% claim.
213
213
  */
214
- export function workerContextView(
215
- usedTokens: number,
216
- contextWindow: number | undefined | null,
217
- ): WorkerContextView | null {
214
+ function workerContextView(usedTokens: number, contextWindow: number | undefined | null): WorkerContextView | null {
218
215
  if (contextWindow === undefined || contextWindow === null || contextWindow <= 0) return null;
219
216
  if (!Number.isFinite(usedTokens) || usedTokens <= 0) return null;
220
217
  const pct = Math.min(100, Math.round((usedTokens / contextWindow) * 100));
@@ -166,7 +166,7 @@ function renderWorkingSetLines(view: WorkingSetView, config: WorkingSetConfigVie
166
166
  ];
167
167
  }
168
168
 
169
- export function renderContextLedgerLines(
169
+ function renderContextLedgerLines(
170
170
  ledger: ContextLedger,
171
171
  contentWidth: number,
172
172
  workingSet?: WorkingSetView | null,
@@ -330,6 +330,7 @@ export function openContextOverlay(
330
330
  const handle = showClioOverlayFrame(tui, text, {
331
331
  anchor: "center",
332
332
  width: CONTEXT_OVERLAY_WIDTH,
333
+ markerId: "context-view",
333
334
  title: "Context Window",
334
335
  footerHint: buildHint([]),
335
336
  });
@@ -271,7 +271,7 @@ function modelBlock(row: CostRow): string[] {
271
271
  ]);
272
272
  }
273
273
 
274
- export function formatCostOverlayBodyLines(
274
+ function formatCostOverlayBodyLines(
275
275
  totalCost: CostAggregate,
276
276
  totalTokens: number,
277
277
  rows: ReadonlyArray<CostRow>,
@@ -374,6 +374,8 @@ export function openCostOverlay(
374
374
  const handle = showClioOverlayFrame(tui, body, {
375
375
  anchor: "center",
376
376
  width: COST_OVERLAY_WIDTH,
377
+ // Not derived from the title: that one carries the session id.
378
+ markerId: "cost",
377
379
  title: sessionId && sessionId.length > 0 ? `Session usage (${sessionId})` : "Session usage",
378
380
  footerHint: buildHint([]),
379
381
  });
@@ -14,6 +14,7 @@
14
14
  */
15
15
 
16
16
  import { truncateToWidth, wrapTextWithAnsi } from "../engine/tui.js";
17
+ import { COUNCIL_SYNTHESIS_LABEL } from "./council.js";
17
18
  import {
18
19
  type ClioTheme,
19
20
  type ClioToken,
@@ -38,9 +39,6 @@ export const COUNCIL_COLUMN_GUTTER = 2;
38
39
  /** Rows of a member's bounded answer tail a column shows before it defers to `/view`. */
39
40
  export const COUNCIL_ANSWER_ROWS = 4;
40
41
 
41
- /** The label the coordinator gives the synthesis run of every council group. */
42
- export const COUNCIL_SYNTHESIS_LABEL = "synthesis";
43
-
44
42
  /** One council run as the board draws it: the roster facts plus the run's presentation. */
45
43
  export interface CouncilMemberView {
46
44
  runId: string;
@@ -80,7 +78,7 @@ export type CouncilLayout = { mode: "grid"; columnWidth: number } | { mode: "sta
80
78
  * moment one column would fall under {@link COUNCIL_COLUMN_MIN_WIDTH}: a grid
81
79
  * where only some columns are readable is worse than no grid at all.
82
80
  */
83
- export function councilGridLayout(memberCount: number, contentWidth: number): CouncilLayout {
81
+ function councilGridLayout(memberCount: number, contentWidth: number): CouncilLayout {
84
82
  const count = Math.max(1, memberCount);
85
83
  const usable = contentWidth - COUNCIL_COLUMN_GUTTER * (count - 1);
86
84
  const columnWidth = Math.floor(usable / count);
@@ -126,7 +124,7 @@ function answerRows(theme: ClioTheme, member: CouncilMemberView, width: number,
126
124
  * answer. Every line is clipped to the column so a long model id or a long
127
125
  * answer line can never push a neighbouring column out of position.
128
126
  */
129
- export function councilMemberLines(
127
+ function councilMemberLines(
130
128
  theme: ClioTheme,
131
129
  member: CouncilMemberView,
132
130
  width: number,
@@ -26,6 +26,17 @@ export type CouncilSynthesisMode = (typeof COUNCIL_SYNTHESIS_MODES)[number];
26
26
  /** Rounds the dispatch tool admits. The command enforces the same bound where the operator typed it. */
27
27
  export const COUNCIL_MAX_ROUNDS = 3;
28
28
 
29
+ /**
30
+ * The label the coordinator gives the synthesis run of every council group.
31
+ *
32
+ * It lives here rather than beside the board layout that draws it because it is
33
+ * council vocabulary, not presentation: the share path compares against it to
34
+ * decide whether a run seals the whole council or one voice, and that path must
35
+ * stay off the render module graph. See the header of
36
+ * `src/interactive/slash-commands.ts` for the closure budget that depends on it.
37
+ */
38
+ export const COUNCIL_SYNTHESIS_LABEL = "synthesis";
39
+
29
40
  export function isCouncilSynthesisMode(value: string): value is CouncilSynthesisMode {
30
41
  return COUNCIL_SYNTHESIS_MODES.some((mode) => mode === value);
31
42
  }