@iowarp/clio-coder 0.4.0 → 0.4.2

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 (751) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/CONTRIBUTING.md +59 -36
  3. package/README.md +407 -375
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-G5WJBNCT.js → acp-TMDQZDIG.js} +14 -14
  6. package/dist/{agents-FMV2Q5G4.js → agents-5N5NG3XG.js} +45 -34
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-3IDSJEIK.js → auth-Z5CCBXKQ.js} +22 -21
  9. package/dist/{builtins-XCZWXSC7.js → builtins-K6TNDT24.js} +6 -6
  10. package/dist/{chunk-GR5G2PVF.js → chunk-2HFQNRV3.js} +15 -10
  11. package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
  12. package/dist/{chunk-HJJTYUHX.js → chunk-2NHR3NAY.js} +168 -1406
  13. package/dist/chunk-2X4RYJTJ.js +39 -0
  14. package/dist/{chunk-UXMFQ54G.js → chunk-2Z2IKEXI.js} +39 -43
  15. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  16. package/dist/chunk-34BHNEE3.js +1846 -0
  17. package/dist/{chunk-YJX4SHTD.js → chunk-35MSIRKH.js} +9 -4
  18. package/dist/chunk-3EBYEESD.js +314 -0
  19. package/dist/{chunk-CTJ4RNAA.js → chunk-3F7VUY77.js} +2 -2
  20. package/dist/chunk-3KIPBMUA.js +308 -0
  21. package/dist/chunk-3M6DQK6S.js +362 -0
  22. package/dist/{chunk-BPKCPIL7.js → chunk-462T4EGZ.js} +3 -3
  23. package/dist/{chunk-QLFS5GO2.js → chunk-4JDLP6ZS.js} +44 -37
  24. package/dist/{chunk-LDQ2ZF2M.js → chunk-4O6MANBS.js} +6 -6
  25. package/dist/{chunk-O6TL7WWY.js → chunk-54ODD65L.js} +6 -6
  26. package/dist/{chunk-JDG2WCRO.js → chunk-5KW52TEP.js} +5 -5
  27. package/dist/{chunk-NHLBIGRH.js → chunk-5PFYMY2V.js} +41 -18
  28. package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
  29. package/dist/chunk-77QIVUZB.js +1334 -0
  30. package/dist/{chunk-HWHKMHUA.js → chunk-7BHIY2MW.js} +9 -15
  31. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  32. package/dist/{chunk-VAZSBTKF.js → chunk-AZ4WMN4W.js} +2 -2
  33. package/dist/{chunk-B7OBL7PK.js → chunk-B74PXLU7.js} +21 -11
  34. package/dist/{chunk-CY6FY24N.js → chunk-B7HM5Z7T.js} +15 -15
  35. package/dist/{chunk-ULC6OTWO.js → chunk-BO7Y52RY.js} +88 -27
  36. package/dist/chunk-BTK3SSSK.js +67 -0
  37. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  38. package/dist/{chunk-DQITNCXG.js → chunk-BYMNWQ7O.js} +149 -159
  39. package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
  40. package/dist/{chunk-Z4TXYIEG.js → chunk-CRFOIAX3.js} +10 -10
  41. package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
  42. package/dist/{chunk-3BT2XMV4.js → chunk-CYZW7JHJ.js} +53 -60
  43. package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
  44. package/dist/chunk-D7E7WCDF.js +27 -0
  45. package/dist/{chunk-X3YGUTOB.js → chunk-DYHAXKHD.js} +90 -62
  46. package/dist/{chunk-QBJA7R7N.js → chunk-DZAW46HP.js} +3 -3
  47. package/dist/{chunk-MLKNTWH2.js → chunk-DZEK6CJN.js} +22 -22
  48. package/dist/{chunk-K5C3NCBD.js → chunk-E7GT7O5N.js} +5 -5
  49. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  50. package/dist/chunk-F2I26BDK.js +66 -0
  51. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  52. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  53. package/dist/{chunk-32KWKNSF.js → chunk-FVDGR2ZL.js} +4 -4
  54. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  55. package/dist/{chunk-SJ5ZKQ4S.js → chunk-HIICAHCJ.js} +2 -2
  56. package/dist/chunk-HJWWJ6IL.js +184 -0
  57. package/dist/{chunk-WZR7K7ZX.js → chunk-HKMD33FO.js} +32 -83
  58. package/dist/chunk-HLAFFSEK.js +360 -0
  59. package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
  60. package/dist/{chunk-KFZI4NIL.js → chunk-I64IFBLB.js} +152 -31
  61. package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
  62. package/dist/{chunk-BUMFYQFY.js → chunk-I66ZTYNP.js} +543 -267
  63. package/dist/{chunk-2OQE55CK.js → chunk-I7XBWTYH.js} +2 -2
  64. package/dist/{chunk-GKF55TAZ.js → chunk-IDNA72AH.js} +104 -3
  65. package/dist/{chunk-GCSMB2KY.js → chunk-IKOZFYBN.js} +1 -1
  66. package/dist/{chunk-J4W7KFM7.js → chunk-IKSLQ4XV.js} +5439 -3475
  67. package/dist/{chunk-6DB53AJS.js → chunk-IMXMHHMQ.js} +171 -30
  68. package/dist/{chunk-AB44T6BB.js → chunk-JBCS7CRR.js} +8 -7
  69. package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
  70. package/dist/{chunk-SP2RXXYO.js → chunk-JWJGP5DQ.js} +10 -10
  71. package/dist/{chunk-HZHHCK24.js → chunk-KKOJXO6R.js} +527 -325
  72. package/dist/chunk-KPXDY6QF.js +47 -0
  73. package/dist/{chunk-LQ3DZAMX.js → chunk-LJID3DYZ.js} +8 -2
  74. package/dist/{chunk-7MCTRUCE.js → chunk-M2DAX4F6.js} +2 -2
  75. package/dist/{chunk-VEO4AP2K.js → chunk-M2WXEHER.js} +4 -3
  76. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  77. package/dist/{chunk-YDFRH54B.js → chunk-MCMZMDAC.js} +4 -4
  78. package/dist/{chunk-J5Q24KAG.js → chunk-MNJGS2IN.js} +5 -6
  79. package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
  80. package/dist/chunk-NDDGJUXD.js +81 -0
  81. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  82. package/dist/chunk-NMJXSHBJ.js +283 -0
  83. package/dist/{chunk-VYMXRQI6.js → chunk-O3YUNJZ2.js} +88 -100
  84. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  85. package/dist/{chunk-Z2RR6MAK.js → chunk-P75RZCJW.js} +28 -6
  86. package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
  87. package/dist/{chunk-DYJP44XW.js → chunk-PGF63K6I.js} +2 -2
  88. package/dist/chunk-PJX3WQUQ.js +42 -0
  89. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  90. package/dist/{chunk-2JDWVJND.js → chunk-Q4XWMHX6.js} +5 -7
  91. package/dist/{chunk-W5VSYASO.js → chunk-QQLGQY2A.js} +46 -87
  92. package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
  93. package/dist/{chunk-C2LTL2W6.js → chunk-RLYRBIYQ.js} +463 -180
  94. package/dist/{chunk-4ZG3XFUR.js → chunk-S66XZJOF.js} +14 -23
  95. package/dist/{chunk-I5VEOC6I.js → chunk-SSEYRH53.js} +13 -14
  96. package/dist/chunk-SZAA6XDG.js +30 -0
  97. package/dist/{chunk-CODPRO7Q.js → chunk-TPEQIQIE.js} +7 -7
  98. package/dist/{chunk-QLL7ILRG.js → chunk-UBRFI4HS.js} +1151 -614
  99. package/dist/{chunk-O4XIVISU.js → chunk-UH347SHR.js} +227 -47
  100. package/dist/{chunk-OQBA45DZ.js → chunk-UH632ZYL.js} +2 -2
  101. package/dist/chunk-UXCU4E3T.js +303 -0
  102. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  103. package/dist/{chunk-IQ7KR472.js → chunk-VIA6RFQZ.js} +8 -13
  104. package/dist/{chunk-V5DHCITQ.js → chunk-VKPAQYEB.js} +49 -19
  105. package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
  106. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  107. package/dist/{chunk-3XML7CDN.js → chunk-W4YEMFBX.js} +3 -3
  108. package/dist/{chunk-U77AMWDL.js → chunk-W6NIE6OW.js} +44 -23
  109. package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
  110. package/dist/{chunk-QREDIESB.js → chunk-X7IARSHT.js} +15 -9
  111. package/dist/{chunk-3URVFKWK.js → chunk-XE3PCIXH.js} +5 -5
  112. package/dist/{chunk-FEFIFZTL.js → chunk-XGDPUNND.js} +2 -2
  113. package/dist/{chunk-F4CKPOEQ.js → chunk-XOXV5GKE.js} +119 -38
  114. package/dist/chunk-XQRY4DTA.js +657 -0
  115. package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
  116. package/dist/{chunk-NQQH3YT7.js → chunk-YJISEZKC.js} +3 -3
  117. package/dist/{chunk-X75E3D2N.js → chunk-ZGNYYXQ6.js} +18 -16
  118. package/dist/{chunk-LY4S7GJC.js → chunk-ZNT2M6TG.js} +20 -18
  119. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  120. package/dist/{chunk-IBEBSCYA.js → chunk-ZW4HH5JJ.js} +43 -34
  121. package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
  122. package/dist/cli/index.js +38 -37
  123. package/dist/{clio-2JXHBBY5.js → clio-7VB377CC.js} +12 -13
  124. package/dist/{code-nav-3YYRMYNF.js → code-nav-YVLCYA7V.js} +86 -18
  125. package/dist/codewiki/build-worker.js +1 -1
  126. package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
  127. package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
  128. package/dist/{config-QZPCMYSO.js → config-4HVOS65E.js} +112 -63
  129. package/dist/{configure-TEGEBYCA.js → configure-PIWO7B24.js} +25 -22
  130. package/dist/{context-E6H5RNMC.js → context-IYEHL3WQ.js} +53 -47
  131. package/dist/{context-GSXUE4CT.js → context-KQYIWPWT.js} +68 -42
  132. package/dist/{context-AV7OEZ4D.js → context-N6ZE3LGJ.js} +11 -11
  133. package/dist/{context-clear-SHIBYK6T.js → context-clear-G4OGZJDS.js} +53 -47
  134. package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-BWLF6LJP.js} +12 -11
  135. package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-2QQAITS3.js} +67 -58
  136. package/dist/{docs-23KQS3XK.js → docs-PD3EXDKU.js} +20 -25
  137. package/dist/doctor-LHBD36VU.js +773 -0
  138. package/dist/{eval-TFBYQH4H.js → eval-C45FYRJ6.js} +68 -49
  139. package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-6DEJPLBF.js} +7 -8
  140. package/dist/{evidence-ERGESKGN.js → evidence-6SHONYAF.js} +50 -44
  141. package/dist/{evolve-VDXTSYCJ.js → evolve-KRKMV72X.js} +49 -43
  142. package/dist/{extensions-7BGBHN57.js → extensions-KPZ2UHBB.js} +8 -6
  143. package/dist/{fleet-2RRVDF2V.js → fleet-IVTCKDHT.js} +93 -79
  144. package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EDWL3IT7.js} +10 -9
  145. package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-YP3YEFGK.js} +6 -6
  146. package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-ZFWKHY2M.js} +19 -15
  147. package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-FVUNCBML.js} +50 -45
  148. package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-UN5XED4R.js} +5 -9
  149. package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-XOWC4HSX.js} +22 -17
  150. package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-UN3SODEL.js} +48 -43
  151. package/dist/fleet-view-TWHJKCN6.js +96 -0
  152. package/dist/{init-DN2WWLFE.js → init-T2QORQ3Y.js} +72 -66
  153. package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
  154. package/dist/{interop-OZBKXAYL.js → interop-IN5I2A66.js} +13 -11
  155. package/dist/{library-YWZG7IMW.js → library-LSCATDLZ.js} +23 -18
  156. package/dist/{memory-I4C4HMLW.js → memory-HYOKAGGJ.js} +51 -45
  157. package/dist/{models-CEYXJBO6.js → models-2GPMFYCM.js} +42 -33
  158. package/dist/{monitor-NZ6GCI3P.js → monitor-E4ASVUJH.js} +56 -50
  159. package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-DDMPR3PY.js} +2676 -1507
  160. package/dist/{panes-KY6W3V2E.js → panes-E3RUXOW5.js} +5 -5
  161. package/dist/panes-IXKLOKA2.js +75 -0
  162. package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
  163. package/dist/{reset-DQ6FGCSH.js → reset-OAQP3W4O.js} +7 -8
  164. package/dist/{resources-BB3MVJMD.js → resources-OTRSN34L.js} +23 -17
  165. package/dist/{run-H2GQDUER.js → run-5DEYH5QK.js} +95 -84
  166. package/dist/{share-GTJN6A5O.js → share-IHWTLO3M.js} +26 -19
  167. package/dist/{skills-L55TEW6R.js → skills-IYMXMKW4.js} +25 -20
  168. package/dist/{skills-eval-XVXPH2JI.js → skills-eval-DROHSJAR.js} +63 -65
  169. package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-D7X4L4ZX.js} +21 -16
  170. package/dist/{slash-commands-ZSGASKJC.js → slash-commands-QBM7UZ3B.js} +38 -33
  171. package/dist/{steer-RZGSCY4R.js → steer-Z5DO23FJ.js} +3 -3
  172. package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
  173. package/dist/{targets-NCPZ644J.js → targets-P2FUC4IL.js} +64 -61
  174. package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-YREJ3JX2.js} +15 -10
  175. package/dist/{tools-DAF3DI3C.js → tools-5B7RO6MV.js} +10 -8
  176. package/dist/{trace-FYVW2MQA.js → trace-YMGMUM6A.js} +101 -8
  177. package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
  178. package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
  179. package/dist/{upgrade-3XPP6OQL.js → upgrade-PXK3S2YM.js} +36 -61
  180. package/dist/{usage-3NLHGTU2.js → usage-ME5MPXGX.js} +58 -53
  181. package/dist/{verifiers-SSQONKRT.js → verifiers-BVZ7IWOO.js} +10 -9
  182. package/dist/{verify-3U6J7FZI.js → verify-5K7ZKQFC.js} +9 -8
  183. package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPARV2K7.js} +2 -3
  184. package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-F5W5QTYY.js} +74 -70
  185. package/dist/{with-panes-MKB46MPQ.js → with-panes-BYOJCLAM.js} +78 -246
  186. package/dist/worker/entry.js +83 -63
  187. package/docs/README.md +176 -81
  188. package/docs/{acp.md → architecture/acp.md} +36 -20
  189. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  190. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  191. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +26 -23
  192. package/docs/architecture/artifact-versions.md +90 -0
  193. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  194. package/docs/{context-engine.md → architecture/context-engine.md} +25 -25
  195. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  196. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  197. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  198. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  199. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  200. package/docs/{model-catalog.md → architecture/model-catalog.md} +40 -17
  201. package/docs/{observability.md → architecture/observability.md} +26 -13
  202. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  203. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +55 -20
  204. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +35 -24
  205. package/docs/{safety-model.md → architecture/safety-model.md} +20 -15
  206. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  207. package/docs/architecture/time-conventions.md +125 -0
  208. package/docs/{trace-store.md → architecture/trace-store.md} +26 -13
  209. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  210. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  211. package/docs/{built-in-agents.md → guide/built-in-agents.md} +70 -46
  212. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +73 -62
  213. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -444
  214. package/docs/guide/configuration-reference.md +1158 -0
  215. package/docs/{environment-variables.md → guide/environment-variables.md} +31 -27
  216. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +8 -3
  217. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  218. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +47 -49
  219. package/docs/{glossary.md → guide/glossary.md} +14 -11
  220. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +45 -14
  221. package/docs/guide/panes-and-files.md +290 -0
  222. package/docs/{proactive-memory.md → guide/proactive-memory.md} +79 -66
  223. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  224. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +7 -3
  225. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  226. package/docs/{troubleshooting.md → guide/troubleshooting.md} +10 -5
  227. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +13 -10
  228. package/docs/history/release-cut-checklist.md +207 -0
  229. package/docs/{development-pipeline.md → process/development-pipeline.md} +24 -26
  230. package/docs/process/documentation-coverage.md +100 -0
  231. package/docs/process/documentation-guide.md +187 -0
  232. package/docs/{eval-runner.md → process/eval-runner.md} +41 -50
  233. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  234. package/docs/{evolution.md → process/evolution.md} +2 -2
  235. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +17 -10
  236. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  237. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  238. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  239. package/evals/README.md +5 -0
  240. package/evals/behavioral-corpus-grader.mjs +103 -0
  241. package/evals/behavioral-machinery-baseline.json +2276 -0
  242. package/evals/behavioral-machinery-driver.ts +250 -0
  243. package/evals/behavioral-machinery-support.ts +253 -0
  244. package/evals/behavioral-machinery.yaml +614 -0
  245. package/evals/behavioral-model-negative-control.yaml +68 -0
  246. package/evals/behavioral-model.yaml +216 -0
  247. package/evals/fixtures/behavioral-facts.txt +3 -0
  248. package/evals/fixtures/behavioral-main.ts +7 -0
  249. package/evals/fixtures/decoy/note.txt +2 -0
  250. package/evals/fixtures/private/credentials.txt +1 -0
  251. package/evals/tracked-metrics-baseline.yaml +229 -0
  252. package/evals/tracked-metrics-grader.mjs +129 -0
  253. package/package.json +13 -21
  254. package/skills/README.md +51 -42
  255. package/skills/coding/ast-grep/SKILL.md +9 -3
  256. package/skills/coding/coding-standards/SKILL.md +9 -3
  257. package/skills/coding/prototype/SKILL.md +9 -3
  258. package/skills/coding/tdd/SKILL.md +9 -3
  259. package/skills/context/context-handoff/SKILL.md +13 -4
  260. package/skills/context/context-handoff/evals.md +3 -3
  261. package/skills/context/context-prime/SKILL.md +9 -3
  262. package/skills/context/context-prime/evals.md +2 -2
  263. package/skills/git/file-ticket/SKILL.md +10 -5
  264. package/skills/git/file-ticket/evals.md +2 -2
  265. package/skills/git/fix-issue/SKILL.md +12 -5
  266. package/skills/git/fix-issue/evals.md +4 -4
  267. package/skills/git/resolve-merge-conflicts/SKILL.md +9 -3
  268. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  269. package/skills/git/ship/SKILL.md +10 -4
  270. package/skills/git/ship/evals.md +4 -4
  271. package/skills/git/worktree-create/SKILL.md +8 -3
  272. package/skills/git/worktree-create/evals.md +6 -6
  273. package/skills/git/worktree-merge/SKILL.md +8 -3
  274. package/skills/git/worktree-merge/evals.md +6 -6
  275. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +22 -12
  276. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +5 -4
  277. package/skills/meta/clio-coder-test/SKILL.md +146 -0
  278. package/skills/meta/{clio-test → clio-coder-test}/evals.md +10 -5
  279. package/skills/meta/clio-coder-test/references/harness.md +102 -0
  280. package/skills/meta/clio-coder-test/references/test-map.md +96 -0
  281. package/skills/meta/credentials/SKILL.md +10 -3
  282. package/skills/meta/find-skills/SKILL.md +9 -3
  283. package/skills/meta/herdr/SKILL.md +9 -3
  284. package/skills/meta/skill-craft/SKILL.md +39 -16
  285. package/skills/planning/architecture/SKILL.md +9 -3
  286. package/skills/planning/backlog/SKILL.md +9 -3
  287. package/skills/planning/prd/SKILL.md +9 -3
  288. package/skills/planning/product-intent/SKILL.md +9 -3
  289. package/skills/planning/tech-spec/SKILL.md +9 -3
  290. package/skills/registry.yaml +66 -66
  291. package/skills/research/arxiv-literature/SKILL.md +9 -3
  292. package/skills/research/experiment-protocol/SKILL.md +10 -3
  293. package/skills/research/scientific-debugging/SKILL.md +10 -3
  294. package/skills/research/scientific-debugging/evals.md +2 -2
  295. package/skills/research/scientific-modernization/SKILL.md +10 -3
  296. package/skills/skill-marketplace.json +285 -66
  297. package/skills/workflow/cut-it/SKILL.md +11 -3
  298. package/skills/workflow/design-council/SKILL.md +12 -3
  299. package/skills/workflow/grill-me/SKILL.md +9 -3
  300. package/skills/workflow/workflow-distiller/SKILL.md +9 -3
  301. package/src/cli/acp.ts +2 -2
  302. package/src/cli/args.ts +2 -2
  303. package/src/cli/auth.ts +2 -2
  304. package/src/cli/bootstrap-generate.ts +6 -6
  305. package/src/cli/clio.ts +6 -1
  306. package/src/cli/config-inspect.ts +68 -15
  307. package/src/cli/configure-interop.ts +1 -1
  308. package/src/cli/configure.ts +27 -31
  309. package/src/cli/default-target.ts +1 -1
  310. package/src/cli/docs.ts +28 -20
  311. package/src/cli/doctor-naming.ts +323 -0
  312. package/src/cli/doctor-panes.ts +46 -14
  313. package/src/cli/doctor-toolchain.ts +31 -10
  314. package/src/cli/doctor.ts +15 -1
  315. package/src/cli/eval-inventory.ts +8 -8
  316. package/src/cli/eval.ts +1 -2
  317. package/src/cli/evidence-detail.ts +1 -1
  318. package/src/cli/evidence-inventory.ts +1 -1
  319. package/src/cli/extensions.ts +2 -1
  320. package/src/cli/fleet-decisions.ts +1 -1
  321. package/src/cli/fleet-inspect.ts +1 -1
  322. package/src/cli/fleet-preflight.ts +1 -1
  323. package/src/cli/fleet-verify.ts +1 -1
  324. package/src/cli/fleet-view.ts +40 -23
  325. package/src/cli/fleet.ts +9 -6
  326. package/src/cli/index.ts +2 -1
  327. package/src/cli/internal-dispatch.ts +3 -4
  328. package/src/cli/interop-inspect.ts +2 -2
  329. package/src/cli/models.ts +3 -3
  330. package/src/cli/modes/print.ts +1 -1
  331. package/src/cli/panes.ts +19 -5
  332. package/src/cli/reset.ts +1 -1
  333. package/src/cli/run.ts +13 -17
  334. package/src/cli/share.ts +6 -2
  335. package/src/cli/skills-eval.ts +14 -14
  336. package/src/cli/targets.ts +25 -30
  337. package/src/cli/trace-inspect.ts +1 -1
  338. package/src/cli/trace.ts +96 -4
  339. package/src/cli/uninstall.ts +2 -2
  340. package/src/cli/upgrade.ts +29 -34
  341. package/src/cli/usage.ts +2 -2
  342. package/src/cli/validate-model.ts +1 -1
  343. package/src/cli/verifiers-inspect.ts +1 -1
  344. package/src/cli/wiki-generate.ts +6 -6
  345. package/src/core/artifact-paths.ts +1 -1
  346. package/src/core/bash-exec.ts +132 -87
  347. package/src/core/boot-trace.ts +3 -3
  348. package/src/core/bus-events.ts +51 -6
  349. package/src/core/bus-trace.ts +2 -2
  350. package/src/core/compile-cache.ts +1 -1
  351. package/src/core/config.ts +1066 -886
  352. package/src/core/defaults.ts +326 -530
  353. package/src/core/dispatch-outcome.ts +16 -0
  354. package/src/core/domain-loader.ts +6 -4
  355. package/src/core/event-bus.ts +1 -1
  356. package/src/core/file-references.ts +78 -88
  357. package/src/core/git-commit-attribution.ts +3 -9
  358. package/src/core/guardrails.ts +33 -52
  359. package/src/core/naming-compat.ts +45 -0
  360. package/src/core/naming-events.ts +62 -0
  361. package/src/core/prompt-hint.ts +9 -0
  362. package/src/core/recent-models.ts +1 -7
  363. package/src/core/residency-protection.ts +4 -8
  364. package/src/core/resolve-config-value.ts +1 -1
  365. package/src/core/response-model-id.ts +0 -14
  366. package/src/core/session-routing.ts +84 -74
  367. package/src/core/skill-activation.ts +18 -0
  368. package/src/core/termination.ts +4 -4
  369. package/src/core/timers.ts +2 -12
  370. package/src/domains/agents/builtins/architect.md +2 -3
  371. package/src/domains/agents/builtins/coder.md +3 -2
  372. package/src/domains/agents/builtins/debugger.md +2 -2
  373. package/src/domains/agents/builtins/documenter.md +2 -2
  374. package/src/domains/agents/builtins/git-master.md +1 -1
  375. package/src/domains/agents/builtins/oracle.md +1 -1
  376. package/src/domains/agents/builtins/provenance.md +1 -1
  377. package/src/domains/agents/builtins/researcher.md +1 -1
  378. package/src/domains/agents/builtins/scout.md +1 -1
  379. package/src/domains/agents/builtins/tester.md +2 -2
  380. package/src/domains/agents/builtins/verifier.md +2 -2
  381. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  382. package/src/domains/agents/catalog.ts +14 -26
  383. package/src/domains/agents/contract.ts +2 -0
  384. package/src/domains/agents/extension.ts +26 -4
  385. package/src/domains/agents/registry.ts +7 -7
  386. package/src/domains/agents/result-contract.ts +1 -1
  387. package/src/domains/agents/spec.ts +0 -11
  388. package/src/domains/config/classify.ts +35 -47
  389. package/src/domains/config/extension.ts +5 -5
  390. package/src/domains/config/keybindings.ts +56 -47
  391. package/src/domains/config/watcher.ts +1 -1
  392. package/src/domains/context/codewiki/indexer.ts +1 -1
  393. package/src/domains/context/extension.ts +3 -6
  394. package/src/domains/context/prompt-context.ts +1 -1
  395. package/src/domains/context/wiki/assemble.ts +2 -2
  396. package/src/domains/context/working-set/path-index.ts +1 -0
  397. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  398. package/src/domains/context/working-set/replay/report.ts +1 -1
  399. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  400. package/src/domains/dispatch/active-route-planner.ts +2 -2
  401. package/src/domains/dispatch/agent-candidates.ts +1 -1
  402. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  403. package/src/domains/dispatch/agent-ledger.ts +1 -1
  404. package/src/domains/dispatch/assignment.ts +5 -5
  405. package/src/domains/dispatch/capability-match.ts +10 -0
  406. package/src/domains/dispatch/capacity-lease.ts +2 -5
  407. package/src/domains/dispatch/code-step.ts +1 -1
  408. package/src/domains/dispatch/contract.ts +2 -2
  409. package/src/domains/dispatch/extension.ts +169 -82
  410. package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
  411. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  412. package/src/domains/dispatch/fleet-run.ts +0 -7
  413. package/src/domains/dispatch/gate-decisions.ts +25 -14
  414. package/src/domains/dispatch/host-verification.ts +435 -39
  415. package/src/domains/dispatch/intent-requirements.ts +10 -0
  416. package/src/domains/dispatch/intent.ts +18 -1
  417. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  418. package/src/domains/dispatch/path-scope.ts +220 -70
  419. package/src/domains/dispatch/placement.ts +2 -2
  420. package/src/domains/dispatch/receipt-findings.ts +1 -1
  421. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  422. package/src/domains/dispatch/reservation-store.ts +0 -23
  423. package/src/domains/dispatch/route-decision.ts +1 -1
  424. package/src/domains/dispatch/route-history.ts +1 -1
  425. package/src/domains/dispatch/route-policy.ts +1 -1
  426. package/src/domains/dispatch/route-readiness.ts +0 -28
  427. package/src/domains/dispatch/run-event-journal.ts +9 -19
  428. package/src/domains/dispatch/state.ts +2 -3
  429. package/src/domains/dispatch/tool-stats.ts +1 -1
  430. package/src/domains/dispatch/transport.ts +47 -40
  431. package/src/domains/dispatch/types.ts +58 -6
  432. package/src/domains/dispatch/worker-protocol.ts +2 -2
  433. package/src/domains/eval/artifacts/store.ts +10 -4
  434. package/src/domains/eval/compare/thresholds.ts +0 -8
  435. package/src/domains/eval/execution-provenance.ts +1 -1
  436. package/src/domains/eval/metrics/token-stream.ts +0 -7
  437. package/src/domains/eval/report.ts +1 -1
  438. package/src/domains/eval/runner.ts +1 -1
  439. package/src/domains/eval/runners/clio-run.ts +7 -6
  440. package/src/domains/eval/runners/external-command.ts +4 -3
  441. package/src/domains/eval/schema/artifact.ts +1 -1
  442. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  443. package/src/domains/eval/schema/behavioral.ts +7 -6
  444. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  445. package/src/domains/eval/schema/naming.ts +10 -0
  446. package/src/domains/eval/schema/suite.ts +2 -2
  447. package/src/domains/eval/schema/validate.ts +9 -5
  448. package/src/domains/eval/schema/verdict.ts +4 -2
  449. package/src/domains/eval/store.ts +20 -3
  450. package/src/domains/eval/suites/run.ts +12 -6
  451. package/src/domains/eval/types.ts +1 -1
  452. package/src/domains/eval/workspaces/git.ts +1 -1
  453. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  454. package/src/domains/evidence/build.ts +13 -5
  455. package/src/domains/evidence/trust-status.ts +10 -1
  456. package/src/domains/extensions/contract.ts +15 -1
  457. package/src/domains/extensions/discovery.ts +238 -41
  458. package/src/domains/extensions/extension.ts +105 -6
  459. package/src/domains/extensions/index.ts +24 -0
  460. package/src/domains/extensions/integrity.ts +189 -0
  461. package/src/domains/extensions/manager.ts +17 -1
  462. package/src/domains/extensions/resource-path.ts +27 -0
  463. package/src/domains/extensions/resources.ts +18 -38
  464. package/src/domains/extensions/snapshot-store.ts +39 -0
  465. package/src/domains/extensions/snapshot.ts +180 -0
  466. package/src/domains/extensions/state.ts +385 -57
  467. package/src/domains/extensions/types.ts +118 -1
  468. package/src/domains/interop/consent.ts +7 -7
  469. package/src/domains/interop/extension.ts +1 -1
  470. package/src/domains/lifecycle/doctor.ts +27 -21
  471. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  472. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  473. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  474. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  475. package/src/domains/lifecycle/migrations/index.ts +22 -1
  476. package/src/domains/lifecycle/naming-history.ts +153 -0
  477. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  478. package/src/domains/lifecycle/naming-resources.ts +276 -0
  479. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  480. package/src/domains/lifecycle/naming-yazi.ts +86 -0
  481. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  482. package/src/domains/memory/task-memory-handoff.ts +6 -3
  483. package/src/domains/middleware/contract.ts +26 -0
  484. package/src/domains/middleware/extension.ts +24 -24
  485. package/src/domains/middleware/hook-receipts.ts +27 -4
  486. package/src/domains/middleware/hooks-io.ts +65 -32
  487. package/src/domains/middleware/hooks.ts +64 -0
  488. package/src/domains/middleware/index.ts +35 -4
  489. package/src/domains/middleware/marketplace-offer.ts +339 -0
  490. package/src/domains/middleware/registrations.ts +326 -0
  491. package/src/domains/middleware/runtime.ts +30 -2
  492. package/src/domains/middleware/snapshot.ts +20 -7
  493. package/src/domains/mux/contract.ts +195 -25
  494. package/src/domains/mux/detect.ts +23 -6
  495. package/src/domains/mux/dock-controller.ts +365 -0
  496. package/src/domains/mux/extension.ts +7 -1
  497. package/src/domains/mux/index.ts +21 -1
  498. package/src/domains/mux/operations.ts +72 -5
  499. package/src/domains/mux/protocol.ts +19 -6
  500. package/src/domains/mux/socket-client.ts +167 -19
  501. package/src/domains/mux/types.ts +49 -6
  502. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  503. package/src/domains/mux/yazi/event-stream.ts +6 -4
  504. package/src/domains/mux/yazi/profile.ts +1 -1
  505. package/src/domains/mux/yazi/session.ts +79 -7
  506. package/src/domains/mux/yazi/theme.ts +117 -17
  507. package/src/domains/observability/contract.ts +10 -11
  508. package/src/domains/observability/extension.ts +12 -4
  509. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  510. package/src/domains/observability/projection.ts +15 -91
  511. package/src/domains/observability/trace-store.ts +65 -19
  512. package/src/domains/prompts/compiler.ts +75 -55
  513. package/src/domains/prompts/contract.ts +15 -3
  514. package/src/domains/prompts/extension.ts +100 -12
  515. package/src/domains/prompts/fragments/identity/clio-worker.md +2 -4
  516. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  517. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  518. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  519. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  520. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  521. package/src/domains/prompts/fragments/operating/skills.md +11 -18
  522. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  523. package/src/domains/providers/extension.ts +5 -5
  524. package/src/domains/providers/index.ts +1 -1
  525. package/src/domains/providers/knowledge-base-path.ts +1 -1
  526. package/src/domains/providers/model-runtime-capabilities.ts +99 -23
  527. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  528. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +671 -106
  529. package/src/domains/providers/plugins.ts +1 -1
  530. package/src/domains/providers/resolver.ts +1 -1
  531. package/src/domains/providers/runtime-resolution.ts +31 -0
  532. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  533. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  534. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  535. package/src/domains/providers/runtimes/common/probe-helpers.ts +9 -4
  536. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  537. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  538. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  539. package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
  540. package/src/domains/providers/types/cost-provenance.ts +19 -0
  541. package/src/domains/providers/types/knowledge-base.ts +13 -0
  542. package/src/domains/providers/types/local-model-quirks.ts +87 -39
  543. package/src/domains/providers/types/target-descriptor.ts +3 -3
  544. package/src/domains/resources/extension.ts +1 -1
  545. package/src/domains/resources/library.ts +6 -6
  546. package/src/domains/resources/prompts/loader.ts +1 -1
  547. package/src/domains/resources/skills/content-hash.ts +7 -6
  548. package/src/domains/resources/skills/evals.ts +1 -1
  549. package/src/domains/resources/skills/install.ts +36 -12
  550. package/src/domains/resources/skills/loader.ts +41 -18
  551. package/src/domains/resources/skills/marketplace.ts +21 -2
  552. package/src/domains/resources/skills/promotion.ts +214 -0
  553. package/src/domains/safety/audit.ts +2 -2
  554. package/src/domains/safety/call-target.ts +1 -1
  555. package/src/domains/safety/finish-contract.ts +2 -1
  556. package/src/domains/safety/loop-detector.ts +7 -4
  557. package/src/domains/safety/run-effects.ts +1 -1
  558. package/src/domains/scheduling/extension.ts +4 -4
  559. package/src/domains/session/archive-readers.ts +9 -1
  560. package/src/domains/session/compaction/branch-summary.ts +4 -0
  561. package/src/domains/session/compaction/compact.ts +1 -1
  562. package/src/domains/session/compaction/tokens.ts +4 -0
  563. package/src/domains/session/context-accounting.ts +1 -1
  564. package/src/domains/session/decision-board.ts +1 -1
  565. package/src/domains/session/extension.ts +1 -1
  566. package/src/domains/session/handoff.ts +2 -2
  567. package/src/domains/session/prompt-manifest.ts +0 -5
  568. package/src/domains/session/protected-artifact-journal.ts +12 -6
  569. package/src/domains/session/retry.ts +1 -1
  570. package/src/domains/session/task-board.ts +10 -9
  571. package/src/domains/share/archive.ts +249 -43
  572. package/src/domains/toolchain/install.ts +1 -1
  573. package/src/engine/acp/adapter.ts +3 -3
  574. package/src/engine/acp/event-mapper.ts +3 -3
  575. package/src/engine/acp/server.ts +89 -35
  576. package/src/engine/acp/tool-mediator.ts +2 -2
  577. package/src/engine/acp/types.ts +1 -1
  578. package/src/engine/alcf-oauth.ts +5 -5
  579. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  580. package/src/engine/api-registry.ts +1 -1
  581. package/src/engine/apis/llamacpp-residency.ts +4 -23
  582. package/src/engine/apis/lmstudio.ts +4 -9
  583. package/src/engine/apis/ollama-native.ts +9 -9
  584. package/src/engine/apis/openai-completions.ts +30 -27
  585. package/src/engine/apis/output-budget.ts +8 -18
  586. package/src/engine/apis/residency.ts +10 -35
  587. package/src/engine/claude/sdk-module.ts +1 -12
  588. package/src/engine/claude/sdk-runtime.ts +6 -6
  589. package/src/engine/claude/subprocess-runtime.ts +1 -1
  590. package/src/engine/claude/tool-safety.ts +4 -4
  591. package/src/engine/gemma-channel-filter.ts +19 -0
  592. package/src/engine/loop-guard.ts +92 -17
  593. package/src/engine/session.ts +14 -7
  594. package/src/engine/tui-primitives.ts +1 -1
  595. package/src/engine/worker-events.ts +6 -6
  596. package/src/engine/worker-runtime.ts +54 -24
  597. package/src/engine/worker-tools.ts +3 -1
  598. package/src/entry/extension-hook-sources.ts +28 -0
  599. package/src/entry/extension-reload.ts +309 -0
  600. package/src/entry/orchestrator.ts +163 -120
  601. package/src/interactive/application-controller.ts +23 -22
  602. package/src/interactive/bus-notices.ts +10 -3
  603. package/src/interactive/chat-loop-messages.ts +3 -13
  604. package/src/interactive/chat-loop.ts +18 -9
  605. package/src/interactive/chat-panel.ts +37 -14
  606. package/src/interactive/chat-renderer.ts +71 -7
  607. package/src/interactive/clio-editor.ts +105 -1
  608. package/src/interactive/context-activity.ts +8 -6
  609. package/src/interactive/context-meter.ts +3 -6
  610. package/src/interactive/context-overlay.ts +1 -1
  611. package/src/interactive/cost-overlay.ts +1 -1
  612. package/src/interactive/council-grid.ts +2 -2
  613. package/src/interactive/dispatch-board.ts +36 -44
  614. package/src/interactive/editor-bash.ts +21 -0
  615. package/src/interactive/editor-steer.ts +9 -4
  616. package/src/interactive/editor-submit.ts +24 -18
  617. package/src/interactive/external-editor.ts +1 -1
  618. package/src/interactive/file-reference-completion.ts +360 -0
  619. package/src/interactive/footer/dashboard.ts +15 -17
  620. package/src/interactive/footer/notifications.ts +14 -8
  621. package/src/interactive/footer/widgets.ts +15 -44
  622. package/src/interactive/interactive-application.ts +116 -61
  623. package/src/interactive/interactive-event-projection.ts +1 -1
  624. package/src/interactive/interactive-input-runtime.ts +6 -2
  625. package/src/interactive/interactive-presentation.ts +22 -17
  626. package/src/interactive/interactive-shell.ts +2 -2
  627. package/src/interactive/interactive-slash-runtime.ts +65 -17
  628. package/src/interactive/interactive-subscriptions.ts +1 -1
  629. package/src/interactive/interactive-tickers.ts +1 -1
  630. package/src/interactive/keybinding-manager.ts +4 -4
  631. package/src/interactive/layout.ts +1 -1
  632. package/src/interactive/memory-overlay.ts +2 -2
  633. package/src/interactive/modal-marker.ts +2 -21
  634. package/src/interactive/mutation-preview.ts +1 -1
  635. package/src/interactive/overlay-frame.ts +4 -12
  636. package/src/interactive/overlay-general-openers.ts +6 -2
  637. package/src/interactive/overlay-key-routing.ts +7 -7
  638. package/src/interactive/overlay-lifecycle.ts +1 -1
  639. package/src/interactive/overlay-model-selectors.ts +3 -3
  640. package/src/interactive/overlays/agents.ts +2 -2
  641. package/src/interactive/overlays/ask-user.ts +25 -11
  642. package/src/interactive/overlays/context-reset.ts +28 -4
  643. package/src/interactive/overlays/cwd-fallback.ts +28 -4
  644. package/src/interactive/overlays/decisions.ts +4 -2
  645. package/src/interactive/overlays/extensions.ts +9 -1
  646. package/src/interactive/overlays/fleet-run-approval.ts +3 -3
  647. package/src/interactive/overlays/handoff-review.ts +2 -2
  648. package/src/interactive/overlays/help-reference.ts +13 -0
  649. package/src/interactive/overlays/interop.ts +1 -1
  650. package/src/interactive/overlays/library-install-confirm.ts +1 -1
  651. package/src/interactive/overlays/message-picker.ts +1 -1
  652. package/src/interactive/overlays/model-selector.ts +39 -31
  653. package/src/interactive/overlays/prompts.ts +10 -4
  654. package/src/interactive/overlays/session-selector.ts +2 -2
  655. package/src/interactive/overlays/settings.ts +360 -303
  656. package/src/interactive/overlays/side-question.ts +2 -2
  657. package/src/interactive/overlays/skills-hub.ts +8 -8
  658. package/src/interactive/overlays/tree-selector.ts +2 -2
  659. package/src/interactive/panes-runtime.ts +145 -43
  660. package/src/interactive/permission-overlay.ts +2 -2
  661. package/src/interactive/prompt-cache-identity.ts +88 -0
  662. package/src/interactive/renderers/retry-status.ts +12 -4
  663. package/src/interactive/renderers/tool-execution.ts +4 -4
  664. package/src/interactive/session-transcript.ts +3 -3
  665. package/src/interactive/slash-autocomplete.ts +454 -165
  666. package/src/interactive/slash-commands.ts +401 -190
  667. package/src/interactive/slash-spec.ts +160 -17
  668. package/src/interactive/status/controller.ts +2 -2
  669. package/src/interactive/stream-pacing-policy.ts +1 -24
  670. package/src/interactive/tasks-overlay.ts +20 -13
  671. package/src/interactive/terminal-lease.ts +6 -7
  672. package/src/interactive/turn-context.ts +41 -26
  673. package/src/interactive/turn-persistence.ts +2 -2
  674. package/src/interactive/turn-prewarm.ts +2 -2
  675. package/src/interactive/turn-runtime.ts +8 -8
  676. package/src/interactive/turn-state.ts +1 -1
  677. package/src/interactive/view/artifacts.ts +12 -9
  678. package/src/interactive/view/view-overlay.ts +13 -10
  679. package/src/interactive/watch-pane.ts +38 -10
  680. package/src/interactive/welcome-dashboard.ts +15 -15
  681. package/src/interactive/worker-progress.ts +4 -4
  682. package/src/interactive/worker-receipts.ts +1 -1
  683. package/src/interactive/worker-stream.ts +1 -4
  684. package/src/interactive/yazi-bridge.ts +72 -11
  685. package/src/tools/agent-tools.ts +30 -1
  686. package/src/tools/artifact.ts +2 -2
  687. package/src/tools/ask-user.ts +6 -6
  688. package/src/tools/bash.ts +2 -2
  689. package/src/tools/bootstrap.ts +4 -0
  690. package/src/tools/builtin-tool-catalog.ts +52 -22
  691. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  692. package/src/tools/codewiki/code-nav.ts +99 -13
  693. package/src/tools/compete-worktrees.ts +27 -17
  694. package/src/tools/context/docs-engine.ts +20 -7
  695. package/src/tools/context/index.ts +44 -13
  696. package/src/tools/core-bootstrap.ts +28 -6
  697. package/src/tools/credential-present.ts +1 -2
  698. package/src/tools/dispatch-admission.ts +4 -2
  699. package/src/tools/dispatch-arguments.ts +6 -2
  700. package/src/tools/dispatch-plan.ts +48 -15
  701. package/src/tools/dispatch-run-events.ts +13 -11
  702. package/src/tools/dispatch-runner.ts +11 -6
  703. package/src/tools/dispatch-schema.ts +338 -0
  704. package/src/tools/dispatch-types.ts +3 -0
  705. package/src/tools/dispatch.ts +9 -254
  706. package/src/tools/find.ts +1 -6
  707. package/src/tools/ledger.ts +3 -5
  708. package/src/tools/monitor-surface.ts +5 -13
  709. package/src/tools/monitor.ts +4 -4
  710. package/src/tools/observation.ts +4 -5
  711. package/src/tools/observers.ts +0 -33
  712. package/src/tools/panes-surface.ts +4 -11
  713. package/src/tools/panes.ts +4 -2
  714. package/src/tools/policy.ts +15 -2
  715. package/src/tools/read.ts +5 -6
  716. package/src/tools/registry.ts +30 -7
  717. package/src/tools/result-shaping.ts +18 -14
  718. package/src/tools/steer-surface.ts +1 -1
  719. package/src/tools/task-worktree.ts +28 -7
  720. package/src/tools/tasks.ts +1 -1
  721. package/src/tools/truncate.ts +6 -5
  722. package/src/tools/verify/authoring.ts +3 -6
  723. package/src/tools/verify/frontend.ts +1 -1
  724. package/src/tools/verify/surface.ts +6 -12
  725. package/src/tools/web-fetch-surface.ts +1 -3
  726. package/src/tools/web-fetch.ts +1 -1
  727. package/src/worker/entry.ts +4 -3
  728. package/src/worker/protocol.ts +16 -14
  729. package/src/worker/spec-contract.ts +2 -2
  730. package/src/worker/stdin-demux.ts +2 -2
  731. package/dist/chunk-36EJLSQQ.js +0 -814
  732. package/dist/chunk-GXNLGKAB.js +0 -571
  733. package/dist/chunk-K7VKOLQQ.js +0 -15
  734. package/dist/chunk-PMZCIOCJ.js +0 -25
  735. package/dist/chunk-SUCTJL45.js +0 -45
  736. package/dist/chunk-SUW5DORT.js +0 -819
  737. package/dist/chunk-TZ3SGWZZ.js +0 -48
  738. package/dist/chunk-UOV2BYIW.js +0 -107
  739. package/dist/chunk-VFA6GDY5.js +0 -1625
  740. package/dist/doctor-QOA5FNY5.js +0 -313
  741. package/dist/fleet-view-ZCON35AG.js +0 -102
  742. package/dist/panes-HMABYVO4.js +0 -58
  743. package/docs/artifact-versions.md +0 -67
  744. package/docs/documentation-coverage.md +0 -46
  745. package/docs/documentation-guide.md +0 -167
  746. package/docs/release-cut-checklist.md +0 -193
  747. package/docs/time-conventions.md +0 -101
  748. package/skills/meta/clio-test/SKILL.md +0 -133
  749. package/skills/meta/clio-test/references/harness.md +0 -126
  750. package/skills/meta/clio-test/references/test-map.md +0 -69
  751. package/src/engine/apis/degraded-inference.ts +0 -95
@@ -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. */
@@ -50,9 +51,6 @@ export const RUN_EVENT_JOURNAL_FILE = "events.ndjson";
50
51
  export const RUN_EVENT_JOURNAL_CAP_BYTES = 2 * 1024 * 1024;
51
52
  /** Pending bytes that trigger a flush of droppable lines. */
52
53
  export const RUN_EVENT_JOURNAL_FLUSH_BYTES = 8 * 1024;
53
- /** Per-process env override, resolved ahead of settings (see runEventJournalEnabled). */
54
- export const RUN_EVENT_JOURNAL_ENV_VAR = "CLIO_CODER_RUN_JOURNAL";
55
-
56
54
  interface JournalLineBase {
57
55
  seq: number;
58
56
  at: string;
@@ -118,7 +116,7 @@ export interface RunEventJournal extends RunEventJournalSink {
118
116
  let configuredEnabled: boolean | undefined;
119
117
 
120
118
  /**
121
- * Install the `panes.journal` setting. Called from the composition root beside
119
+ * Install the `fleet.history.journal` setting. Called from the composition root beside
122
120
  * `configureGuardrails` so the journal never reads settings.yaml itself; a
123
121
  * settings read on the dispatch event path would be both a cost and a throw
124
122
  * site (readSettings rejects an invalid file).
@@ -127,17 +125,9 @@ export function configureRunEventJournal(enabled: boolean | undefined): void {
127
125
  configuredEnabled = enabled;
128
126
  }
129
127
 
130
- function parseEnvFlag(raw: string | undefined): boolean | undefined {
131
- if (raw === undefined) return undefined;
132
- const normalized = raw.trim().toLowerCase();
133
- if (normalized === "1" || normalized === "true" || normalized === "on") return true;
134
- if (normalized === "0" || normalized === "false" || normalized === "off") return false;
135
- return undefined;
136
- }
137
-
138
- /** env override > configured settings > on. */
139
- export function runEventJournalEnabled(env: NodeJS.ProcessEnv = process.env): boolean {
140
- return parseEnvFlag(env[RUN_EVENT_JOURNAL_ENV_VAR]) ?? configuredEnabled ?? true;
128
+ /** Effective settings projection, then the shipped default. */
129
+ function runEventJournalEnabled(): boolean {
130
+ return configuredEnabled ?? true;
141
131
  }
142
132
 
143
133
  // ---------------------------------------------------------------------------
@@ -150,7 +140,7 @@ export function runEventJournalRoot(): string {
150
140
  }
151
141
 
152
142
  /** One run's journal directory. */
153
- export function runEventJournalDir(runId: string, root?: string): string {
143
+ function runEventJournalDir(runId: string, root?: string): string {
154
144
  return join(root ?? runEventJournalRoot(), runId);
155
145
  }
156
146
 
@@ -247,10 +237,10 @@ export interface CreateRunEventJournalOptions {
247
237
  isEnabled?: () => boolean;
248
238
  }
249
239
 
250
- export function createRunEventJournal(options: CreateRunEventJournalOptions = {}): RunEventJournal {
240
+ function createRunEventJournal(options: CreateRunEventJournalOptions = {}): RunEventJournal {
251
241
  const capBytes = options.capBytes ?? RUN_EVENT_JOURNAL_CAP_BYTES;
252
242
  const flushBytes = options.flushBytes ?? RUN_EVENT_JOURNAL_FLUSH_BYTES;
253
- const warn = options.warn ?? ((message: string) => process.stderr.write(`[clio:journal] ${message}\n`));
243
+ const warn = options.warn ?? ((message: string) => process.stderr.write(`[clio-coder:journal] ${message}\n`));
254
244
  const now = options.now ?? (() => new Date());
255
245
  const isEnabled = options.isEnabled ?? (() => runEventJournalEnabled());
256
246
  const runs = new Map<string, RunJournalState>();
@@ -494,7 +484,7 @@ function parseJournalLine(raw: string): RunEventJournalLine | null {
494
484
  seq: record.seq,
495
485
  at: record.at,
496
486
  kind: "event",
497
- type: record.type,
487
+ type: normalizeClioCoderEventType(record.type),
498
488
  ...(detail === undefined ? {} : { detail }),
499
489
  };
500
490
  }
@@ -6,8 +6,8 @@
6
6
  * receipts/<runId>.json per-run RunReceipt
7
7
  *
8
8
  * The ledger holds an in-memory mirror of runs.json. `create()` and `update()`
9
- * mutate memory only; `persist()` writes the bounded ring (default 1000, env
10
- * override `CLIO_CODER_MAX_DISPATCH_RUNS`) atomically via engine.atomicWrite.
9
+ * mutate memory only; `persist()` writes the settings-bounded ring (default
10
+ * 1000) atomically via engine.atomicWrite.
11
11
  *
12
12
  * No worker spawning, no domain wire-up, no SafeEventBus emission yet. Those
13
13
  * land in P6S3 and P6S5. This slice is a pure persistence primitive.
@@ -159,7 +159,6 @@ function readRuns(): RunEnvelope[] {
159
159
 
160
160
  function resolveMaxRuns(opt?: number | undefined): number {
161
161
  if (opt !== undefined && opt > 0) return Math.floor(opt);
162
- // env (CLIO_CODER_MAX_DISPATCH_RUNS) > settings guardrails > default; see core/guardrails.ts.
163
162
  return resolveGuardrail("maxDispatchRuns");
164
163
  }
165
164
 
@@ -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
@@ -10,9 +10,9 @@
10
10
  *
11
11
  * SSH tier invariants:
12
12
  * - The remote environment is a whitelist, never the orchestrator's
13
- * process.env. Remote workers default to CLIO_CODER_RESIDENCY=observe so a
14
- * worker on a node that serves models for the operator can never evict a
15
- * resident model.
13
+ * process.env. Remote workers default to a user-managed target lifecycle
14
+ * so a worker on a node that serves models for the operator can never
15
+ * evict a resident model.
16
16
  * - The orchestrator cwd is entered on the remote node (shared-filesystem
17
17
  * assumption; path parity is a doctor preflight, and placement refuses
18
18
  * nodes that have not passed it).
@@ -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
 
@@ -68,9 +62,9 @@ export interface SshNodeEndpoint {
68
62
  */
69
63
  clioCoderEntry?: string;
70
64
  /**
71
- * Residency posture exported to the remote worker. Defaults to "observe":
72
- * remote workers must never evict models resident on their node. "manage"
73
- * is an explicit per-node opt-in.
65
+ * Residency posture projected into the remote worker's target lifecycle.
66
+ * Defaults to "observe": remote workers must never evict models resident on
67
+ * their node. "manage" is an explicit per-node opt-in.
74
68
  */
75
69
  residency?: "observe" | "manage";
76
70
  connectTimeoutSec?: number;
@@ -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
 
@@ -116,17 +99,36 @@ const DEFAULT_REMOTE_CLIO_ENTRY = "clio-coder worker";
116
99
  * orchestrator-supplied credential.
117
100
  */
118
101
  function remoteEnvAssignments(node: SshNodeEndpoint): string {
119
- const residency = node.residency ?? "observe";
120
102
  // `$$` is the login shell's pid, and it leads the process group the remote
121
103
  // command runs in. `exec` replaces that shell in place, so the worker
122
104
  // inherits both the pid and the group leadership, and the value it announces
123
105
  // is the group an abort must signal.
124
106
  const labels = (node.labels ?? []).map((label) => label.trim()).filter((label) => label.length > 0);
125
107
  const labelAssignment = labels.length > 0 ? ` CLIO_CODER_WORKER_LABELS=${shellQuote(labels.join(","))}` : "";
126
- return `AI_AGENT=${AI_AGENT_NAME} CLIO_CODER_RESIDENCY=${residency} CLIO_CODER_WORKER_PGID=$$${labelAssignment}`;
108
+ return `AI_AGENT=${AI_AGENT_NAME} CLIO_CODER_WORKER_PGID=$$${labelAssignment}`;
127
109
  }
128
110
 
129
- export function buildRemoteWorkerCommand(node: SshNodeEndpoint, cwd: string): string {
111
+ type TargetLifecycle = NonNullable<WorkerSpec["target"]["lifecycle"]>;
112
+
113
+ export function resolveSshTargetLifecycle(
114
+ residency: SshNodeEndpoint["residency"],
115
+ targetLifecycle: WorkerSpec["target"]["lifecycle"],
116
+ ): TargetLifecycle {
117
+ if (targetLifecycle === "user-managed" || residency !== "manage") return "user-managed";
118
+ return "clio-coder-managed";
119
+ }
120
+
121
+ function workerSpecForSshNode(node: SshNodeEndpoint, spec: WorkerSpec): WorkerSpec {
122
+ return {
123
+ ...spec,
124
+ target: {
125
+ ...spec.target,
126
+ lifecycle: resolveSshTargetLifecycle(node.residency, spec.target.lifecycle),
127
+ },
128
+ };
129
+ }
130
+
131
+ function buildRemoteWorkerCommand(node: SshNodeEndpoint, cwd: string): string {
130
132
  const entry =
131
133
  node.clioCoderEntry !== undefined && node.clioCoderEntry.trim().length > 0
132
134
  ? node.clioCoderEntry.trim()
@@ -191,20 +193,25 @@ export function createSshWorkerTransport(node: SshNodeEndpoint, opts?: SshTransp
191
193
  // are the transport's own and compose with the caller's rather than
192
194
  // replacing them; every other option is forwarded as handed.
193
195
  const { cwd: _consumedCwd, onAnnounce, onForcedKill, ...forwarded } = spawnOpts ?? {};
194
- return spawnWorkerProcess(sshBinary, buildSshArgs(node, buildRemoteWorkerCommand(node, cwd)), spec, {
195
- ...(opts?.shutdownGraceMs !== undefined ? { shutdownGraceMs: opts.shutdownGraceMs } : {}),
196
- ...forwarded,
197
- env: process.env,
198
- onAnnounce: (attestation) => {
199
- remote.pid = attestation.pid;
200
- remote.processGroupId = attestation.processGroupId;
201
- onAnnounce?.(attestation);
202
- },
203
- onForcedKill: () => {
204
- killRemote();
205
- onForcedKill?.();
196
+ return spawnWorkerProcess(
197
+ sshBinary,
198
+ buildSshArgs(node, buildRemoteWorkerCommand(node, cwd)),
199
+ workerSpecForSshNode(node, spec),
200
+ {
201
+ ...(opts?.shutdownGraceMs !== undefined ? { shutdownGraceMs: opts.shutdownGraceMs } : {}),
202
+ ...forwarded,
203
+ env: process.env,
204
+ onAnnounce: (attestation) => {
205
+ remote.pid = attestation.pid;
206
+ remote.processGroupId = attestation.processGroupId;
207
+ onAnnounce?.(attestation);
208
+ },
209
+ onForcedKill: () => {
210
+ killRemote();
211
+ onForcedKill?.();
212
+ },
206
213
  },
207
- });
214
+ );
208
215
  },
209
216
  };
210
217
  }
@@ -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
 
@@ -584,7 +584,7 @@ export interface RunReceiptSafetySummary {
584
584
  * (reason code `guard_block`); a call that required permission and was denied
585
585
  * non-interactively is counted under `permissionRequested`, not `blocked`, so
586
586
  * scripts can tell "approval would have been needed" apart from a policy
587
- * block (see docs/safety-model.md). Such a call still appears in
587
+ * block (see docs/architecture/safety-model.md). Such a call still appears in
588
588
  * `blockedAttempts` because its outcome was blocked, so `decisions.blocked`
589
589
  * is not a proxy for the number of blocked attempts; use `blockedAttempts`
590
590
  * or the `toolStats`/`toolActivity` blocked counts for that.
@@ -712,14 +712,66 @@ export interface RunHostVerificationCheck {
712
712
  memo: boolean;
713
713
  outputTail: string;
714
714
  artifactPath?: string;
715
- /** Original evidence owner on a memo hit. */
715
+ /** Run that owns the evidence when it did not come from this run: a memo hit, or the batch member the shared check ran under. */
716
716
  evidenceRunId?: string;
717
717
  }
718
718
 
719
+ /**
720
+ * Why a batch-settled failing check was or was not charged to a run. It is a
721
+ * batch-wide fact and is sealed identically on every receipt in the batch; each
722
+ * receipt's own `status` is what that run is judged by.
723
+ */
724
+ export interface RunHostVerificationAttribution {
725
+ /** Declared check id that failed. */
726
+ check: string;
727
+ /**
728
+ * Absolute repository paths the check's own output named, capped at 32. The
729
+ * paths that decided the charge come first so a truncated list still contains
730
+ * the evidence behind the verdict; each group is sorted.
731
+ */
732
+ implicated: string[];
733
+ /** Run ids the failure is charged to, sorted; empty when every named path belongs to a run that did not declare the check. */
734
+ charged: string[];
735
+ /**
736
+ * The weakest evidence behind the charge set, never the strongest, so the
737
+ * record cannot claim a certainty it does not have.
738
+ *
739
+ * `write_roots`: every charged run has an implicated path inside its own
740
+ * declared write roots. `attributed_elsewhere`: nothing is charged because
741
+ * every implicated path falls inside the write roots of a live batch member
742
+ * that did not declare this check. `unattributable`: the charge is not backed
743
+ * by per-run path evidence, which covers a failure that named no path, one
744
+ * that named only paths no member claims, and one charged to a run that
745
+ * declared no write roots at all. The first two of those charge every run that
746
+ * declared the check: a real failure with no owner is charged to everyone
747
+ * rather than excused for everyone.
748
+ */
749
+ basis: "write_roots" | "attributed_elsewhere" | "unattributable";
750
+ }
751
+
719
752
  export interface RunHostVerification {
720
- status: "verified" | "rejected" | "skipped";
753
+ /**
754
+ * `verified` states that every declared check passed, which is the claim
755
+ * `trust-status.ts:619` turns into "validated by host-verification".
756
+ * `not_implicated` is the batch-settled exculpation: a declared check failed
757
+ * for the batch and this run's `checks` carries its non-zero exit code, but
758
+ * the failure was charged elsewhere, so no validator speaks for this run.
759
+ */
760
+ status: "verified" | "rejected" | "skipped" | "not_implicated";
721
761
  reason?: string;
722
762
  checks: RunHostVerificationCheck[];
763
+ /**
764
+ * How the declared checks were run. Absent means the single-run strategy every
765
+ * receipt carried before batch settlement existed: the checks ran for this run
766
+ * alone, straight after it finished. `batch-settled` means they ran once for
767
+ * the whole parallel batch after every live member had finished. The field is
768
+ * omitted rather than stamped `"single"` so a single-task receipt digests
769
+ * exactly as it did before (`receipt-integrity.ts:145-147` is the same
770
+ * reasoning applied one field over).
771
+ */
772
+ strategy?: "batch-settled";
773
+ /** Per-failing-check attribution for a batch-settled run; absent when nothing failed. */
774
+ attribution?: RunHostVerificationAttribution[];
723
775
  }
724
776
 
725
777
  export interface RunReceipt {
@@ -810,7 +862,7 @@ export interface RunReceipt {
810
862
  dynamicHash?: string | null;
811
863
  promptSignature?: string | null;
812
864
  toolSignature?: string | null;
813
- clioVersion: string;
865
+ clioCoderVersion: string;
814
866
  piMonoVersion: string;
815
867
  platform: string;
816
868
  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
 
@@ -11,6 +11,11 @@ import { parseEvalVerdictEnvelopeV1 } from "../schema/verdict.js";
11
11
  import { evalRoot } from "../store.js";
12
12
  import { redactArtifactForStorage } from "./redact.js";
13
13
 
14
+ // This is the documented location (docs/architecture/artifact-versions.md's
15
+ // Eval Artifact row): <dataDir>/evals/<evalId>.json, flat. The legacy version-1
16
+ // shape skills-eval writes lives at evalRoot()/skills-eval/ instead
17
+ // (store.ts's evalArtifactPath) so the two writers can never resolve to the
18
+ // same file for the same id.
14
19
  function evalArtifactPathV4(dataDir: string, evalId: string): string {
15
20
  assertSafeId(evalId, "eval");
16
21
  return join(evalRoot(dataDir), `${evalId}.json`);
@@ -58,14 +63,15 @@ export function parseEvalArtifactV4(value: unknown, source: string): EvalArtifac
58
63
  value.aggregates === undefined
59
64
  ? undefined
60
65
  : (readArray(value, source, "aggregates") as NonNullable<EvalArtifactV4["aggregates"]>);
66
+ const clioCoder = asRecord(value.clioCoder ?? value.clio, `${source}.clioCoder`);
61
67
  return {
62
68
  version: 4,
63
69
  evalId: readString(value, source, "evalId"),
64
70
  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"),
71
+ clioCoder: {
72
+ version: readString(clioCoder, `${source}.clioCoder`, "version"),
73
+ commit: readNullableString(clioCoder, `${source}.clioCoder`, "commit"),
74
+ entry: readString(clioCoder, `${source}.clioCoder`, "entry"),
69
75
  },
70
76
  environment: {
71
77
  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`);
@@ -1,8 +1,9 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { normalizeEvalSchemaId } from "./naming.js";
2
3
  import { EVAL_VERDICT_SCHEMA_V1, type EvalVerdictEnvelopeV1 } from "./verdict.js";
3
4
 
4
- export const EVAL_BEHAVIOR_SCENARIO_SCHEMA_V1 = "clio.eval.scenario.v1" as const;
5
- export const EVAL_BEHAVIOR_SCHEMA_V1 = "clio.eval.behavior.v1" as const;
5
+ export const EVAL_BEHAVIOR_SCENARIO_SCHEMA_V1 = "clio-coder.eval.scenario.v1" as const;
6
+ export const EVAL_BEHAVIOR_SCHEMA_V1 = "clio-coder.eval.behavior.v1" as const;
6
7
 
7
8
  export const EVAL_BEHAVIOR_CATEGORIES = [
8
9
  "tool_choice",
@@ -102,7 +103,7 @@ export interface EvalBehaviorVerdictV1 {
102
103
 
103
104
  export function parseEvalBehaviorScenarioV1(value: unknown, source = "behavioral scenario"): EvalBehaviorScenarioV1 {
104
105
  const record = asRecord(value, source);
105
- if (record.schema !== EVAL_BEHAVIOR_SCENARIO_SCHEMA_V1) {
106
+ if (normalizeEvalSchemaId(record.schema) !== EVAL_BEHAVIOR_SCENARIO_SCHEMA_V1) {
106
107
  throw new Error(`${source}.schema: expected ${EVAL_BEHAVIOR_SCENARIO_SCHEMA_V1}`);
107
108
  }
108
109
  const corpus = asRecord(record.corpus, `${source}.corpus`);
@@ -153,7 +154,7 @@ export function parseEvalBehaviorScenarioV1(value: unknown, source = "behavioral
153
154
  };
154
155
  }
155
156
 
156
- export function canonicalizeEvalBehaviorJudgeInputV1(
157
+ function canonicalizeEvalBehaviorJudgeInputV1(
157
158
  value: unknown,
158
159
  scenario: EvalBehaviorScenarioV1,
159
160
  source = "behavioral judge input",
@@ -221,10 +222,10 @@ export function judgeEvalBehaviorV1(
221
222
 
222
223
  export function parseEvalBehaviorVerdictV1(value: unknown, source = "behavioral verdict"): EvalBehaviorVerdictV1 {
223
224
  const record = asRecord(value, source);
224
- if (record.schema !== EVAL_BEHAVIOR_SCHEMA_V1)
225
+ if (normalizeEvalSchemaId(record.schema) !== EVAL_BEHAVIOR_SCHEMA_V1)
225
226
  throw new Error(`${source}.schema: expected ${EVAL_BEHAVIOR_SCHEMA_V1}`);
226
227
  const verdictRef = asRecord(record.verdictRef, `${source}.verdictRef`);
227
- if (verdictRef.schema !== EVAL_VERDICT_SCHEMA_V1) {
228
+ if (normalizeEvalSchemaId(verdictRef.schema) !== EVAL_VERDICT_SCHEMA_V1) {
228
229
  throw new Error(`${source}.verdictRef.schema: expected ${EVAL_VERDICT_SCHEMA_V1}`);
229
230
  }
230
231
  const corpus = asRecord(record.corpus, `${source}.corpus`);
@@ -1,4 +1,6 @@
1
- export const EVAL_EXECUTION_ENVELOPE_SCHEMA_V1 = "clio.eval.execution-envelope.v1" as const;
1
+ import { normalizeEvalSchemaId } from "./naming.js";
2
+
3
+ export const EVAL_EXECUTION_ENVELOPE_SCHEMA_V1 = "clio-coder.eval.execution-envelope.v1" as const;
2
4
 
3
5
  export const EVAL_EXECUTION_MATRIX_DIMENSIONS_V1 = [
4
6
  "prompt",
@@ -56,7 +58,7 @@ export interface EvalExecutionEnvelopeV1 {
56
58
 
57
59
  export function parseEvalExecutionEnvelopeV1(value: unknown, source = "execution envelope"): EvalExecutionEnvelopeV1 {
58
60
  const record = asRecord(value, source);
59
- if (record.schema !== EVAL_EXECUTION_ENVELOPE_SCHEMA_V1) {
61
+ if (normalizeEvalSchemaId(record.schema) !== EVAL_EXECUTION_ENVELOPE_SCHEMA_V1) {
60
62
  throw new Error(`${source}.schema: expected ${EVAL_EXECUTION_ENVELOPE_SCHEMA_V1}`);
61
63
  }
62
64
  const prompt = asRecord(record.prompt, `${source}.prompt`);
@@ -0,0 +1,10 @@
1
+ /** Legacy eval identifiers are normalized only after decoding; writers use canonical schema constants. */
2
+ export function normalizeEvalSchemaId(value: unknown): unknown {
3
+ return typeof value === "string" && value.startsWith("clio.eval.")
4
+ ? `clio-coder.eval.${value.slice("clio.eval.".length)}`
5
+ : value;
6
+ }
7
+
8
+ export function normalizeEvalRunnerKind(value: unknown): unknown {
9
+ return value === "clio-run" ? "clio-coder-run" : value;
10
+ }