@iowarp/clio-coder 0.3.9 → 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 (733) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/NOTICE +33 -0
  3. package/README.md +121 -16
  4. package/dist/{acp-7LOELQFP.js → acp-ZILU3AUO.js} +19 -18
  5. package/dist/{agents-FIBG2SHA.js → agents-HYWGBGQR.js} +53 -39
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-OI4LIH2I.js → auth-N3QT7CBO.js} +24 -21
  8. package/dist/{builtins-AD25UL3C.js → builtins-UJLMOVOV.js} +6 -6
  9. package/dist/{chunk-I4HZDVNP.js → chunk-2LEAKD4C.js} +2 -3
  10. package/dist/{chunk-465CC7FK.js → chunk-2NM363SV.js} +60 -64
  11. package/dist/{chunk-4H6ULJ3H.js → chunk-2VG7KLYV.js} +1046 -1370
  12. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  13. package/dist/{chunk-NZU6YDNV.js → chunk-3I5NY75V.js} +5 -5
  14. package/dist/{chunk-47CMYGET.js → chunk-3QSOM6PA.js} +2 -2
  15. package/dist/chunk-42FMPA75.js +101 -0
  16. package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
  17. package/dist/{chunk-IHKBWSXF.js → chunk-5QIAJV2D.js} +3 -3
  18. package/dist/chunk-5YHDIDBP.js +97 -0
  19. package/dist/chunk-6CCS4G3W.js +1529 -0
  20. package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
  21. package/dist/{chunk-BVDVID7E.js → chunk-6FN3E6KX.js} +6 -6
  22. package/dist/{chunk-DG4M6ZUE.js → chunk-6HMJX2VU.js} +59 -59
  23. package/dist/{chunk-3MRC2YSQ.js → chunk-6I5ILFOF.js} +3 -2
  24. package/dist/chunk-6NJQITNH.js +1412 -0
  25. package/dist/chunk-6VC4OV3Z.js +365 -0
  26. package/dist/{chunk-LU7P4LHA.js → chunk-72GZI5EV.js} +2 -2
  27. package/dist/{chunk-5T7RBWN2.js → chunk-74YWRRU5.js} +9 -8
  28. package/dist/{chunk-VPTUJU4P.js → chunk-7EPLI7VL.js} +2 -2
  29. package/dist/{chunk-CA42X6KT.js → chunk-7OBGU7UB.js} +7 -7
  30. package/dist/{chunk-56KB5IJP.js → chunk-7PWAODYW.js} +3 -3
  31. package/dist/chunk-7RY5VZPH.js +573 -0
  32. package/dist/{chunk-OEDBCISO.js → chunk-ABLSQ6JX.js} +3 -3
  33. package/dist/{chunk-5HFBWUMU.js → chunk-AFKWHWXF.js} +13 -23
  34. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  35. package/dist/{chunk-WXCJ7VME.js → chunk-AKB4GYDL.js} +7 -7
  36. package/dist/chunk-AP73CFDC.js +308 -0
  37. package/dist/{chunk-4LJX2PUC.js → chunk-BBTJOK6Y.js} +5 -5
  38. package/dist/{chunk-QQ7EKM72.js → chunk-BDPT6GTK.js} +13 -61
  39. package/dist/chunk-BJGUKIG4.js +302 -0
  40. package/dist/chunk-BMS5RKQY.js +27 -0
  41. package/dist/{chunk-TD7UE2L5.js → chunk-BTGG6BG2.js} +81 -40
  42. package/dist/chunk-BTK3SSSK.js +67 -0
  43. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  44. package/dist/chunk-BWW4HLO4.js +301 -0
  45. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  46. package/dist/{chunk-HJB5IUKP.js → chunk-C537JADH.js} +18 -18
  47. package/dist/{chunk-774ILSRL.js → chunk-CDNVLKUX.js} +5 -4
  48. package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
  49. package/dist/{chunk-AEYBF3TB.js → chunk-CWVRRIEI.js} +2 -2
  50. package/dist/chunk-D4CJV46V.js +462 -0
  51. package/dist/chunk-D7E7WCDF.js +27 -0
  52. package/dist/{chunk-5PVQ4SRS.js → chunk-E67WX76H.js} +10 -126
  53. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  54. package/dist/chunk-EIMVLWB3.js +1842 -0
  55. package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
  56. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  57. package/dist/{chunk-3DUR4WUA.js → chunk-FYUN5KZ3.js} +25 -25
  58. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  59. package/dist/chunk-GIZNH63R.js +40 -0
  60. package/dist/chunk-GPPB3JBE.js +688 -0
  61. package/dist/{chunk-B5XRQOLB.js → chunk-GVQJ5CCZ.js} +17 -11
  62. package/dist/chunk-HHV2GANA.js +88 -0
  63. package/dist/chunk-HJWWJ6IL.js +184 -0
  64. package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
  65. package/dist/chunk-HRQMFLJP.js +75 -0
  66. package/dist/{chunk-AD7Y7STJ.js → chunk-HUAS7ITX.js} +107 -97
  67. package/dist/{chunk-O6I4CIEU.js → chunk-I66EAJFY.js} +6 -6
  68. package/dist/{chunk-S4COXYBG.js → chunk-IG7BCQBA.js} +129 -106
  69. package/dist/{chunk-N3PBVRTZ.js → chunk-IXJT6DCX.js} +9 -7
  70. package/dist/chunk-J4HBWF6Y.js +2635 -0
  71. package/dist/chunk-J5LZHVIT.js +284 -0
  72. package/dist/{chunk-GAYUJ7LE.js → chunk-JA5QWE4Z.js} +544 -227
  73. package/dist/{chunk-B5CSFE7B.js → chunk-JIEGK6UF.js} +6 -174
  74. package/dist/{chunk-VKBMFOYV.js → chunk-JZWT5J3Y.js} +23 -27
  75. package/dist/chunk-K6BF4U2H.js +1785 -0
  76. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  77. package/dist/{chunk-YSEHGPCT.js → chunk-MA3H6DM5.js} +6 -6
  78. package/dist/{chunk-EBOC7MT3.js → chunk-MOPSG2X7.js} +9 -9
  79. package/dist/{chunk-KV2AOLDF.js → chunk-MQXIVJ35.js} +18 -29
  80. package/dist/{chunk-P3JGPQFL.js → chunk-N5UK64DP.js} +4 -4
  81. package/dist/chunk-NDDGJUXD.js +81 -0
  82. package/dist/chunk-NEKRRTYW.js +56 -0
  83. package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
  84. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  85. package/dist/{chunk-T3Z6VAAF.js → chunk-OJTRZGR3.js} +53 -92
  86. package/dist/{chunk-5DQRIYDZ.js → chunk-PBP4B7XR.js} +3 -3
  87. package/dist/{chunk-NQ6UCCOD.js → chunk-PJJ6MY27.js} +8 -8
  88. package/dist/chunk-PMZCIOCJ.js +25 -0
  89. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  90. package/dist/{chunk-7C6RYZGQ.js → chunk-PVAMAVBB.js} +5 -4
  91. package/dist/chunk-QDC3K2U3.js +262 -0
  92. package/dist/{chunk-JEQQR47K.js → chunk-QKIFBZKT.js} +173 -14
  93. package/dist/{chunk-R7LNVMCS.js → chunk-QMXC4JB7.js} +70 -78
  94. package/dist/chunk-QSNYB6ZV.js +195 -0
  95. package/dist/chunk-QTFGO774.js +644 -0
  96. package/dist/{chunk-ODFEOB4F.js → chunk-R23Z6K6I.js} +27 -9
  97. package/dist/{chunk-3UUY7R3Z.js → chunk-R32CLGZ6.js} +14 -14
  98. package/dist/chunk-R346GLFC.js +31 -0
  99. package/dist/chunk-RKSR6VSF.js +132 -0
  100. package/dist/{chunk-N5XKWMDW.js → chunk-SCYB3HA4.js} +73 -27
  101. package/dist/{chunk-PZ4I4JE2.js → chunk-SINK3QR6.js} +135 -125
  102. package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
  103. package/dist/chunk-T56WDKA5.js +183 -0
  104. package/dist/{chunk-ECUO3KDP.js → chunk-TD3PGPQA.js} +87 -26
  105. package/dist/{chunk-HKO36JWF.js → chunk-THYWACCR.js} +31 -3
  106. package/dist/{chunk-LXPJXFM5.js → chunk-TVH4ONAM.js} +18 -12
  107. package/dist/chunk-TVHHYFHE.js +255 -0
  108. package/dist/chunk-U2WB7TZS.js +271 -0
  109. package/dist/{chunk-NNNWO6F2.js → chunk-UAPGZHYC.js} +237 -33
  110. package/dist/{chunk-MIX5N5AC.js → chunk-UEDMSP56.js} +415 -160
  111. package/dist/{chunk-WIE7ZOSW.js → chunk-UXN6JT4W.js} +3 -3
  112. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  113. package/dist/{chunk-MV2VUEJC.js → chunk-VEGN6WIQ.js} +2 -2
  114. package/dist/chunk-VKFQTNDV.js +66 -0
  115. package/dist/{chunk-FALJGAWU.js → chunk-VKRH2TCS.js} +2 -2
  116. package/dist/{chunk-A2NJGIB3.js → chunk-VN3SHNBN.js} +2 -2
  117. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  118. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  119. package/dist/{chunk-EQ63NRB7.js → chunk-WNP7O5WZ.js} +3 -3
  120. package/dist/chunk-WR6U3OVP.js +45 -0
  121. package/dist/{chunk-TEO2TLVN.js → chunk-XKA2ICR3.js} +1051 -1196
  122. package/dist/{chunk-3V5AYSEQ.js → chunk-Y45G3AXC.js} +72 -65
  123. package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
  124. package/dist/chunk-YAKGTXEV.js +17 -0
  125. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  126. package/dist/{chunk-YW7UVM5V.js → chunk-ZAZB4JMW.js} +55 -11
  127. package/dist/{chunk-HCBCAYZU.js → chunk-ZJLUDYFY.js} +11 -11
  128. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  129. package/dist/{chunk-IFBNV6H6.js → chunk-ZW55JB7N.js} +3 -3
  130. package/dist/cli/index.js +48 -37
  131. package/dist/clio-IT3G3VQH.js +25 -0
  132. package/dist/{code-nav-LMW275PA.js → code-nav-RK6S7F6E.js} +8 -8
  133. package/dist/codewiki/build-worker.js +1 -1
  134. package/dist/{compile-cache-CVJMMODC.js → compile-cache-OQAVB7Y5.js} +3 -5
  135. package/dist/{components-ZFA3SAER.js → components-UBWCQSRW.js} +6 -6
  136. package/dist/{config-RXS5T3JT.js → config-3QZRWZJF.js} +73 -61
  137. package/dist/configure-FL7Y3KJF.js +54 -0
  138. package/dist/{context-MVOORGMF.js → context-5HE7ODYK.js} +61 -49
  139. package/dist/{context-I3BTOTCS.js → context-KYQFRVDC.js} +11 -11
  140. package/dist/{context-PALKKQYL.js → context-XNHL75JV.js} +43 -28
  141. package/dist/{context-clear-N2WOYZ2K.js → context-clear-N545L53A.js} +60 -48
  142. package/dist/{context-working-set-MIEVECVZ.js → context-working-set-QHKXSV2F.js} +15 -13
  143. package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-RGIE5PCT.js} +109 -72
  144. package/dist/{docs-7LQ23DLM.js → docs-5NAF6AU7.js} +7 -13
  145. package/dist/doctor-ZGPEGHIP.js +772 -0
  146. package/dist/{eval-IJ5VEZDJ.js → eval-GXLL44RD.js} +106 -86
  147. package/dist/eval-inventory-HBWSWQOK.js +315 -0
  148. package/dist/{evidence-L5APPXNV.js → evidence-HWLBRH3Q.js} +209 -51
  149. package/dist/{evolve-RGNKFJ52.js → evolve-FTZBMNVW.js} +57 -45
  150. package/dist/{extensions-7WYWUX5A.js → extensions-VHRBEID7.js} +7 -7
  151. package/dist/{fleet-6CNVBZZP.js → fleet-CKZHJWZJ.js} +215 -114
  152. package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-EXDXBMV6.js} +13 -12
  153. package/dist/fleet-decisions-OTHB6KRL.js +157 -0
  154. package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-YTEZUCUT.js} +20 -17
  155. package/dist/fleet-inspect-SS6YMDCK.js +445 -0
  156. package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-PBY4VYOM.js} +6 -9
  157. package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-KMEM5L3S.js} +25 -20
  158. package/dist/fleet-verify-QD5M7E7Q.js +178 -0
  159. package/dist/fleet-view-WAMJYNDT.js +94 -0
  160. package/dist/{init-VBN2ACVA.js → init-5XQRBOFV.js} +79 -66
  161. package/dist/install-NKNG7KD4.js +13 -0
  162. package/dist/interop-34TVO25M.js +116 -0
  163. package/dist/{library-JHGUMLY2.js → library-3QY6KF57.js} +25 -21
  164. package/dist/{memory-K4OQIYWG.js → memory-L4UTIIIW.js} +59 -47
  165. package/dist/{models-2NCZUWDD.js → models-ZVX3QOWE.js} +47 -37
  166. package/dist/{monitor-MMVTJABD.js → monitor-CEKVSYTS.js} +67 -57
  167. package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-77BAP6BC.js} +7633 -7699
  168. package/dist/panes-7STHOAUJ.js +103 -0
  169. package/dist/panes-SHAUIRXY.js +60 -0
  170. package/dist/{paths-DBXMZMDU.js → paths-L7LGY6RN.js} +6 -6
  171. package/dist/{reset-DD5JGOY3.js → reset-EOLM7GVE.js} +15 -14
  172. package/dist/resources-74GKTLSF.js +115 -0
  173. package/dist/{run-QEGNX7FL.js → run-HBAUJNNZ.js} +139 -98
  174. package/dist/{share-JKD3BQMW.js → share-G3APVLVP.js} +25 -21
  175. package/dist/{skills-LMQIKDOZ.js → skills-35HHUKCR.js} +37 -27
  176. package/dist/{skills-eval-I7X2774U.js → skills-eval-QN4HSHDC.js} +80 -73
  177. package/dist/skills-inventory-J357J34F.js +129 -0
  178. package/dist/slash-commands-JZZCQA32.js +79 -0
  179. package/dist/{steer-CF5TDANS.js → steer-XAVHJM22.js} +4 -4
  180. package/dist/{support-I7LOJLIF.js → support-U7QOWY26.js} +7 -7
  181. package/dist/{targets-RUSR6B5Z.js → targets-DSM6CY3M.js} +67 -59
  182. package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-JOPFUVEM.js} +15 -10
  183. package/dist/tools-MKNWVPBH.js +29 -0
  184. package/dist/{trace-ODOQIVIW.js → trace-ECQ7TIYZ.js} +194 -7
  185. package/dist/tui-primitives-K5PASC3O.js +17 -0
  186. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-N34PCTGJ.js} +6 -8
  187. package/dist/{upgrade-XANW3FXB.js → upgrade-H7TOM7YL.js} +37 -62
  188. package/dist/{usage-4H7ZRXQT.js → usage-X52N3IDJ.js} +70 -59
  189. package/dist/{verifiers-UZXNBZEB.js → verifiers-EJTVVSMA.js} +174 -14
  190. package/dist/{verify-BVKWTNDL.js → verify-YJL6XET2.js} +12 -11
  191. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-MPIFL3LL.js} +3 -4
  192. package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-4NDZTQ4B.js} +86 -75
  193. package/dist/with-panes-OBOBFIIR.js +818 -0
  194. package/dist/worker/entry.js +131 -91
  195. package/docs/README.md +3 -2
  196. package/docs/acp.md +25 -4
  197. package/docs/alcf-provider.md +1 -1
  198. package/docs/architecture.md +2 -2
  199. package/docs/artifact-versions.md +4 -1
  200. package/docs/built-in-agents.md +40 -32
  201. package/docs/capacity-and-scheduling.md +43 -5
  202. package/docs/commands-and-modes.md +39 -4
  203. package/docs/config-knobs-audit.md +3 -0
  204. package/docs/configuration-and-targets.md +138 -167
  205. package/docs/context-engine.md +1 -1
  206. package/docs/development-pipeline.md +19 -0
  207. package/docs/dispatch-typed-intent.md +385 -0
  208. package/docs/documentation-coverage.md +2 -2
  209. package/docs/documentation-guide.md +1 -1
  210. package/docs/environment-variables.md +3 -1
  211. package/docs/eval-runner.md +1 -1
  212. package/docs/evals-internal.md +1 -1
  213. package/docs/evidence-and-memory.md +2 -2
  214. package/docs/evolution.md +1 -1
  215. package/docs/exit-codes-and-output.md +3 -1
  216. package/docs/extensions-and-sharing.md +25 -1
  217. package/docs/fleet-demo-runbook.md +6 -3
  218. package/docs/fleet-dispatch.md +30 -7
  219. package/docs/installation-and-lifecycle.md +16 -3
  220. package/docs/middleware-and-components.md +1 -1
  221. package/docs/model-catalog.md +10 -1
  222. package/docs/observability.md +3 -3
  223. package/docs/proactive-memory.md +1 -1
  224. package/docs/prompt-envelope-and-tools.md +1 -1
  225. package/docs/provider-adapter-cookbook.md +1 -1
  226. package/docs/release-cut-checklist.md +164 -177
  227. package/docs/safety-model.md +2 -2
  228. package/docs/scientific-validation.md +3 -3
  229. package/docs/session-lifecycle.md +1 -1
  230. package/docs/skills-marketplace.md +1 -1
  231. package/docs/tool-usage.md +18 -8
  232. package/docs/trace-store.md +16 -11
  233. package/docs/troubleshooting.md +2 -2
  234. package/docs/tui-design.md +1 -1
  235. package/docs/worker-dispatch-mechanics.md +1 -1
  236. package/evals/README.md +5 -0
  237. package/evals/behavioral-corpus-grader.mjs +103 -0
  238. package/evals/behavioral-machinery-baseline.json +2276 -0
  239. package/evals/behavioral-machinery-driver.ts +250 -0
  240. package/evals/behavioral-machinery-support.ts +253 -0
  241. package/evals/behavioral-machinery.yaml +614 -0
  242. package/evals/behavioral-model-negative-control.yaml +68 -0
  243. package/evals/behavioral-model.yaml +216 -0
  244. package/evals/fixtures/behavioral-facts.txt +3 -0
  245. package/evals/fixtures/behavioral-main.ts +7 -0
  246. package/evals/fixtures/decoy/note.txt +2 -0
  247. package/evals/fixtures/private/credentials.txt +1 -0
  248. package/evals/tracked-metrics-baseline.yaml +229 -0
  249. package/evals/tracked-metrics-grader.mjs +129 -0
  250. package/package.json +8 -16
  251. package/skills/README.md +6 -6
  252. package/skills/coding/ast-grep/SKILL.md +8 -2
  253. package/skills/coding/coding-standards/SKILL.md +8 -2
  254. package/skills/coding/prototype/SKILL.md +8 -2
  255. package/skills/coding/tdd/SKILL.md +8 -2
  256. package/skills/context/context-handoff/SKILL.md +12 -3
  257. package/skills/context/context-handoff/evals.md +3 -3
  258. package/skills/context/context-prime/SKILL.md +8 -2
  259. package/skills/context/context-prime/evals.md +2 -2
  260. package/skills/git/file-ticket/SKILL.md +9 -4
  261. package/skills/git/file-ticket/evals.md +2 -2
  262. package/skills/git/fix-issue/SKILL.md +12 -5
  263. package/skills/git/fix-issue/evals.md +4 -4
  264. package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
  265. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  266. package/skills/git/ship/SKILL.md +9 -3
  267. package/skills/git/ship/evals.md +4 -4
  268. package/skills/git/worktree-create/SKILL.md +7 -2
  269. package/skills/git/worktree-create/evals.md +6 -6
  270. package/skills/git/worktree-merge/SKILL.md +7 -2
  271. package/skills/git/worktree-merge/evals.md +6 -6
  272. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
  273. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
  274. package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
  275. package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
  276. package/skills/meta/credentials/SKILL.md +9 -2
  277. package/skills/meta/find-skills/SKILL.md +8 -2
  278. package/skills/meta/herdr/SKILL.md +8 -2
  279. package/skills/meta/skill-craft/SKILL.md +21 -4
  280. package/skills/planning/architecture/SKILL.md +9 -3
  281. package/skills/planning/backlog/SKILL.md +8 -2
  282. package/skills/planning/prd/SKILL.md +8 -2
  283. package/skills/planning/product-intent/SKILL.md +8 -2
  284. package/skills/planning/tech-spec/SKILL.md +9 -3
  285. package/skills/registry.yaml +66 -66
  286. package/skills/research/arxiv-literature/SKILL.md +8 -2
  287. package/skills/research/experiment-protocol/SKILL.md +9 -2
  288. package/skills/research/scientific-debugging/SKILL.md +9 -2
  289. package/skills/research/scientific-debugging/evals.md +2 -2
  290. package/skills/research/scientific-modernization/SKILL.md +9 -2
  291. package/skills/skill-marketplace.json +257 -38
  292. package/skills/workflow/cut-it/SKILL.md +10 -2
  293. package/skills/workflow/design-council/SKILL.md +11 -2
  294. package/skills/workflow/grill-me/SKILL.md +8 -2
  295. package/skills/workflow/workflow-distiller/SKILL.md +8 -2
  296. package/src/cli/acp.ts +8 -4
  297. package/src/cli/argv.ts +25 -0
  298. package/src/cli/auth.ts +2 -2
  299. package/src/cli/bootstrap-generate.ts +5 -5
  300. package/src/cli/clio.ts +6 -1
  301. package/src/cli/config-inspect.ts +3 -3
  302. package/src/cli/configure-interop.ts +1 -1
  303. package/src/cli/configure.ts +50 -48
  304. package/src/cli/default-target.ts +1 -1
  305. package/src/cli/docs.ts +6 -6
  306. package/src/cli/doctor-naming.ts +323 -0
  307. package/src/cli/doctor-panes.ts +156 -0
  308. package/src/cli/doctor-toolchain.ts +78 -0
  309. package/src/cli/doctor.ts +34 -1
  310. package/src/cli/eval-inventory.ts +436 -0
  311. package/src/cli/eval.ts +13 -0
  312. package/src/cli/evidence-detail.ts +88 -0
  313. package/src/cli/evidence-inventory.ts +183 -0
  314. package/src/cli/evidence.ts +30 -5
  315. package/src/cli/fleet-decisions.ts +69 -0
  316. package/src/cli/fleet-inspect.ts +334 -0
  317. package/src/cli/fleet-preflight.ts +1 -1
  318. package/src/cli/fleet-verify.ts +133 -0
  319. package/src/cli/fleet-view.ts +827 -0
  320. package/src/cli/fleet.ts +154 -40
  321. package/src/cli/index.ts +14 -2
  322. package/src/cli/interop-inspect.ts +128 -0
  323. package/src/cli/interop.ts +34 -0
  324. package/src/cli/models.ts +3 -3
  325. package/src/cli/modes/print.ts +1 -1
  326. package/src/cli/panes.ts +35 -0
  327. package/src/cli/reset.ts +6 -3
  328. package/src/cli/run.ts +67 -13
  329. package/src/cli/share.ts +1 -1
  330. package/src/cli/skills-eval.ts +11 -11
  331. package/src/cli/skills-inventory.ts +185 -0
  332. package/src/cli/skills.ts +16 -13
  333. package/src/cli/targets.ts +23 -24
  334. package/src/cli/tools.ts +321 -0
  335. package/src/cli/trace-inspect.ts +252 -0
  336. package/src/cli/trace.ts +64 -2
  337. package/src/cli/uninstall.ts +2 -2
  338. package/src/cli/upgrade.ts +29 -34
  339. package/src/cli/usage.ts +2 -2
  340. package/src/cli/validate-model.ts +1 -1
  341. package/src/cli/verifiers-inspect.ts +347 -0
  342. package/src/cli/verifiers.ts +9 -0
  343. package/src/cli/wiki-generate.ts +5 -5
  344. package/src/core/bash-exec.ts +1 -1
  345. package/src/core/boot-trace.ts +3 -3
  346. package/src/core/bus-events.ts +4 -0
  347. package/src/core/bus-trace.ts +2 -2
  348. package/src/core/compile-cache.ts +1 -1
  349. package/src/core/config.ts +1070 -845
  350. package/src/core/defaults.ts +342 -463
  351. package/src/core/domain-loader.ts +6 -4
  352. package/src/core/event-bus.ts +1 -1
  353. package/src/core/file-references.ts +78 -88
  354. package/src/core/git-commit-attribution.ts +3 -9
  355. package/src/core/guardrails.ts +24 -4
  356. package/src/core/naming-compat.ts +45 -0
  357. package/src/core/naming-events.ts +62 -0
  358. package/src/core/recent-models.ts +1 -7
  359. package/src/core/residency-protection.ts +4 -8
  360. package/src/core/resolve-config-value.ts +1 -1
  361. package/src/core/response-model-id.ts +0 -14
  362. package/src/core/response-schema.ts +44 -4
  363. package/src/core/session-routing.ts +84 -74
  364. package/src/core/skill-activation.ts +18 -0
  365. package/src/core/termination.ts +4 -4
  366. package/src/core/theme-token-hex.ts +43 -0
  367. package/src/core/timers.ts +2 -12
  368. package/src/core/tool-names.ts +2 -1
  369. package/src/core/xdg.ts +1 -1
  370. package/src/domains/agents/catalog.ts +2 -12
  371. package/src/domains/agents/extension.ts +3 -3
  372. package/src/domains/agents/fleets/build-review.md +0 -3
  373. package/src/domains/agents/fleets/build-test.md +0 -3
  374. package/src/domains/agents/registry.ts +7 -7
  375. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  376. package/src/domains/agents/result-contract.ts +165 -36
  377. package/src/domains/agents/spec.ts +0 -11
  378. package/src/domains/config/classify.ts +37 -46
  379. package/src/domains/config/extension.ts +5 -5
  380. package/src/domains/config/keybindings.ts +48 -47
  381. package/src/domains/config/watcher.ts +1 -1
  382. package/src/domains/context/codewiki/indexer.ts +1 -1
  383. package/src/domains/context/extension.ts +3 -3
  384. package/src/domains/context/prompt-context.ts +1 -1
  385. package/src/domains/context/wiki/assemble.ts +2 -2
  386. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  387. package/src/domains/context/working-set/replay/report.ts +1 -1
  388. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  389. package/src/domains/dispatch/active-route-planner.ts +2 -2
  390. package/src/domains/dispatch/admission-error.ts +9 -0
  391. package/src/domains/dispatch/admission.ts +22 -21
  392. package/src/domains/dispatch/agent-candidates.ts +1 -1
  393. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  394. package/src/domains/dispatch/agent-ledger.ts +1 -1
  395. package/src/domains/dispatch/assignment.ts +5 -5
  396. package/src/domains/dispatch/capacity-lease.ts +23 -6
  397. package/src/domains/dispatch/code-step.ts +1 -1
  398. package/src/domains/dispatch/contract.ts +2 -2
  399. package/src/domains/dispatch/council-topology.ts +398 -0
  400. package/src/domains/dispatch/extension.ts +287 -111
  401. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  402. package/src/domains/dispatch/fleet-plan.ts +7 -2
  403. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  404. package/src/domains/dispatch/fleet-run.ts +59 -3
  405. package/src/domains/dispatch/gate-decisions.ts +36 -15
  406. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  407. package/src/domains/dispatch/gate-topology.ts +289 -0
  408. package/src/domains/dispatch/index.ts +19 -0
  409. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  410. package/src/domains/dispatch/intent.ts +85 -1
  411. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  412. package/src/domains/dispatch/path-scope.ts +0 -61
  413. package/src/domains/dispatch/placement.ts +2 -2
  414. package/src/domains/dispatch/receipt-findings.ts +1 -1
  415. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  416. package/src/domains/dispatch/reservation-store.ts +24 -27
  417. package/src/domains/dispatch/route-decision.ts +1 -1
  418. package/src/domains/dispatch/route-history.ts +1 -1
  419. package/src/domains/dispatch/route-policy.ts +1 -1
  420. package/src/domains/dispatch/route-readiness.ts +0 -28
  421. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  422. package/src/domains/dispatch/run-event-journal.ts +599 -0
  423. package/src/domains/dispatch/state.ts +45 -1
  424. package/src/domains/dispatch/tool-stats.ts +1 -1
  425. package/src/domains/dispatch/transport.ts +2 -19
  426. package/src/domains/dispatch/types.ts +16 -3
  427. package/src/domains/dispatch/validation.ts +33 -8
  428. package/src/domains/dispatch/worker-protocol.ts +2 -2
  429. package/src/domains/eval/artifacts/store.ts +5 -4
  430. package/src/domains/eval/compare/compare.ts +3 -16
  431. package/src/domains/eval/compare/thresholds.ts +0 -8
  432. package/src/domains/eval/execution-provenance.ts +1 -1
  433. package/src/domains/eval/inventory.ts +113 -0
  434. package/src/domains/eval/metrics/token-stream.ts +0 -7
  435. package/src/domains/eval/report.ts +1 -1
  436. package/src/domains/eval/runner.ts +1 -1
  437. package/src/domains/eval/runners/clio-run.ts +7 -6
  438. package/src/domains/eval/runners/external-command.ts +4 -3
  439. package/src/domains/eval/schema/artifact.ts +1 -1
  440. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  441. package/src/domains/eval/schema/behavioral.ts +7 -6
  442. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  443. package/src/domains/eval/schema/naming.ts +10 -0
  444. package/src/domains/eval/schema/serving.ts +31 -0
  445. package/src/domains/eval/schema/suite.ts +2 -2
  446. package/src/domains/eval/schema/validate.ts +9 -5
  447. package/src/domains/eval/schema/verdict.ts +4 -2
  448. package/src/domains/eval/store.ts +12 -2
  449. package/src/domains/eval/suites/run.ts +12 -6
  450. package/src/domains/eval/types.ts +1 -1
  451. package/src/domains/eval/workspaces/git.ts +1 -1
  452. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  453. package/src/domains/evidence/build.ts +13 -5
  454. package/src/domains/evidence/store.ts +6 -0
  455. package/src/domains/interop/consent.ts +7 -7
  456. package/src/domains/interop/extension.ts +1 -1
  457. package/src/domains/lifecycle/doctor.ts +27 -21
  458. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  459. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  460. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  461. package/src/domains/lifecycle/migrations/index.ts +20 -1
  462. package/src/domains/lifecycle/naming-history.ts +153 -0
  463. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  464. package/src/domains/lifecycle/naming-resources.ts +261 -0
  465. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  466. package/src/domains/lifecycle/naming-yazi.ts +81 -0
  467. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  468. package/src/domains/memory/index.ts +0 -1
  469. package/src/domains/memory/task-memory-handoff.ts +6 -3
  470. package/src/domains/memory/task-memory-policy.ts +6 -10
  471. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  472. package/src/domains/middleware/index.ts +7 -0
  473. package/src/domains/middleware/marketplace-offer.ts +339 -0
  474. package/src/domains/middleware/memory-intervention.ts +33 -21
  475. package/src/domains/middleware/runtime.ts +2 -2
  476. package/src/domains/mux/contract.ts +566 -0
  477. package/src/domains/mux/detect.ts +182 -0
  478. package/src/domains/mux/dock-controller.ts +365 -0
  479. package/src/domains/mux/extension.ts +53 -0
  480. package/src/domains/mux/index.ts +116 -0
  481. package/src/domains/mux/manifest.ts +6 -0
  482. package/src/domains/mux/operations.ts +192 -0
  483. package/src/domains/mux/pane-registry.ts +90 -0
  484. package/src/domains/mux/protocol.ts +62 -0
  485. package/src/domains/mux/socket-client.ts +964 -0
  486. package/src/domains/mux/types.ts +265 -0
  487. package/src/domains/mux/viewer-command.ts +59 -0
  488. package/src/domains/mux/yazi/assets/init.lua +2 -0
  489. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  490. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  491. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  492. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  493. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  494. package/src/domains/mux/yazi/event-stream.ts +182 -0
  495. package/src/domains/mux/yazi/profile.ts +299 -0
  496. package/src/domains/mux/yazi/session.ts +251 -0
  497. package/src/domains/mux/yazi/theme.ts +30 -0
  498. package/src/domains/observability/cost.ts +21 -0
  499. package/src/domains/observability/extension.ts +1 -1
  500. package/src/domains/observability/index.ts +2 -0
  501. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  502. package/src/domains/observability/projection.ts +1 -1
  503. package/src/domains/observability/trace-store.ts +63 -11
  504. package/src/domains/prompts/compiler.ts +2 -2
  505. package/src/domains/prompts/extension.ts +3 -3
  506. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
  507. package/src/domains/prompts/fragments/operating/skills.md +25 -18
  508. package/src/domains/providers/endpoint-capacity.ts +154 -22
  509. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  510. package/src/domains/providers/extension.ts +25 -8
  511. package/src/domains/providers/index.ts +22 -0
  512. package/src/domains/providers/knowledge-base-path.ts +1 -1
  513. package/src/domains/providers/model-runtime-capabilities.ts +46 -2
  514. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  515. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
  516. package/src/domains/providers/plugins.ts +1 -1
  517. package/src/domains/providers/resolver.ts +1 -1
  518. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  519. package/src/domains/providers/runtimes/builtins.ts +2 -0
  520. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  521. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  522. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  523. package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
  524. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  525. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  526. package/src/domains/providers/runtimes/protocol/litellm.ts +285 -0
  527. package/src/domains/providers/support.ts +1 -0
  528. package/src/domains/providers/target-model-cache.ts +124 -0
  529. package/src/domains/providers/types/knowledge-base.ts +13 -0
  530. package/src/domains/providers/types/local-model-quirks.ts +2 -2
  531. package/src/domains/providers/types/target-descriptor.ts +3 -3
  532. package/src/domains/resources/extension.ts +1 -1
  533. package/src/domains/resources/index.ts +3 -0
  534. package/src/domains/resources/library.ts +6 -6
  535. package/src/domains/resources/prompts/loader.ts +1 -1
  536. package/src/domains/resources/skills/content-hash.ts +7 -6
  537. package/src/domains/resources/skills/evals.ts +1 -1
  538. package/src/domains/resources/skills/install.ts +36 -12
  539. package/src/domains/resources/skills/loader.ts +72 -13
  540. package/src/domains/resources/skills/marketplace.ts +21 -2
  541. package/src/domains/resources/skills/promotion.ts +214 -0
  542. package/src/domains/safety/action-classifier.ts +6 -0
  543. package/src/domains/safety/audit.ts +2 -2
  544. package/src/domains/safety/finish-contract.ts +2 -1
  545. package/src/domains/safety/run-effects.ts +1 -1
  546. package/src/domains/scheduling/extension.ts +4 -4
  547. package/src/domains/session/archive-readers.ts +9 -1
  548. package/src/domains/session/compaction/branch-summary.ts +4 -0
  549. package/src/domains/session/compaction/compact.ts +1 -1
  550. package/src/domains/session/compaction/tokens.ts +4 -0
  551. package/src/domains/session/context-accounting.ts +1 -1
  552. package/src/domains/session/decision-board.ts +1 -1
  553. package/src/domains/session/extension.ts +1 -1
  554. package/src/domains/session/handoff.ts +2 -2
  555. package/src/domains/session/prompt-manifest.ts +0 -5
  556. package/src/domains/session/protected-artifact-journal.ts +12 -6
  557. package/src/domains/session/retry.ts +1 -1
  558. package/src/domains/share/archive.ts +85 -36
  559. package/src/domains/toolchain/archive.ts +175 -0
  560. package/src/domains/toolchain/contract.ts +28 -0
  561. package/src/domains/toolchain/extension.ts +47 -0
  562. package/src/domains/toolchain/index.ts +39 -0
  563. package/src/domains/toolchain/install.ts +327 -0
  564. package/src/domains/toolchain/manifest.ts +8 -0
  565. package/src/domains/toolchain/paths.ts +34 -0
  566. package/src/domains/toolchain/registry.ts +265 -0
  567. package/src/domains/toolchain/remove.ts +218 -0
  568. package/src/domains/toolchain/resolve.ts +182 -0
  569. package/src/domains/toolchain/types.ts +113 -0
  570. package/src/domains/toolchain/version.ts +88 -0
  571. package/src/engine/acp/adapter.ts +3 -3
  572. package/src/engine/acp/event-mapper.ts +3 -3
  573. package/src/engine/acp/server.ts +440 -96
  574. package/src/engine/acp/tool-mediator.ts +2 -2
  575. package/src/engine/acp/types.ts +20 -2
  576. package/src/engine/alcf-oauth.ts +5 -5
  577. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  578. package/src/engine/api-registry.ts +1 -1
  579. package/src/engine/apis/llamacpp-residency.ts +1 -19
  580. package/src/engine/apis/lmstudio.ts +1 -6
  581. package/src/engine/apis/ollama-native.ts +3 -3
  582. package/src/engine/apis/openai-completions.ts +2 -2
  583. package/src/engine/apis/residency.ts +3 -9
  584. package/src/engine/claude/sdk-module.ts +87 -0
  585. package/src/engine/claude/sdk-runtime.ts +25 -17
  586. package/src/engine/claude/subprocess-runtime.ts +1 -1
  587. package/src/engine/claude/tool-safety.ts +4 -4
  588. package/src/engine/loop-guard.ts +0 -5
  589. package/src/engine/session.ts +14 -7
  590. package/src/engine/tui-primitives.ts +21 -0
  591. package/src/engine/tui.ts +1 -0
  592. package/src/engine/worker-events.ts +6 -6
  593. package/src/engine/worker-runtime.ts +16 -26
  594. package/src/entry/boot-options.ts +2 -0
  595. package/src/entry/orchestrator.ts +207 -90
  596. package/src/entry/panes-activation.ts +31 -0
  597. package/src/entry/with-panes.ts +20 -0
  598. package/src/interactive/application-controller.ts +21 -21
  599. package/src/interactive/bus-notices.ts +2 -2
  600. package/src/interactive/chat-loop.ts +8 -8
  601. package/src/interactive/chat-panel.ts +1 -1
  602. package/src/interactive/clio-editor.ts +105 -1
  603. package/src/interactive/context-activity.ts +8 -6
  604. package/src/interactive/context-meter.ts +3 -6
  605. package/src/interactive/context-overlay.ts +2 -1
  606. package/src/interactive/cost-overlay.ts +3 -1
  607. package/src/interactive/council-grid.ts +3 -5
  608. package/src/interactive/council.ts +11 -0
  609. package/src/interactive/dispatch-board.ts +56 -49
  610. package/src/interactive/editor-bash.ts +21 -0
  611. package/src/interactive/editor-steer.ts +9 -4
  612. package/src/interactive/editor-submit.ts +24 -18
  613. package/src/interactive/external-editor.ts +1 -1
  614. package/src/interactive/file-reference-completion.ts +360 -0
  615. package/src/interactive/footer/dashboard.ts +15 -17
  616. package/src/interactive/footer/notifications.ts +14 -8
  617. package/src/interactive/footer/widgets.ts +2 -44
  618. package/src/interactive/interactive-application.ts +229 -62
  619. package/src/interactive/interactive-event-projection.ts +1 -1
  620. package/src/interactive/interactive-input-runtime.ts +9 -2
  621. package/src/interactive/interactive-presentation.ts +21 -16
  622. package/src/interactive/interactive-shell.ts +2 -2
  623. package/src/interactive/interactive-slash-runtime.ts +99 -23
  624. package/src/interactive/interactive-subscriptions.ts +1 -1
  625. package/src/interactive/interactive-tickers.ts +1 -1
  626. package/src/interactive/keybinding-manager.ts +4 -4
  627. package/src/interactive/layout.ts +1 -1
  628. package/src/interactive/memory-overlay.ts +3 -2
  629. package/src/interactive/modal-marker.ts +151 -0
  630. package/src/interactive/mutation-preview.ts +1 -1
  631. package/src/interactive/mux-bridge.ts +214 -0
  632. package/src/interactive/overlay-frame.ts +62 -14
  633. package/src/interactive/overlay-general-openers.ts +7 -2
  634. package/src/interactive/overlay-key-routing.ts +21 -10
  635. package/src/interactive/overlay-lifecycle.ts +20 -4
  636. package/src/interactive/overlay-model-selectors.ts +43 -6
  637. package/src/interactive/overlay-permission-lifecycle.ts +90 -22
  638. package/src/interactive/overlay-transitions.ts +18 -4
  639. package/src/interactive/overlays/agents.ts +3 -2
  640. package/src/interactive/overlays/ask-user.ts +161 -41
  641. package/src/interactive/overlays/auth-dialog.ts +1 -0
  642. package/src/interactive/overlays/context-reset.ts +29 -4
  643. package/src/interactive/overlays/cwd-fallback.ts +29 -4
  644. package/src/interactive/overlays/decisions.ts +15 -13
  645. package/src/interactive/overlays/extensions.ts +1 -0
  646. package/src/interactive/overlays/fleet-run-approval.ts +4 -3
  647. package/src/interactive/overlays/handoff-review.ts +3 -2
  648. package/src/interactive/overlays/help-reference.ts +2 -0
  649. package/src/interactive/overlays/interop.ts +2 -1
  650. package/src/interactive/overlays/library-install-confirm.ts +2 -1
  651. package/src/interactive/overlays/library-tabs.ts +28 -0
  652. package/src/interactive/overlays/list-overlay.ts +10 -1
  653. package/src/interactive/overlays/message-picker.ts +2 -1
  654. package/src/interactive/overlays/model-scope.ts +86 -0
  655. package/src/interactive/overlays/model-selector.ts +40 -31
  656. package/src/interactive/overlays/prompts.ts +11 -4
  657. package/src/interactive/overlays/session-selector.ts +3 -2
  658. package/src/interactive/overlays/settings-sections.ts +30 -0
  659. package/src/interactive/overlays/settings.ts +849 -268
  660. package/src/interactive/overlays/side-question.ts +3 -2
  661. package/src/interactive/overlays/skills-hub.ts +11 -19
  662. package/src/interactive/overlays/tree-selector.ts +3 -2
  663. package/src/interactive/pane-policy.ts +46 -0
  664. package/src/interactive/panes-runtime.ts +318 -0
  665. package/src/interactive/permission-overlay.ts +2 -2
  666. package/src/interactive/renderers/compaction-summary.ts +29 -0
  667. package/src/interactive/renderers/retry-status.ts +12 -4
  668. package/src/interactive/renderers/tool-execution.ts +4 -4
  669. package/src/interactive/renderers/worker-entry.ts +122 -14
  670. package/src/interactive/session-transcript.ts +3 -3
  671. package/src/interactive/slash-autocomplete.ts +454 -165
  672. package/src/interactive/slash-commands.ts +521 -189
  673. package/src/interactive/slash-spec.ts +160 -17
  674. package/src/interactive/status/controller.ts +2 -2
  675. package/src/interactive/stream-pacing-policy.ts +1 -1
  676. package/src/interactive/tasks-overlay.ts +21 -13
  677. package/src/interactive/terminal-lease.ts +6 -7
  678. package/src/interactive/theme/tokens.ts +3 -14
  679. package/src/interactive/turn-context.ts +58 -13
  680. package/src/interactive/turn-persistence.ts +2 -2
  681. package/src/interactive/turn-prewarm.ts +2 -2
  682. package/src/interactive/turn-runtime.ts +8 -8
  683. package/src/interactive/turn-state.ts +1 -1
  684. package/src/interactive/view/artifacts.ts +120 -9
  685. package/src/interactive/view/view-overlay.ts +14 -10
  686. package/src/interactive/watch-pane.ts +180 -0
  687. package/src/interactive/welcome-dashboard.ts +15 -15
  688. package/src/interactive/worker-progress.ts +11 -5
  689. package/src/interactive/worker-receipts.ts +20 -2
  690. package/src/interactive/worker-stream.ts +6 -4
  691. package/src/interactive/yazi-bridge.ts +451 -0
  692. package/src/tools/ask-user.ts +3 -3
  693. package/src/tools/bash.ts +1 -1
  694. package/src/tools/bootstrap.ts +26 -2
  695. package/src/tools/builtin-tool-catalog.ts +16 -1
  696. package/src/tools/compete-worktrees.ts +108 -17
  697. package/src/tools/context/index.ts +15 -1
  698. package/src/tools/core-bootstrap.ts +2 -1
  699. package/src/tools/dispatch-admission.ts +18 -5
  700. package/src/tools/dispatch-arguments.ts +21 -21
  701. package/src/tools/dispatch-plan.ts +0 -11
  702. package/src/tools/dispatch-run-events.ts +145 -28
  703. package/src/tools/dispatch-runner.ts +40 -13
  704. package/src/tools/dispatch-types.ts +15 -3
  705. package/src/tools/dispatch.ts +2 -2
  706. package/src/tools/executables.ts +17 -14
  707. package/src/tools/find.ts +1 -6
  708. package/src/tools/monitor.ts +4 -4
  709. package/src/tools/observation.ts +54 -4
  710. package/src/tools/observers.ts +0 -33
  711. package/src/tools/panes-surface.ts +38 -0
  712. package/src/tools/panes.ts +112 -0
  713. package/src/tools/policy.ts +10 -1
  714. package/src/tools/presentation.ts +1 -0
  715. package/src/tools/task-worktree.ts +28 -7
  716. package/src/tools/verify/authoring.ts +3 -6
  717. package/src/tools/verify/frontend.ts +1 -1
  718. package/src/tools/web-fetch.ts +1 -1
  719. package/src/worker/entry.ts +4 -3
  720. package/src/worker/protocol.ts +16 -14
  721. package/src/worker/spec-contract.ts +2 -2
  722. package/src/worker/stdin-demux.ts +2 -2
  723. package/dist/chunk-D73KXYPF.js +0 -37
  724. package/dist/chunk-MLOK6ZOS.js +0 -2888
  725. package/dist/chunk-PNY46YEY.js +0 -1581
  726. package/dist/chunk-XDOQXGFO.js +0 -515
  727. package/dist/chunk-YKOFT37S.js +0 -279
  728. package/dist/clio-LT5V7SSZ.js +0 -26
  729. package/dist/configure-2WYWSCSD.js +0 -49
  730. package/dist/doctor-TWBWFK5V.js +0 -165
  731. package/src/engine/apis/degraded-inference.ts +0 -95
  732. /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
  733. /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
@@ -0,0 +1,251 @@
1
+ import { spawn } from "node:child_process";
2
+ import { randomUUID } from "node:crypto";
3
+ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
4
+ import { join } from "node:path";
5
+ import { namingCompatibilityEnvironment } from "../../../core/naming-compat.js";
6
+ import { clioCacheDir } from "../../../core/xdg.js";
7
+ import { findPinnedTool } from "../../toolchain/registry.js";
8
+ import { describeResolution, resolveToolBinary, toolStatus } from "../../toolchain/resolve.js";
9
+ import type { MuxContract } from "../contract.js";
10
+ import type { MuxPaneRef } from "../types.js";
11
+ import {
12
+ createYaziEventStream,
13
+ LEGACY_YAZI_PICK_EVENT,
14
+ YAZI_PICK_EVENT,
15
+ YAZI_STREAM_POLL_MS,
16
+ type YaziEvent,
17
+ type YaziEventStream,
18
+ } from "./event-stream.js";
19
+ import { ensureYaziProfile, type YaziProfile, yaziProfileDir } from "./profile.js";
20
+
21
+ export type YaziSessionMode = "companion" | "chooser";
22
+ export type YaziProfileMode = "managed" | "user";
23
+
24
+ export interface YaziResolvedBinaries {
25
+ yaziPath: string | null;
26
+ yaPath: string | null;
27
+ missingYaziDetail: string;
28
+ }
29
+
30
+ export interface YaziChooserResult {
31
+ paths: ReadonlyArray<string>;
32
+ cwd: string;
33
+ }
34
+
35
+ export interface YaziSessionSnapshot {
36
+ mode: YaziSessionMode;
37
+ paneId: string;
38
+ paneCwd: string;
39
+ instanceId: string | null;
40
+ lastLineAt: number | null;
41
+ streamPath: string | null;
42
+ chooserPath: string | null;
43
+ }
44
+
45
+ export interface YaziSession {
46
+ readonly mode: YaziSessionMode;
47
+ readonly pane: Readonly<MuxPaneRef>;
48
+ readonly token: string | null;
49
+ readonly profile: Readonly<YaziProfile> | null;
50
+ snapshot(): Readonly<YaziSessionSnapshot>;
51
+ pushCwd(cwd: string): Promise<boolean>;
52
+ close(): Promise<void>;
53
+ }
54
+
55
+ export type YaziSessionOpenResult =
56
+ | { status: "opened"; session: YaziSession }
57
+ | { status: "missing-binary"; binary: "yazi" | "ya"; detail: string }
58
+ | { status: "profile-error"; reason: string }
59
+ | { status: "unavailable"; reason: string };
60
+
61
+ export interface YaziSessionOptions {
62
+ mux: MuxContract;
63
+ mode: YaziSessionMode;
64
+ profileMode: YaziProfileMode;
65
+ cwd: string;
66
+ /**
67
+ * Files-dock share of the height. Set by the interactive bridge from
68
+ * `interface.panes.files.ratio`; absent it, the dock spec's default governs.
69
+ */
70
+ dockShare?: number;
71
+ onEvent: (event: YaziEvent) => void;
72
+ onChooser: (result: YaziChooserResult) => void;
73
+ onStopped?: (reason: string) => void;
74
+ log?: (level: "debug" | "warning", message: string) => void;
75
+ cacheDir?: string;
76
+ sessionId?: string;
77
+ pickToken?: string;
78
+ pollMs?: number;
79
+ resolveBinaries?: () => YaziResolvedBinaries;
80
+ ensureProfile?: typeof ensureYaziProfile;
81
+ runYa?: (file: string, args: ReadonlyArray<string>, env: Readonly<NodeJS.ProcessEnv>) => Promise<boolean>;
82
+ }
83
+
84
+ export function resolveYaziBinaries(): YaziResolvedBinaries {
85
+ const entry = findPinnedTool("yazi");
86
+ const status = entry ? toolStatus(entry) : null;
87
+ return {
88
+ yaziPath: status?.resolution.binaryPath ?? null,
89
+ yaPath: resolveToolBinary("ya").binaryPath,
90
+ missingYaziDetail: status ? describeResolution(status) : "yazi is not in the pinned tool registry",
91
+ };
92
+ }
93
+
94
+ function runYa(file: string, args: ReadonlyArray<string>, env: Readonly<NodeJS.ProcessEnv>): Promise<boolean> {
95
+ return new Promise((resolve) => {
96
+ const child = spawn(file, args, { env: { ...env }, stdio: "ignore" });
97
+ child.once("error", () => resolve(false));
98
+ child.once("exit", (code) => resolve(code === 0));
99
+ });
100
+ }
101
+
102
+ function readOptional(path: string): string {
103
+ try {
104
+ return readFileSync(path, "utf8");
105
+ } catch {
106
+ return "";
107
+ }
108
+ }
109
+
110
+ /** Open one mux-hosted Yazi process and own its DDS or chooser-file transport. */
111
+ export async function createYaziSession(options: YaziSessionOptions): Promise<YaziSessionOpenResult> {
112
+ const binaries = (options.resolveBinaries ?? resolveYaziBinaries)();
113
+ if (!binaries.yaziPath) {
114
+ return { status: "missing-binary", binary: "yazi", detail: binaries.missingYaziDetail };
115
+ }
116
+ if (options.profileMode === "managed" && !binaries.yaPath) {
117
+ return {
118
+ status: "missing-binary",
119
+ binary: "ya",
120
+ detail: "the Yazi helper `ya` is not available; install the complete pinned Yazi tool",
121
+ };
122
+ }
123
+
124
+ const cacheDir = options.cacheDir ?? clioCacheDir();
125
+ const sessionId = options.sessionId ?? randomUUID();
126
+ const sessionsDir = join(cacheDir, "yazi", "sessions");
127
+ mkdirSync(sessionsDir, { recursive: true });
128
+ const managedProfile =
129
+ options.profileMode === "managed"
130
+ ? (options.ensureProfile ?? ensureYaziProfile)({
131
+ yaPath: binaries.yaPath as string,
132
+ yaziPath: binaries.yaziPath,
133
+ profileDir: yaziProfileDir(cacheDir),
134
+ })
135
+ : null;
136
+ if (options.profileMode === "managed" && !managedProfile) {
137
+ return { status: "profile-error", reason: "Clio could not generate a valid managed Yazi profile" };
138
+ }
139
+
140
+ const streamPath = join(sessionsDir, `${sessionId}.stream`);
141
+ const chooserPath = join(sessionsDir, `${sessionId}.chooser`);
142
+ const cwdPath = join(sessionsDir, `${sessionId}.cwd`);
143
+ const token = options.mode === "companion" ? (options.pickToken ?? randomUUID()) : null;
144
+ const env: Record<string, string> = {
145
+ ...(managedProfile ? { YAZI_CONFIG_HOME: managedProfile.dir } : {}),
146
+ ...(token ? namingCompatibilityEnvironment("CLIO_CODER_YAZI_PICK_TOKEN", "CLIO_YAZI_PICK_TOKEN", token) : {}),
147
+ };
148
+ let argv: ReadonlyArray<string>;
149
+ let stdoutPath: string | undefined;
150
+ if (options.mode === "companion") {
151
+ writeFileSync(streamPath, "");
152
+ argv = [
153
+ binaries.yaziPath,
154
+ "--local-events",
155
+ `cd,${YAZI_PICK_EVENT},${LEGACY_YAZI_PICK_EVENT}`,
156
+ "--remote-events",
157
+ `${YAZI_PICK_EVENT},${LEGACY_YAZI_PICK_EVENT}`,
158
+ ];
159
+ stdoutPath = streamPath;
160
+ } else {
161
+ writeFileSync(chooserPath, "");
162
+ writeFileSync(cwdPath, "");
163
+ argv = [binaries.yaziPath, options.cwd, "--chooser-file", chooserPath, "--cwd-file", cwdPath];
164
+ }
165
+
166
+ const pane = await options.mux.openUtilityPane({
167
+ argv,
168
+ cwd: options.cwd,
169
+ label: "yazi",
170
+ // The files dock: split down from the anchor at the configured share.
171
+ // Degrades to a plain split inside the contract when the layout tier is
172
+ // absent.
173
+ dock: { slot: "files", ...(options.dockShare === undefined ? {} : { share: options.dockShare }) },
174
+ ...(Object.keys(env).length > 0 ? { env } : {}),
175
+ ...(stdoutPath ? { stdoutPath } : {}),
176
+ });
177
+ if (!pane) return { status: "unavailable", reason: "pane host refused to open yazi" };
178
+
179
+ let paneCwd = options.cwd;
180
+ let instanceId: string | null = null;
181
+ let stream: YaziEventStream | null = null;
182
+ let chooserTimer: NodeJS.Timeout | null = null;
183
+ let stopped = false;
184
+ const alive = (): boolean => options.mux.list().some((record) => record.ref.paneId === pane.paneId);
185
+ const stop = (reason: string): void => {
186
+ if (stopped) return;
187
+ stopped = true;
188
+ if (chooserTimer) clearInterval(chooserTimer);
189
+ chooserTimer = null;
190
+ options.onStopped?.(reason);
191
+ };
192
+
193
+ if (options.mode === "companion") {
194
+ stream = createYaziEventStream({
195
+ path: streamPath,
196
+ isAlive: alive,
197
+ ...(options.pollMs !== undefined ? { pollMs: options.pollMs } : {}),
198
+ ...(options.log ? { log: options.log } : {}),
199
+ onEvent: (event) => {
200
+ if (event.kind === "cd") {
201
+ paneCwd = event.cwd;
202
+ instanceId = event.sender;
203
+ }
204
+ options.onEvent(event);
205
+ },
206
+ });
207
+ void stream.done.then((reason) => stop(reason));
208
+ } else {
209
+ const pollChooser = (): void => {
210
+ if (stopped || alive()) return;
211
+ const raw = readOptional(chooserPath);
212
+ const cwd = readOptional(cwdPath).trim() || paneCwd;
213
+ paneCwd = cwd;
214
+ const paths = raw.length === 0 ? [] : raw.split("\n").filter((path) => path.length > 0);
215
+ options.onChooser({ paths, cwd });
216
+ stop("pane-gone");
217
+ };
218
+ chooserTimer = setInterval(pollChooser, options.pollMs ?? YAZI_STREAM_POLL_MS);
219
+ chooserTimer.unref();
220
+ }
221
+
222
+ const session: YaziSession = {
223
+ mode: options.mode,
224
+ pane,
225
+ token,
226
+ profile: managedProfile,
227
+ snapshot: () => ({
228
+ mode: options.mode,
229
+ paneId: pane.paneId,
230
+ paneCwd,
231
+ instanceId,
232
+ lastLineAt: stream?.stats().lastLineAt ?? null,
233
+ streamPath: options.mode === "companion" ? streamPath : null,
234
+ chooserPath: options.mode === "chooser" ? chooserPath : null,
235
+ }),
236
+ async pushCwd(cwd: string): Promise<boolean> {
237
+ if (!instanceId || !binaries.yaPath) return false;
238
+ const pushed = await (options.runYa ?? runYa)(binaries.yaPath, ["emit-to", instanceId, "cd", cwd], {
239
+ ...process.env,
240
+ ...(managedProfile ? { YAZI_CONFIG_HOME: managedProfile.dir } : {}),
241
+ });
242
+ return pushed;
243
+ },
244
+ async close(): Promise<void> {
245
+ stream?.stop();
246
+ stop("stopped");
247
+ await options.mux.closePane(pane.paneId);
248
+ },
249
+ };
250
+ return { status: "opened", session };
251
+ }
@@ -0,0 +1,30 @@
1
+ import { tokenHex } from "../../../core/theme-token-hex.js";
2
+
3
+ /** Render the deliberately small Clio overlay on Yazi's pinned preset theme. */
4
+ export function renderYaziTheme(): string {
5
+ return `# Generated by Clio Coder. Changes are replaced when the managed profile regenerates.
6
+
7
+ [mgr]
8
+ cwd = { fg = "${tokenHex("accent")}" }
9
+ find_keyword = { fg = "${tokenHex("warning")}" }
10
+ marker_selected = { fg = "${tokenHex("success")}", bg = "${tokenHex("success")}" }
11
+ marker_copied = { fg = "${tokenHex("accent")}", bg = "${tokenHex("accent")}" }
12
+ marker_cut = { fg = "${tokenHex("error")}", bg = "${tokenHex("error")}" }
13
+ border_style = { fg = "${tokenHex("frame")}" }
14
+
15
+ [mode]
16
+ normal_main = { bg = "${tokenHex("accent")}" }
17
+ normal_alt = { fg = "${tokenHex("accent")}" }
18
+ select_main = { bg = "${tokenHex("action")}" }
19
+ select_alt = { fg = "${tokenHex("action")}" }
20
+ unset_main = { bg = "${tokenHex("error")}" }
21
+ unset_alt = { fg = "${tokenHex("error")}" }
22
+
23
+ [tabs]
24
+ active = { bg = "${tokenHex("accent")}" }
25
+ inactive = { fg = "${tokenHex("accent")}" }
26
+
27
+ [status]
28
+ perm_sep = { fg = "${tokenHex("dim")}" }
29
+ `;
30
+ }
@@ -101,6 +101,27 @@ export function costAggregateForAmount(usd: number, provenance: CostProvenance |
101
101
  return aggregateCostAmounts([{ usd, provenance: normalizeCostProvenance(provenance) }]);
102
102
  }
103
103
 
104
+ /**
105
+ * What a fixed-width surface renders for an already-folded aggregate: the cost
106
+ * claim when one exists, {@link COST_NOT_MEASURED} when none does. Named here
107
+ * because the fallback is part of the derivation, not a caller's choice, and a
108
+ * surface that spells the `?? COST_NOT_MEASURED` out by hand is one edit away
109
+ * from spelling `$0.00` instead.
110
+ */
111
+ export function renderCostAggregate(cost: CostAggregate | null | undefined): string {
112
+ return formatCostAggregate(cost) ?? COST_NOT_MEASURED;
113
+ }
114
+
115
+ /**
116
+ * The same render for a single sealed amount, which is the shape a receipt or a
117
+ * ledger row hands over. A caller that reaches for `usd.toFixed(4)` here drops
118
+ * the provenance on the floor and turns unpriced work into a measured `$0.0000`,
119
+ * which is a claim nobody made.
120
+ */
121
+ export function renderCostAmount(usd: number, provenance: CostProvenance | undefined): string {
122
+ return renderCostAggregate(costAggregateForAmount(usd, provenance));
123
+ }
124
+
104
125
  export interface UsageBreakdown {
105
126
  input: number;
106
127
  output: number;
@@ -96,7 +96,7 @@ async function buildAndIndexEvidence(
96
96
  });
97
97
  } catch (error) {
98
98
  const message = error instanceof Error ? error.message : String(error);
99
- process.stderr.write(`[clio:evidence] auto-build failed for run ${runId}: ${message}\n`);
99
+ process.stderr.write(`[clio-coder:evidence] auto-build failed for run ${runId}: ${message}\n`);
100
100
  hooks.onFailed(runId, message);
101
101
  }
102
102
  }
@@ -42,6 +42,8 @@ export {
42
42
  costWasMeasured,
43
43
  emptyCostAggregate,
44
44
  formatCostAggregate,
45
+ renderCostAggregate,
46
+ renderCostAmount,
45
47
  type UsageBreakdown,
46
48
  } from "./cost.js";
47
49
  export type { EvidenceIndexRow } from "./evidence-index.js";
@@ -130,7 +130,7 @@ export function appendOutOfTurnUsageRow(stateDir: string, row: OutOfTurnUsageRow
130
130
  closeSync(fd);
131
131
  }
132
132
  } catch (error) {
133
- process.stderr.write(`[clio:usage] out-of-turn usage row not written: ${messageOf(error)}\n`);
133
+ process.stderr.write(`[clio-coder:usage] out-of-turn usage row not written: ${messageOf(error)}\n`);
134
134
  return;
135
135
  }
136
136
  appendsSinceBoundCheck += 1;
@@ -139,7 +139,7 @@ export function appendOutOfTurnUsageRow(stateDir: string, row: OutOfTurnUsageRow
139
139
  try {
140
140
  boundOutOfTurnUsageFile(path);
141
141
  } catch (error) {
142
- process.stderr.write(`[clio:usage] out-of-turn usage ring not bounded: ${messageOf(error)}\n`);
142
+ process.stderr.write(`[clio-coder:usage] out-of-turn usage ring not bounded: ${messageOf(error)}\n`);
143
143
  }
144
144
  }
145
145
 
@@ -167,7 +167,7 @@ export function createObservabilityProjection(bus: SafeEventBus, deps: Projectio
167
167
  listener(snapshot);
168
168
  } catch (error) {
169
169
  const message = error instanceof Error ? (error.stack ?? error.message) : String(error);
170
- console.error(`[clio:observability] projection listener crashed: ${message}`);
170
+ console.error(`[clio-coder:observability] projection listener crashed: ${message}`);
171
171
  }
172
172
  }
173
173
  }
@@ -19,6 +19,7 @@ import type {
19
19
  DispatchProgressPayload,
20
20
  DispatchStartedPayload,
21
21
  } from "../../core/bus-events.js";
22
+ import { normalizeClioCoderEventType } from "../../core/naming-events.js";
22
23
  import { processAlive, processBirthToken } from "../../core/process-identity.js";
23
24
  import { createRedactionTally, redactSecretsText } from "../evidence/redact.js";
24
25
 
@@ -110,7 +111,7 @@ function requireSqlite(): DatabaseSyncConstructor {
110
111
  * Exported for the contract test, which drives it with a load that emits both
111
112
  * warnings; production has exactly one caller.
112
113
  */
113
- export function loadWithSqliteWarningSuppressed<T>(load: () => T): T {
114
+ function loadWithSqliteWarningSuppressed<T>(load: () => T): T {
114
115
  if (warningTracingRequested()) return load();
115
116
  const emitWarning = process.emitWarning;
116
117
  const forward = emitWarning.bind(process) as (...args: unknown[]) => void;
@@ -1201,7 +1202,7 @@ export class TraceReader {
1201
1202
  }
1202
1203
 
1203
1204
  events(runId: string, afterRowid = 0, limit = TRACE_EVENT_POLL_LIMIT): TraceEventRow[] {
1204
- return this.db
1205
+ const rows = this.db
1205
1206
  .prepare(`SELECT rowid, event_id, run_id, phase_id, parent_id, type, name, payload_json,
1206
1207
  tokens, started_at, ended_at FROM events
1207
1208
  WHERE run_id = ? AND rowid > ? ORDER BY rowid LIMIT ?`)
@@ -1210,6 +1211,57 @@ export class TraceReader {
1210
1211
  Math.max(0, Math.trunc(afterRowid)),
1211
1212
  clampInt(limit, 1, TRACE_EVENT_POLL_LIMIT),
1212
1213
  ) as unknown as TraceEventRow[];
1214
+ return rows.map((row) => ({ ...row, type: normalizeClioCoderEventType(row.type) }));
1215
+ }
1216
+
1217
+ /**
1218
+ * Per-kind event tallies for one run.
1219
+ *
1220
+ * Aggregated in SQL rather than by reading rows, so `payload_json` and the
1221
+ * free-form event name are never loaded at all. That is the point: a caller
1222
+ * that only ever wants shapes should not be holding the payloads in memory
1223
+ * on the way to counting them.
1224
+ */
1225
+ eventKindCounts(runId: string): Array<{ type: string; count: number }> {
1226
+ const rows = this.db
1227
+ .prepare("SELECT type, COUNT(*) AS count FROM events WHERE run_id=? GROUP BY type ORDER BY count DESC, type")
1228
+ .all(runId) as unknown as Array<{ type: string; count: number }>;
1229
+ const counts = new Map<string, number>();
1230
+ for (const row of rows) {
1231
+ const type = normalizeClioCoderEventType(row.type);
1232
+ counts.set(type, (counts.get(type) ?? 0) + row.count);
1233
+ }
1234
+ return [...counts]
1235
+ .map(([type, count]) => ({ type, count }))
1236
+ .sort((left, right) => right.count - left.count || left.type.localeCompare(right.type));
1237
+ }
1238
+
1239
+ /** Total events and the wall span they cover, without reading one of them. */
1240
+ eventSpan(runId: string): { total: number; firstAt: string | null; lastAt: string | null } {
1241
+ const row = this.db
1242
+ .prepare(
1243
+ `SELECT COUNT(*) AS total, MIN(started_at) AS firstAt,
1244
+ MAX(COALESCE(ended_at, started_at)) AS lastAt FROM events WHERE run_id=?`,
1245
+ )
1246
+ .get(runId) as unknown as { total: number; firstAt: string | null; lastAt: string | null } | undefined;
1247
+ return row ?? { total: 0, firstAt: null, lastAt: null };
1248
+ }
1249
+
1250
+ /**
1251
+ * Per-kind process tallies for one run.
1252
+ *
1253
+ * Same reason as {@link eventKindCounts}, and more sharply: a process row
1254
+ * carries the command line, the pid, and the host, none of which a shape
1255
+ * count needs.
1256
+ */
1257
+ processKindCounts(runId: string): Array<{ kind: string; total: number; running: number }> {
1258
+ return this.db
1259
+ .prepare(
1260
+ `SELECT kind, COUNT(*) AS total,
1261
+ SUM(CASE WHEN ended_at IS NULL THEN 1 ELSE 0 END) AS running
1262
+ FROM processes WHERE run_id=? GROUP BY kind ORDER BY total DESC, kind`,
1263
+ )
1264
+ .all(runId) as unknown as Array<{ kind: string; total: number; running: number }>;
1213
1265
  }
1214
1266
 
1215
1267
  processes(runId: string): TraceProcessRow[] {
@@ -1231,7 +1283,7 @@ export class TraceReader {
1231
1283
  }
1232
1284
 
1233
1285
  select(sql: string): Record<string, SQLInputValue>[] {
1234
- assertSelectOnly(sql);
1286
+ assertTraceSelectOnly(sql);
1235
1287
  return this.db.prepare(sql).all() as Record<string, SQLInputValue>[];
1236
1288
  }
1237
1289
  }
@@ -1259,7 +1311,7 @@ export function createDispatchTraceMirror(
1259
1311
  path: string,
1260
1312
  options: { warn?: (message: string) => void; now?: () => string } = {},
1261
1313
  ): DispatchTraceMirror {
1262
- const warn = options.warn ?? ((message: string) => process.stderr.write(`[clio:trace] ${message}\n`));
1314
+ const warn = options.warn ?? ((message: string) => process.stderr.write(`[clio-coder:trace] ${message}\n`));
1263
1315
  const now = options.now ?? (() => new Date().toISOString());
1264
1316
  let store: TraceStore | null = null;
1265
1317
  let chain: Promise<void> = Promise.resolve();
@@ -1366,7 +1418,7 @@ function recordProgress(
1366
1418
  ): void {
1367
1419
  if (!isRecord(payload.event)) return;
1368
1420
  const event = payload.event;
1369
- const type = typeof event.type === "string" ? event.type : "progress";
1421
+ const type = typeof event.type === "string" ? normalizeClioCoderEventType(event.type) : "progress";
1370
1422
  const toolCallId = stringValue(event.toolCallId) ?? stringValue(event.tool_call_id);
1371
1423
  if (
1372
1424
  type === "message_end" &&
@@ -1400,7 +1452,7 @@ function recordProgress(
1400
1452
  });
1401
1453
  }
1402
1454
  }
1403
- if ((type === "tool_execution_start" || type === "clio_tool_start") && toolCallId !== null) {
1455
+ if ((type === "tool_execution_start" || type === "clio_coder_tool_start") && toolCallId !== null) {
1404
1456
  starts.set(`${payload.runId}:${toolCallId}`, {
1405
1457
  toolCallId,
1406
1458
  tool: stringValue(event.toolName) ?? stringValue(event.tool) ?? "tool",
@@ -1409,7 +1461,7 @@ function recordProgress(
1409
1461
  });
1410
1462
  return;
1411
1463
  }
1412
- if ((type === "tool_execution_end" || type === "clio_tool_finish") && toolCallId !== null) {
1464
+ if ((type === "tool_execution_end" || type === "clio_coder_tool_finish") && toolCallId !== null) {
1413
1465
  const key = `${payload.runId}:${toolCallId}`;
1414
1466
  const start = starts.get(key);
1415
1467
  // One clock frame per row. The worker measures `durationMs` on its own
@@ -1495,12 +1547,12 @@ function recordFailure(store: TraceStore, input: DispatchFailedPayload, at: stri
1495
1547
  function isCriticalTraceEvent(channel: string, raw: unknown): boolean {
1496
1548
  if (channel !== "dispatch.progress") return true;
1497
1549
  if (!isRecord(raw) || !isRecord(raw.event)) return false;
1498
- const type = raw.event.type;
1550
+ const type = typeof raw.event.type === "string" ? normalizeClioCoderEventType(raw.event.type) : raw.event.type;
1499
1551
  return (
1500
1552
  type === "tool_execution_start" ||
1501
1553
  type === "tool_execution_end" ||
1502
- type === "clio_tool_start" ||
1503
- type === "clio_tool_finish" ||
1554
+ type === "clio_coder_tool_start" ||
1555
+ type === "clio_coder_tool_finish" ||
1504
1556
  type === "message_end" ||
1505
1557
  type === "attempt_start"
1506
1558
  );
@@ -1617,7 +1669,7 @@ function sha256(value: string): string {
1617
1669
  return createHash("sha256").update(value, "utf8").digest("hex");
1618
1670
  }
1619
1671
 
1620
- function assertSelectOnly(sql: string): void {
1672
+ export function assertTraceSelectOnly(sql: string): void {
1621
1673
  const trimmed = sql.trim();
1622
1674
  if (!/^(SELECT|WITH)\b/i.test(trimmed)) throw new Error("trace sql accepts SELECT or read-only WITH queries only");
1623
1675
  if (trimmed.includes(";")) throw new Error("trace sql accepts exactly one statement");
@@ -180,7 +180,7 @@ function lookupFragment(table: FragmentTable, id: string, role: string): LoadedF
180
180
  * section and the dispatch worker safety-posture message must describe the
181
181
  * same enforced behavior, so neither side duplicates this switch.
182
182
  */
183
- export function safetyOneLiner(level: string): string {
183
+ function safetyOneLiner(level: string): string {
184
184
  switch (level) {
185
185
  case "read-only":
186
186
  return "inspect and answer; mutating calls are auto-denied, so propose changes instead.";
@@ -653,7 +653,7 @@ export function compileWorker(table: FragmentTable, inputs: WorkerPromptInputs):
653
653
  if (inputs.hasBoundSkills && !inputs.hasCanonicalContext) {
654
654
  throw new Error("prompts/compiler: bound skills require canonical context in the final attached tool surface");
655
655
  }
656
- const identity = lookupFragment(table, "identity.clio-worker", "worker identity");
656
+ const identity = lookupFragment(table, "identity.clio-coder-worker", "worker identity");
657
657
  const operatingContract = lookupFragment(table, "operating.contract", "operating contract");
658
658
  const workerContract = lookupFragment(table, "operating.worker", "worker contract");
659
659
  const safety = lookupFragment(table, `safety.${inputs.autonomy}`, "safety");
@@ -62,7 +62,7 @@ export function createPromptsBundle(
62
62
  table = loadFragments();
63
63
  } catch (err) {
64
64
  const msg = err instanceof Error ? err.message : String(err);
65
- process.stderr.write(`[clio:prompts] reload failed: ${msg}\n`);
65
+ process.stderr.write(`[clio-coder:prompts] reload failed: ${msg}\n`);
66
66
  }
67
67
  }
68
68
 
@@ -81,7 +81,7 @@ export function createPromptsBundle(
81
81
  }
82
82
  const configContract = config();
83
83
  const settings: Readonly<ClioSettings> | undefined = configContract?.get();
84
- const safety = input.autonomy ?? settings?.autonomy ?? "auto-edit";
84
+ const safety = input.autonomy ?? settings?.safety.autonomy ?? "auto-edit";
85
85
  const cwd = input.cwd ?? process.cwd();
86
86
  let contextFiles = "";
87
87
  let projectPreload: ProjectPreloadClass | null = null;
@@ -147,7 +147,7 @@ export function createPromptsBundle(
147
147
  table = loadFragments();
148
148
  } catch (err) {
149
149
  const msg = err instanceof Error ? err.message : String(err);
150
- process.stderr.write(`[clio:prompts] initial load failed: ${msg}\n`);
150
+ process.stderr.write(`[clio-coder:prompts] initial load failed: ${msg}\n`);
151
151
  table = { byId: new Map(), rootDir: "" };
152
152
  }
153
153
  unsubscribeHotReload = context.bus.on(BusChannels.ConfigHotReload, (payload: unknown) => {
@@ -1,5 +1,5 @@
1
1
  ---
2
- id: identity.clio-worker
2
+ id: identity.clio-coder-worker
3
3
  version: 1
4
4
  description: Identity for a bounded Clio fleet worker
5
5
  ---
@@ -1,26 +1,33 @@
1
1
  ---
2
2
  id: operating.skills
3
3
  version: 1
4
- budgetTokens: 260
4
+ budgetTokens: 340
5
5
  description: Coordinator skill suggestion discipline; rendered only when context is on the surface
6
6
  ---
7
7
 
8
8
  # Skills
9
9
 
10
- Skills package proven workflows. Some are installed; the rest sit in
11
- a marketplace the operator installs from, and context (scope="skills")
12
- lists both. Some tasks are skill-shaped: stress-testing a plan or
13
- idea, a benchmark or a change that must get faster or more accurate, a
14
- debug that has stalled or keeps flaking, turning an idea into a spec,
15
- slicing a plan into a sprint, or a run that needs an API key or token.
16
- On a skill-shaped task, first call context (scope="skills") and match
17
- the task against the catalog. Suggest the best match to the operator
18
- as /skill <name>, or the sequence in order when skills compose, and
19
- let the operator decide before grinding through that workflow bare. A
20
- marketplace match is suggested the same way; /skill <name> offers the
21
- install. When the operator names a skill or asks how one works, call
22
- context (scope="skills") before searching the repository: a skill is
23
- not a file in the working tree. Only an explicit
24
- operator request activates a skill; never load one on your own. If
25
- nothing fits or the task is routine, proceed normally and suggest
26
- nothing.
10
+ Skills package proven workflows. Some are installed; the rest sit in a
11
+ marketplace the operator installs from, and context (scope="skills") is
12
+ the one authoritative listing of both never guess the inventory or
13
+ search the repository for a skill file. The catalog spans git delivery
14
+ (filing, fixing, and shipping issues), planning (intent, PRD, backlog,
15
+ architecture, sprint slicing), coding practice (TDD, standards,
16
+ prototyping), context priming and handoff, research workflows, and
17
+ plan-stress-testing debates. When a task lands in one of those shapes,
18
+ call context (scope="skills") first and match it against the catalog.
19
+ Suggest the best match to the operator as /skill <name> — the sequence
20
+ in order when skills compose and let the operator decide before
21
+ grinding through that workflow bare; a marketplace match is suggested
22
+ the same way, and /skill <name> offers the install. When the operator
23
+ names a skill or asks how one works, answer from that same listing.
24
+ When a [Marketplace] reminder names an uninstalled skill for the
25
+ current request, first check the installed side with context
26
+ (scope="skills"); only if nothing installed serves and the named skill
27
+ truly fits, put the install question to the operator with ask_user
28
+ using exactly the four options the reminder states, then continue the
29
+ task in the same turn. The harness performs any consented install;
30
+ never install a skill yourself, and never offer one no reminder named.
31
+ Only an explicit operator request activates a skill; never load one on
32
+ your own. If nothing fits or the task is routine, proceed normally and
33
+ suggest nothing.