@iowarp/clio-coder 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (581) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +116 -16
  3. package/dist/{acp-G5WJBNCT.js → acp-ZILU3AUO.js} +14 -14
  4. package/dist/{agents-FMV2Q5G4.js → agents-HYWGBGQR.js} +40 -29
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-3IDSJEIK.js → auth-N3QT7CBO.js} +21 -19
  7. package/dist/{builtins-XCZWXSC7.js → builtins-UJLMOVOV.js} +6 -6
  8. package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
  9. package/dist/{chunk-3BT2XMV4.js → chunk-2NM363SV.js} +50 -57
  10. package/dist/{chunk-J4W7KFM7.js → chunk-2VG7KLYV.js} +24 -279
  11. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  12. package/dist/{chunk-K5C3NCBD.js → chunk-3I5NY75V.js} +5 -5
  13. package/dist/{chunk-VAZSBTKF.js → chunk-3QSOM6PA.js} +2 -2
  14. package/dist/{chunk-TZ3SGWZZ.js → chunk-5QIAJV2D.js} +2 -2
  15. package/dist/{chunk-OQBA45DZ.js → chunk-5YHDIDBP.js} +2 -2
  16. package/dist/{chunk-NHLBIGRH.js → chunk-6CCS4G3W.js} +40 -17
  17. package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
  18. package/dist/{chunk-LDQ2ZF2M.js → chunk-6FN3E6KX.js} +5 -5
  19. package/dist/{chunk-X3YGUTOB.js → chunk-6HMJX2VU.js} +59 -59
  20. package/dist/{chunk-VEO4AP2K.js → chunk-6I5ILFOF.js} +3 -2
  21. package/dist/{chunk-B7OBL7PK.js → chunk-6NJQITNH.js} +18 -11
  22. package/dist/{chunk-IQ7KR472.js → chunk-6VC4OV3Z.js} +6 -3
  23. package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
  24. package/dist/{chunk-AB44T6BB.js → chunk-74YWRRU5.js} +8 -7
  25. package/dist/{chunk-SJ5ZKQ4S.js → chunk-7EPLI7VL.js} +2 -2
  26. package/dist/{chunk-HWHKMHUA.js → chunk-7OBGU7UB.js} +3 -3
  27. package/dist/{chunk-2OQE55CK.js → chunk-7PWAODYW.js} +2 -2
  28. package/dist/{chunk-IBEBSCYA.js → chunk-7RY5VZPH.js} +42 -33
  29. package/dist/{chunk-LQ3DZAMX.js → chunk-ABLSQ6JX.js} +2 -2
  30. package/dist/{chunk-QLFS5GO2.js → chunk-AFKWHWXF.js} +12 -22
  31. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  32. package/dist/{chunk-O6TL7WWY.js → chunk-AKB4GYDL.js} +4 -4
  33. package/dist/chunk-AP73CFDC.js +308 -0
  34. package/dist/{chunk-JDG2WCRO.js → chunk-BBTJOK6Y.js} +5 -5
  35. package/dist/{chunk-SP2RXXYO.js → chunk-BDPT6GTK.js} +10 -10
  36. package/dist/{chunk-NQQH3YT7.js → chunk-BJGUKIG4.js} +3 -3
  37. package/dist/{chunk-O4XIVISU.js → chunk-BTGG6BG2.js} +79 -38
  38. package/dist/chunk-BTK3SSSK.js +67 -0
  39. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  40. package/dist/chunk-BWW4HLO4.js +301 -0
  41. package/dist/{chunk-I5VEOC6I.js → chunk-C537JADH.js} +10 -10
  42. package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
  43. package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
  44. package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
  45. package/dist/chunk-D7E7WCDF.js +27 -0
  46. package/dist/{chunk-WZR7K7ZX.js → chunk-E67WX76H.js} +6 -6
  47. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  48. package/dist/chunk-EIMVLWB3.js +1842 -0
  49. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  50. package/dist/{chunk-MLKNTWH2.js → chunk-FYUN5KZ3.js} +21 -21
  51. package/dist/{chunk-YJX4SHTD.js → chunk-GIZNH63R.js} +1 -1
  52. package/dist/{chunk-X75E3D2N.js → chunk-GPPB3JBE.js} +18 -16
  53. package/dist/{chunk-GR5G2PVF.js → chunk-GVQJ5CCZ.js} +15 -10
  54. package/dist/chunk-HJWWJ6IL.js +184 -0
  55. package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
  56. package/dist/{chunk-VYMXRQI6.js → chunk-HUAS7ITX.js} +89 -93
  57. package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
  58. package/dist/{chunk-DYJP44XW.js → chunk-IG7BCQBA.js} +1 -1
  59. package/dist/{chunk-32KWKNSF.js → chunk-IXJT6DCX.js} +3 -3
  60. package/dist/{chunk-C2LTL2W6.js → chunk-J4HBWF6Y.js} +360 -172
  61. package/dist/chunk-J5LZHVIT.js +284 -0
  62. package/dist/{chunk-QLL7ILRG.js → chunk-JA5QWE4Z.js} +510 -202
  63. package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
  64. package/dist/{chunk-36EJLSQQ.js → chunk-JZWT5J3Y.js} +4 -4
  65. package/dist/{chunk-HZHHCK24.js → chunk-K6BF4U2H.js} +476 -322
  66. package/dist/{chunk-Z2RR6MAK.js → chunk-MA3H6DM5.js} +6 -6
  67. package/dist/{chunk-CODPRO7Q.js → chunk-MOPSG2X7.js} +6 -6
  68. package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
  69. package/dist/{chunk-YDFRH54B.js → chunk-N5UK64DP.js} +4 -4
  70. package/dist/chunk-NDDGJUXD.js +81 -0
  71. package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
  72. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  73. package/dist/{chunk-W5VSYASO.js → chunk-OJTRZGR3.js} +46 -87
  74. package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
  75. package/dist/{chunk-3URVFKWK.js → chunk-PJJ6MY27.js} +5 -5
  76. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  77. package/dist/{chunk-GKF55TAZ.js → chunk-PVAMAVBB.js} +3 -2
  78. package/dist/{chunk-6DB53AJS.js → chunk-QKIFBZKT.js} +7 -7
  79. package/dist/{chunk-HJJTYUHX.js → chunk-QMXC4JB7.js} +20 -20
  80. package/dist/chunk-QTFGO774.js +644 -0
  81. package/dist/{chunk-CY6FY24N.js → chunk-R23Z6K6I.js} +2 -2
  82. package/dist/{chunk-ULC6OTWO.js → chunk-R32CLGZ6.js} +13 -13
  83. package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
  84. package/dist/{chunk-F4CKPOEQ.js → chunk-SCYB3HA4.js} +72 -26
  85. package/dist/{chunk-LY4S7GJC.js → chunk-SINK3QR6.js} +18 -16
  86. package/dist/{chunk-U77AMWDL.js → chunk-TD3PGPQA.js} +43 -22
  87. package/dist/{chunk-QBJA7R7N.js → chunk-THYWACCR.js} +2 -2
  88. package/dist/{chunk-QREDIESB.js → chunk-TVH4ONAM.js} +14 -8
  89. package/dist/chunk-U2WB7TZS.js +271 -0
  90. package/dist/{chunk-KFZI4NIL.js → chunk-UAPGZHYC.js} +145 -31
  91. package/dist/{chunk-DQITNCXG.js → chunk-UEDMSP56.js} +29 -14
  92. package/dist/{chunk-3XML7CDN.js → chunk-UXN6JT4W.js} +2 -2
  93. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  94. package/dist/{chunk-BPKCPIL7.js → chunk-VEGN6WIQ.js} +2 -2
  95. package/dist/chunk-VKFQTNDV.js +66 -0
  96. package/dist/{chunk-7MCTRUCE.js → chunk-VKRH2TCS.js} +2 -2
  97. package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
  98. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  99. package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
  100. package/dist/{chunk-SUCTJL45.js → chunk-WR6U3OVP.js} +3 -3
  101. package/dist/{chunk-BUMFYQFY.js → chunk-XKA2ICR3.js} +124 -113
  102. package/dist/{chunk-UXMFQ54G.js → chunk-Y45G3AXC.js} +39 -39
  103. package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
  104. package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
  105. package/dist/{chunk-V5DHCITQ.js → chunk-ZAZB4JMW.js} +23 -12
  106. package/dist/{chunk-Z4TXYIEG.js → chunk-ZJLUDYFY.js} +9 -9
  107. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  108. package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
  109. package/dist/cli/index.js +36 -36
  110. package/dist/{clio-2JXHBBY5.js → clio-IT3G3VQH.js} +12 -13
  111. package/dist/{code-nav-3YYRMYNF.js → code-nav-RK6S7F6E.js} +5 -5
  112. package/dist/codewiki/build-worker.js +1 -1
  113. package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
  114. package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
  115. package/dist/{config-QZPCMYSO.js → config-3QZRWZJF.js} +53 -49
  116. package/dist/{configure-TEGEBYCA.js → configure-FL7Y3KJF.js} +25 -22
  117. package/dist/{context-E6H5RNMC.js → context-5HE7ODYK.js} +47 -43
  118. package/dist/{context-AV7OEZ4D.js → context-KYQFRVDC.js} +11 -11
  119. package/dist/{context-GSXUE4CT.js → context-XNHL75JV.js} +32 -19
  120. package/dist/{context-clear-SHIBYK6T.js → context-clear-N545L53A.js} +47 -43
  121. package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-QHKXSV2F.js} +10 -9
  122. package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-RGIE5PCT.js} +56 -47
  123. package/dist/{docs-23KQS3XK.js → docs-5NAF6AU7.js} +5 -11
  124. package/dist/doctor-ZGPEGHIP.js +772 -0
  125. package/dist/{eval-TFBYQH4H.js → eval-GXLL44RD.js} +63 -45
  126. package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-HBWSWQOK.js} +7 -8
  127. package/dist/{evidence-ERGESKGN.js → evidence-HWLBRH3Q.js} +44 -40
  128. package/dist/{evolve-VDXTSYCJ.js → evolve-FTZBMNVW.js} +43 -39
  129. package/dist/{extensions-7BGBHN57.js → extensions-VHRBEID7.js} +4 -4
  130. package/dist/{fleet-2RRVDF2V.js → fleet-CKZHJWZJ.js} +86 -73
  131. package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EXDXBMV6.js} +10 -9
  132. package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-OTHB6KRL.js} +5 -5
  133. package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-YTEZUCUT.js} +13 -11
  134. package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-SS6YMDCK.js} +44 -41
  135. package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-PBY4VYOM.js} +5 -9
  136. package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-KMEM5L3S.js} +16 -13
  137. package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-QD5M7E7Q.js} +42 -39
  138. package/dist/{fleet-view-ZCON35AG.js → fleet-view-WAMJYNDT.js} +44 -52
  139. package/dist/{init-DN2WWLFE.js → init-5XQRBOFV.js} +63 -58
  140. package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
  141. package/dist/{interop-OZBKXAYL.js → interop-34TVO25M.js} +13 -11
  142. package/dist/{library-YWZG7IMW.js → library-3QY6KF57.js} +17 -14
  143. package/dist/{memory-I4C4HMLW.js → memory-L4UTIIIW.js} +45 -41
  144. package/dist/{models-CEYXJBO6.js → models-ZVX3QOWE.js} +39 -31
  145. package/dist/{monitor-NZ6GCI3P.js → monitor-CEKVSYTS.js} +50 -46
  146. package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-77BAP6BC.js} +1807 -1039
  147. package/dist/{panes-KY6W3V2E.js → panes-7STHOAUJ.js} +4 -4
  148. package/dist/{panes-HMABYVO4.js → panes-SHAUIRXY.js} +10 -8
  149. package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
  150. package/dist/{reset-DQ6FGCSH.js → reset-EOLM7GVE.js} +7 -8
  151. package/dist/{resources-BB3MVJMD.js → resources-74GKTLSF.js} +17 -13
  152. package/dist/{run-H2GQDUER.js → run-HBAUJNNZ.js} +86 -76
  153. package/dist/{share-GTJN6A5O.js → share-G3APVLVP.js} +17 -14
  154. package/dist/{skills-L55TEW6R.js → skills-35HHUKCR.js} +19 -16
  155. package/dist/{skills-eval-XVXPH2JI.js → skills-eval-QN4HSHDC.js} +55 -57
  156. package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-J357J34F.js} +15 -12
  157. package/dist/{slash-commands-ZSGASKJC.js → slash-commands-JZZCQA32.js} +31 -29
  158. package/dist/{steer-RZGSCY4R.js → steer-XAVHJM22.js} +3 -3
  159. package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
  160. package/dist/{targets-NCPZ644J.js → targets-DSM6CY3M.js} +59 -53
  161. package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-JOPFUVEM.js} +14 -9
  162. package/dist/{tools-DAF3DI3C.js → tools-MKNWVPBH.js} +10 -8
  163. package/dist/{trace-FYVW2MQA.js → trace-ECQ7TIYZ.js} +48 -3
  164. package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
  165. package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
  166. package/dist/{upgrade-3XPP6OQL.js → upgrade-H7TOM7YL.js} +35 -62
  167. package/dist/{usage-3NLHGTU2.js → usage-X52N3IDJ.js} +51 -48
  168. package/dist/{verifiers-SSQONKRT.js → verifiers-EJTVVSMA.js} +10 -9
  169. package/dist/{verify-3U6J7FZI.js → verify-YJL6XET2.js} +9 -8
  170. package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPIFL3LL.js} +1 -2
  171. package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-4NDZTQ4B.js} +66 -63
  172. package/dist/{with-panes-MKB46MPQ.js → with-panes-OBOBFIIR.js} +62 -26
  173. package/dist/worker/entry.js +57 -52
  174. package/docs/acp.md +1 -1
  175. package/docs/built-in-agents.md +40 -32
  176. package/docs/commands-and-modes.md +9 -3
  177. package/docs/config-knobs-audit.md +3 -0
  178. package/docs/configuration-and-targets.md +105 -164
  179. package/docs/environment-variables.md +2 -1
  180. package/docs/exit-codes-and-output.md +2 -0
  181. package/docs/fleet-demo-runbook.md +6 -3
  182. package/docs/fleet-dispatch.md +8 -6
  183. package/docs/installation-and-lifecycle.md +1 -1
  184. package/docs/release-cut-checklist.md +164 -177
  185. package/docs/trace-store.md +15 -10
  186. package/docs/troubleshooting.md +1 -1
  187. package/evals/README.md +5 -0
  188. package/evals/behavioral-corpus-grader.mjs +103 -0
  189. package/evals/behavioral-machinery-baseline.json +2276 -0
  190. package/evals/behavioral-machinery-driver.ts +250 -0
  191. package/evals/behavioral-machinery-support.ts +253 -0
  192. package/evals/behavioral-machinery.yaml +614 -0
  193. package/evals/behavioral-model-negative-control.yaml +68 -0
  194. package/evals/behavioral-model.yaml +216 -0
  195. package/evals/fixtures/behavioral-facts.txt +3 -0
  196. package/evals/fixtures/behavioral-main.ts +7 -0
  197. package/evals/fixtures/decoy/note.txt +2 -0
  198. package/evals/fixtures/private/credentials.txt +1 -0
  199. package/evals/tracked-metrics-baseline.yaml +229 -0
  200. package/evals/tracked-metrics-grader.mjs +129 -0
  201. package/package.json +5 -15
  202. package/skills/README.md +6 -6
  203. package/skills/coding/ast-grep/SKILL.md +8 -2
  204. package/skills/coding/coding-standards/SKILL.md +8 -2
  205. package/skills/coding/prototype/SKILL.md +8 -2
  206. package/skills/coding/tdd/SKILL.md +8 -2
  207. package/skills/context/context-handoff/SKILL.md +12 -3
  208. package/skills/context/context-handoff/evals.md +3 -3
  209. package/skills/context/context-prime/SKILL.md +8 -2
  210. package/skills/context/context-prime/evals.md +2 -2
  211. package/skills/git/file-ticket/SKILL.md +9 -4
  212. package/skills/git/file-ticket/evals.md +2 -2
  213. package/skills/git/fix-issue/SKILL.md +12 -5
  214. package/skills/git/fix-issue/evals.md +4 -4
  215. package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
  216. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  217. package/skills/git/ship/SKILL.md +9 -3
  218. package/skills/git/ship/evals.md +4 -4
  219. package/skills/git/worktree-create/SKILL.md +7 -2
  220. package/skills/git/worktree-create/evals.md +6 -6
  221. package/skills/git/worktree-merge/SKILL.md +7 -2
  222. package/skills/git/worktree-merge/evals.md +6 -6
  223. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
  224. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
  225. package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
  226. package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
  227. package/skills/meta/credentials/SKILL.md +9 -2
  228. package/skills/meta/find-skills/SKILL.md +8 -2
  229. package/skills/meta/herdr/SKILL.md +8 -2
  230. package/skills/meta/skill-craft/SKILL.md +21 -4
  231. package/skills/planning/architecture/SKILL.md +9 -3
  232. package/skills/planning/backlog/SKILL.md +8 -2
  233. package/skills/planning/prd/SKILL.md +8 -2
  234. package/skills/planning/product-intent/SKILL.md +8 -2
  235. package/skills/planning/tech-spec/SKILL.md +9 -3
  236. package/skills/registry.yaml +66 -66
  237. package/skills/research/arxiv-literature/SKILL.md +8 -2
  238. package/skills/research/experiment-protocol/SKILL.md +9 -2
  239. package/skills/research/scientific-debugging/SKILL.md +9 -2
  240. package/skills/research/scientific-debugging/evals.md +2 -2
  241. package/skills/research/scientific-modernization/SKILL.md +9 -2
  242. package/skills/skill-marketplace.json +257 -38
  243. package/skills/workflow/cut-it/SKILL.md +10 -2
  244. package/skills/workflow/design-council/SKILL.md +11 -2
  245. package/skills/workflow/grill-me/SKILL.md +8 -2
  246. package/skills/workflow/workflow-distiller/SKILL.md +8 -2
  247. package/src/cli/acp.ts +2 -2
  248. package/src/cli/auth.ts +2 -2
  249. package/src/cli/bootstrap-generate.ts +5 -5
  250. package/src/cli/clio.ts +6 -1
  251. package/src/cli/config-inspect.ts +3 -3
  252. package/src/cli/configure-interop.ts +1 -1
  253. package/src/cli/configure.ts +27 -27
  254. package/src/cli/default-target.ts +1 -1
  255. package/src/cli/docs.ts +6 -6
  256. package/src/cli/doctor-naming.ts +323 -0
  257. package/src/cli/doctor-panes.ts +46 -14
  258. package/src/cli/doctor-toolchain.ts +29 -8
  259. package/src/cli/doctor.ts +15 -1
  260. package/src/cli/eval-inventory.ts +8 -8
  261. package/src/cli/evidence-detail.ts +1 -1
  262. package/src/cli/evidence-inventory.ts +1 -1
  263. package/src/cli/fleet-decisions.ts +1 -1
  264. package/src/cli/fleet-inspect.ts +1 -1
  265. package/src/cli/fleet-preflight.ts +1 -1
  266. package/src/cli/fleet-verify.ts +1 -1
  267. package/src/cli/fleet-view.ts +40 -23
  268. package/src/cli/fleet.ts +8 -5
  269. package/src/cli/interop-inspect.ts +2 -2
  270. package/src/cli/models.ts +3 -3
  271. package/src/cli/modes/print.ts +1 -1
  272. package/src/cli/reset.ts +1 -1
  273. package/src/cli/run.ts +11 -15
  274. package/src/cli/share.ts +1 -1
  275. package/src/cli/skills-eval.ts +11 -11
  276. package/src/cli/targets.ts +23 -24
  277. package/src/cli/trace-inspect.ts +1 -1
  278. package/src/cli/trace.ts +41 -0
  279. package/src/cli/uninstall.ts +2 -2
  280. package/src/cli/upgrade.ts +29 -34
  281. package/src/cli/usage.ts +2 -2
  282. package/src/cli/validate-model.ts +1 -1
  283. package/src/cli/verifiers-inspect.ts +1 -1
  284. package/src/cli/wiki-generate.ts +5 -5
  285. package/src/core/bash-exec.ts +1 -1
  286. package/src/core/boot-trace.ts +3 -3
  287. package/src/core/bus-trace.ts +2 -2
  288. package/src/core/compile-cache.ts +1 -1
  289. package/src/core/config.ts +1062 -886
  290. package/src/core/defaults.ts +321 -528
  291. package/src/core/domain-loader.ts +6 -4
  292. package/src/core/event-bus.ts +1 -1
  293. package/src/core/file-references.ts +78 -88
  294. package/src/core/git-commit-attribution.ts +3 -9
  295. package/src/core/guardrails.ts +24 -4
  296. package/src/core/naming-compat.ts +45 -0
  297. package/src/core/naming-events.ts +62 -0
  298. package/src/core/recent-models.ts +1 -7
  299. package/src/core/residency-protection.ts +4 -8
  300. package/src/core/resolve-config-value.ts +1 -1
  301. package/src/core/response-model-id.ts +0 -14
  302. package/src/core/session-routing.ts +84 -74
  303. package/src/core/skill-activation.ts +18 -0
  304. package/src/core/termination.ts +4 -4
  305. package/src/core/timers.ts +2 -12
  306. package/src/domains/agents/catalog.ts +2 -12
  307. package/src/domains/agents/extension.ts +3 -3
  308. package/src/domains/agents/registry.ts +7 -7
  309. package/src/domains/agents/result-contract.ts +1 -1
  310. package/src/domains/agents/spec.ts +0 -11
  311. package/src/domains/config/classify.ts +35 -47
  312. package/src/domains/config/extension.ts +5 -5
  313. package/src/domains/config/keybindings.ts +48 -47
  314. package/src/domains/config/watcher.ts +1 -1
  315. package/src/domains/context/codewiki/indexer.ts +1 -1
  316. package/src/domains/context/extension.ts +3 -3
  317. package/src/domains/context/prompt-context.ts +1 -1
  318. package/src/domains/context/wiki/assemble.ts +2 -2
  319. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  320. package/src/domains/context/working-set/replay/report.ts +1 -1
  321. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  322. package/src/domains/dispatch/active-route-planner.ts +2 -2
  323. package/src/domains/dispatch/agent-candidates.ts +1 -1
  324. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  325. package/src/domains/dispatch/agent-ledger.ts +1 -1
  326. package/src/domains/dispatch/assignment.ts +5 -5
  327. package/src/domains/dispatch/capacity-lease.ts +2 -5
  328. package/src/domains/dispatch/code-step.ts +1 -1
  329. package/src/domains/dispatch/contract.ts +2 -2
  330. package/src/domains/dispatch/extension.ts +65 -61
  331. package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
  332. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  333. package/src/domains/dispatch/fleet-run.ts +0 -7
  334. package/src/domains/dispatch/gate-decisions.ts +25 -14
  335. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  336. package/src/domains/dispatch/path-scope.ts +0 -61
  337. package/src/domains/dispatch/placement.ts +2 -2
  338. package/src/domains/dispatch/receipt-findings.ts +1 -1
  339. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  340. package/src/domains/dispatch/reservation-store.ts +0 -23
  341. package/src/domains/dispatch/route-decision.ts +1 -1
  342. package/src/domains/dispatch/route-history.ts +1 -1
  343. package/src/domains/dispatch/route-policy.ts +1 -1
  344. package/src/domains/dispatch/route-readiness.ts +0 -28
  345. package/src/domains/dispatch/run-event-journal.ts +6 -5
  346. package/src/domains/dispatch/tool-stats.ts +1 -1
  347. package/src/domains/dispatch/transport.ts +2 -19
  348. package/src/domains/dispatch/types.ts +3 -3
  349. package/src/domains/dispatch/worker-protocol.ts +2 -2
  350. package/src/domains/eval/artifacts/store.ts +5 -4
  351. package/src/domains/eval/compare/thresholds.ts +0 -8
  352. package/src/domains/eval/execution-provenance.ts +1 -1
  353. package/src/domains/eval/metrics/token-stream.ts +0 -7
  354. package/src/domains/eval/report.ts +1 -1
  355. package/src/domains/eval/runner.ts +1 -1
  356. package/src/domains/eval/runners/clio-run.ts +7 -6
  357. package/src/domains/eval/runners/external-command.ts +4 -3
  358. package/src/domains/eval/schema/artifact.ts +1 -1
  359. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  360. package/src/domains/eval/schema/behavioral.ts +7 -6
  361. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  362. package/src/domains/eval/schema/naming.ts +10 -0
  363. package/src/domains/eval/schema/suite.ts +2 -2
  364. package/src/domains/eval/schema/validate.ts +9 -5
  365. package/src/domains/eval/schema/verdict.ts +4 -2
  366. package/src/domains/eval/store.ts +12 -2
  367. package/src/domains/eval/suites/run.ts +12 -6
  368. package/src/domains/eval/types.ts +1 -1
  369. package/src/domains/eval/workspaces/git.ts +1 -1
  370. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  371. package/src/domains/evidence/build.ts +13 -5
  372. package/src/domains/interop/consent.ts +7 -7
  373. package/src/domains/interop/extension.ts +1 -1
  374. package/src/domains/lifecycle/doctor.ts +27 -21
  375. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  376. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  377. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  378. package/src/domains/lifecycle/migrations/index.ts +20 -1
  379. package/src/domains/lifecycle/naming-history.ts +153 -0
  380. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  381. package/src/domains/lifecycle/naming-resources.ts +261 -0
  382. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  383. package/src/domains/lifecycle/naming-yazi.ts +81 -0
  384. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  385. package/src/domains/memory/task-memory-handoff.ts +6 -3
  386. package/src/domains/middleware/index.ts +7 -0
  387. package/src/domains/middleware/marketplace-offer.ts +339 -0
  388. package/src/domains/middleware/runtime.ts +2 -2
  389. package/src/domains/mux/contract.ts +157 -25
  390. package/src/domains/mux/detect.ts +29 -5
  391. package/src/domains/mux/dock-controller.ts +365 -0
  392. package/src/domains/mux/extension.ts +7 -1
  393. package/src/domains/mux/index.ts +20 -0
  394. package/src/domains/mux/operations.ts +28 -0
  395. package/src/domains/mux/protocol.ts +19 -6
  396. package/src/domains/mux/socket-client.ts +167 -19
  397. package/src/domains/mux/types.ts +49 -6
  398. package/src/domains/mux/yazi/event-stream.ts +6 -4
  399. package/src/domains/mux/yazi/profile.ts +1 -1
  400. package/src/domains/mux/yazi/session.ts +26 -3
  401. package/src/domains/observability/extension.ts +1 -1
  402. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  403. package/src/domains/observability/projection.ts +1 -1
  404. package/src/domains/observability/trace-store.ts +22 -12
  405. package/src/domains/prompts/compiler.ts +2 -2
  406. package/src/domains/prompts/extension.ts +3 -3
  407. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
  408. package/src/domains/prompts/fragments/operating/skills.md +25 -18
  409. package/src/domains/providers/extension.ts +5 -5
  410. package/src/domains/providers/knowledge-base-path.ts +1 -1
  411. package/src/domains/providers/model-runtime-capabilities.ts +14 -2
  412. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  413. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
  414. package/src/domains/providers/plugins.ts +1 -1
  415. package/src/domains/providers/resolver.ts +1 -1
  416. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  417. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  418. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  419. package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
  420. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  421. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  422. package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
  423. package/src/domains/providers/types/knowledge-base.ts +13 -0
  424. package/src/domains/providers/types/local-model-quirks.ts +2 -2
  425. package/src/domains/providers/types/target-descriptor.ts +3 -3
  426. package/src/domains/resources/extension.ts +1 -1
  427. package/src/domains/resources/library.ts +6 -6
  428. package/src/domains/resources/prompts/loader.ts +1 -1
  429. package/src/domains/resources/skills/content-hash.ts +7 -6
  430. package/src/domains/resources/skills/evals.ts +1 -1
  431. package/src/domains/resources/skills/install.ts +36 -12
  432. package/src/domains/resources/skills/loader.ts +39 -13
  433. package/src/domains/resources/skills/marketplace.ts +21 -2
  434. package/src/domains/resources/skills/promotion.ts +214 -0
  435. package/src/domains/safety/audit.ts +2 -2
  436. package/src/domains/safety/finish-contract.ts +2 -1
  437. package/src/domains/safety/run-effects.ts +1 -1
  438. package/src/domains/scheduling/extension.ts +4 -4
  439. package/src/domains/session/archive-readers.ts +9 -1
  440. package/src/domains/session/compaction/branch-summary.ts +4 -0
  441. package/src/domains/session/compaction/compact.ts +1 -1
  442. package/src/domains/session/compaction/tokens.ts +4 -0
  443. package/src/domains/session/context-accounting.ts +1 -1
  444. package/src/domains/session/decision-board.ts +1 -1
  445. package/src/domains/session/extension.ts +1 -1
  446. package/src/domains/session/handoff.ts +2 -2
  447. package/src/domains/session/prompt-manifest.ts +0 -5
  448. package/src/domains/session/protected-artifact-journal.ts +12 -6
  449. package/src/domains/session/retry.ts +1 -1
  450. package/src/domains/share/archive.ts +85 -36
  451. package/src/domains/toolchain/install.ts +1 -1
  452. package/src/engine/acp/adapter.ts +3 -3
  453. package/src/engine/acp/event-mapper.ts +3 -3
  454. package/src/engine/acp/server.ts +27 -26
  455. package/src/engine/acp/tool-mediator.ts +2 -2
  456. package/src/engine/acp/types.ts +1 -1
  457. package/src/engine/alcf-oauth.ts +5 -5
  458. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  459. package/src/engine/api-registry.ts +1 -1
  460. package/src/engine/apis/llamacpp-residency.ts +1 -19
  461. package/src/engine/apis/lmstudio.ts +1 -6
  462. package/src/engine/apis/ollama-native.ts +3 -3
  463. package/src/engine/apis/openai-completions.ts +2 -2
  464. package/src/engine/apis/residency.ts +3 -9
  465. package/src/engine/claude/sdk-module.ts +1 -12
  466. package/src/engine/claude/sdk-runtime.ts +6 -6
  467. package/src/engine/claude/subprocess-runtime.ts +1 -1
  468. package/src/engine/claude/tool-safety.ts +4 -4
  469. package/src/engine/loop-guard.ts +0 -5
  470. package/src/engine/session.ts +14 -7
  471. package/src/engine/tui-primitives.ts +1 -1
  472. package/src/engine/worker-events.ts +6 -6
  473. package/src/engine/worker-runtime.ts +14 -13
  474. package/src/entry/orchestrator.ts +107 -88
  475. package/src/interactive/application-controller.ts +21 -21
  476. package/src/interactive/bus-notices.ts +2 -2
  477. package/src/interactive/chat-loop.ts +8 -8
  478. package/src/interactive/chat-panel.ts +1 -1
  479. package/src/interactive/clio-editor.ts +105 -1
  480. package/src/interactive/context-activity.ts +8 -6
  481. package/src/interactive/context-meter.ts +3 -6
  482. package/src/interactive/context-overlay.ts +1 -1
  483. package/src/interactive/cost-overlay.ts +1 -1
  484. package/src/interactive/council-grid.ts +2 -2
  485. package/src/interactive/dispatch-board.ts +30 -33
  486. package/src/interactive/editor-bash.ts +21 -0
  487. package/src/interactive/editor-steer.ts +9 -4
  488. package/src/interactive/editor-submit.ts +24 -18
  489. package/src/interactive/external-editor.ts +1 -1
  490. package/src/interactive/file-reference-completion.ts +360 -0
  491. package/src/interactive/footer/dashboard.ts +15 -17
  492. package/src/interactive/footer/notifications.ts +14 -8
  493. package/src/interactive/footer/widgets.ts +2 -44
  494. package/src/interactive/interactive-application.ts +79 -59
  495. package/src/interactive/interactive-event-projection.ts +1 -1
  496. package/src/interactive/interactive-input-runtime.ts +2 -2
  497. package/src/interactive/interactive-presentation.ts +21 -16
  498. package/src/interactive/interactive-shell.ts +2 -2
  499. package/src/interactive/interactive-slash-runtime.ts +63 -17
  500. package/src/interactive/interactive-subscriptions.ts +1 -1
  501. package/src/interactive/interactive-tickers.ts +1 -1
  502. package/src/interactive/keybinding-manager.ts +4 -4
  503. package/src/interactive/layout.ts +1 -1
  504. package/src/interactive/memory-overlay.ts +2 -2
  505. package/src/interactive/modal-marker.ts +2 -21
  506. package/src/interactive/mutation-preview.ts +1 -1
  507. package/src/interactive/overlay-frame.ts +4 -12
  508. package/src/interactive/overlay-general-openers.ts +6 -2
  509. package/src/interactive/overlay-key-routing.ts +7 -7
  510. package/src/interactive/overlay-lifecycle.ts +1 -1
  511. package/src/interactive/overlay-model-selectors.ts +3 -3
  512. package/src/interactive/overlays/agents.ts +2 -2
  513. package/src/interactive/overlays/ask-user.ts +25 -11
  514. package/src/interactive/overlays/context-reset.ts +28 -4
  515. package/src/interactive/overlays/cwd-fallback.ts +28 -4
  516. package/src/interactive/overlays/decisions.ts +4 -2
  517. package/src/interactive/overlays/fleet-run-approval.ts +3 -3
  518. package/src/interactive/overlays/handoff-review.ts +2 -2
  519. package/src/interactive/overlays/interop.ts +1 -1
  520. package/src/interactive/overlays/library-install-confirm.ts +1 -1
  521. package/src/interactive/overlays/message-picker.ts +1 -1
  522. package/src/interactive/overlays/model-selector.ts +39 -31
  523. package/src/interactive/overlays/prompts.ts +10 -4
  524. package/src/interactive/overlays/session-selector.ts +2 -2
  525. package/src/interactive/overlays/settings.ts +339 -293
  526. package/src/interactive/overlays/side-question.ts +2 -2
  527. package/src/interactive/overlays/skills-hub.ts +8 -8
  528. package/src/interactive/overlays/tree-selector.ts +2 -2
  529. package/src/interactive/panes-runtime.ts +36 -10
  530. package/src/interactive/permission-overlay.ts +2 -2
  531. package/src/interactive/renderers/retry-status.ts +12 -4
  532. package/src/interactive/renderers/tool-execution.ts +4 -4
  533. package/src/interactive/session-transcript.ts +3 -3
  534. package/src/interactive/slash-autocomplete.ts +454 -165
  535. package/src/interactive/slash-commands.ts +279 -183
  536. package/src/interactive/slash-spec.ts +160 -17
  537. package/src/interactive/status/controller.ts +2 -2
  538. package/src/interactive/stream-pacing-policy.ts +1 -1
  539. package/src/interactive/tasks-overlay.ts +20 -13
  540. package/src/interactive/terminal-lease.ts +6 -7
  541. package/src/interactive/turn-context.ts +11 -11
  542. package/src/interactive/turn-persistence.ts +2 -2
  543. package/src/interactive/turn-prewarm.ts +2 -2
  544. package/src/interactive/turn-runtime.ts +8 -8
  545. package/src/interactive/turn-state.ts +1 -1
  546. package/src/interactive/view/artifacts.ts +12 -9
  547. package/src/interactive/view/view-overlay.ts +13 -10
  548. package/src/interactive/watch-pane.ts +38 -10
  549. package/src/interactive/welcome-dashboard.ts +15 -15
  550. package/src/interactive/worker-progress.ts +4 -4
  551. package/src/interactive/worker-receipts.ts +1 -1
  552. package/src/interactive/worker-stream.ts +1 -4
  553. package/src/interactive/yazi-bridge.ts +12 -5
  554. package/src/tools/ask-user.ts +3 -3
  555. package/src/tools/bash.ts +1 -1
  556. package/src/tools/builtin-tool-catalog.ts +1 -1
  557. package/src/tools/compete-worktrees.ts +27 -17
  558. package/src/tools/context/index.ts +15 -1
  559. package/src/tools/dispatch-admission.ts +4 -2
  560. package/src/tools/dispatch-arguments.ts +1 -1
  561. package/src/tools/dispatch-plan.ts +0 -11
  562. package/src/tools/dispatch-run-events.ts +12 -10
  563. package/src/tools/dispatch-runner.ts +11 -6
  564. package/src/tools/dispatch.ts +1 -1
  565. package/src/tools/find.ts +1 -6
  566. package/src/tools/monitor.ts +4 -4
  567. package/src/tools/observers.ts +0 -33
  568. package/src/tools/task-worktree.ts +28 -7
  569. package/src/tools/verify/authoring.ts +3 -6
  570. package/src/tools/verify/frontend.ts +1 -1
  571. package/src/tools/web-fetch.ts +1 -1
  572. package/src/worker/entry.ts +4 -3
  573. package/src/worker/protocol.ts +16 -14
  574. package/src/worker/spec-contract.ts +2 -2
  575. package/src/worker/stdin-demux.ts +2 -2
  576. package/dist/chunk-GXNLGKAB.js +0 -571
  577. package/dist/chunk-VFA6GDY5.js +0 -1625
  578. package/dist/doctor-QOA5FNY5.js +0 -313
  579. package/src/engine/apis/degraded-inference.ts +0 -95
  580. /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
  581. /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
@@ -1,5 +1,4 @@
1
1
  import type { OutputVerbosity } from "../../core/defaults.js";
2
- import { responseModelIdObservationLabel } from "../../core/response-model-id.js";
3
2
  import { ToolNames } from "../../core/tool-names.js";
4
3
  import {
5
4
  type CostAggregate,
@@ -28,7 +27,6 @@ import {
28
27
  type TurnSummary,
29
28
  } from "../status/index.js";
30
29
  import {
31
- abbreviateModelId,
32
30
  type ClioTheme,
33
31
  type ClioToken,
34
32
  clioTheme,
@@ -700,46 +698,6 @@ function stopReasonStyle(reason: TurnSummary["stopReason"]): { glyph: string; to
700
698
  return { glyph: GLYPH.ok, token: "success" };
701
699
  }
702
700
 
703
- /**
704
- * Elegant single-line readout of the most recent completed turn. This is the
705
- * footer home for the metrics that used to print faintly under each assistant
706
- * reply: stop outcome, wall time, token in/out, reasoning, and tool work. The
707
- * model is intentionally omitted because the editor rail already carries it.
708
- */
709
- export function formatLastTurn(theme: ClioTheme, summary: TurnSummary): string {
710
- const stop = stopReasonStyle(summary.stopReason);
711
- const parts: string[] = [
712
- theme.fg(stop.token, `${stop.glyph} ${formatCompactMs(summary.elapsedMs)}`),
713
- theme.fg("muted", `${GLYPH.up}${summary.inputTokens} ${GLYPH.down}${summary.outputTokens}`),
714
- ];
715
- // Zero suppresses the chip, the same rule the chat panel's turn line follows:
716
- // a turn that spent no reasoning tokens states nothing by printing `r0`.
717
- const chip = formatReasoningChip(reasoningFromSummary(summary), String);
718
- if (chip !== null) parts.push(theme.fg("reason", chip));
719
- if (summary.cacheReadTokens > 0 || summary.cacheWriteTokens > 0) {
720
- parts.push(theme.fg("dim", `cache ${summary.cacheReadTokens}/${summary.cacheWriteTokens}`));
721
- }
722
- if (summary.toolCount > 0) {
723
- const label = `${summary.toolCount} tool${summary.toolCount === 1 ? "" : "s"}`;
724
- const errors = summary.toolErrorCount > 0 ? theme.fg("error", ` ${summary.toolErrorCount}${GLYPH.error}`) : "";
725
- parts.push(`${theme.fg("muted", label)}${errors}`);
726
- }
727
- if (summary.watchdogPeak >= 2) parts.push(theme.fg("warning", "slow"));
728
- if (summary.truncated) parts.push(theme.fg("warning", "trunc"));
729
- const observation = summary.responseModelIdObservation;
730
- const observedId =
731
- observation.state === "reported"
732
- ? observation.reportedModelId
733
- : observation.state === "legacy-difference-only"
734
- ? observation.differingModelId
735
- : null;
736
- const observationText = `response model id observation ${responseModelIdObservationLabel(observation)}${
737
- observedId === null ? "" : ` ${abbreviateModelId(observedId)}`
738
- }`;
739
- parts.push(theme.fg("warning", observationText));
740
- return parts.join(theme.fg("dim", " · "));
741
- }
742
-
743
701
  /**
744
702
  * One row per live worker: the origin glyph, the sub-process glyph when Clio
745
703
  * started the run for itself, the agent's own name, the fleet node it landed
@@ -1099,7 +1057,7 @@ function outputVerbosityLabel(verbosity: OutputVerbosity): string {
1099
1057
  return verbosity === "minimal" ? "min" : verbosity === "verbose" ? "verbose" : "default";
1100
1058
  }
1101
1059
 
1102
- export function buildHarnessStatePill(
1060
+ function buildHarnessStatePill(
1103
1061
  theme: ClioTheme,
1104
1062
  status: AgentStatus,
1105
1063
  toolCounts: ToolTallySnapshot,
@@ -1175,7 +1133,7 @@ function selectChips(
1175
1133
  return surviving();
1176
1134
  }
1177
1135
 
1178
- export function buildMetricStrip(
1136
+ function buildMetricStrip(
1179
1137
  theme: ClioTheme,
1180
1138
  status: AgentStatus,
1181
1139
  throughput: TokenThroughputSnapshot | null | undefined,
@@ -53,6 +53,7 @@ import type {
53
53
  ContextClearCommandOptions,
54
54
  InitCommandOptions,
55
55
  RunIo,
56
+ SettingsAreaId,
56
57
  TaskMemorySeedCommandResult,
57
58
  } from "./slash-commands.js";
58
59
  import { processAutoPacingAllowed, resolveSmoothStreamingMode } from "./stream-pacing-policy.js";
@@ -91,20 +92,6 @@ export {
91
92
  type SlashCommandKind,
92
93
  } from "./slash-commands.js";
93
94
 
94
- export function shouldAnnouncePermissionRequest(
95
- seenRequestIds: Set<string>,
96
- requestId: string,
97
- maxSize = 2048,
98
- ): boolean {
99
- if (seenRequestIds.has(requestId)) return false;
100
- seenRequestIds.add(requestId);
101
- if (seenRequestIds.size > maxSize) {
102
- const oldest = seenRequestIds.values().next().value;
103
- if (oldest !== undefined) seenRequestIds.delete(oldest);
104
- }
105
- return true;
106
- }
107
-
108
95
  export function isLiveWorkerEscalationRequest(payload: PermissionRequestedPayload): boolean {
109
96
  if (typeof payload.requestId !== "string") return false;
110
97
  if (payload.escalation !== true) return false;
@@ -243,7 +230,7 @@ export interface InteractiveDeps {
243
230
  onForkSession?: (parentTurnId: string) => void;
244
231
  /**
245
232
  * Run `/context compact` for the current session. Resolves the compaction model
246
- * (settings.compaction.model with fallback to the orchestrator target),
233
+ * (settings.context.compaction.model with fallback to the chat target),
247
234
  * reads session entries, streams a summary via the session compaction
248
235
  * engine, and persists a compactionSummary entry.
249
236
  */
@@ -282,7 +269,7 @@ export interface InteractiveSubmitExpansion {
282
269
  pendingSkillRequests: PendingSkillRequest[];
283
270
  }
284
271
 
285
- export async function expandInteractiveSubmitAsync(
272
+ async function expandInteractiveSubmitAsync(
286
273
  text: string,
287
274
  resources: ResourcesContract | undefined,
288
275
  cwd = process.cwd(),
@@ -314,7 +301,7 @@ function availableInteractiveThinkingLevels(deps: InteractiveDeps): ReadonlyArra
314
301
  export interface KeyBindingDeps {
315
302
  /**
316
303
  * Keybinding lookup injected by startInteractive. Defaults come from
317
- * CLIO_KEYBINDINGS; user overrides from settings.keybindings. Tests may
304
+ * CLIO_KEYBINDINGS; user overrides from settings.interface.keybindings. Tests may
318
305
  * substitute a narrower matcher via createKeybindingManagerForTesting.
319
306
  */
320
307
  matches: (data: string, id: ClioKeybinding) => boolean;
@@ -365,73 +352,73 @@ export function resolveCtrlCAction(deps: CtrlCActionDeps): CtrlCAction {
365
352
  return "arm-shutdown";
366
353
  }
367
354
 
368
- export function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): boolean {
355
+ function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): boolean {
369
356
  switch (id) {
370
- case "clio.notifications.dismiss":
357
+ case "clio-coder.notifications.dismiss":
371
358
  deps.dismissNotifications();
372
359
  return true;
373
- case "clio.tool.expand":
360
+ case "clio-coder.tool.expand":
374
361
  deps.toggleToolExpansion();
375
362
  return true;
376
- case "clio.tool.expandAll":
363
+ case "clio-coder.tool.expandAll":
377
364
  deps.toggleAllToolExpansion();
378
365
  return true;
379
- case "clio.tool.liveOutput":
366
+ case "clio-coder.tool.liveOutput":
380
367
  deps.toggleLiveToolOutput();
381
368
  return true;
382
- case "clio.editor.external":
369
+ case "clio-coder.editor.external":
383
370
  deps.openExternalEditor();
384
371
  return true;
385
- case "clio.message.followUp":
372
+ case "clio-coder.message.followUp":
386
373
  deps.queueFollowUp();
387
374
  return true;
388
- case "clio.message.interrupt":
375
+ case "clio-coder.message.interrupt":
389
376
  deps.interruptWithMessage();
390
377
  return true;
391
- case "clio.message.dequeue":
378
+ case "clio-coder.message.dequeue":
392
379
  deps.restoreQueuedFollowUps();
393
380
  return true;
394
- case "clio.thinking.expand":
381
+ case "clio-coder.thinking.expand":
395
382
  deps.toggleThinkingExpansion();
396
383
  return true;
397
- case "clio.thinking.expandAll":
384
+ case "clio-coder.thinking.expandAll":
398
385
  deps.toggleAllThinkingExpansion();
399
386
  return true;
400
- case "clio.status.toggle":
387
+ case "clio-coder.status.toggle":
401
388
  deps.toggleStatus();
402
389
  return true;
403
- case "clio.thinking.cycle":
390
+ case "clio-coder.thinking.cycle":
404
391
  deps.cycleThinking();
405
392
  return true;
406
- case "clio.session.tree":
393
+ case "clio-coder.session.tree":
407
394
  deps.openTree();
408
395
  return true;
409
- case "clio.dispatchBoard.toggle":
396
+ case "clio-coder.dispatchBoard.toggle":
410
397
  deps.toggleDispatchBoard();
411
398
  return true;
412
- case "clio.tasks.open":
399
+ case "clio-coder.tasks.open":
413
400
  deps.openTasks();
414
401
  return true;
415
- case "clio.decisions.open":
402
+ case "clio-coder.decisions.open":
416
403
  deps.openDecisions();
417
404
  return true;
418
- case "clio.dispatch.background":
405
+ case "clio-coder.dispatch.background":
419
406
  deps.backgroundDispatch();
420
407
  return true;
421
- case "clio.model.select":
408
+ case "clio-coder.model.select":
422
409
  deps.openModelSelector();
423
410
  return true;
424
- case "clio.model.cycleBackward":
411
+ case "clio-coder.model.cycleBackward":
425
412
  deps.cycleScopedModelBackward();
426
413
  return true;
427
- case "clio.model.cycleForward":
414
+ case "clio-coder.model.cycleForward":
428
415
  deps.cycleScopedModelForward();
429
416
  return true;
430
- case "clio.exit":
417
+ case "clio-coder.exit":
431
418
  if (deps.canExit && !deps.canExit()) return false;
432
419
  deps.requestShutdown();
433
420
  return true;
434
- case "clio.leader":
421
+ case "clio-coder.leader":
435
422
  return false;
436
423
  }
437
424
  }
@@ -439,20 +426,20 @@ export function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDe
439
426
  /** Pure key router: returns true when the input was consumed. */
440
427
  export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean {
441
428
  const order: ClioKeybinding[] = [
442
- "clio.status.toggle",
443
- "clio.thinking.cycle",
444
- "clio.session.tree",
445
- "clio.dispatchBoard.toggle",
446
- "clio.tasks.open",
447
- "clio.decisions.open",
448
- "clio.dispatch.background",
449
- "clio.model.select",
429
+ "clio-coder.status.toggle",
430
+ "clio-coder.thinking.cycle",
431
+ "clio-coder.session.tree",
432
+ "clio-coder.dispatchBoard.toggle",
433
+ "clio-coder.tasks.open",
434
+ "clio-coder.decisions.open",
435
+ "clio-coder.dispatch.background",
436
+ "clio-coder.model.select",
450
437
  // Match cycleBackward before cycleForward so a user rebind where one key
451
438
  // is a prefix of the other resolves to the more specific binding first.
452
439
  // The defaults (alt+k / alt+j) do not prefix-match each other.
453
- "clio.model.cycleBackward",
454
- "clio.model.cycleForward",
455
- "clio.exit",
440
+ "clio-coder.model.cycleBackward",
441
+ "clio-coder.model.cycleForward",
442
+ "clio-coder.exit",
456
443
  ];
457
444
  for (const id of order) {
458
445
  if (deps.matches(data, id)) return dispatchInteractiveAction(id, deps);
@@ -461,13 +448,13 @@ export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean
461
448
  }
462
449
 
463
450
  export async function createInteractiveApplication(deps: InteractiveDeps): Promise<number> {
464
- const initialSmoothStreaming = resolveSmoothStreamingMode(deps.getSettings?.().terminal.smoothStreaming ?? "off");
451
+ const initialSmoothStreaming = resolveSmoothStreamingMode(deps.getSettings?.().interface.smoothStreaming ?? "off");
465
452
  const initialAutoPacingAllowed = processAutoPacingAllowed(false);
466
453
  const lease = deps.terminalLease;
467
454
  const shell =
468
455
  lease?.shell ??
469
456
  createProcessInteractiveShell({
470
- tuiMode: deps.getSettings?.().terminal.tuiMode ?? "regular",
457
+ tuiMode: deps.getSettings?.().interface.mode ?? "regular",
471
458
  streamPacingActive:
472
459
  initialSmoothStreaming === "on" || (initialSmoothStreaming === "auto" && initialAutoPacingAllowed),
473
460
  ...(deps.onFirstFrameCommit ? { onFirstFrameCommit: deps.onFirstFrameCommit } : {}),
@@ -622,7 +609,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
622
609
  notice: (level, text) => notify(level, text, `yazi:${level}`),
623
610
  getCwd: () => process.cwd(),
624
611
  getSettings: () =>
625
- deps.getSettings?.().panes.yazi ?? {
612
+ deps.getSettings?.().interface.panes.files ?? {
626
613
  mode: "companion",
627
614
  profile: "managed",
628
615
  followCwd: true,
@@ -643,7 +630,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
643
630
  // `CLIO_CODER_INTERACTIVE=1` forced the interactive surface on.
644
631
  const desktopNotifications = createInteractiveDesktopNotifications({
645
632
  write: (data) => terminal.write(data),
646
- enabled: () => deps.getSettings?.().terminal.notify ?? false,
633
+ enabled: () => deps.getSettings?.().interface.desktopNotifications ?? false,
647
634
  interactiveTty: () => process.stdout.isTTY === true,
648
635
  getOpenBatches: () => openDetachedBatchViews(deps.dispatch),
649
636
  });
@@ -685,7 +672,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
685
672
  appendTranscriptNotice: (level, text) => appendNotice(level, text, busNoticeSink),
686
673
  refreshSettingsOverlay: () => overlayLifecycle.refreshSettingsOverlay(),
687
674
  onConfigHotReload: (settings) => {
688
- const mode = resolveSmoothStreamingMode(settings.terminal.smoothStreaming);
675
+ const mode = resolveSmoothStreamingMode(settings.interface.smoothStreaming);
689
676
  const autoAllowed = processAutoPacingAllowed(shell.hasObservedBackpressure());
690
677
  chatRenderer.setSmoothStreamingMode(mode);
691
678
  shell.setStreamPacingActive(mode === "on" || (mode === "auto" && autoAllowed));
@@ -742,6 +729,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
742
729
  openSideQuestion: (question) => openSideQuestionOverlayState(question),
743
730
  startHandoff: (goal) => startHandoffState(goal),
744
731
  startFleetRun: (name, vars) => startFleetRunState(name, vars),
732
+ openFleetRuns: () => toggleDispatchBoardOverlay(),
745
733
  ...(toolRegistry ? { runCouncilDispatch: (args) => dispatchCouncilThroughRegistry(toolRegistry, args) } : {}),
746
734
  openContextView: () => openContextViewOverlayState(),
747
735
  openTasks: () => openTasksOverlayState(),
@@ -752,7 +740,22 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
752
740
  ...(deps.panes ? { panes: deps.panes } : {}),
753
741
  openModel: () => openModelOverlayState(),
754
742
  openModelScope: (ref) => openModelScopeState(ref),
755
- openSettings: (section, rowId) => openSettingsOverlayState(section, rowId),
743
+ openSettings: (area, group) => {
744
+ if (!area) return openSettingsOverlayState();
745
+ // Compatibility adapter until the seven-area Settings shell replaces
746
+ // the legacy section ids. Slash grammar never exposes these old names.
747
+ if (area === "chat" && group === "model-picker") return openSettingsOverlayState("models", "scope");
748
+ const section = {
749
+ chat: "orchestrator",
750
+ fleet: "fleet",
751
+ targets: "targets",
752
+ context: "compaction",
753
+ safety: "safety",
754
+ interface: "terminal",
755
+ integrations: "advanced",
756
+ } satisfies Record<SettingsAreaId, Parameters<typeof openSettingsOverlayState>[0]>;
757
+ openSettingsOverlayState(section[area]);
758
+ },
756
759
  openResume: () => openResumeOverlayState(),
757
760
  startNewSession: () => startNewSession(),
758
761
  openTree: () => openTreeOverlayState(),
@@ -870,6 +873,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
870
873
  openPromptsOverlayState,
871
874
  openExtensionsOverlayState,
872
875
  openInteropOverlayState,
876
+ toggleDispatchBoardOverlay,
873
877
  } = overlayLifecycle;
874
878
 
875
879
  const dispatchSteering = createDispatchSteering({
@@ -947,7 +951,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
947
951
  ? deps.createMuxBridge({
948
952
  bus: deps.bus,
949
953
  mux,
950
- notificationsPolicy: () => deps.getSettings?.().panes.notifications ?? "failures",
954
+ notificationsPolicy: () => deps.getSettings?.().interface.panes.notifications ?? "failures",
951
955
  log: (level, message) => {
952
956
  if (level === "warning") notify("warning", message, "mux:bridge");
953
957
  },
@@ -959,9 +963,25 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
959
963
  // tool drive the same controller through the shared operations object.
960
964
  const watchPane =
961
965
  mux && mux.mode !== "none" && deps.createWatchPane
962
- ? deps.createWatchPane({ mux, getCwd: () => process.cwd() })
966
+ ? deps.createWatchPane({
967
+ mux,
968
+ getCwd: () => process.cwd(),
969
+ getWorkersRatio: () => deps.getSettings?.().interface.panes.workers.ratio ?? 0.34,
970
+ })
963
971
  : null;
964
972
  const detachWatchPane = watchPane ? deps.attachWatchPane?.(watchPane) : undefined;
973
+ // Boot composition per `interface.panes.layout`: `workers` opens the workers
974
+ // dock parked on "no selection"; `cockpit` adds the files dock. Fire and
975
+ // forget, and only against a live pane host: a boot must never fall through
976
+ // to the in-terminal chooser or block the first paint on socket traffic.
977
+ {
978
+ const bootSettings = deps.getSettings?.();
979
+ const layout = bootSettings?.interface.panes.layout ?? "off";
980
+ if (layout !== "off" && mux?.available()) {
981
+ void watchPane?.ensureOpen();
982
+ if (layout === "cockpit" && bootSettings?.interface.panes.files.enabled) void yaziBridge?.open();
983
+ }
984
+ }
965
985
  const selectedWatchableRun = (): { runId: string; agentId: string } | null => {
966
986
  if (!watchPane) return null;
967
987
  const row = dispatchBoard.selectedRow();
@@ -218,7 +218,7 @@ export function createInteractiveEventProjection(deps: InteractiveEventProjectio
218
218
 
219
219
  remainingUnsubscribers.push(
220
220
  deps.chat.onEvent((event) => {
221
- const showProgress = deps.getSettings?.().terminal.showTerminalProgress ?? false;
221
+ const showProgress = deps.getSettings?.().interface.terminalProgress ?? false;
222
222
  if (event.type === "agent_start" && showProgress) deps.startTerminalProgress();
223
223
  else if (event.type === "agent_end") {
224
224
  deps.stopTerminalProgress();
@@ -185,7 +185,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
185
185
  restoreQueuedFollowUps: deps.editorSubmit.restoreQueuedFollowUpsToEditor,
186
186
  });
187
187
  const leaderKeys = createLeaderKeyController({
188
- matchesLeader: (input) => deps.keybindings.matches(input, "clio.leader"),
188
+ matchesLeader: (input) => deps.keybindings.matches(input, "clio-coder.leader"),
189
189
  leaderTargets: () => deps.keybindings.leaderTargets(),
190
190
  dispatchAction: (id) => deps.dispatchAction(id, keyActionDeps()),
191
191
  isRelease: isKeyRelease,
@@ -302,7 +302,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
302
302
  deps.reportShutdownFailure ??
303
303
  ((step, error) => {
304
304
  process.stderr.write(
305
- `[clio:interactive] ${step} failed: ${error instanceof Error ? error.message : String(error)}\n`,
305
+ `[clio-coder:interactive] ${step} failed: ${error instanceof Error ? error.message : String(error)}\n`,
306
306
  );
307
307
  }),
308
308
  });
@@ -1,5 +1,6 @@
1
1
  import { performance } from "node:perf_hooks";
2
2
  import type { ClioSettings } from "../core/config.js";
3
+ import { DEFAULT_SETTINGS } from "../core/defaults.js";
3
4
  import type { SafeEventBus } from "../core/event-bus.js";
4
5
  import type { ContextState } from "../domains/context/index.js";
5
6
  import type { DispatchContract } from "../domains/dispatch/contract.js";
@@ -209,7 +210,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
209
210
  const getCwd = deps.getCwd ?? (() => process.cwd());
210
211
  const now = deps.now ?? performance.now.bind(performance);
211
212
  const requestRender = (): void => deps.tui.requestRender();
212
- const settings = deps.getSettings?.() ?? ({ keybindings: {} } as ClioSettings);
213
+ const settings = deps.getSettings?.() ?? structuredClone(DEFAULT_SETTINGS);
213
214
  const keybindings = deps.keybindings ?? factories.createKeybindings(settings);
214
215
  const { getExtensionStats, getLiveWorkspaceSnapshot, getWorkspaceSnapshot, refreshLiveWorkspaceGit } =
215
216
  deps.workspaceFacts;
@@ -229,15 +230,15 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
229
230
  const renderTrace = getActiveRenderTrace();
230
231
  const chatPanel = factories.createChatPanel({
231
232
  getToolExpandKey: () => {
232
- const first = keybindings.getKeys("clio.tool.expand")[0];
233
+ const first = keybindings.getKeys("clio-coder.tool.expand")[0];
233
234
  return typeof first === "string" && first.length > 0 ? first : undefined;
234
235
  },
235
- getOutputVerbosity: () => deps.getSettings?.().terminal.outputVerbosity ?? "default",
236
+ getOutputVerbosity: () => deps.getSettings?.().interface.outputDetail ?? "default",
236
237
  ...(renderTrace ? { onRenderMetrics: (metrics) => renderTrace.recordPanelRender(metrics) } : {}),
237
238
  });
238
239
  const followUpQueuePanel = factories.createFollowUpQueuePanel({
239
240
  getDequeueKey: () => {
240
- const first = keybindings.getKeys("clio.message.dequeue")[0];
241
+ const first = keybindings.getKeys("clio-coder.message.dequeue")[0];
241
242
  return typeof first === "string" && first.length > 0 ? first : undefined;
242
243
  },
243
244
  });
@@ -320,8 +321,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
320
321
  outputTokens,
321
322
  durationMs,
322
323
  ttftMs: Math.max(0, liveThroughput.firstDeltaAt - liveThroughput.startedAt),
323
- providerId: settings?.orchestrator?.target ?? "",
324
- modelId: settings?.orchestrator?.model ?? "",
324
+ providerId: settings?.chat?.target ?? "",
325
+ modelId: settings?.chat?.model ?? "",
325
326
  recordedAt: Date.now(),
326
327
  };
327
328
  };
@@ -337,7 +338,11 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
337
338
  };
338
339
  const dismissContextBootstrapNotices = (): void => {
339
340
  for (const notice of notifications.list()) {
340
- if (/^clio: (No CLIO\.md detected|malformed CLIO\.md ignored|Imported agent context changed)/.test(notice.text)) {
341
+ if (
342
+ /^(?:clio-coder|clio): (No CLIO(?:-CODER)?\.md detected|malformed CLIO(?:-CODER)?\.md ignored|Imported agent context changed)/.test(
343
+ notice.text,
344
+ )
345
+ ) {
341
346
  notifications.dismiss(notice.id);
342
347
  }
343
348
  }
@@ -390,7 +395,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
390
395
  },
391
396
  getLastTurnSummary: () => lastTurnSummary,
392
397
  getNotifications: () => notifications.list(),
393
- dismissKeyLabel: formatKeyLabel(keybindings.getKeys("clio.notifications.dismiss")[0]),
398
+ dismissKeyLabel: formatKeyLabel(keybindings.getKeys("clio-coder.notifications.dismiss")[0]),
394
399
  };
395
400
  footer = factories.buildFooter(footerDeps);
396
401
  const unsubscribeObservability = deps.observability.subscribe((snapshot) => {
@@ -403,18 +408,18 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
403
408
  getModelLabel: () => {
404
409
  const current = deps.getSettings?.();
405
410
  // The rail is the narrowest of the three, so it drops the spaces.
406
- return formatTargetLabel(current?.orchestrator?.target, current?.orchestrator?.model, { separator: "·" });
411
+ return formatTargetLabel(current?.chat?.target, current?.chat?.model, { separator: "·" });
407
412
  },
408
413
  getThinkingLabel: () => {
409
414
  const current = deps.getSettings?.();
410
415
  return (
411
416
  resolveModelRuntimeCapabilitiesForProviders(
412
417
  deps.providers,
413
- current?.orchestrator?.target,
414
- current?.orchestrator?.model,
415
- current?.orchestrator?.thinkingLevel ?? "off",
418
+ current?.chat?.target,
419
+ current?.chat?.model,
420
+ current?.chat?.thinkingLevel ?? "off",
416
421
  )?.thinking.display ??
417
- current?.orchestrator?.thinkingLevel ??
422
+ current?.chat?.thinkingLevel ??
418
423
  "off"
419
424
  );
420
425
  },
@@ -447,7 +452,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
447
452
  ? {
448
453
  streamIngress: deps.resolveStreamIngress,
449
454
  getSmoothStreamingMode: () => {
450
- const mode = resolveSmoothStreamingMode(deps.getSettings?.().terminal.smoothStreaming ?? "off");
455
+ const mode = resolveSmoothStreamingMode(deps.getSettings?.().interface.smoothStreaming ?? "off");
451
456
  const autoAllowed = processAutoPacingAllowed(deps.hasObservedBackpressure?.() ?? false);
452
457
  deps.onSmoothStreamingMode?.(mode, mode === "on" || (mode === "auto" && autoAllowed));
453
458
  return mode;
@@ -487,8 +492,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
487
492
  footer: footer.view,
488
493
  },
489
494
  {
490
- mode: settings.terminal?.tuiMode ?? "regular",
491
- fullscreenScrollbar: settings.terminal?.fullscreenScrollbar ?? "auto",
495
+ mode: settings.interface?.mode ?? "regular",
496
+ fullscreenScrollbar: settings.interface?.fullscreenScrollbar ?? "auto",
492
497
  },
493
498
  );
494
499
  deps.mount?.(root, editor);
@@ -70,7 +70,7 @@ const KEEP_ALIVE_INTERVAL_MS = 1 << 30;
70
70
  * before the keep-alive anchor. Keeping that seam explicit prevents an
71
71
  * extraction from silently changing initialization order.
72
72
  */
73
- export function createInteractiveShell<TTerminal extends Terminal, TTui extends InteractiveShellTui>(
73
+ function createInteractiveShell<TTerminal extends Terminal, TTui extends InteractiveShellTui>(
74
74
  deps: InteractiveShellDeps<TTerminal, TTui>,
75
75
  ): InteractiveShell<TTerminal, TTui> {
76
76
  const terminal = deps.createTerminal();
@@ -175,7 +175,7 @@ export function getActiveRenderTrace(): RenderTrace | null {
175
175
  * model state. After the finite pre-render bound, exactly one caller-supplied
176
176
  * final frame is still issued; a post-render drain wait is likewise bounded.
177
177
  */
178
- export async function settleLatestInteractiveFrame(
178
+ async function settleLatestInteractiveFrame(
179
179
  gate: Pick<StdoutBackpressureGate, "whenWritable"> | null,
180
180
  timeoutMs: number,
181
181
  renderFrame: () => Promise<number>,