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