@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,7 +1,13 @@
1
1
  import { type Dirent, readdirSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import type { ContextRecalledPayload } from "../../core/bus-events.js";
4
- import { SKILL_SUGGESTION_ANCHOR } from "../../core/skill-activation.js";
4
+ import {
5
+ SKILL_INSTALL_OFFER_OPTION_NEVER,
6
+ SKILL_INSTALL_OFFER_OPTION_NOT_NOW,
7
+ SKILL_INSTALL_OFFER_OPTION_PROJECT,
8
+ SKILL_INSTALL_OFFER_OPTION_USER,
9
+ SKILL_SUGGESTION_ANCHOR,
10
+ } from "../../core/skill-activation.js";
5
11
  import { ToolNames } from "../../core/tool-names.js";
6
12
  import { foldWorkingSet } from "../../domains/context/working-set/fold.js";
7
13
  import {
@@ -289,6 +295,14 @@ function renderSkillsList(
289
295
  "",
290
296
  `If one skill above matches the current task, begin your reply with the line \`${SKILL_SUGGESTION_ANCHOR}\` (a comma-separated sequence, in order, when several compose), then continue the task in the same turn without it; only the operator can run it. If none match, do not mention skills.`,
291
297
  );
298
+ if (marketplace.length > 0) {
299
+ // The offer protocol mirrors the marketplace-offer middleware: fixed
300
+ // option labels so the harness recognizes the answer, and the model
301
+ // never performs an install itself.
302
+ lines.push(
303
+ `When no installed skill serves the task but a marketplace skill above genuinely does, you may instead ask the operator with ask_user (mode=single_question, header "Install skill") whether to install it, offering exactly: "${SKILL_INSTALL_OFFER_OPTION_PROJECT}", "${SKILL_INSTALL_OFFER_OPTION_USER}", "${SKILL_INSTALL_OFFER_OPTION_NOT_NOW}", "${SKILL_INSTALL_OFFER_OPTION_NEVER}". The harness handles the answer and any install; never install or load a skill yourself.`,
304
+ );
305
+ }
292
306
  return lines.join("\n");
293
307
  }
294
308
 
@@ -456,10 +456,12 @@ export function createDispatchAdmissionController(deps: DispatchToolDeps): Dispa
456
456
  return shapeRejection(args, "dispatch: apply_winner must be an options object");
457
457
  }
458
458
  const branch = stringArg(args.apply_winner, "branch");
459
- const match = branch ? /^clio\/compete\/([A-Za-z0-9][A-Za-z0-9._-]{0,127})\/([1-9]\d*)$/.exec(branch) : null;
459
+ const match = branch
460
+ ? /^(?:clio-coder|clio)\/compete\/([A-Za-z0-9][A-Za-z0-9._-]{0,127})\/([1-9]\d*)$/.exec(branch)
461
+ : null;
460
462
  if (branch === undefined) return shapeRejection(args, "dispatch: apply_winner.branch is required");
461
463
  if (match === null) {
462
- return shapeRejection(args, "dispatch: apply_winner.branch must be a clio/compete/<group>/<n> branch");
464
+ return shapeRejection(args, "dispatch: apply_winner.branch must be a clio-coder/compete/<group>/<n> branch");
463
465
  }
464
466
  try {
465
467
  const cwd = resolve(stringArg(args.apply_winner, "cwd") ?? process.cwd());
@@ -62,7 +62,7 @@ const AUTO_BASELINE_FALLBACK_AGENT_ID = "scout";
62
62
  * the mapped recipe is not present in this install, so a trimmed recipe set
63
63
  * can never produce a dispatch against an agent id that does not resolve.
64
64
  */
65
- export function autoBaselineAgentId(task: string, hasAgent?: (id: string) => boolean): string {
65
+ function autoBaselineAgentId(task: string, hasAgent?: (id: string) => boolean): string {
66
66
  const mapped = AUTO_BASELINE_BY_TASK_TYPE[classifyAgentTask(task).taskType] ?? AUTO_BASELINE_FALLBACK_AGENT_ID;
67
67
  if (hasAgent === undefined) return mapped;
68
68
  if (hasAgent(mapped)) return mapped;
@@ -900,14 +900,3 @@ export function describeDispatchPlan(rawArgs: Record<string, unknown> | undefine
900
900
  ...(confirmation !== undefined ? { confirmation } : {}),
901
901
  };
902
902
  }
903
-
904
- /** Registry-side predicate: does this dispatch call require plan approval at supervised levels? */
905
- export function isPlanScaleDispatchArgs(rawArgs: Record<string, unknown> | undefined): boolean {
906
- try {
907
- return describeDispatchPlan(rawArgs).planScale;
908
- } catch {
909
- // A malformed call fails closed as NOT plan-scale; the dispatch tool's
910
- // own validation rejects it with a real error message.
911
- return false;
912
- }
913
- }
@@ -1,5 +1,6 @@
1
1
  import { BusChannels } from "../core/bus-events.js";
2
2
  import type { SafeEventBus } from "../core/event-bus.js";
3
+ import { normalizeClioCoderEventRecord, normalizeClioCoderEventType } from "../core/naming-events.js";
3
4
  import type { DispatchContract } from "../domains/dispatch/contract.js";
4
5
  import { durableAssistantTextFromEvent } from "../domains/dispatch/event-pump.js";
5
6
  import { defaultRunEventJournal, type RunEventJournalSink } from "../domains/dispatch/run-event-journal.js";
@@ -61,18 +62,19 @@ function isRecord(value: unknown): value is Record<string, unknown> {
61
62
  }
62
63
 
63
64
  function eventDetail(event: unknown): string | undefined {
64
- const text = assistantTextFromEvent(event);
65
+ const normalized = isRecord(event) ? normalizeClioCoderEventRecord(event) : event;
66
+ const text = assistantTextFromEvent(normalized);
65
67
  if (text.length > 0) return truncateUtf8(text, RUN_TAIL_TEXT_LIMIT, "...");
66
- if (!isRecord(event)) return undefined;
67
- if (event.type === "clio_tool_finish" && isRecord(event.payload)) {
68
- const tool = typeof event.payload.tool === "string" ? event.payload.tool : "tool";
69
- const outcome = typeof event.payload.outcome === "string" ? event.payload.outcome : "";
68
+ if (!isRecord(normalized)) return undefined;
69
+ if (normalized.type === "clio_coder_tool_finish" && isRecord(normalized.payload)) {
70
+ const tool = typeof normalized.payload.tool === "string" ? normalized.payload.tool : "tool";
71
+ const outcome = typeof normalized.payload.outcome === "string" ? normalized.payload.outcome : "";
70
72
  return `${tool} ${outcome}`.trim();
71
73
  }
72
- if (event.type === "attempt_start") {
73
- const attempt = typeof event.attempt === "number" ? event.attempt : "?";
74
- const runId = typeof event.runId === "string" ? event.runId : "?";
75
- const reason = typeof event.reason === "string" ? event.reason : "retry";
74
+ if (normalized.type === "attempt_start") {
75
+ const attempt = typeof normalized.attempt === "number" ? normalized.attempt : "?";
76
+ const runId = typeof normalized.runId === "string" ? normalized.runId : "?";
77
+ const reason = typeof normalized.reason === "string" ? normalized.reason : "retry";
76
78
  return truncateUtf8(`attempt ${attempt} -> ${runId}: ${reason}`, RUN_TAIL_TEXT_LIMIT, "...");
77
79
  }
78
80
  return undefined;
@@ -89,7 +91,7 @@ function eventDetail(event: unknown): string | undefined {
89
91
  * (src/domains/dispatch/run-event-journal-bridge.ts) call it.
90
92
  */
91
93
  export function runTailEntryFromEvent(event: unknown, at: string = new Date().toISOString()): RunTailEntry | null {
92
- const type = isRecord(event) && typeof event.type === "string" ? event.type : "unknown";
94
+ const type = isRecord(event) && typeof event.type === "string" ? normalizeClioCoderEventType(event.type) : "unknown";
93
95
  if (type === "heartbeat" || type === "message_update") return null;
94
96
  const entry: RunTailEntry = { at, type };
95
97
  const detail = eventDetail(event);
@@ -57,6 +57,7 @@ import {
57
57
  claimCompeteGroup,
58
58
  cleanupCompeteGroup,
59
59
  commitCandidateWork,
60
+ competeBranchForCandidate,
60
61
  createCandidateWorktreeMapped,
61
62
  isGitRepository,
62
63
  loadCompeteGroup,
@@ -964,6 +965,8 @@ function recoverPendingGateEvidence(deps: DispatchToolDeps): void {
964
965
  const pick = judged?.ok ? judged.result.winner : null;
965
966
  const pickedSubject = pick === null ? undefined : record.subjects[pick - 1];
966
967
  const candidateReceipt = pickedSubject === undefined ? null : readVerifiedGateReceipt(deps, pickedSubject.runId);
968
+ const root = record.resourceRoot ?? process.cwd();
969
+ const pickedBranch = pick === null ? null : competeBranchForCandidate(root, record.group, pick);
967
970
  if (pickedSubject !== undefined && candidateReceipt === null) {
968
971
  throw new Error(
969
972
  `pending compete decision ${record.id} has no verified candidate receipt for ${pickedSubject.runId}`,
@@ -971,11 +974,10 @@ function recoverPendingGateEvidence(deps: DispatchToolDeps): void {
971
974
  }
972
975
  let blockedProtected: string[] = [];
973
976
  if (pick !== null && pickedSubject !== undefined && candidateReceipt !== null) {
974
- const root = record.resourceRoot ?? process.cwd();
975
977
  const protectedPaths = deps.dispatch.protectedArtifactState?.().artifacts.map((artifact) => artifact.path) ?? [];
976
978
  blockedProtected = protectedPathsChangedByCompeteBranch(
977
979
  root,
978
- `clio/compete/${record.group}/${pick}`,
980
+ pickedBranch ?? `clio-coder/compete/${record.group}/${pick}`,
979
981
  protectedPaths,
980
982
  );
981
983
  }
@@ -985,7 +987,7 @@ function recoverPendingGateEvidence(deps: DispatchToolDeps): void {
985
987
  candidateReceipt !== null &&
986
988
  !isPipelineStepFailure(candidateReceipt) &&
987
989
  blockedProtected.length === 0;
988
- if (validWinner && pick !== null && pickedSubject !== undefined) {
990
+ if (validWinner && pick !== null && pickedSubject !== undefined && pickedBranch !== null) {
989
991
  draft = {
990
992
  group: record.group,
991
993
  topology: "compete",
@@ -997,7 +999,7 @@ function recoverPendingGateEvidence(deps: DispatchToolDeps): void {
997
999
  winner: {
998
1000
  index: pick,
999
1001
  subject: pickedSubject,
1000
- branch: `clio/compete/${record.group}/${pick}`,
1002
+ branch: pickedBranch,
1001
1003
  },
1002
1004
  };
1003
1005
  } else {
@@ -1599,9 +1601,12 @@ function runApplyWinner(
1599
1601
  };
1600
1602
  }
1601
1603
  const branch = input.branch;
1602
- const match = /^clio\/compete\/([A-Za-z0-9][A-Za-z0-9._-]{0,127})\/([1-9]\d*)$/.exec(branch);
1604
+ const match = /^(?:clio-coder|clio)\/compete\/([A-Za-z0-9][A-Za-z0-9._-]{0,127})\/([1-9]\d*)$/.exec(branch);
1603
1605
  if (!match) {
1604
- return { kind: "error", message: "dispatch: apply_winner.branch must be a clio/compete/<group>/<n> branch" };
1606
+ return {
1607
+ kind: "error",
1608
+ message: "dispatch: apply_winner.branch must be a clio-coder/compete/<group>/<n> branch",
1609
+ };
1605
1610
  }
1606
1611
  const group = match[1] ?? "";
1607
1612
  const winnerIndex = Number.parseInt(match[2] ?? "", 10);
@@ -252,7 +252,7 @@ export function createDispatchTool(
252
252
  apply_winner: Type.Optional(
253
253
  Type.Object(
254
254
  {
255
- branch: Type.String({ description: "Preserved winner branch: clio/compete/<group>/<n>." }),
255
+ branch: Type.String({ description: "Preserved winner branch: clio-coder/compete/<group>/<n>." }),
256
256
  cwd: Type.Optional(Type.String({ description: "Repository root (default: current directory)." })),
257
257
  },
258
258
  {
package/src/tools/find.ts CHANGED
@@ -31,12 +31,7 @@ type FindOrder = "path" | "mtime";
31
31
  // Build fd's argv. Ignore semantics (hidden files, .gitignore honoring,
32
32
  // generated-dir excludes, include_ignored) come entirely from the shared
33
33
  // ignore policy so grep and find never disagree about tree visibility.
34
- export function buildFdArgs(
35
- pattern: string,
36
- searchPath: string,
37
- maxResults: number,
38
- includeIgnored: boolean,
39
- ): string[] {
34
+ function buildFdArgs(pattern: string, searchPath: string, maxResults: number, includeIgnored: boolean): string[] {
40
35
  const args = ["--glob", "--color=never", ...fdIgnoreArgs(searchPath, includeIgnored)];
41
36
  args.push("--max-results", String(maxResults));
42
37
  let effectivePattern = pattern;
@@ -214,16 +214,16 @@ const TOOLS_MAX_BYTES = 8 * 1024;
214
214
  const TOOLS_ARGUMENTS_CHARS = 160;
215
215
 
216
216
  /**
217
- * Tail event types that describe one tool call. `clio_tool_finish` is the
217
+ * Tail event types that describe one tool call. `clio_coder_tool_finish` is the
218
218
  * authoritative per-call outcome (it distinguishes a permission block from a
219
219
  * command that ran and exited nonzero); the engine's own `tool_execution_end`
220
220
  * is kept only when the tail recorded a detail for it, since a bare type line
221
221
  * says nothing the finish event does not.
222
222
  */
223
223
  const TOOL_CALL_EVENT_TYPES: ReadonlySet<string> = new Set([
224
- "clio_tool_finish",
225
- "clio_permission_resolved",
226
- "clio_permission_escalated",
224
+ "clio_coder_tool_finish",
225
+ "clio_coder_permission_resolved",
226
+ "clio_coder_permission_escalated",
227
227
  ]);
228
228
 
229
229
  function toolCallLines(entries: ReadonlyArray<{ at: string; type: string; detail?: string }>): string[] {
@@ -44,39 +44,6 @@ export interface FileMutationEvent {
44
44
  toolName: string;
45
45
  }
46
46
 
47
- /**
48
- * Defers file-mutation sinks off the after_tool hot path and coalesces rapid
49
- * events into one best-effort batch. Lifecycle-owned sinks that must drain at
50
- * shutdown should admit work synchronously instead of using this convenience.
51
- */
52
- export function coalescePathSink(sink: (paths: string[]) => void): (event: FileMutationEvent) => void {
53
- const pending = new Set<string>();
54
- let flushScheduled = false;
55
-
56
- const scheduleFlush = (): void => {
57
- if (flushScheduled) return;
58
- flushScheduled = true;
59
- setImmediate(() => {
60
- flushScheduled = false;
61
- if (pending.size === 0) return;
62
- const paths = [...pending];
63
- pending.clear();
64
- try {
65
- sink(paths);
66
- } catch {
67
- // Incremental indexing is best-effort and must not change tool execution.
68
- }
69
- if (pending.size > 0) scheduleFlush();
70
- });
71
- };
72
-
73
- return (event) => {
74
- if (event.paths.length === 0) return;
75
- for (const path of event.paths) pending.add(path);
76
- scheduleFlush();
77
- };
78
- }
79
-
80
47
  /** Notifies the caller after a successful file-mutating tool, for incremental indexing. */
81
48
  export function createFileMutationObserver(sink: (event: FileMutationEvent) => void): MiddlewareHookRegistration {
82
49
  return {
@@ -1,6 +1,6 @@
1
1
  import { execFileSync } from "node:child_process";
2
2
  import { createHash, randomBytes } from "node:crypto";
3
- import { existsSync, mkdirSync, realpathSync, rmSync, writeFileSync } from "node:fs";
3
+ import { existsSync, mkdirSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs";
4
4
  import { isAbsolute, join, relative, resolve, sep } from "node:path";
5
5
 
6
6
  export type TaskWorktreeApply = "merge" | "preserve";
@@ -25,7 +25,9 @@ export interface TaskWorktreeReceipt {
25
25
 
26
26
  const SAFE_RUN_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/u;
27
27
  const OWNER_FILE_SUFFIX = ".task-owner.json";
28
- const COMMIT_IDENTITY = "clio-task";
28
+ const TASK_WORKTREE_KIND = "clio-coder-task-worktree";
29
+ const LEGACY_TASK_WORKTREE_KIND = "clio-task-worktree";
30
+ const COMMIT_IDENTITY = "clio-coder-task";
29
31
 
30
32
  function gitBytes(root: string, args: string[]): Buffer {
31
33
  return execFileSync("git", ["-C", root, ...args], {
@@ -160,7 +162,7 @@ export function createTaskWorktree(root: string, runId: string, base?: string):
160
162
  const resolvedBase = base ?? git(canonical, ["rev-parse", "HEAD"]);
161
163
  const parent = join(canonical, ".clio-coder", "worktrees");
162
164
  const path = join(parent, runId);
163
- const branch = `clio/task/${runId}`;
165
+ const branch = `clio-coder/task/${runId}`;
164
166
  mkdirSync(parent, { recursive: true });
165
167
  if (!isCanonicalWorktreePathInside(parent, path))
166
168
  throw new Error(`task worktree path escapes its parent for run ${runId}`);
@@ -168,7 +170,7 @@ export function createTaskWorktree(root: string, runId: string, base?: string):
168
170
  const ownerToken = randomBytes(16).toString("hex");
169
171
  writeFileSync(
170
172
  `${path}${OWNER_FILE_SUFFIX}`,
171
- `${JSON.stringify({ version: 1, kind: "clio-task-worktree", root: canonical, runId, branch, base: resolvedBase, ownerToken }, null, 2)}\n`,
173
+ `${JSON.stringify({ version: 1, kind: TASK_WORKTREE_KIND, root: canonical, runId, branch, base: resolvedBase, ownerToken }, null, 2)}\n`,
172
174
  { encoding: "utf8", flag: "wx" },
173
175
  );
174
176
  return { root: canonical, runId, path, branch, base: resolvedBase, ownerToken };
@@ -182,11 +184,30 @@ function assertOwnership(worktree: TaskWorktree): void {
182
184
  ) {
183
185
  throw new Error(`task worktree ${worktree.runId} has an invalid ownership path`);
184
186
  }
185
- if (!existsSync(`${worktree.path}${OWNER_FILE_SUFFIX}`))
186
- throw new Error(`task worktree ${worktree.runId} has no ownership file`);
187
+ const ownerPath = `${worktree.path}${OWNER_FILE_SUFFIX}`;
188
+ if (!existsSync(ownerPath)) throw new Error(`task worktree ${worktree.runId} has no ownership file`);
189
+ let marker: Record<string, unknown>;
190
+ try {
191
+ const value = JSON.parse(readFileSync(ownerPath, "utf8")) as unknown;
192
+ if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error("not an object");
193
+ marker = value as Record<string, unknown>;
194
+ } catch {
195
+ throw new Error(`task worktree ${worktree.runId} has an invalid ownership file`);
196
+ }
197
+ if (
198
+ marker.version !== 1 ||
199
+ (marker.kind !== TASK_WORKTREE_KIND && marker.kind !== LEGACY_TASK_WORKTREE_KIND) ||
200
+ marker.root !== worktree.root ||
201
+ marker.runId !== worktree.runId ||
202
+ marker.branch !== worktree.branch ||
203
+ marker.base !== worktree.base ||
204
+ marker.ownerToken !== worktree.ownerToken
205
+ ) {
206
+ throw new Error(`task worktree ${worktree.runId} ownership facts do not match`);
207
+ }
187
208
  }
188
209
 
189
- function commitTaskWorktree(worktree: TaskWorktree, message = `Clio task ${worktree.runId}`): boolean {
210
+ function commitTaskWorktree(worktree: TaskWorktree, message = `Clio Coder task ${worktree.runId}`): boolean {
190
211
  assertOwnership(worktree);
191
212
  return commitWorktreePath(worktree.path, COMMIT_IDENTITY, message);
192
213
  }
@@ -234,7 +234,7 @@ function boundedId(base: string, suffix = ""): string {
234
234
  }
235
235
 
236
236
  /** Allocate the same stable suffix for the same ordered set of occupied IDs. */
237
- export function deterministicVerifierId(preferredId: string, occupied: ReadonlySet<string>): string {
237
+ function deterministicVerifierId(preferredId: string, occupied: ReadonlySet<string>): string {
238
238
  const base = boundedId(slug(preferredId, "check"));
239
239
  if (!occupied.has(base) && base !== "frontend") return base;
240
240
  for (let index = 2; index <= PROJECT_VERIFIER_CATALOG_CAPS.checks + 2; index += 1) {
@@ -892,7 +892,7 @@ function serializeVerifierDraft(draft: VerifierDraft): string {
892
892
  }
893
893
 
894
894
  /** Validate with the same production parser used by verify(). */
895
- export function validateVerifierDraft(draft: VerifierDraft): VerifierDraftValidation {
895
+ function validateVerifierDraft(draft: VerifierDraft): VerifierDraftValidation {
896
896
  const text = serializeVerifierDraft(draft);
897
897
  const parsed = parseProjectVerifierCatalogText(text, draft.workspaceRoot, draft.catalogPath);
898
898
  if (!parsed.ok) return { ok: false, reason: parsed.reason, text };
@@ -944,10 +944,7 @@ function cloneDraft(draft: VerifierDraft): VerifierDraft {
944
944
  }
945
945
 
946
946
  /** Apply edits to a copy so a collision or schema failure leaves the prior draft intact. */
947
- export function reviseVerifierDraft(
948
- draft: VerifierDraft,
949
- revisions: ReadonlyArray<VerifierRevision>,
950
- ): VerifierRevisionResult {
947
+ function reviseVerifierDraft(draft: VerifierDraft, revisions: ReadonlyArray<VerifierRevision>): VerifierRevisionResult {
951
948
  const next = cloneDraft(draft);
952
949
  const diagnostics: string[] = [];
953
950
  for (const revision of revisions) {
@@ -447,7 +447,7 @@ async function checkModuleJavaScript(
447
447
  label: string,
448
448
  options: ValidationOptions,
449
449
  ): Promise<string | null> {
450
- const dir = mkdtempSync(path.join(tmpdir(), "clio-frontend-check-"));
450
+ const dir = mkdtempSync(path.join(tmpdir(), "clio-coder-frontend-check-"));
451
451
  const file = path.join(dir, "module.mjs");
452
452
  try {
453
453
  writeFileSync(file, source, "utf8");
@@ -256,7 +256,7 @@ function htmlToMarkdown(html: string, baseUrl: string): string {
256
256
  .trim();
257
257
  }
258
258
 
259
- export function extractWebFetchContent(
259
+ function extractWebFetchContent(
260
260
  rawText: string,
261
261
  contentType: string,
262
262
  finalUrl: string,
@@ -122,7 +122,7 @@ async function main(): Promise<number> {
122
122
  setResidencyNoticeSink((notice) => {
123
123
  process.stderr.write(`[worker] residency ${notice.kind}: ${notice.message}\n`);
124
124
  if (notice.kind === "will-not-fit") {
125
- emitEvent({ type: "clio_run_outcome", payload: { outcomeCode: "vram_capacity_fit_failure" } });
125
+ emitEvent({ type: "clio_coder_run_outcome", payload: { outcomeCode: "vram_capacity_fit_failure" } });
126
126
  }
127
127
  });
128
128
  const demux = createWorkerStdinDemux();
@@ -227,12 +227,13 @@ async function main(): Promise<number> {
227
227
  const handle = startWorkerRun(input, (event) => emitEvent(projectWorkerEventForStdout(event)));
228
228
  // The demux buffers lines that landed before the runtime handle existed.
229
229
  // Single-shot subprocesses expose no steer method, and an SDK query can race
230
- // completion. The runtime emits the receipt-bearing clio_steer_received event
230
+ // completion. The runtime emits the receipt-bearing clio_coder_steer_received event
231
231
  // only after it accepts the message; rejected input is diagnostic-only.
232
232
  demux.onSteer(
233
233
  createOrderedSteerHandler(
234
234
  (text) => handle.steer?.(text) ?? false,
235
- ({ text, sequence }) => emitEvent({ type: "clio_steer_received", payload: { chars: text.trim().length, sequence } }),
235
+ ({ text, sequence }) =>
236
+ emitEvent({ type: "clio_coder_steer_received", payload: { chars: text.trim().length, sequence } }),
236
237
  (reason) => process.stderr.write(`[worker] dropped steer: ${reason}\n`),
237
238
  ),
238
239
  );
@@ -22,6 +22,7 @@
22
22
  */
23
23
 
24
24
  import { createHash } from "node:crypto";
25
+ import { normalizeClioCoderEventRecord } from "../core/naming-events.js";
25
26
 
26
27
  /** Current wire protocol. A peer announcing anything else is not executed. */
27
28
  export const WORKER_PROTOCOL_VERSION = 1;
@@ -291,7 +292,7 @@ const HEX_64 = /^[0-9a-f]{64}$/;
291
292
  * always present and never leaks absence as an empty string.
292
293
  */
293
294
  export function endpointIdentityHash(url: string | undefined): string {
294
- if (url === undefined || url.trim().length === 0) return sha256Hex("clio.endpoint:none");
295
+ if (url === undefined || url.trim().length === 0) return sha256Hex("clio-coder.endpoint:none");
295
296
  const raw = url.trim();
296
297
  let canonical: string;
297
298
  try {
@@ -301,17 +302,17 @@ export function endpointIdentityHash(url: string | undefined): string {
301
302
  } catch {
302
303
  canonical = raw.replace(/\/+$/u, "");
303
304
  }
304
- return sha256Hex(`clio.endpoint:${canonical}`);
305
+ return sha256Hex(`clio-coder.endpoint:${canonical}`);
305
306
  }
306
307
 
307
308
  /** Digest of one WorkerSpec document, computed identically on both ends. */
308
309
  export function workerSpecDigest(spec: unknown): string {
309
- return sha256Hex(`clio.workerSpec:${canonicalJson(spec)}`);
310
+ return sha256Hex(`clio-coder.workerSpec:${canonicalJson(spec)}`);
310
311
  }
311
312
 
312
313
  /** Stable signature of the effective tool surface a worker will expose. */
313
314
  export function toolSignatureOf(names: ReadonlyArray<string>): string {
314
- return sha256Hex(`clio.tools:${[...names].sort().join(",")}`);
315
+ return sha256Hex(`clio-coder.tools:${[...names].sort().join(",")}`);
315
316
  }
316
317
 
317
318
  /**
@@ -365,7 +366,8 @@ function parseJsonObject(line: string, maxBytes: number, lane: string): FramePar
365
366
 
366
367
  /** Parse one bulk stdout line under the bulk ceiling. */
367
368
  export function parseBulkFrame(line: string): FrameParseResult<Record<string, unknown>> {
368
- return parseJsonObject(line, WORKER_BULK_FRAME_MAX_BYTES, "bulk");
369
+ const parsed = parseJsonObject(line, WORKER_BULK_FRAME_MAX_BYTES, "bulk");
370
+ return parsed.ok ? { ok: true, value: normalizeClioCoderEventRecord(parsed.value) } : parsed;
369
371
  }
370
372
 
371
373
  /** True when a raw stderr line belongs to the structured control lane. */
@@ -507,15 +509,15 @@ export function parseControlFrame(line: string): FrameParseResult<WorkerControlF
507
509
  */
508
510
  const RECEIPT_BEARING_BULK_TYPES = new Set([
509
511
  "message_end",
510
- "clio_run_outcome",
511
- "clio_permission_escalated",
512
- "clio_permission_resolved",
513
- "clio_steer_received",
514
- "clio_tool_activity",
515
- "clio_skill_activation",
516
- "clio_safety_decision",
517
- "clio_verification",
518
- "clio_usage",
512
+ "clio_coder_run_outcome",
513
+ "clio_coder_permission_escalated",
514
+ "clio_coder_permission_resolved",
515
+ "clio_coder_steer_received",
516
+ "clio_coder_tool_activity",
517
+ "clio_coder_skill_activation",
518
+ "clio_coder_safety_decision",
519
+ "clio_coder_verification",
520
+ "clio_coder_usage",
519
521
  "tool_execution_end",
520
522
  "spawn_error",
521
523
  ]);
@@ -143,7 +143,7 @@ interface WorkerSpecFields {
143
143
  * Non-stall posture for permission-requiring tool calls. "deny" converts
144
144
  * the call into a structured tool denial and the run continues; "fail"
145
145
  * aborts the run, which then exits with WORKER_EXIT_PERMISSION_REQUIRED;
146
- * "escalate" parks the call, emits clio_permission_escalated, and waits for
146
+ * "escalate" parks the call, emits clio_coder_permission_escalated, and waits for
147
147
  * an operator permission_decision on stdin (falling back to the configured
148
148
  * deny/fail on timeout). Default "deny".
149
149
  */
@@ -229,7 +229,7 @@ const TOOL_PROFILE_NAMES = [
229
229
  "council-read-only",
230
230
  ] as const satisfies ReadonlyArray<ToolProfileName>;
231
231
  const WORKER_PRODUCTS = ["orientation"] as const satisfies ReadonlyArray<AgentProduct>;
232
- const TARGET_LIFECYCLES = ["user-managed", "clio-managed"] as const;
232
+ const TARGET_LIFECYCLES = ["user-managed", "clio-coder-managed"] as const;
233
233
  const RESIDENCY_ROLES = ["chat", "memory", "worker", "target-default"] as const satisfies ReadonlyArray<ResidencyRole>;
234
234
  const MIDDLEWARE_HOOKS = ["before_tool", "after_tool", "turn_start", "turn_end", "on_compaction"] as const;
235
235
  const MIDDLEWARE_EFFECT_KINDS = [
@@ -13,7 +13,7 @@ export interface WorkerStdinDemux {
13
13
  /**
14
14
  * Register the handler for post-spec steer lines
15
15
  * (`{"type":"steer","text":"...","sequence":1}`). The sequence is assigned by
16
- * the parent and is what lets `clio_steer_received` acknowledge one exact
16
+ * the parent and is what lets `clio_coder_steer_received` acknowledge one exact
17
17
  * receipt entry, so a line without a positive integer sequence is dropped
18
18
  * rather than delivered unattributed. Steers that arrive before registration
19
19
  * are buffered in order and flushed to the handler. Single handler; a second
@@ -54,7 +54,7 @@ export interface WorkerSteerMessage {
54
54
 
55
55
  /**
56
56
  * Preserve stdin order while a runtime accepts guidance asynchronously.
57
- * `clio_steer_received` echoes the parent-assigned sequence, so an
57
+ * `clio_coder_steer_received` echoes the parent-assigned sequence, so an
58
58
  * acknowledgement closes out one exact receipt entry. Ordering still matters
59
59
  * for the runtime itself: a later steer must never reach it ahead of an earlier
60
60
  * pending one, or the guidance arrives out of the order the operator sent it.