@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
@@ -19,7 +19,7 @@ interface LmStudioModelMetadata {
19
19
  clio?: {
20
20
  targetId: string;
21
21
  runtimeId: string;
22
- lifecycle?: "user-managed" | "clio-managed";
22
+ lifecycle?: "user-managed" | "clio-coder-managed";
23
23
  lmstudio?: TargetDescriptor["lmstudio"];
24
24
  lmstudioDefaultModel?: string;
25
25
  };
@@ -145,11 +145,6 @@ function emitResidencyNoticeOnce(key: string, notice: Parameters<typeof emitResi
145
145
  emitResidencyNotice(notice);
146
146
  }
147
147
 
148
- /** Test seam: forget which residency facts were announced. */
149
- export function resetAnnouncedResidencyFacts(): void {
150
- announcedResidencyFacts.clear();
151
- }
152
-
153
148
  export async function ensureLmStudioResidency(
154
149
  model: Model<"openai-completions">,
155
150
  options: { apiKey?: string; signal?: AbortSignal } = {},
@@ -47,7 +47,7 @@ interface ClioRuntimeMetadata {
47
47
  targetId: string;
48
48
  runtimeId: string;
49
49
  /** Present only when settings set the target lifecycle explicitly. */
50
- lifecycle?: "user-managed" | "clio-managed";
50
+ lifecycle?: "user-managed" | "clio-coder-managed";
51
51
  gateway?: boolean;
52
52
  family?: string;
53
53
  quirks?: LocalModelQuirks;
@@ -159,7 +159,7 @@ function userToOllama(content: string | (TextContent | ImageContent)[]): OllamaM
159
159
  return out;
160
160
  }
161
161
 
162
- export function assistantToOllama(content: AssistantMessage["content"]): OllamaMessage {
162
+ function assistantToOllama(content: AssistantMessage["content"]): OllamaMessage {
163
163
  const textParts: string[] = [];
164
164
  const toolCalls: OllamaToolCall[] = [];
165
165
  const thinkingParts: string[] = [];
@@ -270,7 +270,7 @@ function ollamaEvictClient(baseUrl: string, headers?: Record<string, string>): O
270
270
  * Map an Ollama `/api/ps` response to the runtime-agnostic resident shape,
271
271
  * preserving the GPU/total footprint when the server reports it.
272
272
  */
273
- export async function listResidentOllamaModels(client: OllamaEvictClient): Promise<ResidentModelInfo[]> {
273
+ async function listResidentOllamaModels(client: OllamaEvictClient): Promise<ResidentModelInfo[]> {
274
274
  const resident = await client.ps();
275
275
  return resident.models.map((entry) => {
276
276
  const primary = entry.model || entry.name;
@@ -64,7 +64,7 @@ interface ClioRuntimeMetadata {
64
64
  targetId: string;
65
65
  runtimeId: string;
66
66
  /** Present only when settings set the target lifecycle explicitly. */
67
- lifecycle?: "user-managed" | "clio-managed";
67
+ lifecycle?: "user-managed" | "clio-coder-managed";
68
68
  gateway?: boolean;
69
69
  quirks?: LocalModelQuirks;
70
70
  chatTemplateKwargsUnsupported?: boolean;
@@ -679,7 +679,7 @@ function hasReportedReasoningUsage(usage: Usage): boolean {
679
679
  * upstream already reported reasoning usage, because ACP consumers accept all
680
680
  * three field spellings for cross-agent compatibility.
681
681
  */
682
- export function applyOpenAICompatReasoningEstimate(message: AssistantMessage): void {
682
+ function applyOpenAICompatReasoningEstimate(message: AssistantMessage): void {
683
683
  if (hasReportedReasoningUsage(message.usage)) return;
684
684
  const estimated = estimateReasoningTokens(message.content);
685
685
  const reportedOutput = message.usage.output;
@@ -130,7 +130,7 @@ export function residentTagProtected(tags: ReadonlyArray<string> | undefined): b
130
130
  const clioLoaded = new Map<string, Set<string>>();
131
131
 
132
132
  /** Record that Clio loaded `modelId` on the target identified by `targetKey`. */
133
- export function markClioLoaded(targetKey: string, modelId: string): void {
133
+ function markClioLoaded(targetKey: string, modelId: string): void {
134
134
  let set = clioLoaded.get(targetKey);
135
135
  if (!set) {
136
136
  set = new Set();
@@ -156,12 +156,6 @@ function isClioLoaded(targetKey: string, entry: ResidentModelInfo): boolean {
156
156
  export const RECONCILE_TTL_MS = 60_000;
157
157
  const reconcileCache = new Map<string, { modelId: string; decision: "reconcile" | "observe"; at: number }>();
158
158
 
159
- /** Test-only: clear the cross-call Clio-loaded registry and TTL cache. */
160
- export function resetResidencyState(): void {
161
- clioLoaded.clear();
162
- reconcileCache.clear();
163
- }
164
-
165
159
  // --- residency decision (pure) ----------------------------------------------
166
160
 
167
161
  /**
@@ -301,7 +295,7 @@ function evictionNotice(facts: ResidencyFacts, entry: ResidentClassified): Resid
301
295
  * tiers, eviction order, and every notice case directly testable without a
302
296
  * server.
303
297
  */
304
- export function decideResidency(facts: ResidencyFacts): ResidencyPlan {
298
+ function decideResidency(facts: ResidencyFacts): ResidencyPlan {
305
299
  const notices: ResidencyNotice[] = [];
306
300
  const keepResident = facts.resident.some((entry) => residentMatchesKeep(entry, facts.keepModelId));
307
301
  const others = facts.resident.filter((entry) => !residentMatchesKeep(entry, facts.keepModelId));
@@ -801,7 +795,7 @@ export function residencyManaged(env: NodeJS.ProcessEnv = process.env): boolean
801
795
  * only sets the metadata field when settings carry an explicit value.
802
796
  */
803
797
  export function residencyManagedFor(
804
- lifecycle: "user-managed" | "clio-managed" | undefined,
798
+ lifecycle: "user-managed" | "clio-coder-managed" | undefined,
805
799
  env: NodeJS.ProcessEnv = process.env,
806
800
  ): boolean {
807
801
  if (lifecycle === "user-managed") return false;
@@ -66,20 +66,9 @@ export type ClaudeAgentSdkLoader = () => Promise<ClaudeAgentSdkModule>;
66
66
  // runtime `import()`.
67
67
  const realLoader: ClaudeAgentSdkLoader = async () => await import("@anthropic-ai/claude-agent-sdk");
68
68
 
69
- let loader: ClaudeAgentSdkLoader = realLoader;
69
+ const loader: ClaudeAgentSdkLoader = realLoader;
70
70
  let cached: ClaudeAgentSdkModule | null = null;
71
71
 
72
- /**
73
- * Swap the import used by {@link loadClaudeAgentSdk}. The absence of a 224MB
74
- * optional package cannot be staged inside a normal test process, so the
75
- * contract test intercepts the import here; passing `null` restores the real
76
- * one and clears the cache.
77
- */
78
- export function setClaudeAgentSdkLoader(next: ClaudeAgentSdkLoader | null): void {
79
- loader = next ?? realLoader;
80
- cached = null;
81
- }
82
-
83
72
  /**
84
73
  * Resolve the SDK, or fail with {@link ClaudeAgentSdkUnavailableError}. A load
85
74
  * error that is not a resolution failure (a broken install, a throwing module
@@ -53,11 +53,11 @@ async function* oneSdkUserMessage(message: SDKUserMessage): AsyncIterable<SDKUse
53
53
  yield message;
54
54
  }
55
55
 
56
- export function claudeSdkPermissionModeForAutonomy(_level: AutonomyLevel | undefined): PermissionMode {
56
+ function claudeSdkPermissionModeForAutonomy(_level: AutonomyLevel | undefined): PermissionMode {
57
57
  return "default";
58
58
  }
59
59
 
60
- export function claudeSdkToolsForAutonomy(_level: AutonomyLevel | undefined): NonNullable<Options["tools"]> {
60
+ function claudeSdkToolsForAutonomy(_level: AutonomyLevel | undefined): NonNullable<Options["tools"]> {
61
61
  return DEFAULT_CLAUDE_TOOLS;
62
62
  }
63
63
 
@@ -314,7 +314,7 @@ export interface ClaudeWorkerBudgetGate {
314
314
  }
315
315
 
316
316
  /** Canonical call counter shared by the SDK's PreToolUse/canUseTool mediation seam. */
317
- export function createClaudeWorkerBudgetGate(
317
+ function createClaudeWorkerBudgetGate(
318
318
  budget: WorkerBudget,
319
319
  onBoundary: () => void,
320
320
  onHardCap: () => void,
@@ -438,7 +438,7 @@ function decideToolUse(
438
438
  }
439
439
 
440
440
  /** Share one logical permission decision across the SDK hook/callback pair. */
441
- export function decideClaudeSdkToolUseOnce(
441
+ function decideClaudeSdkToolUseOnce(
442
442
  handled: Map<string, ClaudeToolPermissionDecision>,
443
443
  toolUseID: string | undefined,
444
444
  decide: () => ClaudeToolPermissionDecision,
@@ -536,7 +536,7 @@ export function startClaudeSdkWorkerRun(input: WorkerRunInput, emit: WorkerEvent
536
536
  () => {},
537
537
  () => {
538
538
  budgetFailure = true;
539
- emit({ type: "clio_run_outcome", payload: { outcomeCode: "worker_tool_call_cap_exhausted" } });
539
+ emit({ type: "clio_coder_run_outcome", payload: { outcomeCode: "worker_tool_call_cap_exhausted" } });
540
540
  abort();
541
541
  },
542
542
  resolveDeliveryTools(allowedToolSet, input.product),
@@ -563,7 +563,7 @@ export function startClaudeSdkWorkerRun(input: WorkerRunInput, emit: WorkerEvent
563
563
  if (hookInput.hook_event_name !== "PostToolBatch" || !budgetGate?.phaseReached()) return { continue: true };
564
564
  if (input.budget?.synthesis === false) {
565
565
  budgetFailure = true;
566
- emit({ type: "clio_run_outcome", payload: { outcomeCode: "worker_tool_call_cap_exhausted" } });
566
+ emit({ type: "clio_coder_run_outcome", payload: { outcomeCode: "worker_tool_call_cap_exhausted" } });
567
567
  return { continue: false, stopReason: `worker agent budget reached (${input.budget.toolCalls})` };
568
568
  }
569
569
  return {
@@ -54,7 +54,7 @@ function buildClaudeCodePrompt(input: WorkerRunInput): string {
54
54
  return parts.join("\n\n");
55
55
  }
56
56
 
57
- export function buildClaudeCodeArgs(input: WorkerRunInput): string[] {
57
+ function buildClaudeCodeArgs(input: WorkerRunInput): string[] {
58
58
  assertToolProfileEnforceable(input.toolProfile, "claude-code");
59
59
  const permission = claudeSubprocessPermissionConfigForAutonomy(input.autonomy);
60
60
  const args = [
@@ -227,7 +227,7 @@ function budgetDenial(
227
227
  };
228
228
  }
229
229
 
230
- export function evaluateClaudeToolPermission(input: EvaluateClaudeToolPermissionInput): ClaudeToolPermissionDecision {
230
+ function evaluateClaudeToolPermission(input: EvaluateClaudeToolPermissionInput): ClaudeToolPermissionDecision {
231
231
  const mapped = mapClaudeToolCall(input.toolName, input.input, input.cwd);
232
232
  const call: ClassifierCall = { tool: mapped.clioToolName, args: mapped.args };
233
233
  const attempt = input.budgetGate?.attempt(mapped.clioToolName);
@@ -346,7 +346,7 @@ function emitToolFinish(
346
346
  const finalReasonCode = reasonCode ?? decision.policy?.reasonCode;
347
347
  if (finalReasonCode !== undefined) event.reasonCode = finalReasonCode;
348
348
  if (decision.policy?.policySource !== undefined) event.policySource = decision.policy.policySource;
349
- emit({ type: "clio_tool_finish", payload: event });
349
+ emit({ type: "clio_coder_tool_finish", payload: event });
350
350
  }
351
351
 
352
352
  export function emitClaudeToolPermissionDecision(input: EmitClaudeToolPermissionInput): ClaudeToolPermissionDecision {
@@ -366,7 +366,7 @@ export function emitClaudeToolPermissionDecision(input: EmitClaudeToolPermission
366
366
  startedAt,
367
367
  ...(action !== null ? { action } : {}),
368
368
  };
369
- input.emit({ type: "clio_tool_start", payload: start });
369
+ input.emit({ type: "clio_coder_tool_start", payload: start });
370
370
  if (decision.kind === "allow") {
371
371
  emitToolFinish(
372
372
  input.emit,
@@ -383,7 +383,7 @@ export function emitClaudeToolPermissionDecision(input: EmitClaudeToolPermission
383
383
  if (decision.permissionRequired) {
384
384
  const mode = input.onPermission ?? "deny";
385
385
  input.emit({
386
- type: "clio_permission_resolved",
386
+ type: "clio_coder_permission_resolved",
387
387
  payload: {
388
388
  tool: decision.mapped.clioToolName,
389
389
  actionClass: decision.decision.classification.actionClass,
@@ -352,11 +352,6 @@ export function isLoopGuardSynthesisBackstopReason(reason: string): boolean {
352
352
  return /^loop guard: tool calls stayed disabled and .+ was called again instead of answering/.test(reason);
353
353
  }
354
354
 
355
- /** Worker lifetime tool-call cap: env > settings guardrails > default. */
356
- export function readWorkerToolCallCap(env: NodeJS.ProcessEnv = process.env): number {
357
- return resolveGuardrail("workerToolCallCap", env);
358
- }
359
-
360
355
  /** Soft/hard per-turn tool-call budget for the interactive orchestrator. */
361
356
  export interface OrchTurnToolCallBudget {
362
357
  /** Distinct calls in a turn that trigger the re-plan nudge. */
@@ -39,6 +39,7 @@ import {
39
39
  } from "node:fs";
40
40
  import { dirname, join, resolve } from "node:path";
41
41
  import { StringDecoder } from "node:string_decoder";
42
+ import { normalizeClioCoderEventTree } from "../core/naming-events.js";
42
43
  import { readClioVersion, readPiMonoVersion } from "../core/package-root.js";
43
44
  import { assertSafeId } from "../core/safe-id.js";
44
45
  import { fsyncDirectory, safeResourceWrite } from "../core/safe-resource-write.js";
@@ -52,7 +53,7 @@ export interface ClioSessionMeta {
52
53
  endedAt: string | null;
53
54
  model: string | null;
54
55
  target: string | null;
55
- clioVersion: string;
56
+ clioCoderVersion: string;
56
57
  piMonoVersion: string;
57
58
  platform: string;
58
59
  nodeVersion: string;
@@ -181,7 +182,7 @@ function defaultSessionJsonlWarning(warning: SessionJsonlWarning): void {
181
182
  if (reportedSessionJsonlWarnings.has(key)) return;
182
183
  if (reportedSessionJsonlWarnings.size >= REPORTED_SESSION_JSONL_WARNING_LIMIT) reportedSessionJsonlWarnings.clear();
183
184
  reportedSessionJsonlWarnings.add(key);
184
- process.stderr.write(`[clio:session] ${warning.path}:${warning.line}: ${warning.message}\n`);
185
+ process.stderr.write(`[clio-coder:session] ${warning.path}:${warning.line}: ${warning.message}\n`);
185
186
  }
186
187
 
187
188
  function serializeJsonl(entries: ReadonlyArray<unknown>): string {
@@ -201,7 +202,7 @@ function serializeJsonl(entries: ReadonlyArray<unknown>): string {
201
202
  * A crash or interruption before the rename leaves the original target
202
203
  * untouched; when no target exists yet, recovery readers can promote the tmp.
203
204
  */
204
- export function writeJsonlFileAtomic(
205
+ function writeJsonlFileAtomic(
205
206
  targetPath: string,
206
207
  entries: ReadonlyArray<unknown>,
207
208
  options: SessionJsonlWriteOptions = {},
@@ -246,7 +247,7 @@ function parseSessionJsonlLine(
246
247
  ): void {
247
248
  if (line.trim().length === 0) return;
248
249
  try {
249
- entries.push(JSON.parse(line) as unknown);
250
+ entries.push(normalizeClioCoderEventTree(JSON.parse(line) as unknown));
250
251
  } catch (error) {
251
252
  const message = error instanceof Error ? error.message : String(error);
252
253
  warn({ path: readPath, line: lineNumber, message: `invalid JSON skipped: ${message}` });
@@ -319,7 +320,7 @@ function readExactAt(fd: number, buffer: Buffer, position: number, length: numbe
319
320
  * Behaviour matches `readSessionFileEntries` line-for-line over the tail it
320
321
  * returns: same `parseSessionJsonlLine` (torn-tail tolerant), same warning sink.
321
322
  */
322
- export function readSessionFileTailEntries(
323
+ function readSessionFileTailEntries(
323
324
  path: string,
324
325
  maxEntries: number,
325
326
  options: SessionJsonlReadOptions & { chunkBytes?: number } = {},
@@ -461,7 +462,7 @@ function buildMeta(input: { cwd: string; model?: string | null; target?: string
461
462
  endedAt: null,
462
463
  model: input.model ?? null,
463
464
  target: input.target ?? null,
464
- clioVersion: readClioVersion(),
465
+ clioCoderVersion: readClioVersion(),
465
466
  piMonoVersion: readPiMonoVersion(),
466
467
  platform: process.platform,
467
468
  nodeVersion: process.version,
@@ -471,7 +472,13 @@ function buildMeta(input: { cwd: string; model?: string | null; target?: string
471
472
 
472
473
  function readMetaFile(path: string): ClioSessionMeta {
473
474
  const raw = readFileSync(path, "utf8");
474
- return JSON.parse(raw) as ClioSessionMeta;
475
+ const parsed = JSON.parse(raw) as Record<string, unknown>;
476
+ const clioCoderVersion = parsed.clioCoderVersion ?? parsed.clioVersion;
477
+ if (typeof clioCoderVersion !== "string" || clioCoderVersion.length === 0) {
478
+ throw new Error(`session metadata has no Clio Coder version: ${path}`);
479
+ }
480
+ const { clioVersion: _legacyVersion, ...canonical } = parsed;
481
+ return { ...canonical, clioCoderVersion } as unknown as ClioSessionMeta;
475
482
  }
476
483
 
477
484
  const TURN_KINDS: readonly ClioTurnRecord["kind"][] = [
@@ -18,4 +18,4 @@
18
18
  * here and not in src/cli/.
19
19
  */
20
20
 
21
- export { ProcessTerminal, TuiAltScreen, truncateToWidth } from "@earendil-works/pi-tui";
21
+ export { ProcessTerminal, TuiAltScreen, truncateToWidth, visibleWidth, wrapTextWithAnsi } from "@earendil-works/pi-tui";
@@ -9,18 +9,18 @@ import type { RunOutcomeCode } from "../domains/dispatch/types.js";
9
9
  import type { ToolFinishEvent, ToolStartEvent } from "../tools/agent-tools.js";
10
10
 
11
11
  export interface ClioToolStartEvent {
12
- type: "clio_tool_start";
12
+ type: "clio_coder_tool_start";
13
13
  payload: ToolStartEvent;
14
14
  }
15
15
 
16
16
  export interface ClioToolFinishEvent {
17
- type: "clio_tool_finish";
17
+ type: "clio_coder_tool_finish";
18
18
  payload: ToolFinishEvent;
19
19
  }
20
20
 
21
21
  /** Emitted when the worker's non-stall policy resolves a permission-requiring tool call. */
22
22
  export interface ClioPermissionResolvedEvent {
23
- type: "clio_permission_resolved";
23
+ type: "clio_coder_permission_resolved";
24
24
  payload: {
25
25
  tool: string;
26
26
  actionClass: string;
@@ -47,7 +47,7 @@ export interface ClioPermissionResolvedEvent {
47
47
  * on stdin (or the timeout fallback) resolves it.
48
48
  */
49
49
  export interface ClioPermissionEscalatedEvent {
50
- type: "clio_permission_escalated";
50
+ type: "clio_coder_permission_escalated";
51
51
  payload: {
52
52
  requestId: string;
53
53
  tool: string;
@@ -78,7 +78,7 @@ export interface ClioPermissionEscalatedEvent {
78
78
  * is the delivery ack for operator surfaces.
79
79
  */
80
80
  export interface ClioSteerReceivedEvent {
81
- type: "clio_steer_received";
81
+ type: "clio_coder_steer_received";
82
82
  payload: {
83
83
  chars: number;
84
84
  /** Exact parent-side steering provenance entry this acceptance closes. */
@@ -88,7 +88,7 @@ export interface ClioSteerReceivedEvent {
88
88
 
89
89
  /** Machine-readable terminal classification, emitted where the condition is known. */
90
90
  export interface ClioRunOutcomeEvent {
91
- type: "clio_run_outcome";
91
+ type: "clio_coder_run_outcome";
92
92
  payload: { outcomeCode: RunOutcomeCode };
93
93
  }
94
94
 
@@ -13,6 +13,7 @@ import path from "node:path";
13
13
  import { validateSettingsFile } from "../core/config.js";
14
14
  import {
15
15
  configureGuardrails,
16
+ guardrailValuesFromSettings,
16
17
  isWorkerToolCallCapExceededReason,
17
18
  isWorkerToolCallCapSynthesisReason,
18
19
  } from "../core/guardrails.js";
@@ -376,11 +377,11 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
376
377
  // non-throwing read: a worker must not abort over a settings issue the parent
377
378
  // already surfaced.
378
379
  const workerSettings = validateSettingsFile().settings;
379
- setGlobalDefaultMaxOutputTokens(workerSettings.defaults.maxTokens);
380
+ setGlobalDefaultMaxOutputTokens(workerSettings.chat.maxOutputTokens);
380
381
  // Same mirroring for guardrail policy: the worker's loop-guard cap and tool
381
382
  // byte caps resolve settings-first, so the fresh process needs the section
382
383
  // installed before any registry or tool construction reads it.
383
- configureGuardrails(workerSettings.guardrails);
384
+ configureGuardrails(guardrailValuesFromSettings(workerSettings));
384
385
  const fauxModel = registerFauxFromEnv();
385
386
  // Workers are bounded runs against an admission-verified recipe surface.
386
387
  // They have no operator to widen a missing tool, so the active surface is
@@ -548,17 +549,17 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
548
549
  );
549
550
  const telemetry: ToolTelemetry = {
550
551
  onStart(event) {
551
- emit({ type: "clio_tool_start", payload: event });
552
+ emit({ type: "clio_coder_tool_start", payload: event });
552
553
  },
553
554
  onFinish(event) {
554
- emit({ type: "clio_tool_finish", payload: event });
555
+ emit({ type: "clio_coder_tool_finish", payload: event });
555
556
  if (event.outcome !== "blocked" || typeof event.reason !== "string") return;
556
557
  // Lifetime-cap lockout: record the bound (the run must not seal as an
557
558
  // ordinary success) but do not abort. The loop guard has flipped the
558
559
  // synthesis tool lock, so the next model round runs text-only and the
559
560
  // synthesized answer still reaches message_end and the receipt.
560
561
  if (isWorkerToolCallCapSynthesisReason(event.reason)) {
561
- emit({ type: "clio_run_outcome", payload: { outcomeCode: "worker_tool_call_cap_exhausted" } });
562
+ emit({ type: "clio_coder_run_outcome", payload: { outcomeCode: "worker_tool_call_cap_exhausted" } });
562
563
  if (workerBoundFailure === null) {
563
564
  workerBoundFailure = event.reason;
564
565
  process.stderr.write(`[worker] ${event.reason}\n`);
@@ -571,7 +572,7 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
571
572
  // receipt diagnostic.
572
573
  if (isWorkerToolCallCapExceededReason(event.reason) || isLoopGuardSynthesisBackstopReason(event.reason)) {
573
574
  emit({
574
- type: "clio_run_outcome",
575
+ type: "clio_coder_run_outcome",
575
576
  payload: {
576
577
  outcomeCode: isLoopGuardSynthesisBackstopReason(event.reason)
577
578
  ? "loop_guard_tools_disabled_exhausted"
@@ -717,7 +718,7 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
717
718
  for (const message of repair) agent.followUp(message as unknown as AgentMessage);
718
719
  } else if (workerBoundFailure === null) {
719
720
  workerBoundFailure = `result contract failed after ${RESULT_CONTRACT_REPAIR_LIMIT} bounded repair rounds: ${violation}`;
720
- emit({ type: "clio_run_outcome", payload: { outcomeCode: "result_contract_exhausted" } });
721
+ emit({ type: "clio_coder_run_outcome", payload: { outcomeCode: "result_contract_exhausted" } });
721
722
  process.stderr.write(`[worker] ${workerBoundFailure}\n`);
722
723
  }
723
724
  }
@@ -802,7 +803,7 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
802
803
  answeredEscalations.set(active.callKey, { decision, requestId });
803
804
  if (decision === "approve") {
804
805
  emit({
805
- type: "clio_permission_resolved",
806
+ type: "clio_coder_permission_resolved",
806
807
  payload: {
807
808
  tool: active.tool,
808
809
  actionClass: active.actionClass,
@@ -831,7 +832,7 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
831
832
  ? `permission required for ${active.tool} (${active.actionClass}); ${denialContext} and workers fallback=fail ends this run`
832
833
  : `permission denied by ${source === "timeout" ? "escalation timeout fallback" : "operator"}: ${active.tool} requires ${active.actionClass} confirmation`;
833
834
  emit({
834
- type: "clio_permission_resolved",
835
+ type: "clio_coder_permission_resolved",
835
836
  payload: {
836
837
  tool: active.tool,
837
838
  actionClass: active.actionClass,
@@ -857,7 +858,7 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
857
858
  const active = activeEscalation;
858
859
  if (!active) return;
859
860
  emit({
860
- type: "clio_permission_resolved",
861
+ type: "clio_coder_permission_resolved",
861
862
  payload: {
862
863
  tool: active.tool,
863
864
  actionClass: active.actionClass,
@@ -882,7 +883,7 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
882
883
  ? `operator approved an identical ${call.tool} call earlier in this run (request ${remembered.requestId}); the answer stands without a new prompt`
883
884
  : `permission denied by operator: an identical ${call.tool} call was already denied earlier in this run (request ${remembered.requestId}); the answer stands, so do not repeat this call`;
884
885
  emit({
885
- type: "clio_permission_resolved",
886
+ type: "clio_coder_permission_resolved",
886
887
  payload: {
887
888
  tool: call.tool,
888
889
  actionClass,
@@ -916,7 +917,7 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
916
917
  // as type-and-size summaries, and the args stay inside the worker.
917
918
  const target = describeCallTarget(call.tool, call.args);
918
919
  emit({
919
- type: "clio_permission_escalated",
920
+ type: "clio_coder_permission_escalated",
920
921
  payload: {
921
922
  requestId,
922
923
  tool: call.tool,
@@ -937,7 +938,7 @@ export function startWorkerRun(input: WorkerRunInput, emit: WorkerEventEmit): Wo
937
938
  }
938
939
  const reason = onPermission === "fail" ? failReason(call.tool, actionClass) : denyReason(call.tool, actionClass);
939
940
  emit({
940
- type: "clio_permission_resolved",
941
+ type: "clio_coder_permission_resolved",
941
942
  payload: {
942
943
  tool: call.tool,
943
944
  actionClass,