@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
@@ -76,7 +76,7 @@ export interface JointAgentDimension {
76
76
  }
77
77
 
78
78
  /** A single truthful role-quality label retires task-feature priors for this tuple. */
79
- export function routePriorForAgentEvidence(
79
+ function routePriorForAgentEvidence(
80
80
  agent: JointAgentDimension,
81
81
  observations: ReadonlyArray<RouteObservation>,
82
82
  ): RoutePrior {
@@ -64,19 +64,6 @@ export interface DeclaredScopeReplacementNotice {
64
64
  message: string;
65
65
  }
66
66
 
67
- export interface LegacyScopeInferenceNotice {
68
- code: "legacy_scope_inferred" | "legacy_scope_empty";
69
- level: "warning";
70
- paths: ReadonlyArray<{
71
- path: string;
72
- policy: "working-context" | "write-boundary";
73
- provenance: DispatchPathProvenanceKind;
74
- source: DispatchPathProvenanceSource;
75
- confidence: DispatchPathConfidence;
76
- }>;
77
- message: string;
78
- }
79
-
80
67
  export type DispatchPathScopeInferenceErrorCode = "legacy_scope_path_absolute" | "legacy_scope_path_malformed";
81
68
 
82
69
  export class DispatchPathScopeInferenceError extends Error {
@@ -320,51 +307,3 @@ export function declaredScopeReplacementNotice(scope: DispatchPathScope): Declar
320
307
  )}. Those paths did not select project rules or expand worker authority.`,
321
308
  };
322
309
  }
323
-
324
- function legacyNoticePaths(scope: DispatchPathScope): LegacyScopeInferenceNotice["paths"] {
325
- const paths: Array<LegacyScopeInferenceNotice["paths"][number]> = [];
326
- for (const [policy, entries] of [
327
- ["working-context", scope.provenance.workingContextPaths],
328
- ["write-boundary", scope.provenance.writeBoundaries],
329
- ] as const) {
330
- for (const entry of entries) {
331
- for (const evidence of entry.evidence) {
332
- paths.push({
333
- path: entry.path,
334
- policy,
335
- provenance: evidence.provenance,
336
- source: evidence.source,
337
- confidence: evidence.confidence,
338
- });
339
- }
340
- }
341
- }
342
- return paths;
343
- }
344
-
345
- /** Render the operator-visible warning for a legacy scope resolution. */
346
- export function legacyScopeInferenceNotice(scope: DispatchPathScope): LegacyScopeInferenceNotice | null {
347
- if (scope.source !== "inferred") return null;
348
- const paths = legacyNoticePaths(scope);
349
- if (paths.length === 0) {
350
- return {
351
- code: "legacy_scope_empty",
352
- level: "warning",
353
- paths,
354
- message:
355
- "[dispatch scope] legacy dispatch has no declared intent and inferred no policy-bearing paths. Path-scoped rules received no inferred match input, and worker authority did not expand.",
356
- };
357
- }
358
- const rendered = paths
359
- .map(
360
- (entry) =>
361
- `${entry.policy} ${entry.path} (provenance=${entry.provenance} source=${entry.source} confidence=${entry.confidence})`,
362
- )
363
- .join("; ");
364
- return {
365
- code: "legacy_scope_inferred",
366
- level: "warning",
367
- paths,
368
- message: `[dispatch scope] legacy dispatch resolved policy-bearing scope without declared intent: ${rendered}. Review this scope before execution.`,
369
- };
370
- }
@@ -61,9 +61,9 @@ function completedReroutes(
61
61
 
62
62
  function requestedNodeId(req: DispatchRequest, settings: Readonly<ClioSettings> | undefined): string | null {
63
63
  if (req.node !== undefined && req.node.trim().length > 0) return req.node.trim();
64
- const workers = settings?.workers;
64
+ const workers = settings?.fleet;
65
65
  if (!workers) return null;
66
- const profileName = req.workerProfile ?? workers.agentBindings?.[req.agentId];
66
+ const profileName = req.workerProfile ?? workers.agentProfiles?.[req.agentId];
67
67
  if (!profileName) return null;
68
68
  const pin = workers.profiles?.[profileName]?.node;
69
69
  return pin !== undefined && pin.trim().length > 0 ? pin.trim() : null;
@@ -49,7 +49,7 @@ function canonicalJson(value: unknown): string {
49
49
  throw new Error(`response schema digest cannot represent ${typeof value}`);
50
50
  }
51
51
 
52
- export function canonicalResponseSchemaDigest(schema: Record<string, unknown>): string {
52
+ function canonicalResponseSchemaDigest(schema: Record<string, unknown>): string {
53
53
  return createHash("sha256").update(canonicalJson(schema), "utf8").digest("hex");
54
54
  }
55
55
 
@@ -123,7 +123,7 @@ export const RECEIPT_INTEGRITY_FIELD_COVERAGE = {
123
123
  dynamicHash: true,
124
124
  promptSignature: true,
125
125
  toolSignature: true,
126
- clioVersion: true,
126
+ clioCoderVersion: true,
127
127
  piMonoVersion: true,
128
128
  platform: true,
129
129
  nodeVersion: true,
@@ -172,8 +172,14 @@ function selectedReceiptFields(
172
172
  return result;
173
173
  }
174
174
 
175
- function receiptDigestFields(receipt: RunReceipt | RunReceiptDraft): Record<string, unknown> {
175
+ function receiptDigestFields(receipt: RunReceipt | RunReceiptDraft, legacyNaming = false): Record<string, unknown> {
176
176
  const result = selectedReceiptFields(receipt, RECEIPT_FIELDS);
177
+ if (legacyNaming) {
178
+ const source = receipt as unknown as Record<string, unknown>;
179
+ const version = source.clioVersion ?? source.clioCoderVersion;
180
+ delete result.clioCoderVersion;
181
+ if (version !== undefined) result.clioVersion = version;
182
+ }
177
183
  result.briefing = receipt.briefing ?? null;
178
184
  result.outcomeCode = receipt.outcomeCode ?? null;
179
185
  result.steering = receipt.steering ?? null;
@@ -227,24 +233,29 @@ function ledgerDigestFields(envelope: RunEnvelope): Record<string, unknown> {
227
233
  };
228
234
  }
229
235
 
230
- function integrityPayload(receipt: RunReceipt | RunReceiptDraft, envelope: RunEnvelope): Record<string, unknown> {
236
+ function integrityPayload(
237
+ receipt: RunReceipt | RunReceiptDraft,
238
+ envelope: RunEnvelope,
239
+ legacyNaming = false,
240
+ ): Record<string, unknown> {
231
241
  return {
232
- contract: "clio.runReceipt.integrity",
242
+ contract: legacyNaming ? "clio.runReceipt.integrity" : "clio-coder.runReceipt.integrity",
233
243
  version: RUN_RECEIPT_INTEGRITY_VERSION,
234
244
  sources: ["receipt", "run-ledger"],
235
- receipt: receiptDigestFields(receipt),
245
+ receipt: receiptDigestFields(receipt, legacyNaming),
236
246
  ledger: ledgerDigestFields(envelope),
237
247
  };
238
248
  }
239
249
 
240
- export function computeReceiptIntegrity(
250
+ function computeReceiptIntegrity(
241
251
  receipt: RunReceipt | RunReceiptDraft,
242
252
  envelope: RunEnvelope,
253
+ legacyNaming = false,
243
254
  ): RunReceiptIntegrity {
244
255
  return {
245
256
  version: RUN_RECEIPT_INTEGRITY_VERSION,
246
257
  algorithm: RUN_RECEIPT_INTEGRITY_ALGORITHM,
247
- digest: sha256(canonicalJson(integrityPayload(receipt, envelope))),
258
+ digest: sha256(canonicalJson(integrityPayload(receipt, envelope, legacyNaming))),
248
259
  };
249
260
  }
250
261
 
@@ -385,7 +396,8 @@ export function verifyReceiptIntegrity(receipt: RunReceipt, envelope: RunEnvelop
385
396
  return { ok: false, reason: `ledger mismatch: ${mismatch}` };
386
397
  }
387
398
  const expected = computeReceiptIntegrity(receipt, envelope);
388
- if (expected.digest !== receipt.integrity.digest) {
399
+ const legacyExpected = computeReceiptIntegrity(receipt, envelope, true);
400
+ if (expected.digest !== receipt.integrity.digest && legacyExpected.digest !== receipt.integrity.digest) {
389
401
  return { ok: false, reason: "integrity mismatch" };
390
402
  }
391
403
  return { ok: true };
@@ -599,31 +599,8 @@ export function getDispatchReservation(ownerId: string): DispatchReservationReco
599
599
  return record ? copyRecord(record) : null;
600
600
  }
601
601
 
602
- export function listDispatchReservations(): ReadonlyArray<DispatchReservationRecord> {
603
- return readStore();
604
- }
605
-
606
602
  export function reservedBudgetUsd(): number {
607
603
  return readStore()
608
604
  .filter((record) => record.status === "active")
609
605
  .reduce((sum, record) => sum + outstandingBudget(record), 0);
610
606
  }
611
-
612
- export function reservedCapacity(): {
613
- globalSlots: number;
614
- nodeSlots: Readonly<Record<string, number>>;
615
- endpointSlots: Readonly<Record<string, number>>;
616
- } {
617
- let globalSlots = 0;
618
- const nodeSlots: Record<string, number> = {};
619
- const endpointSlots: Record<string, number> = {};
620
- for (const record of readStore().filter((entry) => entry.status === "active")) {
621
- const allocation = reservationAllocation(outstandingTasks(record));
622
- globalSlots += allocation.globalSlots;
623
- for (const [nodeId, count] of Object.entries(allocation.nodeSlots))
624
- nodeSlots[nodeId] = (nodeSlots[nodeId] ?? 0) + count;
625
- for (const [endpointKey, count] of Object.entries(allocation.endpointSlots))
626
- endpointSlots[endpointKey] = (endpointSlots[endpointKey] ?? 0) + count;
627
- }
628
- return { globalSlots, nodeSlots, endpointSlots };
629
- }
@@ -597,7 +597,7 @@ function readinessHashProjection(report: RouteReadinessReport): readonly [boolea
597
597
  * `decisionDurationMs`, which is a measurement of the decision rather than an
598
598
  * input to it, so a replay on a faster machine still reproduces the hash.
599
599
  */
600
- export function routeDecisionHash(input: RouteDecisionInput): string {
600
+ function routeDecisionHash(input: RouteDecisionInput): string {
601
601
  // Arrays give every field an explicit position, so native JSON serialization
602
602
  // is deterministic without recursively sorting hundreds of short-lived
603
603
  // objects at the maximum universe bound. Candidate identity uses the same
@@ -137,7 +137,7 @@ function retireHistory(path: string, version: unknown): void {
137
137
  const retired = `${path}.v${String(version)}.${stamp}.retired`;
138
138
  renameSync(path, retired);
139
139
  process.stderr.write(
140
- `[clio:dispatch] route history v${String(version)} is retired; starting empty at v${ROUTE_HISTORY_VERSION}. Prior observations: ${retired}\n`,
140
+ `[clio-coder:dispatch] route history v${String(version)} is retired; starting empty at v${ROUTE_HISTORY_VERSION}. Prior observations: ${retired}\n`,
141
141
  );
142
142
  }
143
143
 
@@ -146,7 +146,7 @@ function rate(values: ReadonlyArray<boolean>, fallback = 0): number {
146
146
  }
147
147
 
148
148
  /** Conservative 95% Wilson lower confidence bound for a Bernoulli success rate. */
149
- export function wilsonLowerBound(successes: number, observations: number, z = 1.96): number {
149
+ function wilsonLowerBound(successes: number, observations: number, z = 1.96): number {
150
150
  if (observations <= 0) return 0;
151
151
  const proportion = successes / observations;
152
152
  const z2 = z * z;
@@ -90,31 +90,3 @@ export function evaluateRouteReadiness(input: RouteReadinessInput): RouteReadine
90
90
  labelsNeeded: Math.max(0, MINIMUM_ACTIVE_QUALITY_LABELS - estimate.qualityLabeledCount),
91
91
  };
92
92
  }
93
-
94
- /**
95
- * Human-readable one-liners for a refusal message. The wording names the
96
- * missing evidence, so an operator who sees an active refusal can tell whether
97
- * to wait for measurements or to fix a stale fact.
98
- */
99
- export function describeReadinessGap(gap: ReadinessGap): string {
100
- switch (gap) {
101
- case "hard-constraint-validity-below-one":
102
- return "hard-constraint evaluation was not consistently valid over the retained window";
103
- case "integrity-failures-in-window":
104
- return "the retained window contains receipt or source integrity failures";
105
- case "insufficient-quality-labels":
106
- return `fewer than ${MINIMUM_ACTIVE_QUALITY_LABELS} quality-labeled outcomes for this route and role`;
107
- case "quality-lower-bound-below-posture-floor":
108
- return "the conservative quality lower bound is below the posture floor";
109
- case "quality-lower-bound-below-requested-minimum":
110
- return "the conservative quality lower bound is below the request's minimumQuality";
111
- case "reliability-below-posture-floor":
112
- return "route-attributable reliability is below the posture floor";
113
- case "cost-upper-bound-unknown":
114
- return "the route has no conservative cost upper bound";
115
- case "route-facts-stale":
116
- return "node, endpoint, resource, capacity, or settings facts are stale";
117
- case "decision-latency-above-budget":
118
- return `shadow decision p95 exceeds ${DECISION_LATENCY_BUDGET_MS} ms at the configured universe bound`;
119
- }
120
- }
@@ -40,6 +40,7 @@
40
40
 
41
41
  import { appendFileSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync } from "node:fs";
42
42
  import { join } from "node:path";
43
+ import { normalizeClioCoderEventType } from "../../core/naming-events.js";
43
44
  import { clioStateDir, stateRootRemoved } from "../../core/xdg.js";
44
45
 
45
46
  /** Directory name under the state root holding one subdirectory per run. */
@@ -136,7 +137,7 @@ function parseEnvFlag(raw: string | undefined): boolean | undefined {
136
137
  }
137
138
 
138
139
  /** env override > configured settings > on. */
139
- export function runEventJournalEnabled(env: NodeJS.ProcessEnv = process.env): boolean {
140
+ function runEventJournalEnabled(env: NodeJS.ProcessEnv = process.env): boolean {
140
141
  return parseEnvFlag(env[RUN_EVENT_JOURNAL_ENV_VAR]) ?? configuredEnabled ?? true;
141
142
  }
142
143
 
@@ -150,7 +151,7 @@ export function runEventJournalRoot(): string {
150
151
  }
151
152
 
152
153
  /** One run's journal directory. */
153
- export function runEventJournalDir(runId: string, root?: string): string {
154
+ function runEventJournalDir(runId: string, root?: string): string {
154
155
  return join(root ?? runEventJournalRoot(), runId);
155
156
  }
156
157
 
@@ -247,10 +248,10 @@ export interface CreateRunEventJournalOptions {
247
248
  isEnabled?: () => boolean;
248
249
  }
249
250
 
250
- export function createRunEventJournal(options: CreateRunEventJournalOptions = {}): RunEventJournal {
251
+ function createRunEventJournal(options: CreateRunEventJournalOptions = {}): RunEventJournal {
251
252
  const capBytes = options.capBytes ?? RUN_EVENT_JOURNAL_CAP_BYTES;
252
253
  const flushBytes = options.flushBytes ?? RUN_EVENT_JOURNAL_FLUSH_BYTES;
253
- const warn = options.warn ?? ((message: string) => process.stderr.write(`[clio:journal] ${message}\n`));
254
+ const warn = options.warn ?? ((message: string) => process.stderr.write(`[clio-coder:journal] ${message}\n`));
254
255
  const now = options.now ?? (() => new Date());
255
256
  const isEnabled = options.isEnabled ?? (() => runEventJournalEnabled());
256
257
  const runs = new Map<string, RunJournalState>();
@@ -494,7 +495,7 @@ function parseJournalLine(raw: string): RunEventJournalLine | null {
494
495
  seq: record.seq,
495
496
  at: record.at,
496
497
  kind: "event",
497
- type: record.type,
498
+ type: normalizeClioCoderEventType(record.type),
498
499
  ...(detail === undefined ? {} : { detail }),
499
500
  };
500
501
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Pure aggregation helpers for the per-tool stats folded into a RunReceipt.
3
3
  *
4
- * Sourced from the worker's ToolTelemetry stream (`clio_tool_finish` IPC
4
+ * Sourced from the worker's ToolTelemetry stream (`clio_coder_tool_finish` IPC
5
5
  * events). Kept as a small standalone module so receipts have a single source
6
6
  * of truth for the aggregation invariants, and so loops, retries, errors,
7
7
  * blocked admissions, and parallel-batch tool calls all flow through one
@@ -26,13 +26,7 @@ import { AI_AGENT_NAME } from "../../core/agent-environment.js";
26
26
  import { shellQuote } from "../../core/shell-quote.js";
27
27
  import type { WorkerSpec } from "../../worker/spec-contract.js";
28
28
  import type { RunNodeIdentity } from "./types.js";
29
- import {
30
- type SpawnedWorker,
31
- type SpawnOptions,
32
- spawnNativeWorker,
33
- spawnWorkerProcess,
34
- type WorkerProcessOptions,
35
- } from "./worker-spawn.js";
29
+ import { type SpawnedWorker, spawnWorkerProcess, type WorkerProcessOptions } from "./worker-spawn.js";
36
30
 
37
31
  export type WorkerTransportKind = "local" | "ssh";
38
32
 
@@ -94,17 +88,6 @@ export function localNodeIdentity(): RunNodeIdentity {
94
88
  return { id: LOCAL_NODE_ID, kind: "local" };
95
89
  }
96
90
 
97
- export function createLocalWorkerTransport(opts?: Omit<SpawnOptions, "cwd">): WorkerTransport {
98
- return {
99
- kind: "local",
100
- node: localNodeIdentity(),
101
- spawn(spec, spawnOpts) {
102
- // The caller's per-spawn options ride over the transport's own defaults.
103
- return spawnNativeWorker(spec, { ...opts, ...spawnOpts });
104
- },
105
- };
106
- }
107
-
108
91
  const DEFAULT_SSH_CONNECT_TIMEOUT_SEC = 10;
109
92
  const DEFAULT_REMOTE_CLIO_ENTRY = "clio-coder worker";
110
93
 
@@ -126,7 +109,7 @@ function remoteEnvAssignments(node: SshNodeEndpoint): string {
126
109
  return `AI_AGENT=${AI_AGENT_NAME} CLIO_CODER_RESIDENCY=${residency} CLIO_CODER_WORKER_PGID=$$${labelAssignment}`;
127
110
  }
128
111
 
129
- export function buildRemoteWorkerCommand(node: SshNodeEndpoint, cwd: string): string {
112
+ function buildRemoteWorkerCommand(node: SshNodeEndpoint, cwd: string): string {
130
113
  const entry =
131
114
  node.clioCoderEntry !== undefined && node.clioCoderEntry.trim().length > 0
132
115
  ? node.clioCoderEntry.trim()
@@ -506,7 +506,7 @@ export interface RunEnvelope {
506
506
 
507
507
  /**
508
508
  * Per-tool aggregates folded into a receipt at run completion. Sourced from
509
- * the worker's ToolTelemetry stream (`clio_tool_finish` IPC events). Sorted
509
+ * the worker's ToolTelemetry stream (`clio_coder_tool_finish` IPC events). Sorted
510
510
  * by tool name on write so digests are deterministic across runs.
511
511
  */
512
512
  export interface ToolCallStat {
@@ -570,7 +570,7 @@ export interface RunReceiptDelegation {
570
570
  toolCallsRequested: number;
571
571
  toolCallsApproved: number;
572
572
  toolCallsDenied: number;
573
- toolGovernance: "clio-policy" | "agent-managed" | "deny-all";
573
+ toolGovernance: "clio-coder-policy" | "agent-managed" | "deny-all";
574
574
  toolCallLog: DelegationToolCallLogEntry[];
575
575
  }
576
576
 
@@ -810,7 +810,7 @@ export interface RunReceipt {
810
810
  dynamicHash?: string | null;
811
811
  promptSignature?: string | null;
812
812
  toolSignature?: string | null;
813
- clioVersion: string;
813
+ clioCoderVersion: string;
814
814
  piMonoVersion: string;
815
815
  platform: string;
816
816
  nodeVersion: string;
@@ -69,7 +69,7 @@ export {
69
69
  */
70
70
  export function computeSettingsFingerprint(settings: unknown): string {
71
71
  return createHash("sha256")
72
- .update(`clio.settings:${canonicalJson(settings)}`, "utf8")
72
+ .update(`clio-coder.settings:${canonicalJson(settings)}`, "utf8")
73
73
  .digest("hex");
74
74
  }
75
75
 
@@ -151,7 +151,7 @@ export function approvedIdentityForSpec(spec: {
151
151
 
152
152
  function workerSpecDigestOf(spec: unknown): string {
153
153
  return createHash("sha256")
154
- .update(`clio.workerSpec:${canonicalJson(spec)}`, "utf8")
154
+ .update(`clio-coder.workerSpec:${canonicalJson(spec)}`, "utf8")
155
155
  .digest("hex");
156
156
  }
157
157
 
@@ -58,14 +58,15 @@ export function parseEvalArtifactV4(value: unknown, source: string): EvalArtifac
58
58
  value.aggregates === undefined
59
59
  ? undefined
60
60
  : (readArray(value, source, "aggregates") as NonNullable<EvalArtifactV4["aggregates"]>);
61
+ const clioCoder = asRecord(value.clioCoder ?? value.clio, `${source}.clioCoder`);
61
62
  return {
62
63
  version: 4,
63
64
  evalId: readString(value, source, "evalId"),
64
65
  suite: { id: readString(suite, `${source}.suite`, "id"), hash: readString(suite, `${source}.suite`, "hash") },
65
- clio: {
66
- version: readString(asRecord(value.clio, `${source}.clio`), `${source}.clio`, "version"),
67
- commit: readNullableString(asRecord(value.clio, `${source}.clio`), `${source}.clio`, "commit"),
68
- entry: readString(asRecord(value.clio, `${source}.clio`), `${source}.clio`, "entry"),
66
+ clioCoder: {
67
+ version: readString(clioCoder, `${source}.clioCoder`, "version"),
68
+ commit: readNullableString(clioCoder, `${source}.clioCoder`, "commit"),
69
+ entry: readString(clioCoder, `${source}.clioCoder`, "entry"),
69
70
  },
70
71
  environment: {
71
72
  platform: readString(asRecord(value.environment, `${source}.environment`), `${source}.environment`, "platform"),
@@ -62,14 +62,6 @@ export function resolveMetricAssertion(
62
62
  return { actual, unresolved: actual === null, holds: comparisonHolds(assertion, actual) };
63
63
  }
64
64
 
65
- export function evaluateMetricAssertion(
66
- assertion: EvalMetricAssertion,
67
- metrics: Readonly<Record<string, unknown>>,
68
- artifact?: EvalArtifactV4,
69
- ): boolean {
70
- return comparisonHolds(assertion, metricValue(assertion.metric, metrics, artifact));
71
- }
72
-
73
65
  function comparisonHolds(assertion: EvalMetricAssertion, actual: number | string | boolean | null): boolean {
74
66
  switch (assertion.op) {
75
67
  case "lt":
@@ -128,7 +128,7 @@ function promptFragmentIdentities(
128
128
  .sort((left, right) => left.id.localeCompare(right.id));
129
129
  }
130
130
  if (recipe === null) return [];
131
- const selected = ["identity.clio-worker", "operating.contract", "operating.worker"];
131
+ const selected = ["identity.clio-coder-worker", "operating.contract", "operating.worker"];
132
132
  if (autonomy !== null) selected.push(`safety.${autonomy}`);
133
133
  const fragments: EvalPromptFragmentIdentityV1[] = [];
134
134
  try {
@@ -90,13 +90,6 @@ export function createTokenUsageFold(): EvalTokenUsageFold {
90
90
  };
91
91
  }
92
92
 
93
- /** Whole-buffer form of {@link createTokenUsageFold}. */
94
- export function tokenUsageFromJsonl(stream: string): EvalTokenStreamUsage {
95
- const fold = createTokenUsageFold();
96
- fold.push(stream);
97
- return fold.usage();
98
- }
99
-
100
93
  export function addTokenStreamUsage(left: EvalTokenStreamUsage, right: EvalTokenStreamUsage): EvalTokenStreamUsage {
101
94
  return {
102
95
  measured: left.measured || right.measured,
@@ -14,7 +14,7 @@ export function renderEvalReport(artifact: EvalRunArtifact, artifactPath?: strin
14
14
  lines.splice(
15
15
  2,
16
16
  0,
17
- `clio: ${artifact.clio.version} commit=${artifact.clio.commit ?? "unknown"} entry=${artifact.clio.entry}`,
17
+ `clioCoder: ${artifact.clioCoder.version} commit=${artifact.clioCoder.commit ?? "unknown"} entry=${artifact.clioCoder.entry}`,
18
18
  );
19
19
  lines.splice(3, 0, `environment: ${artifact.environment.platform} node=${artifact.environment.node}`);
20
20
  const evidenceIds = uniqueEvidenceIds(artifact);
@@ -43,7 +43,7 @@ export async function runEvalTasks(options: RunEvalOptions): Promise<EvalRunArti
43
43
  evalId: options.evalId,
44
44
  taskFile: options.loadedTaskFile.path,
45
45
  taskFileHash: options.loadedTaskFile.contentHash,
46
- clio: evalClioProvenance(options.provenance),
46
+ clioCoder: evalClioProvenance(options.provenance),
47
47
  environment: evalEnvironmentProvenance(),
48
48
  target: options.provenance?.target ?? null,
49
49
  model: options.provenance?.model ?? null,
@@ -1,4 +1,5 @@
1
1
  import { isAbsolute, relative, resolve, sep } from "node:path";
2
+ import { normalizeClioCoderEventRecord } from "../../../core/naming-events.js";
2
3
  import { shellQuote } from "../../../core/shell-quote.js";
3
4
  import { clioStateDir } from "../../../core/xdg.js";
4
5
  import {
@@ -92,7 +93,7 @@ type ToolCallMetrics = {
92
93
  type ToolOutcome = "ok" | "error" | "blocked";
93
94
 
94
95
  /** Fold the terminal tool events emitted by `clio-coder run --json`. */
95
- export function toolCallMetricsFromJsonl(stdout: string): ToolCallMetrics {
96
+ function toolCallMetricsFromJsonl(stdout: string): ToolCallMetrics {
96
97
  const executionEnds: ToolCallMetrics = { totalCalls: 0, failed: 0, blocked: 0 };
97
98
  const canonicalFinishes: ToolCallMetrics = { totalCalls: 0, failed: 0, blocked: 0 };
98
99
  const seenExecutionEnds = new Set<string>();
@@ -104,7 +105,7 @@ export function toolCallMetricsFromJsonl(stdout: string): ToolCallMetrics {
104
105
  try {
105
106
  const parsed: unknown = JSON.parse(line);
106
107
  if (!isRecord(parsed)) continue;
107
- event = parsed;
108
+ event = normalizeClioCoderEventRecord(parsed);
108
109
  } catch {
109
110
  continue;
110
111
  }
@@ -119,7 +120,7 @@ export function toolCallMetricsFromJsonl(stdout: string): ToolCallMetrics {
119
120
  continue;
120
121
  }
121
122
 
122
- if (event.type !== "clio_tool_finish" || !isRecord(event.payload)) continue;
123
+ if (event.type !== "clio_coder_tool_finish" || !isRecord(event.payload)) continue;
123
124
  const outcome = toolOutcome(event.payload);
124
125
  if (outcome === undefined) continue;
125
126
  const callId = stringField(event.payload, "toolCallId") ?? stringField(event, "toolCallId");
@@ -148,7 +149,7 @@ interface BehavioralToolTerminal {
148
149
  * bounded counters against the suite's explicit public allowlist and decoy
149
150
  * list; they never become behavioral fact values or evidence excerpts.
150
151
  */
151
- export function toolBehaviorMetricEntriesFromJsonl(
152
+ function toolBehaviorMetricEntriesFromJsonl(
152
153
  stdout: string,
153
154
  cwd: string,
154
155
  readObservation?: { allowedPaths: string[]; decoyPaths: string[] },
@@ -166,7 +167,7 @@ export function toolBehaviorMetricEntriesFromJsonl(
166
167
  try {
167
168
  const parsed: unknown = JSON.parse(line);
168
169
  if (!isRecord(parsed)) continue;
169
- event = parsed;
170
+ event = normalizeClioCoderEventRecord(parsed);
170
171
  } catch {
171
172
  continue;
172
173
  }
@@ -188,7 +189,7 @@ export function toolBehaviorMetricEntriesFromJsonl(
188
189
  executionEnds.push({ callId, tool, outcome: toolOutcome(event) ?? (event.isError === true ? "error" : "ok") });
189
190
  continue;
190
191
  }
191
- if (event.type !== "clio_tool_finish" || !isRecord(event.payload)) continue;
192
+ if (event.type !== "clio_coder_tool_finish" || !isRecord(event.payload)) continue;
192
193
  const outcome = toolOutcome(event.payload);
193
194
  const tool = stringField(event.payload, "tool");
194
195
  if (outcome === undefined || tool === undefined) continue;
@@ -1,5 +1,6 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { performance } from "node:perf_hooks";
3
+ import { normalizeClioCoderEventType } from "../../../core/naming-events.js";
3
4
  import type { RunReceipt } from "../../dispatch/types.js";
4
5
  import type { SessionEntry } from "../../session/entries.js";
5
6
  import { createEvalCallLedgerFold } from "../metrics/call-ledger-stream.js";
@@ -226,7 +227,7 @@ export interface JsonlMetricCapture {
226
227
  * split JSON arbitrarily; oversized non-metric lines are discarded without
227
228
  * growing memory.
228
229
  */
229
- export function createJsonlMetricCapture(): JsonlMetricCapture {
230
+ function createJsonlMetricCapture(): JsonlMetricCapture {
230
231
  const lines: string[] = [];
231
232
  let storedBytes = 0;
232
233
  let pending = "";
@@ -287,7 +288,7 @@ export function createJsonlMetricCapture(): JsonlMetricCapture {
287
288
  }
288
289
 
289
290
  function compactMetricEvent(event: Record<string, unknown>): Record<string, unknown> | null {
290
- const type = event.type;
291
+ const type = typeof event.type === "string" ? normalizeClioCoderEventType(event.type) : event.type;
291
292
  if (type === "tool_execution_start") {
292
293
  const toolName = stringField(event, "toolName");
293
294
  if (toolName !== "dispatch" && toolName !== "code_nav" && toolName !== "read" && toolName !== "grep") {
@@ -315,7 +316,7 @@ function compactMetricEvent(event: Record<string, unknown>): Record<string, unkn
315
316
  ...(stringField(event, "outcome") !== undefined ? { outcome: stringField(event, "outcome") } : {}),
316
317
  };
317
318
  }
318
- if (type !== "clio_tool_finish" || !isRecord(event.payload)) return null;
319
+ if (type !== "clio_coder_tool_finish" || !isRecord(event.payload)) return null;
319
320
  return {
320
321
  type,
321
322
  payload: {
@@ -69,7 +69,7 @@ export interface EvalArtifactV4 {
69
69
  id: string;
70
70
  hash: string;
71
71
  };
72
- clio: EvalClioProvenance;
72
+ clioCoder: EvalClioProvenance;
73
73
  environment: EvalEnvironmentProvenance;
74
74
  matrix: {
75
75
  target: string;
@@ -1,7 +1,8 @@
1
1
  import type { EvalArtifactResultV4 } from "./artifact.js";
2
2
  import type { EvalBehaviorCategoryV1, EvalBehaviorLabelV1 } from "./behavioral.js";
3
+ import { normalizeEvalSchemaId } from "./naming.js";
3
4
 
4
- export const EVAL_BEHAVIOR_METRICS_SCHEMA_V1 = "clio.eval.behavior.metrics.v1" as const;
5
+ export const EVAL_BEHAVIOR_METRICS_SCHEMA_V1 = "clio-coder.eval.behavior.metrics.v1" as const;
5
6
 
6
7
  export const EVAL_BEHAVIOR_METRIC_DEFINITIONS_V1 = [
7
8
  {
@@ -136,7 +137,7 @@ export function buildEvalBehaviorMetricsV1(
136
137
 
137
138
  export function parseEvalBehaviorMetricsV1(value: unknown, source = "behavioral metrics"): EvalBehaviorMetricsV1 {
138
139
  const record = asRecord(value, source);
139
- if (record.schema !== EVAL_BEHAVIOR_METRICS_SCHEMA_V1) {
140
+ if (normalizeEvalSchemaId(record.schema) !== EVAL_BEHAVIOR_METRICS_SCHEMA_V1) {
140
141
  throw new Error(`${source}.schema: expected ${EVAL_BEHAVIOR_METRICS_SCHEMA_V1}`);
141
142
  }
142
143
  const target = asRecord(record.target, `${source}.target`);