@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
@@ -95,7 +95,7 @@ export async function loadDomains(
95
95
  // render the failure, so the structured line must land first.
96
96
  const message = error instanceof Error ? error.message : String(error);
97
97
  (options.diagnostic ?? ((text: string) => process.stderr.write(text)))(
98
- `[clio:domain] load failed: ${name}: ${message}\n`,
98
+ `[clio-coder:domain] load failed: ${name}: ${message}\n`,
99
99
  );
100
100
  throw new DomainLoadError(name, error);
101
101
  }
@@ -111,15 +111,17 @@ export async function loadDomains(
111
111
  const t0 = debug ? process.hrtime.bigint() : 0n;
112
112
  const completed = await runWithBudget(stopFn, budgetMs, (err) => {
113
113
  const message = err instanceof Error ? err.message : String(err);
114
- writeShutdownNotice(`[clio:domain-loader] ${name}.stop() failed: ${message}`);
114
+ writeShutdownNotice(`[clio-coder:domain-loader] ${name}.stop() failed: ${message}`);
115
115
  if (debug && err instanceof Error && err.stack) process.stderr.write(`${err.stack}\n`);
116
116
  });
117
117
  if (!completed) {
118
- writeShutdownNotice(`[clio:domain-loader] ${name}.stop() exceeded ${budgetMs}ms budget; abandoning`);
118
+ writeShutdownNotice(`[clio-coder:domain-loader] ${name}.stop() exceeded ${budgetMs}ms budget; abandoning`);
119
119
  }
120
120
  if (debug) {
121
121
  const dt = Number(process.hrtime.bigint() - t0) / 1e6;
122
- process.stderr.write(`[clio:shutdown] domain.${name} ${dt.toFixed(1)}ms${completed ? "" : " (timed out)"}\n`);
122
+ process.stderr.write(
123
+ `[clio-coder:shutdown] domain.${name} ${dt.toFixed(1)}ms${completed ? "" : " (timed out)"}\n`,
124
+ );
123
125
  }
124
126
  }
125
127
  };
@@ -40,7 +40,7 @@ type StoredListener = (payload: never) => void | Promise<void>;
40
40
 
41
41
  function reportListenerError(channel: string, error: unknown): void {
42
42
  const message = error instanceof Error ? (error.stack ?? error.message) : String(error);
43
- console.error(`[clio:event-bus] Listener crashed on ${channel}: ${message}`);
43
+ console.error(`[clio-coder:event-bus] Listener crashed on ${channel}: ${message}`);
44
44
  }
45
45
 
46
46
  export function createSafeEventBus(): SafeEventBus {
@@ -25,9 +25,70 @@ export interface FileReferenceOptions {
25
25
  autoResizeImages?: boolean;
26
26
  }
27
27
 
28
- const FILE_REF = /(^|\s)@(\S+)/g;
29
28
  const DEFAULT_IMAGE_MAX_BASE64_BYTES = 4.5 * 1024 * 1024;
30
29
 
30
+ interface InlineFileReference {
31
+ start: number;
32
+ end: number;
33
+ raw: string;
34
+ fileArg: string;
35
+ quoted: boolean;
36
+ }
37
+
38
+ function decodeQuotedFileArg(input: string, start: number, quote: '"' | "'"): { value: string; end: number } | null {
39
+ let value = "";
40
+ let escaped = false;
41
+ for (let index = start; index < input.length; index += 1) {
42
+ const character = input[index] ?? "";
43
+ if (escaped) {
44
+ value += character;
45
+ escaped = false;
46
+ continue;
47
+ }
48
+ if (character === "\\") {
49
+ escaped = true;
50
+ continue;
51
+ }
52
+ if (character === quote) return { value, end: index + 1 };
53
+ value += character;
54
+ }
55
+ return null;
56
+ }
57
+
58
+ /** Scanner shared by sync and async expansion; quoted references may contain spaces. */
59
+ function inlineFileReferences(input: string): InlineFileReference[] {
60
+ const references: InlineFileReference[] = [];
61
+ for (let start = 0; start < input.length; start += 1) {
62
+ if (input[start] !== "@" || (start > 0 && !/\s/u.test(input[start - 1] ?? ""))) continue;
63
+ const next = input[start + 1];
64
+ if (next === '"' || next === "'") {
65
+ const decoded = decodeQuotedFileArg(input, start + 2, next);
66
+ if (!decoded || decoded.value.length === 0) continue;
67
+ references.push({
68
+ start,
69
+ end: decoded.end,
70
+ raw: input.slice(start, decoded.end),
71
+ fileArg: decoded.value,
72
+ quoted: true,
73
+ });
74
+ start = decoded.end - 1;
75
+ continue;
76
+ }
77
+ let end = start + 1;
78
+ while (end < input.length && !/\s/u.test(input[end] ?? "")) end += 1;
79
+ if (end === start + 1) continue;
80
+ references.push({
81
+ start,
82
+ end,
83
+ raw: input.slice(start, end),
84
+ fileArg: input.slice(start + 1, end),
85
+ quoted: false,
86
+ });
87
+ start = end - 1;
88
+ }
89
+ return references;
90
+ }
91
+
31
92
  function renderTextFile(filePath: string, content: string): string {
32
93
  return `<file name="${filePath}">\n${content}\n</file>\n`;
33
94
  }
@@ -64,42 +125,6 @@ function detectSupportedImageMimeType(bytes: Buffer): string | null {
64
125
  return null;
65
126
  }
66
127
 
67
- function readFileReference(fileArg: string, options: FileReferenceOptions): FileReferenceResult {
68
- const filePath = expandConfigPath(fileArg, options.cwd === undefined ? undefined : { cwd: options.cwd });
69
- if (!existsSync(filePath)) {
70
- if (options.missing === "leave") return result(`@${fileArg}`);
71
- return result("", [{ type: "error", message: `file not found: ${filePath}`, path: filePath }]);
72
- }
73
- let stat: ReturnType<typeof statSync>;
74
- try {
75
- stat = statSync(filePath);
76
- } catch (err) {
77
- const reason = err instanceof Error ? err.message : String(err);
78
- return result("", [{ type: "error", message: `file could not be stat'ed: ${reason}`, path: filePath }]);
79
- }
80
- if (!stat.isFile()) {
81
- return result("", [{ type: "error", message: `not a file: ${filePath}`, path: filePath }]);
82
- }
83
- if (stat.size === 0) return result("", [], [], [filePath]);
84
- try {
85
- const bytes = readFileSync(filePath);
86
- const imageMimeType = detectSupportedImageMimeType(bytes);
87
- if (imageMimeType) {
88
- if (options.includeImages !== true) return result(`@${fileArg}`);
89
- return result(
90
- renderImageFile(filePath),
91
- [],
92
- [{ type: "image", mimeType: imageMimeType, data: bytes.toString("base64") }],
93
- [filePath],
94
- );
95
- }
96
- return result(renderTextFile(filePath, bytes.toString("utf8")), [], [], [filePath]);
97
- } catch (err) {
98
- const reason = err instanceof Error ? err.message : String(err);
99
- return result("", [{ type: "error", message: `file could not be read: ${reason}`, path: filePath }]);
100
- }
101
- }
102
-
103
128
  async function readFileReferenceAsync(fileArg: string, options: FileReferenceOptions): Promise<FileReferenceResult> {
104
129
  const filePath = expandConfigPath(fileArg, options.cwd === undefined ? undefined : { cwd: options.cwd });
105
130
  if (!existsSync(filePath)) {
@@ -191,39 +216,6 @@ function splitTrailingPunctuation(token: string): { fileArg: string; suffix: str
191
216
  return { fileArg: candidate, suffix };
192
217
  }
193
218
 
194
- export function expandInlineFileReferences(input: string, options: FileReferenceOptions = {}): FileReferenceResult {
195
- const diagnostics: FileReferenceDiagnostic[] = [];
196
- const images: ImageContent[] = [];
197
- const referencedPaths: string[] = [];
198
- const text = input.replace(FILE_REF, (match: string, prefix: string, token: string) => {
199
- const direct = readFileReference(token, {
200
- ...options,
201
- missing: "leave",
202
- includeImages: options.includeImages === true,
203
- });
204
- if (direct.text !== `@${token}`) {
205
- diagnostics.push(...direct.diagnostics);
206
- images.push(...direct.images);
207
- referencedPaths.push(...direct.referencedPaths);
208
- return `${prefix}${direct.text}`;
209
- }
210
-
211
- const { fileArg, suffix } = splitTrailingPunctuation(token);
212
- if (fileArg === token) return match;
213
- const stripped = readFileReference(fileArg, {
214
- ...options,
215
- missing: "leave",
216
- includeImages: options.includeImages === true,
217
- });
218
- if (stripped.text === `@${fileArg}`) return match;
219
- diagnostics.push(...stripped.diagnostics);
220
- images.push(...stripped.images);
221
- referencedPaths.push(...stripped.referencedPaths);
222
- return `${prefix}${stripped.text}${suffix}`;
223
- });
224
- return { text, images, diagnostics, referencedPaths };
225
- }
226
-
227
219
  export async function expandInlineFileReferencesAsync(
228
220
  input: string,
229
221
  options: FileReferenceOptions = {},
@@ -233,31 +225,29 @@ export async function expandInlineFileReferencesAsync(
233
225
  const referencedPaths: string[] = [];
234
226
  let text = "";
235
227
  let lastIndex = 0;
236
- for (const match of input.matchAll(FILE_REF)) {
237
- const index = match.index ?? 0;
238
- const full = match[0] ?? "";
239
- const prefix = match[1] ?? "";
240
- const token = match[2] ?? "";
241
- text += input.slice(lastIndex, index);
228
+ for (const reference of inlineFileReferences(input)) {
229
+ text += input.slice(lastIndex, reference.start);
242
230
 
243
- const direct = await readFileReferenceAsync(token, {
231
+ const direct = await readFileReferenceAsync(reference.fileArg, {
244
232
  ...options,
245
233
  missing: "leave",
246
234
  includeImages: options.includeImages === true,
247
235
  });
248
- if (direct.text !== `@${token}`) {
236
+ if (direct.text !== `@${reference.fileArg}`) {
249
237
  diagnostics.push(...direct.diagnostics);
250
238
  images.push(...direct.images);
251
239
  referencedPaths.push(...direct.referencedPaths);
252
- text += `${prefix}${direct.text}`;
253
- lastIndex = index + full.length;
240
+ text += direct.text;
241
+ lastIndex = reference.end;
254
242
  continue;
255
243
  }
256
244
 
257
- const { fileArg, suffix } = splitTrailingPunctuation(token);
258
- if (fileArg === token) {
259
- text += full;
260
- lastIndex = index + full.length;
245
+ const { fileArg, suffix } = reference.quoted
246
+ ? { fileArg: reference.fileArg, suffix: "" }
247
+ : splitTrailingPunctuation(reference.fileArg);
248
+ if (fileArg === reference.fileArg) {
249
+ text += reference.raw;
250
+ lastIndex = reference.end;
261
251
  continue;
262
252
  }
263
253
 
@@ -267,15 +257,15 @@ export async function expandInlineFileReferencesAsync(
267
257
  includeImages: options.includeImages === true,
268
258
  });
269
259
  if (stripped.text === `@${fileArg}`) {
270
- text += full;
271
- lastIndex = index + full.length;
260
+ text += reference.raw;
261
+ lastIndex = reference.end;
272
262
  continue;
273
263
  }
274
264
  diagnostics.push(...stripped.diagnostics);
275
265
  images.push(...stripped.images);
276
266
  referencedPaths.push(...stripped.referencedPaths);
277
- text += `${prefix}${stripped.text}${suffix}`;
278
- lastIndex = index + full.length;
267
+ text += `${stripped.text}${suffix}`;
268
+ lastIndex = reference.end;
279
269
  }
280
270
  text += input.slice(lastIndex);
281
271
  return { text, images, diagnostics, referencedPaths };
@@ -63,7 +63,7 @@ export interface ManagedCommitAttributionEnvironment {
63
63
  export function reportCommitAttributionDiagnostic(diagnostic: string | null): void {
64
64
  if (diagnostic === null || reportedDiagnostics.has(diagnostic)) return;
65
65
  reportedDiagnostics.add(diagnostic);
66
- process.stderr.write(`[clio:attribution] ${diagnostic}\n`);
66
+ process.stderr.write(`[clio-coder:attribution] ${diagnostic}\n`);
67
67
  }
68
68
 
69
69
  export function setGitCommitAttributionEnabled(enabled: boolean): void {
@@ -74,12 +74,6 @@ export function gitCommitAttributionEnabled(source: NodeJS.ProcessEnv = process.
74
74
  return source[CLIO_GIT_COMMITS_ENABLED_ENV] !== "0";
75
75
  }
76
76
 
77
- /** Forget cached repository probes and the installed managed hooks directory. */
78
- export function resetGitCommitAttributionCachesForTests(): void {
79
- probeCache.clear();
80
- installedHooksDirectory = null;
81
- }
82
-
83
77
  function boundedDiagnostic(message: string): string {
84
78
  const folded = message.replace(/\s+/gu, " ").trim();
85
79
  return folded.length <= DIAGNOSTIC_MAX_CHARS ? folded : `${folded.slice(0, DIAGNOSTIC_MAX_CHARS - 3)}...`;
@@ -171,7 +165,7 @@ hook_name=$(basename "$0")
171
165
  base_count=$${CONFIG_BASE_COUNT_ENV}
172
166
  case "$base_count" in
173
167
  '' | *[!0-9]*)
174
- printf '%s\\n' '[clio:attribution] invalid managed hook environment' >&2
168
+ printf '%s\\n' '[clio-coder:attribution] invalid managed hook environment' >&2
175
169
  exit 0
176
170
  ;;
177
171
  0) unset GIT_CONFIG_COUNT ;;
@@ -241,7 +235,7 @@ has_trailer() {
241
235
  append_trailer() {
242
236
  if has_trailer "$1"; then return 0; fi
243
237
  git interpret-trailers --in-place --if-exists=addIfDifferent --trailer "$1" "$message_file" ||
244
- printf '%s\\n' '[clio:attribution] git interpret-trailers failed; commit left as written' >&2
238
+ printf '%s\\n' '[clio-coder:attribution] git interpret-trailers failed; commit left as written' >&2
245
239
  }
246
240
 
247
241
  if [ "$${ASSISTED_ENV}" = '1' ] || [ "$${AUTHORED_ENV}" = '1' ]; then
@@ -76,6 +76,30 @@ export const GUARDRAIL_ENV_VARS: Readonly<Record<keyof GuardrailValues, string>>
76
76
  internalDispatchTimeoutMs: "CLIO_CODER_INTERNAL_DISPATCH_TIMEOUT_MS",
77
77
  };
78
78
 
79
+ /** Project canonical v2 settings leaves onto the process-local guardrail registry. */
80
+ export function guardrailValuesFromSettings(settings: {
81
+ safety: {
82
+ limits: {
83
+ chatToolCallsPerTurn: number;
84
+ readBytesPerCall: number;
85
+ observationBytesPerTurn: number;
86
+ };
87
+ };
88
+ fleet: {
89
+ limits: { toolCallsPerRun: number; internalRunTimeoutMs: number };
90
+ history: { maxRuns: number };
91
+ };
92
+ }): GuardrailValues {
93
+ return {
94
+ turnToolCallBudget: settings.safety.limits.chatToolCallsPerTurn,
95
+ workerToolCallCap: settings.fleet.limits.toolCallsPerRun,
96
+ maxDispatchRuns: settings.fleet.history.maxRuns,
97
+ readMaxBytes: settings.safety.limits.readBytesPerCall,
98
+ observationTurnBudgetBytes: settings.safety.limits.observationBytesPerTurn,
99
+ internalDispatchTimeoutMs: settings.fleet.limits.internalRunTimeoutMs,
100
+ };
101
+ }
102
+
79
103
  /**
80
104
  * Older env spellings that still read. `CLIO_CODER_MAX_RUNS` was the only
81
105
  * guardrail whose variable was not the SCREAMING_SNAKE of its key, and CI
@@ -112,10 +136,6 @@ export function workerSynthesisReserveBlockReason(tool: string, remaining: numbe
112
136
  );
113
137
  }
114
138
 
115
- export function isWorkerSynthesisReserveBlockReason(reason: string): boolean {
116
- return /^workerToolCallReserve: only [1-9]\d* of [1-9]\d* tool calls remain/.test(reason);
117
- }
118
-
119
139
  export function workerToolCallCapExceededReason(cap: number): string {
120
140
  return `workerToolCallCap reached (${cap}); abort run`;
121
141
  }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Released naming aliases retained for the v0.5 and v0.6 compatibility window.
3
+ * Canonical writers must never call this helper; it exists only at read and
4
+ * protocol boundaries where an older Clio Coder installation can still be the
5
+ * producer.
6
+ */
7
+
8
+ const warned = new Set<string>();
9
+
10
+ export const LEGACY_NAMING_COMPATIBILITY_RETIREMENT = "v0.7.0";
11
+
12
+ /** Emit one deprecation diagnostic per legacy/canonical pair in this process. */
13
+ export function warnLegacyNaming(legacy: string, canonical: string): void {
14
+ const key = `${legacy}\0${canonical}`;
15
+ if (warned.has(key)) return;
16
+ warned.add(key);
17
+ process.emitWarning(
18
+ `'${legacy}' is a deprecated Clio Coder identifier; use '${canonical}'. ` +
19
+ `Legacy naming compatibility is scheduled for removal in ${LEGACY_NAMING_COMPATIBILITY_RETIREMENT}.`,
20
+ { code: "CLIO_CODER_LEGACY_NAMING", type: "DeprecationWarning" },
21
+ );
22
+ }
23
+
24
+ /** Prefer a canonical environment variable and temporarily fall back to its released alias. */
25
+ export function readNamingEnvironment(
26
+ environment: NodeJS.ProcessEnv,
27
+ canonical: string,
28
+ legacy: string,
29
+ ): string | undefined {
30
+ const current = environment[canonical]?.trim();
31
+ if (current) return current;
32
+ const fallback = environment[legacy]?.trim();
33
+ if (!fallback) return undefined;
34
+ warnLegacyNaming(legacy, canonical);
35
+ return fallback;
36
+ }
37
+
38
+ /** Parent-to-child bridge used only during the two-minor compatibility window. */
39
+ export function namingCompatibilityEnvironment(
40
+ canonical: string,
41
+ legacy: string,
42
+ value: string,
43
+ ): Record<string, string> {
44
+ return { [canonical]: value, [legacy]: value };
45
+ }
@@ -0,0 +1,62 @@
1
+ const CLIO_CODER_EVENT_SUFFIXES = new Set([
2
+ "permission_escalated",
3
+ "permission_resolved",
4
+ "plan_update",
5
+ "run_outcome",
6
+ "safety_decision",
7
+ "skill_activation",
8
+ "steer_received",
9
+ "tool_activity",
10
+ "tool_finish",
11
+ "tool_start",
12
+ "usage",
13
+ "verification",
14
+ "write_record_downgraded",
15
+ ]);
16
+
17
+ /** Canonicalize one released snake-case event id without accepting arbitrary prefixes. */
18
+ export function normalizeClioCoderEventType(type: string): string {
19
+ if (!type.startsWith("clio_") || type.startsWith("clio_coder_")) return type;
20
+ const suffix = type.slice("clio_".length);
21
+ return CLIO_CODER_EVENT_SUFFIXES.has(suffix) ? `clio_coder_${suffix}` : type;
22
+ }
23
+
24
+ /** Clone one decoded event only when its top-level discriminator is legacy. */
25
+ export function normalizeClioCoderEventRecord(record: Record<string, unknown>): Record<string, unknown> {
26
+ if (typeof record.type !== "string") return record;
27
+ const type = normalizeClioCoderEventType(record.type);
28
+ return type === record.type ? record : { ...record, type };
29
+ }
30
+
31
+ /**
32
+ * Normalize legacy event discriminators in an in-memory decoded history tree.
33
+ * This never writes the source session/eval/evidence file.
34
+ */
35
+ export function normalizeClioCoderEventTree(value: unknown): unknown {
36
+ if (Array.isArray(value)) {
37
+ let changed = false;
38
+ const next = value.map((entry) => {
39
+ const normalized = normalizeClioCoderEventTree(entry);
40
+ if (normalized !== entry) changed = true;
41
+ return normalized;
42
+ });
43
+ return changed ? next : value;
44
+ }
45
+ if (typeof value !== "object" || value === null) return value;
46
+ const record = value as Record<string, unknown>;
47
+ let changed = false;
48
+ const next: Record<string, unknown> = {};
49
+ for (const [key, entry] of Object.entries(record)) {
50
+ const normalized = normalizeClioCoderEventTree(entry);
51
+ next[key] = normalized;
52
+ if (normalized !== entry) changed = true;
53
+ }
54
+ if (typeof record.type === "string") {
55
+ const type = normalizeClioCoderEventType(record.type);
56
+ if (type !== record.type) {
57
+ next.type = type;
58
+ changed = true;
59
+ }
60
+ }
61
+ return changed ? next : value;
62
+ }
@@ -14,7 +14,7 @@ import { join } from "node:path";
14
14
  import { safeResourceWrite } from "./safe-resource-write.js";
15
15
  import { clioStateDir, stateRootRemoved } from "./xdg.js";
16
16
 
17
- export function recentModelsPath(): string {
17
+ function recentModelsPath(): string {
18
18
  return join(clioStateDir(), "recent-models.json");
19
19
  }
20
20
 
@@ -83,9 +83,3 @@ export function rememberRecentModel(ref: string, limit: number): string[] {
83
83
  }
84
84
  return next;
85
85
  }
86
-
87
- /** Test hook: clear the in-process cache after CLIO_* dir overrides change. */
88
- export function resetRecentModelsCache(): void {
89
- cache = null;
90
- cachePath = null;
91
- }
@@ -43,14 +43,10 @@ export function protectedResidencyModels(settings: ClioSettings): ProtectedModel
43
43
  if (!trimmed || byId.has(trimmed)) return;
44
44
  byId.set(trimmed, role);
45
45
  };
46
- add(settings.orchestrator.model, "chat");
47
- add(settings.background.model, "memory");
48
- add(settings.workers.default.model, "worker");
49
- for (const profile of Object.values(settings.workers.profiles ?? {})) add(profile.model, "worker");
46
+ add(settings.chat.model, "chat");
47
+ add(settings.context.memory.model, "memory");
48
+ add(settings.fleet.default.model, "worker");
49
+ for (const profile of Object.values(settings.fleet.profiles ?? {})) add(profile.model, "worker");
50
50
  for (const target of settings.targets) add(target.defaultModel, "target-default");
51
51
  return [...byId].map(([modelId, role]) => ({ modelId, role }));
52
52
  }
53
-
54
- export function protectedResidencyModelIds(settings: ClioSettings): string[] {
55
- return protectedResidencyModels(settings).map((ref) => ref.modelId);
56
- }
@@ -50,7 +50,7 @@ function warnStaticCommand(config: string, options?: ResolveConfigValueOptions):
50
50
  });
51
51
  }
52
52
 
53
- export function expandConfigValue(value: string, options?: ResolveConfigValueOptions): string {
53
+ function expandConfigValue(value: string, options?: ResolveConfigValueOptions): string {
54
54
  const sourceEnv = env(options);
55
55
  return value.replace(/\$(\w+)|\$\{([^}]+)\}/g, (match, bare: string | undefined, braced: string | undefined) => {
56
56
  const key = bare ?? braced;
@@ -101,20 +101,6 @@ export function responseModelIdObservationFromRecord(
101
101
  return { state: "legacy-difference-only", differingModelId: nonEmptyString(record.responseModel) };
102
102
  }
103
103
 
104
- /** Human vocabulary shared by usage, footer, and receipt projections. */
105
- export function responseModelIdObservationLabel(observation: ResponseModelIdObservation): string {
106
- switch (observation.state) {
107
- case "reported":
108
- return "reported";
109
- case "not-reported":
110
- return "not reported";
111
- case "not-observed":
112
- return "not observed";
113
- case "legacy-difference-only":
114
- return "legacy difference-only";
115
- }
116
- }
117
-
118
104
  /** Model id used for accounting without claiming more than the observation supports. */
119
105
  export function attributedModelId(
120
106
  observation: ResponseModelIdObservation,