@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
@@ -18,7 +18,7 @@
18
18
 
19
19
  import type { ClioSettings } from "./config.js";
20
20
 
21
- type SessionThinkingLevel = ClioSettings["orchestrator"]["thinkingLevel"];
21
+ type SessionThinkingLevel = ClioSettings["chat"]["thinkingLevel"];
22
22
 
23
23
  export interface SessionRoutingTarget {
24
24
  target: string | null;
@@ -28,7 +28,7 @@ export interface SessionRoutingTarget {
28
28
 
29
29
  export interface SessionRoutingState {
30
30
  orchestrator: SessionRoutingTarget;
31
- background: SessionRoutingTarget;
31
+ background: Pick<SessionRoutingTarget, "target" | "model">;
32
32
  workersDefault: SessionRoutingTarget;
33
33
  scope: string[];
34
34
  }
@@ -40,7 +40,7 @@ export interface SessionRoutingState {
40
40
  */
41
41
  export interface RoutingPatch {
42
42
  orchestrator?: Partial<SessionRoutingTarget>;
43
- background?: Partial<SessionRoutingTarget>;
43
+ background?: Partial<Pick<SessionRoutingTarget, "target" | "model">>;
44
44
  workersDefault?: Partial<SessionRoutingTarget>;
45
45
  scope?: string[];
46
46
  }
@@ -59,10 +59,10 @@ function targetFrom(source: {
59
59
 
60
60
  export function seedSessionRouting(saved: Readonly<ClioSettings>): SessionRoutingState {
61
61
  return {
62
- orchestrator: targetFrom(saved.orchestrator),
63
- background: targetFrom(saved.background),
64
- workersDefault: targetFrom(saved.workers.default),
65
- scope: [...(saved.scope ?? [])],
62
+ orchestrator: targetFrom(saved.chat),
63
+ background: { target: saved.context.memory.target, model: saved.context.memory.model },
64
+ workersDefault: targetFrom(saved.fleet.default),
65
+ scope: [...saved.chat.modelPicker.cycleSet],
66
66
  };
67
67
  }
68
68
 
@@ -73,16 +73,15 @@ export function seedSessionRouting(saved: Readonly<ClioSettings>): SessionRoutin
73
73
  */
74
74
  export function applySessionRouting(saved: Readonly<ClioSettings>, routing: SessionRoutingState): ClioSettings {
75
75
  const view = structuredClone(saved) as ClioSettings;
76
- view.orchestrator.target = routing.orchestrator.target;
77
- view.orchestrator.model = routing.orchestrator.model;
78
- view.orchestrator.thinkingLevel = routing.orchestrator.thinkingLevel;
79
- view.background.target = routing.background.target;
80
- view.background.model = routing.background.model;
81
- view.background.thinkingLevel = routing.background.thinkingLevel;
82
- view.workers.default.target = routing.workersDefault.target;
83
- view.workers.default.model = routing.workersDefault.model;
84
- view.workers.default.thinkingLevel = routing.workersDefault.thinkingLevel;
85
- view.scope = [...routing.scope];
76
+ view.chat.target = routing.orchestrator.target;
77
+ view.chat.model = routing.orchestrator.model;
78
+ view.chat.thinkingLevel = routing.orchestrator.thinkingLevel;
79
+ view.context.memory.target = routing.background.target;
80
+ view.context.memory.model = routing.background.model;
81
+ view.fleet.default.target = routing.workersDefault.target;
82
+ view.fleet.default.model = routing.workersDefault.model;
83
+ view.fleet.default.thinkingLevel = routing.workersDefault.thinkingLevel;
84
+ view.chat.modelPicker.cycleSet = [...routing.scope];
86
85
  return view;
87
86
  }
88
87
 
@@ -107,14 +106,21 @@ export type SessionOverrides = Map<string, unknown>;
107
106
 
108
107
  /** True for the dotted paths owned by the session routing state (never overrides). */
109
108
  export function isRoutingPath(path: string): boolean {
110
- return (
111
- path === "scope" ||
112
- path.startsWith("orchestrator.") ||
113
- path.startsWith("background.") ||
114
- path.startsWith("workers.default.")
115
- );
109
+ return ROUTING_PATHS.has(path);
116
110
  }
117
111
 
112
+ const ROUTING_PATHS = new Set<string>([
113
+ "chat.target",
114
+ "chat.model",
115
+ "chat.thinkingLevel",
116
+ "context.memory.target",
117
+ "context.memory.model",
118
+ "fleet.default.target",
119
+ "fleet.default.model",
120
+ "fleet.default.thinkingLevel",
121
+ "chat.modelPicker.cycleSet",
122
+ ]);
123
+
118
124
  /** Read a leaf from a settings blob by dotted object path. Missing ⇒ undefined. */
119
125
  export function getAtPath(source: Readonly<ClioSettings>, path: string): unknown {
120
126
  let cursor: unknown = source;
@@ -159,10 +165,10 @@ export function applyOverrides(base: Readonly<ClioSettings>, overrides: SessionO
159
165
 
160
166
  /** Write-through of a routing patch onto a (cloned) saved-settings blob. */
161
167
  export function mergeRoutingPatchIntoSettings(settings: ClioSettings, patch: RoutingPatch): void {
162
- if (patch.orchestrator) Object.assign(settings.orchestrator, patch.orchestrator);
163
- if (patch.background) Object.assign(settings.background, patch.background);
164
- if (patch.workersDefault) Object.assign(settings.workers.default, patch.workersDefault);
165
- if (patch.scope) settings.scope = [...patch.scope];
168
+ if (patch.orchestrator) Object.assign(settings.chat, patch.orchestrator);
169
+ if (patch.background) Object.assign(settings.context.memory, patch.background);
170
+ if (patch.workersDefault) Object.assign(settings.fleet.default, patch.workersDefault);
171
+ if (patch.scope) settings.chat.modelPicker.cycleSet = [...patch.scope];
166
172
  }
167
173
 
168
174
  /**
@@ -176,26 +182,24 @@ export function mergeRoutingPatchIntoSettings(settings: ClioSettings, patch: Rou
176
182
  */
177
183
  export function routingPatchForId(path: string, settings: Readonly<ClioSettings>): RoutingPatch | null {
178
184
  switch (path) {
179
- case "orchestrator.target":
180
- return { orchestrator: { target: settings.orchestrator.target, model: settings.orchestrator.model } };
181
- case "orchestrator.model":
182
- return { orchestrator: { model: settings.orchestrator.model } };
183
- case "orchestrator.thinkingLevel":
184
- return { orchestrator: { thinkingLevel: settings.orchestrator.thinkingLevel } };
185
- case "background.target":
186
- return { background: { target: settings.background.target, model: settings.background.model } };
187
- case "background.model":
188
- return { background: { model: settings.background.model } };
189
- case "background.thinkingLevel":
190
- return { background: { thinkingLevel: settings.background.thinkingLevel } };
191
- case "workers.default.target":
192
- return { workersDefault: { target: settings.workers.default.target, model: settings.workers.default.model } };
193
- case "workers.default.model":
194
- return { workersDefault: { model: settings.workers.default.model } };
195
- case "workers.default.thinkingLevel":
196
- return { workersDefault: { thinkingLevel: settings.workers.default.thinkingLevel } };
197
- case "scope":
198
- return { scope: [...(settings.scope ?? [])] };
185
+ case "chat.target":
186
+ return { orchestrator: { target: settings.chat.target, model: settings.chat.model } };
187
+ case "chat.model":
188
+ return { orchestrator: { model: settings.chat.model } };
189
+ case "chat.thinkingLevel":
190
+ return { orchestrator: { thinkingLevel: settings.chat.thinkingLevel } };
191
+ case "context.memory.target":
192
+ return { background: { target: settings.context.memory.target, model: settings.context.memory.model } };
193
+ case "context.memory.model":
194
+ return { background: { model: settings.context.memory.model } };
195
+ case "fleet.default.target":
196
+ return { workersDefault: { target: settings.fleet.default.target, model: settings.fleet.default.model } };
197
+ case "fleet.default.model":
198
+ return { workersDefault: { model: settings.fleet.default.model } };
199
+ case "fleet.default.thinkingLevel":
200
+ return { workersDefault: { thinkingLevel: settings.fleet.default.thinkingLevel } };
201
+ case "chat.modelPicker.cycleSet":
202
+ return { scope: [...settings.chat.modelPicker.cycleSet] };
199
203
  default:
200
204
  return null;
201
205
  }
@@ -224,13 +228,17 @@ function scopeEquals(a: ReadonlyArray<string>, b: ReadonlyArray<string>): boolea
224
228
  */
225
229
  export function diffRouting(prev: Readonly<ClioSettings>, next: Readonly<ClioSettings>): RoutingPatch | null {
226
230
  const patch: RoutingPatch = {};
227
- const orchestrator = diffTarget(prev.orchestrator, next.orchestrator);
231
+ const orchestrator = diffTarget(prev.chat, next.chat);
228
232
  if (orchestrator) patch.orchestrator = orchestrator;
229
- const background = diffTarget(prev.background, next.background);
233
+ const background = diffTarget(
234
+ { ...prev.context.memory, thinkingLevel: "off" },
235
+ { ...next.context.memory, thinkingLevel: "off" },
236
+ );
230
237
  if (background) patch.background = background;
231
- const workersDefault = diffTarget(prev.workers.default, next.workers.default);
238
+ const workersDefault = diffTarget(prev.fleet.default, next.fleet.default);
232
239
  if (workersDefault) patch.workersDefault = workersDefault;
233
- if (!scopeEquals(prev.scope ?? [], next.scope ?? [])) patch.scope = [...(next.scope ?? [])];
240
+ if (!scopeEquals(prev.chat.modelPicker.cycleSet, next.chat.modelPicker.cycleSet))
241
+ patch.scope = [...next.chat.modelPicker.cycleSet];
234
242
  return Object.keys(patch).length > 0 ? patch : null;
235
243
  }
236
244
 
@@ -241,16 +249,15 @@ export function diffRouting(prev: Readonly<ClioSettings>, next: Readonly<ClioSet
241
249
  * saved routing defaults with this session's live routing.
242
250
  */
243
251
  export function restoreRoutingFields(target: ClioSettings, source: Readonly<ClioSettings>): void {
244
- target.orchestrator.target = source.orchestrator.target;
245
- target.orchestrator.model = source.orchestrator.model;
246
- target.orchestrator.thinkingLevel = source.orchestrator.thinkingLevel;
247
- target.background.target = source.background.target;
248
- target.background.model = source.background.model;
249
- target.background.thinkingLevel = source.background.thinkingLevel;
250
- target.workers.default.target = source.workers.default.target;
251
- target.workers.default.model = source.workers.default.model;
252
- target.workers.default.thinkingLevel = source.workers.default.thinkingLevel;
253
- target.scope = [...(source.scope ?? [])];
252
+ target.chat.target = source.chat.target;
253
+ target.chat.model = source.chat.model;
254
+ target.chat.thinkingLevel = source.chat.thinkingLevel;
255
+ target.context.memory.target = source.context.memory.target;
256
+ target.context.memory.model = source.context.memory.model;
257
+ target.fleet.default.target = source.fleet.default.target;
258
+ target.fleet.default.model = source.fleet.default.model;
259
+ target.fleet.default.thinkingLevel = source.fleet.default.thinkingLevel;
260
+ target.chat.modelPicker.cycleSet = [...source.chat.modelPicker.cycleSet];
254
261
  }
255
262
 
256
263
  const ROUTING_FIELD_LABELS: ReadonlyArray<{
@@ -258,20 +265,23 @@ const ROUTING_FIELD_LABELS: ReadonlyArray<{
258
265
  label: string;
259
266
  read: (settings: Readonly<ClioSettings>) => unknown;
260
267
  }> = [
261
- { field: "orchestrator.target", label: "chat target", read: (s) => s.orchestrator.target ?? null },
262
- { field: "orchestrator.model", label: "chat model", read: (s) => s.orchestrator.model ?? null },
263
- { field: "orchestrator.thinkingLevel", label: "chat thinking", read: (s) => s.orchestrator.thinkingLevel ?? "off" },
264
- { field: "background.target", label: "background target", read: (s) => s.background.target ?? null },
265
- { field: "background.model", label: "background model", read: (s) => s.background.model ?? null },
266
- { field: "background.thinkingLevel", label: "background thinking", read: (s) => s.background.thinkingLevel ?? "off" },
267
- { field: "workers.default.target", label: "fleet target", read: (s) => s.workers.default.target ?? null },
268
- { field: "workers.default.model", label: "fleet model", read: (s) => s.workers.default.model ?? null },
268
+ { field: "chat.target", label: "chat target", read: (s) => s.chat.target ?? null },
269
+ { field: "chat.model", label: "chat model", read: (s) => s.chat.model ?? null },
270
+ { field: "chat.thinkingLevel", label: "chat thinking", read: (s) => s.chat.thinkingLevel ?? "off" },
271
+ { field: "context.memory.target", label: "memory target", read: (s) => s.context.memory.target ?? null },
272
+ { field: "context.memory.model", label: "memory model", read: (s) => s.context.memory.model ?? null },
273
+ { field: "fleet.default.target", label: "fleet target", read: (s) => s.fleet.default.target ?? null },
274
+ { field: "fleet.default.model", label: "fleet model", read: (s) => s.fleet.default.model ?? null },
269
275
  {
270
- field: "workers.default.thinkingLevel",
276
+ field: "fleet.default.thinkingLevel",
271
277
  label: "fleet thinking",
272
- read: (s) => s.workers.default.thinkingLevel ?? "off",
278
+ read: (s) => s.fleet.default.thinkingLevel ?? "off",
279
+ },
280
+ {
281
+ field: "chat.modelPicker.cycleSet",
282
+ label: "Alt+J/Alt+K cycle set",
283
+ read: (s) => s.chat.modelPicker.cycleSet.join(","),
273
284
  },
274
- { field: "scope", label: "Alt+J/Alt+K scope", read: (s) => (s.scope ?? []).join(",") },
275
285
  ];
276
286
 
277
287
  /**
@@ -282,7 +292,7 @@ const ROUTING_FIELD_LABELS: ReadonlyArray<{
282
292
  * writer — a second session, the CLI, or a manual edit — moved the defaults
283
293
  * out from under this session.
284
294
  */
285
- export function externalRoutingDivergence(
295
+ function externalRoutingDivergence(
286
296
  changedPaths: ReadonlyArray<string>,
287
297
  saved: Readonly<ClioSettings>,
288
298
  effective: Readonly<ClioSettings>,
@@ -325,7 +335,7 @@ export function routingChangeNotices(
325
335
  text: `settings.yaml changed (${diverged.join(", ")}). This session keeps its routing; new sessions use the saved defaults.${hint}`,
326
336
  });
327
337
  }
328
- const activeTarget = effective.orchestrator.target;
338
+ const activeTarget = effective.chat.target;
329
339
  const targetsTouched = changedPaths.some((path) => path === "targets" || path.startsWith("targets."));
330
340
  if (activeTarget && targetsTouched && !saved.targets.some((entry) => entry.id === activeTarget)) {
331
341
  const hint = options?.commandHints ? " (/model)" : "";
@@ -19,6 +19,24 @@ export const SKILL_SUGGESTION_ANCHOR = "Suggested skill: /skill <name>";
19
19
  */
20
20
  export const SKILL_SUGGESTION_PREFIX = SKILL_SUGGESTION_ANCHOR.slice(0, SKILL_SUGGESTION_ANCHOR.indexOf("<name>"));
21
21
 
22
+ /**
23
+ * The four fixed answer labels of a marketplace install offer. Every surface
24
+ * that teaches or reads the offer (the marketplace-offer middleware, the
25
+ * skills fragment, the context listing footer) cites these exact strings, so
26
+ * the after_tool observer that records declines and runs consented installs
27
+ * recognizes the operator's choice by label identity, never by paraphrase.
28
+ */
29
+ export const SKILL_INSTALL_OFFER_OPTION_PROJECT = "Install for this project";
30
+ export const SKILL_INSTALL_OFFER_OPTION_USER = "Install globally";
31
+ export const SKILL_INSTALL_OFFER_OPTION_NOT_NOW = "Not now";
32
+ export const SKILL_INSTALL_OFFER_OPTION_NEVER = "Never offer this skill";
33
+ export const SKILL_INSTALL_OFFER_OPTIONS = [
34
+ SKILL_INSTALL_OFFER_OPTION_PROJECT,
35
+ SKILL_INSTALL_OFFER_OPTION_USER,
36
+ SKILL_INSTALL_OFFER_OPTION_NOT_NOW,
37
+ SKILL_INSTALL_OFFER_OPTION_NEVER,
38
+ ] as const;
39
+
22
40
  export interface PendingSkillRequest {
23
41
  name: string;
24
42
  args: string;
@@ -37,7 +37,7 @@ const SIGNAL_EXIT_CODES: Partial<Record<NodeJS.Signals, number>> = {
37
37
  * Break `text` into lines no wider than `width` columns, at spaces where
38
38
  * possible and mid-word when a single token is wider than the terminal.
39
39
  */
40
- export function wrapToWidth(text: string, width: number): string[] {
40
+ function wrapToWidth(text: string, width: number): string[] {
41
41
  if (!Number.isFinite(width) || width < 1) return [text];
42
42
  const lines: string[] = [];
43
43
  let current = "";
@@ -156,7 +156,7 @@ class TerminationCoordinator {
156
156
  const log = (msg: string): void => {
157
157
  if (!debug) return;
158
158
  const ms = Number(process.hrtime.bigint() - mark) / 1e6;
159
- process.stderr.write(`[clio:shutdown] +${ms.toFixed(1)}ms ${msg}\n`);
159
+ process.stderr.write(`[clio-coder:shutdown] +${ms.toFixed(1)}ms ${msg}\n`);
160
160
  };
161
161
 
162
162
  this.phase = "draining";
@@ -193,12 +193,12 @@ class TerminationCoordinator {
193
193
  const t0 = process.hrtime.bigint();
194
194
  const completed = await runWithBudget(hook, budgetMs, (err) => {
195
195
  const message = err instanceof Error ? err.message : String(err);
196
- writeShutdownNotice(`[clio:termination] ${phase}[${i}] failed: ${message}`);
196
+ writeShutdownNotice(`[clio-coder:termination] ${phase}[${i}] failed: ${message}`);
197
197
  if (err instanceof Error && err.stack) log(err.stack);
198
198
  });
199
199
  const dt = Number(process.hrtime.bigint() - t0) / 1e6;
200
200
  if (!completed) {
201
- writeShutdownNotice(`[clio:termination] ${phase}[${i}] exceeded ${budgetMs}ms budget; shutdown continues`);
201
+ writeShutdownNotice(`[clio-coder:termination] ${phase}[${i}] exceeded ${budgetMs}ms budget; shutdown continues`);
202
202
  }
203
203
  log(` ${phase}[${i}] ${dt.toFixed(1)}ms${completed ? "" : " (timed out)"}`);
204
204
  }
@@ -0,0 +1,43 @@
1
+ /** Semantic colors shared by Clio's terminal surfaces and generated companion profiles. */
2
+ export type ClioToken =
3
+ | "accent"
4
+ | "accentDeep"
5
+ | "action"
6
+ | "success"
7
+ | "warning"
8
+ | "error"
9
+ | "info"
10
+ | "reason"
11
+ | "dim"
12
+ | "muted"
13
+ | "title"
14
+ | "frame"
15
+ | "frameStrong";
16
+
17
+ /**
18
+ * The palette's lowercase hex projection.
19
+ *
20
+ * Keep this leaf free of interactive imports. Generated companion profiles
21
+ * need the color vocabulary without becoming a second reacher of the terminal
22
+ * renderer and splitting the instant shell's Stage 0 chunk.
23
+ */
24
+ const TOKEN_HEX: Readonly<Record<ClioToken, `#${string}`>> = {
25
+ accent: "#46e5d0",
26
+ accentDeep: "#1fb7a6",
27
+ action: "#ff7e29",
28
+ success: "#57e389",
29
+ warning: "#ffb454",
30
+ error: "#ff5c66",
31
+ info: "#5ba8ff",
32
+ reason: "#9d8cff",
33
+ dim: "#6a7a85",
34
+ muted: "#8a99a4",
35
+ title: "#46e5d0",
36
+ frame: "#2f5d5a",
37
+ frameStrong: "#2aab9e",
38
+ };
39
+
40
+ /** The canonical lowercase `#rrggbb` value for one Clio theme token. */
41
+ export function tokenHex(token: ClioToken): `#${string}` {
42
+ return TOKEN_HEX[token];
43
+ }
@@ -14,8 +14,6 @@ export function sleep(ms: number): Promise<void> {
14
14
  return new Promise((resolve) => setTimeout(resolve, ms));
15
15
  }
16
16
 
17
- let negativeDurations = 0;
18
-
19
17
  /**
20
18
  * Elapsed between two reads of the same clock, signed.
21
19
  *
@@ -23,16 +21,8 @@ let negativeDurations = 0;
23
21
  * an NTP correction, a resume, or a duration derived across two hosts — and it
24
22
  * is a bug in the caller, not a value to be silently swallowed. Clamping with
25
23
  * `Math.max(0, …)` hides that, so the clamp belongs at the render boundary and
26
- * nothing else. Every occurrence is counted; nothing is written to stderr,
27
- * because the TUI owns that stream and this sits on hot measurement paths.
24
+ * nothing else.
28
25
  */
29
26
  export function rawDurationMs(start: number, end: number): number {
30
- const elapsed = end - start;
31
- if (elapsed < 0) negativeDurations += 1;
32
- return elapsed;
33
- }
34
-
35
- /** How many negative durations this process has produced since it started. */
36
- export function negativeDurationCount(): number {
37
- return negativeDurations;
27
+ return end - start;
38
28
  }
@@ -7,7 +7,7 @@
7
7
  * OBSERVE read, grep, find, ls, code_nav, context, credential_present
8
8
  * MUTATE write, edit
9
9
  * EXECUTE bash, git, verify
10
- * ORCHESTRATE dispatch, monitor, steer, tasks
10
+ * ORCHESTRATE dispatch, monitor, steer, tasks, panes
11
11
  * RETRIEVE web_fetch
12
12
  * INTERACT ask_user
13
13
  * ARTIFACT artifact
@@ -35,6 +35,7 @@ export const ToolNames = {
35
35
  Steer: "steer",
36
36
  Tasks: "tasks",
37
37
  Ledger: "ledger",
38
+ Panes: "panes",
38
39
  // RETRIEVE
39
40
  WebFetch: "web_fetch",
40
41
  // INTERACT
package/src/core/xdg.ts CHANGED
@@ -20,7 +20,7 @@ import { join } from "node:path";
20
20
  *
21
21
  * Role contents: config holds user-authored files (settings, credentials,
22
22
  * agents, skills, prompts, extensions, runtimes); data holds durable artifacts
23
- * (memory, evidence, evals); state holds machine-produced session state
23
+ * (memory, evidence, evals, vendored tools); state holds machine-produced session state
24
24
  * (sessions, audit, receipts, runs.json, recent-models.json, install.json,
25
25
  * interviews, scratch); cache holds disposable derived files.
26
26
  */
@@ -1,5 +1,4 @@
1
- import type { AgentRecipe } from "./recipe.js";
2
- import { type AgentSpec, isUserVisibleAgent, normalizeAgentSpec } from "./spec.js";
1
+ import { type AgentSpec, isUserVisibleAgent } from "./spec.js";
3
2
 
4
3
  const DEFAULT_DISPATCH_AGENT_ID = "coder";
5
4
 
@@ -20,10 +19,6 @@ export interface AgentCatalogSections {
20
19
  volatile: string;
21
20
  }
22
21
 
23
- function renderAgentCatalogSections(recipes: ReadonlyArray<AgentRecipe>): AgentCatalogSections {
24
- return renderAgentCatalogSectionsFromSpecs(recipes.map(normalizeAgentSpec));
25
- }
26
-
27
22
  /** Keeps one roster line short enough that the whole fleet block stays near its token budget. */
28
23
  const FLEET_PROMPT_PURPOSE_MAX_CHARS = 64;
29
24
 
@@ -129,7 +124,7 @@ export function renderFleetPromptSection(input: ReadonlyArray<AgentSpec>): strin
129
124
  /**
130
125
  * Spec-based roster used when the caller already holds normalized specs.
131
126
  * `AgentsContract.listSpecs()` includes ACP delegation agents synthesized from
132
- * settings.delegation.agents[], which never exist as recipe files; rendering
127
+ * settings.integrations.externalAgents.entries[], which never exist as recipe files; rendering
133
128
  * from specs keeps those dispatchable targets discoverable in the fleet block.
134
129
  */
135
130
  export function renderAgentCatalogSectionsFromSpecs(input: ReadonlyArray<AgentSpec>): AgentCatalogSections {
@@ -178,8 +173,3 @@ function formatSpecLine(spec: AgentSpec, suffix: string): string {
178
173
  const budget = `, budget=${spec.budget.toolCalls}/${spec.budget.readReserve}${maximum}/${spec.budget.synthesis ? "synthesize" : "stop"}`;
179
174
  return `- ${spec.name} [${spec.id}] (${spec.audience}, ${spec.category}, ${spec.capabilityClass}, ${spec.latencyClass}, ${spec.source}${tags}${skills}${budget})${suffix}`;
180
175
  }
181
-
182
- export function renderAgentCatalog(recipes: ReadonlyArray<AgentRecipe>): string {
183
- const sections = renderAgentCatalogSections(recipes);
184
- return [sections.stable, sections.volatile].filter((part) => part.trim().length > 0).join("\n\n");
185
- }
@@ -15,7 +15,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
15
15
  const nextDiagnostics: AgentRecipeDiagnostic[] = [];
16
16
  const merged = discoverAgentRecipes(process.cwd(), nextDiagnostics);
17
17
  const config = _context.getContract<ConfigContract>("config");
18
- assertAgentIdNamespace(merged, config?.get()?.delegation?.agents ?? []);
18
+ assertAgentIdNamespace(merged, config?.get()?.integrations.externalAgents?.entries ?? []);
19
19
  recipes = merged;
20
20
  specs = recipes.map(normalizeAgentSpec);
21
21
  diagnostics = nextDiagnostics;
@@ -40,7 +40,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
40
40
  },
41
41
  listSpecs() {
42
42
  const config = _context.getContract<ConfigContract>("config");
43
- const delegationAgents = config?.get()?.delegation?.agents ?? [];
43
+ const delegationAgents = config?.get()?.integrations.externalAgents?.entries ?? [];
44
44
  const delegationSpecs = delegationAgents.map((agent) => ({
45
45
  version: 1 as const,
46
46
  id: agent.id,
@@ -67,7 +67,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
67
67
  const found = specs.find((r) => r.id === id);
68
68
  if (found) return found;
69
69
  const config = _context.getContract<ConfigContract>("config");
70
- const agent = config?.get()?.delegation?.agents?.find((entry) => entry.id === id);
70
+ const agent = config?.get()?.integrations.externalAgents?.entries?.find((entry) => entry.id === id);
71
71
  if (agent) {
72
72
  return {
73
73
  version: 1 as const,
@@ -29,6 +29,3 @@ task above. Nothing you write here persuades it.
29
29
 
30
30
  If it fails you, you receive its failed checks as input data and get exactly one
31
31
  revision. Close the findings it reported and nothing else.
32
-
33
- Answer with your `mutation-report`. Include `commitMessage`: one imperative
34
- subject line describing this change, as you would write it in the log.
@@ -30,6 +30,3 @@ If the suite comes back red you will receive its output as input data. Repair
30
30
  exactly what it reported. Do not restate the failure, do not weaken or delete a
31
31
  test to make it pass, and do not widen the change beyond the repair. You get at
32
32
  most two repair attempts before the run fails with the suite still red.
33
-
34
- Answer with your `mutation-report`. Include `commitMessage`: one imperative
35
- subject line describing this change, as you would write it in the log.
@@ -94,7 +94,7 @@ export function loadRecipesFromDir(
94
94
  if (source.source === "builtin") throw error;
95
95
  const message = error instanceof Error ? error.message : String(error);
96
96
  diagnostics.push({ source: source.source, filepath, message });
97
- process.stderr.write(`[clio:agents] quarantine path=${filepath} source=${source.source} reason=${message}\n`);
97
+ process.stderr.write(`[clio-coder:agents] quarantine path=${filepath} source=${source.source} reason=${message}\n`);
98
98
  }
99
99
  }
100
100
 
@@ -102,7 +102,7 @@ export function loadRecipesFromDir(
102
102
  return recipes;
103
103
  }
104
104
 
105
- export function mergeRecipes(...sources: ReadonlyArray<ReadonlyArray<AgentRecipe>>): ReadonlyArray<AgentRecipe> {
105
+ function mergeRecipes(...sources: ReadonlyArray<ReadonlyArray<AgentRecipe>>): ReadonlyArray<AgentRecipe> {
106
106
  const byId = new Map<string, AgentRecipe>();
107
107
  const builtinById = new Map<string, AgentRecipe>();
108
108
  for (const group of sources) {
@@ -113,23 +113,23 @@ export function mergeRecipes(...sources: ReadonlyArray<ReadonlyArray<AgentRecipe
113
113
  for (const group of sources) {
114
114
  for (const recipe of group) {
115
115
  if (recipe.source !== "builtin" && RESERVED_CUSTOM_AGENT_IDS.has(recipe.id)) {
116
- process.stderr.write(`[clio:agents] ignore id=${recipe.id} by=${recipe.source} reason=reserved-agent-id\n`);
116
+ process.stderr.write(`[clio-coder:agents] ignore id=${recipe.id} by=${recipe.source} reason=reserved-agent-id\n`);
117
117
  continue;
118
118
  }
119
119
  const builtin = builtinById.get(recipe.id);
120
120
  if (recipe.source === "extension" && builtin) {
121
- process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=extension reason=reserved-builtin\n`);
121
+ process.stderr.write(`[clio-coder:agents] ignore override id=${recipe.id} by=extension reason=reserved-builtin\n`);
122
122
  continue;
123
123
  }
124
124
  if (recipe.source === "user" && builtin && isShadowAgent(normalizeAgentSpec(builtin))) {
125
- process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=user reason=reserved-shadow\n`);
125
+ process.stderr.write(`[clio-coder:agents] ignore override id=${recipe.id} by=user reason=reserved-shadow\n`);
126
126
  continue;
127
127
  }
128
128
  if (recipe.source === "project" && builtin) {
129
- process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=project reason=reserved-builtin\n`);
129
+ process.stderr.write(`[clio-coder:agents] ignore override id=${recipe.id} by=project reason=reserved-builtin\n`);
130
130
  continue;
131
131
  }
132
- if (byId.has(recipe.id)) process.stderr.write(`[clio:agents] override id=${recipe.id} by=${recipe.source}\n`);
132
+ if (byId.has(recipe.id)) process.stderr.write(`[clio-coder:agents] override id=${recipe.id} by=${recipe.source}\n`);
133
133
  byId.set(recipe.id, recipe);
134
134
  }
135
135
  }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The one live-disk implementation of `ResultContractFilesystem`.
3
+ *
4
+ * `result-contract.ts` takes filesystem access as an argument so the validators
5
+ * stay deterministic and testable without touching a disk. That leaves every
6
+ * caller to supply the same three accessors, and the worker and the
7
+ * orchestrator had each written their own copy. A capability added to the
8
+ * interface then lands in one of them and not the other, which is how a Scout
9
+ * citation could ground inside the worker's repair rounds and fail the
10
+ * orchestrator's sealed revalidation of the identical result. One factory, both
11
+ * callers, no drift.
12
+ */
13
+ import { existsSync, readFileSync, statSync } from "node:fs";
14
+ import type { ResultContractFilesystem } from "./result-contract.js";
15
+
16
+ export function nodeResultContractFilesystem(): ResultContractFilesystem {
17
+ return {
18
+ readFile(filePath) {
19
+ try {
20
+ return readFileSync(filePath, "utf8");
21
+ } catch {
22
+ return null;
23
+ }
24
+ },
25
+ pathExists(filePath) {
26
+ return existsSync(filePath);
27
+ },
28
+ isDirectory(filePath) {
29
+ return statSync(filePath, { throwIfNoEntry: false })?.isDirectory() === true;
30
+ },
31
+ };
32
+ }