@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
@@ -5,24 +5,27 @@ import {
5
5
  } from "./chunk-CFGTUFWB.js";
6
6
  import {
7
7
  credentialsPresent
8
- } from "./chunk-LU7P4LHA.js";
8
+ } from "./chunk-72GZI5EV.js";
9
9
  import {
10
10
  ceilChars,
11
11
  estimateAgentMessageTokens,
12
12
  toolSchemaChars
13
- } from "./chunk-AEYBF3TB.js";
14
- import {
15
- readSettings
16
- } from "./chunk-PNY46YEY.js";
17
- import {
18
- sleep
19
- } from "./chunk-FQ4SKYE4.js";
13
+ } from "./chunk-CWVRRIEI.js";
20
14
  import {
21
15
  getSharedBus
22
- } from "./chunk-ZGVHUX3M.js";
16
+ } from "./chunk-PMZVFWSR.js";
23
17
  import {
24
18
  BusChannels
25
- } from "./chunk-RKRLDWD3.js";
19
+ } from "./chunk-HLW2MRKE.js";
20
+ import {
21
+ readSettings
22
+ } from "./chunk-EIMVLWB3.js";
23
+ import {
24
+ warnLegacyNaming
25
+ } from "./chunk-D7E7WCDF.js";
26
+ import {
27
+ sleep
28
+ } from "./chunk-EBY63B7G.js";
26
29
  import {
27
30
  CLIO_CONTEXT_WINDOW_WARN_BELOW,
28
31
  CLIO_MIN_CONTEXT_WINDOW,
@@ -34,17 +37,17 @@ import {
34
37
  registerBuiltinRuntimes,
35
38
  requestLmStudioJson,
36
39
  resolveLmStudioInstance
37
- } from "./chunk-JEQQR47K.js";
40
+ } from "./chunk-QKIFBZKT.js";
38
41
  import {
39
42
  listKnownModelsForRuntime
40
- } from "./chunk-774ILSRL.js";
43
+ } from "./chunk-CDNVLKUX.js";
41
44
  import {
42
45
  authNotRequiredStatus,
43
46
  openAuthStorage,
44
47
  registerClioOAuthProviders,
45
48
  resolveAuthTarget,
46
49
  targetRequiresAuth
47
- } from "./chunk-EQ63NRB7.js";
50
+ } from "./chunk-WNP7O5WZ.js";
48
51
  import {
49
52
  withStateFileLock
50
53
  } from "./chunk-IKCO5N3L.js";
@@ -52,10 +55,16 @@ import {
52
55
  require_dist
53
56
  } from "./chunk-APJ265NV.js";
54
57
  import {
58
+ clioCacheDir,
55
59
  clioConfigDir,
60
+ clioStateDir,
56
61
  clioStatePath,
57
- resolveClioDirs
58
- } from "./chunk-BNAZZHFG.js";
62
+ resolveClioDirs,
63
+ stateRootRemoved
64
+ } from "./chunk-BYP5D4HI.js";
65
+ import {
66
+ safeResourceWrite
67
+ } from "./chunk-WEPFGWHJ.js";
59
68
  import {
60
69
  getRuntimeRegistry
61
70
  } from "./chunk-NUGM5KR6.js";
@@ -65,13 +74,13 @@ import {
65
74
  getCatalogModelForRuntime,
66
75
  mergeCapabilities,
67
76
  resolveCostProvenance
68
- } from "./chunk-VO2LKSTM.js";
77
+ } from "./chunk-O42A54GG.js";
69
78
  import {
70
79
  activateExternalPluginApiBridge,
71
80
  calculateEngineCost,
72
81
  ensurePiAiRegistered,
73
82
  registerEngineApiProvider
74
- } from "./chunk-UOSL25KY.js";
83
+ } from "./chunk-VXMFAE2W.js";
75
84
  import {
76
85
  __toESM,
77
86
  init_esm_shims
@@ -102,6 +111,88 @@ function canonicalEndpointUrl(raw) {
102
111
  }
103
112
  }
104
113
 
114
+ // src/domains/providers/endpoint-slots-store.ts
115
+ init_esm_shims();
116
+ import { existsSync, readFileSync } from "node:fs";
117
+ import { join } from "node:path";
118
+ var DEFAULT_ENDPOINT_SLOTS_TTL_MS = 24 * 60 * 60 * 1e3;
119
+ var ENDPOINT_SLOTS_TTL_ENV_VAR = "CLIO_CODER_ENDPOINT_SLOTS_TTL_MS";
120
+ var MAX_ENDPOINT_SLOT_RECORDS = 64;
121
+ function endpointSlotsPath() {
122
+ return join(clioStateDir(), "endpoint-slots.json");
123
+ }
124
+ function endpointSlotsTtlMs(env = process.env) {
125
+ const raw = env[ENDPOINT_SLOTS_TTL_ENV_VAR]?.trim();
126
+ if (raw !== void 0 && /^[1-9]\d*$/.test(raw)) {
127
+ const parsed = Number(raw);
128
+ if (Number.isSafeInteger(parsed)) return parsed;
129
+ }
130
+ return DEFAULT_ENDPOINT_SLOTS_TTL_MS;
131
+ }
132
+ function validRecord(key, value) {
133
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
134
+ const record = value;
135
+ return record.endpointKey === key && typeof record.runtimeId === "string" && record.runtimeId.length > 0 && typeof record.slots === "number" && Number.isInteger(record.slots) && record.slots > 0 && typeof record.observedAt === "string" && Number.isFinite(Date.parse(record.observedAt));
136
+ }
137
+ function readRecords() {
138
+ const path = endpointSlotsPath();
139
+ if (!existsSync(path)) return [];
140
+ try {
141
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
142
+ if (parsed?.version !== 1 || typeof parsed.endpoints !== "object" || parsed.endpoints === null) return [];
143
+ return Object.entries(parsed.endpoints).filter(([key, value]) => validRecord(key, value)).map(([, value]) => ({ ...value }));
144
+ } catch {
145
+ return [];
146
+ }
147
+ }
148
+ function fresh(record, nowMs, ttlMs) {
149
+ const observedMs = Date.parse(record.observedAt);
150
+ return observedMs <= nowMs && nowMs - observedMs < ttlMs;
151
+ }
152
+ function readDiscoveredEndpointSlots(options) {
153
+ const nowMs = options?.nowMs ?? Date.now();
154
+ const ttlMs = options?.ttlMs ?? endpointSlotsTtlMs();
155
+ const out = {};
156
+ for (const record of readRecords()) {
157
+ if (!fresh(record, nowMs, ttlMs)) continue;
158
+ out[record.endpointKey] = record;
159
+ }
160
+ return Object.freeze(out);
161
+ }
162
+ function writeRecords(records) {
163
+ const kept = [...records].sort((a, b) => Date.parse(b.observedAt) - Date.parse(a.observedAt)).slice(0, MAX_ENDPOINT_SLOT_RECORDS);
164
+ const file = {
165
+ version: 1,
166
+ endpoints: Object.fromEntries(kept.map((record) => [record.endpointKey, { ...record }]))
167
+ };
168
+ safeResourceWrite(endpointSlotsPath(), `${JSON.stringify(file, null, 2)}
169
+ `, { encoding: "utf8" });
170
+ }
171
+ async function recordDiscoveredEndpointSlots(entry, options) {
172
+ if (!Number.isInteger(entry.slots) || entry.slots <= 0) return;
173
+ if (entry.endpointKey.length === 0 || entry.runtimeId.length === 0) return;
174
+ if (stateRootRemoved()) return;
175
+ const nowMs = options?.nowMs ?? Date.now();
176
+ const ttlMs = options?.ttlMs ?? endpointSlotsTtlMs();
177
+ try {
178
+ await withStateFileLock(endpointSlotsPath(), () => {
179
+ if (stateRootRemoved()) return;
180
+ const kept = readRecords().filter(
181
+ (record) => record.endpointKey !== entry.endpointKey && fresh(record, nowMs, ttlMs)
182
+ );
183
+ kept.push({
184
+ endpointKey: entry.endpointKey,
185
+ runtimeId: entry.runtimeId,
186
+ slots: entry.slots,
187
+ observedAt: new Date(nowMs).toISOString()
188
+ });
189
+ writeRecords(kept);
190
+ });
191
+ } catch (error) {
192
+ options?.onError?.(error);
193
+ }
194
+ }
195
+
105
196
  // src/domains/providers/endpoint-capacity.ts
106
197
  var UNBOUNDED_LOCAL_NATIVE_RUNTIMES = /* @__PURE__ */ new Set(["vllm", "sglang"]);
107
198
  function canonicalEndpointKey(value) {
@@ -118,31 +209,80 @@ function endpointLabel(endpointKey) {
118
209
  function positiveInteger(value) {
119
210
  return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : void 0;
120
211
  }
121
- function endpointCapacityForStatus(status) {
122
- const key = canonicalEndpointKey(status.target);
212
+ function endpointCapacityFor(input, priors = readDiscoveredEndpointSlots()) {
213
+ const key = canonicalEndpointKey(input.target);
123
214
  if (key === null) return null;
124
- const override = positiveInteger(status.target.maxConcurrentRequests);
125
- if (override !== void 0) return { key, label: endpointLabel(key), limit: override, source: "override" };
126
- const discovered = positiveInteger(status.probeCapabilities?.parallelSlots);
127
- if (discovered !== void 0) return { key, label: endpointLabel(key), limit: discovered, source: "discovered" };
128
- if (status.runtime?.tier !== "local-native" || UNBOUNDED_LOCAL_NATIVE_RUNTIMES.has(status.runtime.id)) return null;
129
- return { key, label: endpointLabel(key), limit: 1, source: "local-native-default" };
215
+ const label = endpointLabel(key);
216
+ const override = positiveInteger(input.target.maxConcurrentRequests);
217
+ if (override !== void 0) return { key, label, limit: override, source: "override" };
218
+ const discovered = positiveInteger(input.discoveredSlots);
219
+ if (discovered !== void 0) return { key, label, limit: discovered, source: "discovered" };
220
+ const prior = priors[key];
221
+ if (prior !== void 0 && prior.runtimeId === (input.runtime?.id ?? input.target.runtime)) {
222
+ return { key, label, limit: prior.slots, source: "discovered-prior" };
223
+ }
224
+ if (input.runtime?.tier !== "local-native" || UNBOUNDED_LOCAL_NATIVE_RUNTIMES.has(input.runtime.id)) return null;
225
+ return { key, label, limit: 1, source: "local-native-default" };
226
+ }
227
+ function endpointCapacityForStatus(status, priors = readDiscoveredEndpointSlots()) {
228
+ return endpointCapacityFor(
229
+ {
230
+ target: status.target,
231
+ runtime: status.runtime ?? null,
232
+ discoveredSlots: status.probeCapabilities?.parallelSlots
233
+ },
234
+ priors
235
+ );
130
236
  }
131
237
  function sourceRank(source) {
132
- return source === "override" ? 2 : source === "discovered" ? 1 : 0;
238
+ switch (source) {
239
+ case "override":
240
+ return 3;
241
+ case "discovered":
242
+ return 2;
243
+ case "discovered-prior":
244
+ return 1;
245
+ default:
246
+ return 0;
247
+ }
248
+ }
249
+ function foldCapacity(capacities, candidate) {
250
+ if (candidate === null) return;
251
+ const current = capacities[candidate.key];
252
+ if (current === void 0 || sourceRank(candidate.source) > sourceRank(current.source) || sourceRank(candidate.source) === sourceRank(current.source) && candidate.limit < current.limit) {
253
+ capacities[candidate.key] = candidate;
254
+ }
133
255
  }
134
256
  function endpointCapacitiesForStatuses(statuses) {
257
+ const priors = readDiscoveredEndpointSlots();
135
258
  const capacities = {};
136
- for (const status of statuses) {
137
- const candidate = endpointCapacityForStatus(status);
138
- if (candidate === null) continue;
139
- const current = capacities[candidate.key];
140
- if (current === void 0 || sourceRank(candidate.source) > sourceRank(current.source) || sourceRank(candidate.source) === sourceRank(current.source) && candidate.limit < current.limit) {
141
- capacities[candidate.key] = candidate;
142
- }
259
+ for (const status of statuses) foldCapacity(capacities, endpointCapacityForStatus(status, priors));
260
+ return capacities;
261
+ }
262
+ function resolveEndpointCapacities(input) {
263
+ const priors = readDiscoveredEndpointSlots();
264
+ const capacities = {};
265
+ const covered = /* @__PURE__ */ new Set();
266
+ for (const status of input.statuses) {
267
+ covered.add(status.target.id);
268
+ foldCapacity(capacities, endpointCapacityForStatus(status, priors));
269
+ }
270
+ for (const target of input.targets ?? []) {
271
+ if (covered.has(target.id)) continue;
272
+ foldCapacity(
273
+ capacities,
274
+ endpointCapacityFor({ target, runtime: input.runtimeFor?.(target.runtime) ?? null }, priors)
275
+ );
143
276
  }
144
277
  return capacities;
145
278
  }
279
+ function recordEndpointSlotsFromStatus(status, options) {
280
+ const key = canonicalEndpointKey(status.target);
281
+ const slots = positiveInteger(status.probeCapabilities?.parallelSlots);
282
+ const runtimeId = status.runtime?.id ?? status.target.runtime;
283
+ if (key === null || slots === void 0 || runtimeId === void 0) return Promise.resolve();
284
+ return recordDiscoveredEndpointSlots({ endpointKey: key, runtimeId, slots }, options);
285
+ }
146
286
  var foregroundStreams = /* @__PURE__ */ new Map();
147
287
  function registerForegroundStream(endpointKey) {
148
288
  foregroundStreams.set(endpointKey, (foregroundStreams.get(endpointKey) ?? 0) + 1);
@@ -164,11 +304,11 @@ init_esm_shims();
164
304
 
165
305
  // src/engine/apis/residency-lock.ts
166
306
  init_esm_shims();
167
- import { join } from "node:path";
307
+ import { join as join2 } from "node:path";
168
308
  var LOCK_WAIT_MS = 12e4;
169
309
  function lockTargetFor(targetKey) {
170
310
  const key = canonicalEndpointKey(targetKey) ?? targetKey;
171
- return join(clioStatePath(), "residency-locks", key.replace(/[^a-zA-Z0-9._-]+/g, "_"));
311
+ return join2(clioStatePath(), "residency-locks", key.replace(/[^a-zA-Z0-9._-]+/g, "_"));
172
312
  }
173
313
  async function withResidencyLock(targetKey, fn) {
174
314
  return withStateFileLock(lockTargetFor(targetKey), fn, {
@@ -905,6 +1045,13 @@ function harmonyReasoningEffort(level) {
905
1045
  if (level === "medium") return "medium";
906
1046
  return "low";
907
1047
  }
1048
+ var MEMORY_ALWAYS_ON_MODEL_MIN_OUTPUT_TOKENS = 4e3;
1049
+ function memoryInterventionModelMaxTokens(input) {
1050
+ const configured = Number.isSafeInteger(input.configuredMaxTokens) && input.configuredMaxTokens > 0 ? input.configuredMaxTokens : 1;
1051
+ const requested = input.thinkingMechanism === "always-on" ? Math.max(configured * 2, MEMORY_ALWAYS_ON_MODEL_MIN_OUTPUT_TOKENS) : configured;
1052
+ const modelCap = input.modelMaxTokens;
1053
+ return typeof modelCap === "number" && Number.isSafeInteger(modelCap) && modelCap > 0 ? Math.min(requested, modelCap) : requested;
1054
+ }
908
1055
  function reasoningClassForMechanism(mechanism) {
909
1056
  if (mechanism === "none") return "never";
910
1057
  if (mechanism === "always-on") return "always";
@@ -1260,7 +1407,9 @@ function capabilitiesFromModel(model) {
1260
1407
  return caps;
1261
1408
  }
1262
1409
  function resolveModelRuntimeCapabilitiesForModel(model, configuredThinkingLevel) {
1263
- const metadata2 = model.clio;
1410
+ const runtimeModel = model;
1411
+ if (runtimeModel.clio !== void 0) warnLegacyNaming("model.clio", "model.clioCoder");
1412
+ const metadata2 = runtimeModel.clioCoder ?? runtimeModel.clio;
1264
1413
  const caps = capabilitiesFromModel(model);
1265
1414
  return resolveModelRuntimeCapabilities({
1266
1415
  targetId: metadata2?.targetId ?? null,
@@ -1295,6 +1444,91 @@ function resolveTargetRuntimeCapabilities(target, runtime, wireModelId, capabili
1295
1444
  });
1296
1445
  }
1297
1446
 
1447
+ // src/domains/providers/target-model-cache.ts
1448
+ init_esm_shims();
1449
+ import { createHash } from "node:crypto";
1450
+ import { existsSync as existsSync2, readFileSync as readFileSync2 } from "node:fs";
1451
+ import { join as join3 } from "node:path";
1452
+ var TARGET_MODEL_CACHE_TTL_MS = 24 * 60 * 60 * 1e3;
1453
+ var TARGET_MODEL_CACHE_VERSION = 1;
1454
+ var TARGET_MODEL_CACHE_MAX_MODELS = 4096;
1455
+ var TARGET_MODEL_CACHE_MAX_MODEL_ID_CHARS = 1024;
1456
+ function targetCacheKey(targetId) {
1457
+ return createHash("sha256").update(targetId).digest("hex").slice(0, 24);
1458
+ }
1459
+ function targetModelSnapshotPath(targetId, cacheDir = clioCacheDir()) {
1460
+ return join3(cacheDir, "provider-target-models", `${targetCacheKey(targetId)}.json`);
1461
+ }
1462
+ function normalizedModels(models) {
1463
+ const seen = /* @__PURE__ */ new Set();
1464
+ const out = [];
1465
+ for (const raw of models) {
1466
+ const model = raw.trim();
1467
+ if (model.length === 0 || model.length > TARGET_MODEL_CACHE_MAX_MODEL_ID_CHARS || seen.has(model)) continue;
1468
+ seen.add(model);
1469
+ out.push(model);
1470
+ if (out.length >= TARGET_MODEL_CACHE_MAX_MODELS) break;
1471
+ }
1472
+ return out;
1473
+ }
1474
+ function parseSnapshot(value) {
1475
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return null;
1476
+ const row = value;
1477
+ if (row.version !== TARGET_MODEL_CACHE_VERSION) return null;
1478
+ if (typeof row.targetId !== "string" || row.targetId.length === 0) return null;
1479
+ if (typeof row.runtimeId !== "string" || row.runtimeId.length === 0) return null;
1480
+ if (row.url !== null && typeof row.url !== "string") return null;
1481
+ if (!Array.isArray(row.models) || row.models.some((model) => typeof model !== "string")) return null;
1482
+ if (typeof row.observedAt !== "string" || !Number.isFinite(Date.parse(row.observedAt))) return null;
1483
+ const models = normalizedModels(row.models);
1484
+ if (models.length !== row.models.length) return null;
1485
+ return {
1486
+ version: TARGET_MODEL_CACHE_VERSION,
1487
+ targetId: row.targetId,
1488
+ runtimeId: row.runtimeId,
1489
+ url: row.url,
1490
+ models,
1491
+ observedAt: row.observedAt
1492
+ };
1493
+ }
1494
+ function readTargetModelSnapshot(target, options = {}) {
1495
+ const path = targetModelSnapshotPath(target.id, options.cacheDir);
1496
+ if (!existsSync2(path)) return null;
1497
+ try {
1498
+ const snapshot = parseSnapshot(JSON.parse(readFileSync2(path, "utf8")));
1499
+ if (snapshot === null) return null;
1500
+ if (snapshot.targetId !== target.id || snapshot.runtimeId !== target.runtime) return null;
1501
+ if (snapshot.url !== (target.url ?? null)) return null;
1502
+ const observedMs = Date.parse(snapshot.observedAt);
1503
+ const nowMs = options.nowMs ?? Date.now();
1504
+ const ttlMs = options.ttlMs ?? TARGET_MODEL_CACHE_TTL_MS;
1505
+ if (observedMs > nowMs || nowMs - observedMs >= ttlMs) return null;
1506
+ return snapshot;
1507
+ } catch {
1508
+ return null;
1509
+ }
1510
+ }
1511
+ function recordTargetModelSnapshot(target, models, options = {}) {
1512
+ if (target.id.length === 0 || target.runtime.length === 0) return false;
1513
+ const snapshot = {
1514
+ version: TARGET_MODEL_CACHE_VERSION,
1515
+ targetId: target.id,
1516
+ runtimeId: target.runtime,
1517
+ url: target.url ?? null,
1518
+ models: normalizedModels(models),
1519
+ observedAt: new Date(options.nowMs ?? Date.now()).toISOString()
1520
+ };
1521
+ try {
1522
+ safeResourceWrite(targetModelSnapshotPath(target.id, options.cacheDir), `${JSON.stringify(snapshot, null, 2)}
1523
+ `, {
1524
+ encoding: "utf8"
1525
+ });
1526
+ return true;
1527
+ } catch {
1528
+ return false;
1529
+ }
1530
+ }
1531
+
1298
1532
  // src/domains/providers/eligibility.ts
1299
1533
  init_esm_shims();
1300
1534
  function isTargetEligibleRuntime(runtime) {
@@ -1400,6 +1634,105 @@ function canonicalizeWireModelId(status, requested) {
1400
1634
  return matches.length === 1 ? matches[0] ?? requested : requested;
1401
1635
  }
1402
1636
 
1637
+ // src/domains/providers/resolver.ts
1638
+ init_esm_shims();
1639
+ var GLOB_CHARS = /[*?[]/;
1640
+ function isThinkingLevel(token) {
1641
+ return VALID_THINKING_LEVELS.includes(token);
1642
+ }
1643
+ function splitThinkingSuffix(pattern) {
1644
+ const idx = pattern.lastIndexOf(":");
1645
+ if (idx === -1) return { base: pattern };
1646
+ const suffix = pattern.slice(idx + 1).trim();
1647
+ if (!isThinkingLevel(suffix)) return { base: pattern };
1648
+ const base = pattern.slice(0, idx).trim();
1649
+ return base ? { base, thinkingLevel: suffix } : { base: pattern };
1650
+ }
1651
+ function globToRegExp(glob) {
1652
+ let body = "^";
1653
+ for (let i = 0; i < glob.length; i++) {
1654
+ const ch = glob[i] ?? "";
1655
+ if (ch === "*") {
1656
+ body += ".*";
1657
+ } else if (ch === "?") {
1658
+ body += ".";
1659
+ } else if (ch === "[") {
1660
+ const close = glob.indexOf("]", i + 1);
1661
+ if (close === -1) {
1662
+ body += "\\[";
1663
+ continue;
1664
+ }
1665
+ body += `[${glob.slice(i + 1, close)}]`;
1666
+ i = close;
1667
+ } else if (/[.+^${}()|\\]/.test(ch)) {
1668
+ body += `\\${ch}`;
1669
+ } else {
1670
+ body += ch;
1671
+ }
1672
+ }
1673
+ body += "$";
1674
+ return new RegExp(body, "i");
1675
+ }
1676
+ function collectCandidates(providers) {
1677
+ const out = [];
1678
+ const seen = /* @__PURE__ */ new Set();
1679
+ for (const status of providers.list()) {
1680
+ for (const model of modelIdsForStatus(status)) {
1681
+ const key = `${status.target.id}/${model}`;
1682
+ if (seen.has(key)) continue;
1683
+ seen.add(key);
1684
+ out.push({ target: status.target.id, model, full: key });
1685
+ }
1686
+ }
1687
+ return out;
1688
+ }
1689
+ function pickFirst(candidates) {
1690
+ if (candidates.length === 0) return null;
1691
+ const head = candidates[0];
1692
+ if (!head) return null;
1693
+ return { ref: head, ambiguous: candidates.length > 1 };
1694
+ }
1695
+ function buildResult(pattern, pick, thinkingLevel) {
1696
+ if (!pick) {
1697
+ return { ref: null, error: `no models match pattern "${pattern}"` };
1698
+ }
1699
+ const ref = { target: pick.ref.target, model: pick.ref.model };
1700
+ if (thinkingLevel) ref.thinkingLevel = thinkingLevel;
1701
+ const result = { ref };
1702
+ if (pick.ambiguous) {
1703
+ result.warning = `pattern "${pattern}" matched multiple models; using ${pick.ref.full}`;
1704
+ }
1705
+ return result;
1706
+ }
1707
+ function resolveModelReference(rawPattern, providers) {
1708
+ const trimmed = rawPattern.trim();
1709
+ if (!trimmed) return { ref: null, error: "empty pattern" };
1710
+ const { base, thinkingLevel } = splitThinkingSuffix(trimmed);
1711
+ const candidates = collectCandidates(providers);
1712
+ if (candidates.length === 0) {
1713
+ return { ref: null, error: "no targets configured; add one with `clio-coder configure` or `clio-coder targets add`" };
1714
+ }
1715
+ const lower = base.toLowerCase();
1716
+ const exactFull = candidates.filter((c) => c.full.toLowerCase() === lower);
1717
+ if (exactFull.length > 0) return buildResult(base, pickFirst(exactFull), thinkingLevel);
1718
+ if (GLOB_CHARS.test(base)) {
1719
+ const re = globToRegExp(base);
1720
+ const globMatches = candidates.filter((c) => re.test(c.full) || re.test(c.model));
1721
+ return buildResult(base, pickFirst(globMatches), thinkingLevel);
1722
+ }
1723
+ const slashIdx = base.indexOf("/");
1724
+ if (slashIdx !== -1) {
1725
+ const ep = base.slice(0, slashIdx).toLowerCase();
1726
+ const mdl = base.slice(slashIdx + 1).toLowerCase();
1727
+ const epModel = candidates.filter((c) => c.target.toLowerCase() === ep && c.model.toLowerCase() === mdl);
1728
+ if (epModel.length > 0) return buildResult(base, pickFirst(epModel), thinkingLevel);
1729
+ }
1730
+ const exactModel = candidates.filter((c) => c.model.toLowerCase() === lower);
1731
+ if (exactModel.length > 0) return buildResult(base, pickFirst(exactModel), thinkingLevel);
1732
+ const partial = candidates.filter((c) => c.model.toLowerCase().includes(lower));
1733
+ return buildResult(base, pickFirst(partial), thinkingLevel);
1734
+ }
1735
+
1403
1736
  // src/domains/providers/runtime-resolution.ts
1404
1737
  init_esm_shims();
1405
1738
  function diagnostic(severity, code, message) {
@@ -3754,8 +4087,8 @@ function registerClioApiProviders() {
3754
4087
 
3755
4088
  // src/domains/providers/knowledge-base-path.ts
3756
4089
  init_esm_shims();
3757
- import { existsSync, statSync } from "node:fs";
3758
- import { delimiter, dirname, join as join2 } from "node:path";
4090
+ import { existsSync as existsSync3, statSync } from "node:fs";
4091
+ import { delimiter, dirname, join as join4 } from "node:path";
3759
4092
  import { fileURLToPath } from "node:url";
3760
4093
  var MODEL_CATALOG_OVERLAY_DIR = "model-catalog.d";
3761
4094
  var MODEL_CATALOG_DIRS_ENV = "CLIO_CODER_MODEL_CATALOG_DIRS";
@@ -3769,19 +4102,19 @@ function isDirectory(path) {
3769
4102
  function resolveProvidersModelsDir(importMetaUrl) {
3770
4103
  const start = dirname(fileURLToPath(importMetaUrl));
3771
4104
  const directCandidates = [
3772
- join2(start, "models"),
3773
- join2(start, "..", "domains", "providers", "models"),
3774
- join2(start, "..", "providers-models")
4105
+ join4(start, "models"),
4106
+ join4(start, "..", "domains", "providers", "models"),
4107
+ join4(start, "..", "providers-models")
3775
4108
  ];
3776
4109
  for (const candidate of directCandidates) {
3777
4110
  if (isDirectory(candidate)) return candidate;
3778
4111
  }
3779
4112
  let cursor = start;
3780
4113
  for (let i = 0; i < 8; i++) {
3781
- const packageJson = join2(cursor, "package.json");
3782
- const sourceModels = join2(cursor, "src", "domains", "providers", "models");
3783
- const distModels = join2(cursor, "dist", "providers-models");
3784
- if (existsSync(packageJson)) {
4114
+ const packageJson = join4(cursor, "package.json");
4115
+ const sourceModels = join4(cursor, "src", "domains", "providers", "models");
4116
+ const distModels = join4(cursor, "dist", "providers-models");
4117
+ if (existsSync3(packageJson)) {
3785
4118
  if (isDirectory(sourceModels)) return sourceModels;
3786
4119
  if (isDirectory(distModels)) return distModels;
3787
4120
  }
@@ -3811,8 +4144,8 @@ function resolveProviderModelCatalogDirs(importMetaUrl, options = {}) {
3811
4144
  const bundled = resolveProvidersModelsDir(importMetaUrl);
3812
4145
  const cwd = options.cwd ?? process.cwd();
3813
4146
  const overlays = uniqueExistingDirs([
3814
- join2(resolveClioDirs().config, MODEL_CATALOG_OVERLAY_DIR),
3815
- join2(cwd, ".clio-coder", MODEL_CATALOG_OVERLAY_DIR),
4147
+ join4(resolveClioDirs().config, MODEL_CATALOG_OVERLAY_DIR),
4148
+ join4(cwd, ".clio-coder", MODEL_CATALOG_OVERLAY_DIR),
3816
4149
  ...envOverlayDirs()
3817
4150
  ]);
3818
4151
  return {
@@ -3831,7 +4164,7 @@ function resolveProviderKnowledgeBaseRoots(importMetaUrl, options = {}) {
3831
4164
 
3832
4165
  // src/domains/providers/plugins.ts
3833
4166
  init_esm_shims();
3834
- import { join as join3 } from "node:path";
4167
+ import { join as join5 } from "node:path";
3835
4168
  function extractPluginPackages(settings) {
3836
4169
  if (!settings || typeof settings !== "object") return [];
3837
4170
  const raw = settings.runtimePlugins;
@@ -3840,7 +4173,7 @@ function extractPluginPackages(settings) {
3840
4173
  }
3841
4174
  async function loadPluginRuntimes(registry, settings) {
3842
4175
  const loaded = [];
3843
- const pluginDir = join3(clioConfigDir(), "runtimes");
4176
+ const pluginDir = join5(clioConfigDir(), "runtimes");
3844
4177
  const packages = extractPluginPackages(settings);
3845
4178
  try {
3846
4179
  const ids = await registry.loadFromDir(pluginDir, activateExternalPluginApiBridge);
@@ -3868,8 +4201,8 @@ async function loadPluginRuntimes(registry, settings) {
3868
4201
  // src/domains/providers/types/knowledge-base.ts
3869
4202
  init_esm_shims();
3870
4203
  var import_yaml = __toESM(require_dist(), 1);
3871
- import { readdirSync, readFileSync, statSync as statSync2 } from "node:fs";
3872
- import { join as join4 } from "node:path";
4204
+ import { readdirSync, readFileSync as readFileSync3, statSync as statSync2 } from "node:fs";
4205
+ import { join as join6 } from "node:path";
3873
4206
  var FileKnowledgeBase = class {
3874
4207
  roots;
3875
4208
  loaded = [];
@@ -3883,7 +4216,7 @@ var FileKnowledgeBase = class {
3883
4216
  const files = collectYamlFiles(root.dir);
3884
4217
  for (const file of files) {
3885
4218
  const name = root.label ? `${root.label}:${file.name}` : file.name;
3886
- const raw = readFileSync(file.path, "utf8");
4219
+ const raw = readFileSync3(file.path, "utf8");
3887
4220
  const parsed = (0, import_yaml.parse)(raw);
3888
4221
  if (!Array.isArray(parsed)) {
3889
4222
  throw new Error(`knowledge base file ${name} must be a YAML list of KnowledgeBaseEntry`);
@@ -3941,7 +4274,7 @@ function collectYamlFiles(dir, prefix = "") {
3941
4274
  const out = [];
3942
4275
  const entries = readdirSync(dir, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name));
3943
4276
  for (const entry of entries) {
3944
- const path = join4(dir, entry.name);
4277
+ const path = join6(dir, entry.name);
3945
4278
  const name = prefix ? `${prefix}/${entry.name}` : entry.name;
3946
4279
  if (entry.isDirectory()) {
3947
4280
  out.push(...collectYamlFiles(path, name));
@@ -3981,6 +4314,16 @@ function normalizeEntry(raw, file) {
3981
4314
  }
3982
4315
  entry.quirks = candidate.quirks;
3983
4316
  }
4317
+ const canonicalMetadata = candidate["clio-coder"];
4318
+ const legacyMetadata = candidate.clio;
4319
+ if (legacyMetadata !== void 0) warnLegacyNaming("clio: model metadata", "clio-coder: model metadata");
4320
+ const metadata2 = canonicalMetadata ?? legacyMetadata;
4321
+ if (metadata2 !== void 0) {
4322
+ if (typeof metadata2 !== "object" || metadata2 === null || Array.isArray(metadata2)) {
4323
+ throw new Error(`knowledge base file ${file}: entry '${family}' clio-coder metadata must be an object`);
4324
+ }
4325
+ entry.clioCoder = metadata2;
4326
+ }
3984
4327
  return entry;
3985
4328
  }
3986
4329
 
@@ -4047,16 +4390,17 @@ function uniqueModels2(ids) {
4047
4390
  }
4048
4391
  return out;
4049
4392
  }
4050
- function discoveredModelsSource(probe, preservePreviousProbe, previous, desc) {
4393
+ function discoveredModelsSource(probe, preservePreviousProbe, previous, cachedModels, desc) {
4051
4394
  if (probe?.models !== void 0) return "probe";
4052
4395
  if (preservePreviousProbe && previous?.discoveredModels && previous.discoveredModels.length > 0) return "cache";
4396
+ if (cachedModels.length > 0) return "cache";
4053
4397
  if (desc.knownModels && desc.knownModels.length > 0) return "runtime";
4054
4398
  return "none";
4055
4399
  }
4056
4400
  function sameProbeIdentity(previous, next) {
4057
4401
  return previous.id === next.id && previous.runtime === next.runtime && (previous.url ?? "") === (next.url ?? "") && (previous.defaultModel ?? "") === (next.defaultModel ?? "");
4058
4402
  }
4059
- function mergeProbeResult(desc, target, probe, previous) {
4403
+ function mergeProbeResult(desc, target, probe, previous, cachedModels = []) {
4060
4404
  const probeSucceeded = probe?.ok ?? false;
4061
4405
  const preservePrevious = !probeSucceeded && previous !== void 0 && sameProbeIdentity(previous.target, target);
4062
4406
  const probeCapabilities = probe?.discoveredCapabilities ?? (preservePrevious ? previous.probeCapabilities : null) ?? null;
@@ -4065,12 +4409,12 @@ function mergeProbeResult(desc, target, probe, previous) {
4065
4409
  const probeNotes = probe?.notes && probe.notes.length > 0 ? probe.notes : preservePrevious ? previous.probeNotes : void 0;
4066
4410
  const probeSurfaces = probe?.surfaces ?? (preservePrevious ? previous.probeSurfaces : void 0);
4067
4411
  const discoveredModels = uniqueModels2(
4068
- probe?.models ?? (preservePrevious ? previous.discoveredModels : void 0) ?? desc.knownModels ?? []
4412
+ probe?.models ?? (preservePrevious ? previous.discoveredModels : void 0) ?? (cachedModels.length > 0 ? cachedModels : void 0) ?? desc.knownModels ?? []
4069
4413
  );
4070
4414
  const discoveredModelStates = probe?.modelStates ?? (preservePrevious ? previous.discoveredModelStates : null) ?? null;
4071
4415
  const merge = {
4072
4416
  discoveredModels,
4073
- discoveredModelsSource: discoveredModelsSource(probe, preservePrevious, previous, desc),
4417
+ discoveredModelsSource: discoveredModelsSource(probe, preservePrevious, previous, cachedModels, desc),
4074
4418
  discoveredModelStates,
4075
4419
  probeCapabilities,
4076
4420
  probeModelCapabilities,
@@ -4163,7 +4507,8 @@ function createProvidersBundle(context) {
4163
4507
  return out2;
4164
4508
  }
4165
4509
  const availability = availabilityFor(desc, target, authStatusFor);
4166
- const merge = mergeProbeResult(desc, target, probe, previous);
4510
+ const cachedModels = readTargetModelSnapshot(target)?.models ?? [];
4511
+ const merge = mergeProbeResult(desc, target, probe, previous, cachedModels);
4167
4512
  const { capabilities, contextWindowProvenance } = capabilitiesFor(desc, target, merge, kb);
4168
4513
  const healthy = probe !== null ? probe.ok : null;
4169
4514
  const unservedDefault = probe?.ok ? unservedDefaultModelReason(desc, target, merge) : null;
@@ -4224,7 +4569,7 @@ function createProvidersBundle(context) {
4224
4569
  }
4225
4570
  if (probeResult.ok && options?.reasoning !== false && typeof desc.probeReasoning === "function") {
4226
4571
  const settings = readConfig();
4227
- const orchestratorTarget = settings.orchestrator.target === target.id ? settings.orchestrator.model : null;
4572
+ const orchestratorTarget = settings.chat.target === target.id ? settings.chat.model : null;
4228
4573
  const candidateModelId = orchestratorTarget ?? target.defaultModel ?? null;
4229
4574
  if (candidateModelId) {
4230
4575
  try {
@@ -4251,6 +4596,10 @@ function createProvidersBundle(context) {
4251
4596
  }
4252
4597
  const status = buildStatus(target, desc, probeResult, previous);
4253
4598
  statuses.set(target.id, status);
4599
+ if (probeResult.ok && probeResult.models !== void 0) {
4600
+ recordTargetModelSnapshot(target, probeResult.models);
4601
+ }
4602
+ void recordEndpointSlotsFromStatus(status);
4254
4603
  context.bus.emit(BusChannels.ProviderHealth, { id: target.id, status });
4255
4604
  return status;
4256
4605
  }
@@ -4298,7 +4647,7 @@ function createProvidersBundle(context) {
4298
4647
  registerClioOAuthProviders();
4299
4648
  registerBuiltinRuntimes(registry);
4300
4649
  const settings = readConfig();
4301
- setGlobalDefaultMaxOutputTokens(settings.defaults.maxTokens);
4650
+ setGlobalDefaultMaxOutputTokens(settings.chat.maxOutputTokens);
4302
4651
  await loadPluginRuntimes(registry, settings);
4303
4652
  await probeAll();
4304
4653
  const config = context.getContract("config");
@@ -4413,105 +4762,6 @@ var ProvidersManifest = {
4413
4762
  dependsOn: ["config"]
4414
4763
  };
4415
4764
 
4416
- // src/domains/providers/resolver.ts
4417
- init_esm_shims();
4418
- var GLOB_CHARS = /[*?[]/;
4419
- function isThinkingLevel(token) {
4420
- return VALID_THINKING_LEVELS.includes(token);
4421
- }
4422
- function splitThinkingSuffix(pattern) {
4423
- const idx = pattern.lastIndexOf(":");
4424
- if (idx === -1) return { base: pattern };
4425
- const suffix = pattern.slice(idx + 1).trim();
4426
- if (!isThinkingLevel(suffix)) return { base: pattern };
4427
- const base = pattern.slice(0, idx).trim();
4428
- return base ? { base, thinkingLevel: suffix } : { base: pattern };
4429
- }
4430
- function globToRegExp(glob) {
4431
- let body = "^";
4432
- for (let i = 0; i < glob.length; i++) {
4433
- const ch = glob[i] ?? "";
4434
- if (ch === "*") {
4435
- body += ".*";
4436
- } else if (ch === "?") {
4437
- body += ".";
4438
- } else if (ch === "[") {
4439
- const close = glob.indexOf("]", i + 1);
4440
- if (close === -1) {
4441
- body += "\\[";
4442
- continue;
4443
- }
4444
- body += `[${glob.slice(i + 1, close)}]`;
4445
- i = close;
4446
- } else if (/[.+^${}()|\\]/.test(ch)) {
4447
- body += `\\${ch}`;
4448
- } else {
4449
- body += ch;
4450
- }
4451
- }
4452
- body += "$";
4453
- return new RegExp(body, "i");
4454
- }
4455
- function collectCandidates(providers) {
4456
- const out = [];
4457
- const seen = /* @__PURE__ */ new Set();
4458
- for (const status of providers.list()) {
4459
- for (const model of modelIdsForStatus(status)) {
4460
- const key = `${status.target.id}/${model}`;
4461
- if (seen.has(key)) continue;
4462
- seen.add(key);
4463
- out.push({ target: status.target.id, model, full: key });
4464
- }
4465
- }
4466
- return out;
4467
- }
4468
- function pickFirst(candidates) {
4469
- if (candidates.length === 0) return null;
4470
- const head = candidates[0];
4471
- if (!head) return null;
4472
- return { ref: head, ambiguous: candidates.length > 1 };
4473
- }
4474
- function buildResult(pattern, pick, thinkingLevel) {
4475
- if (!pick) {
4476
- return { ref: null, error: `no models match pattern "${pattern}"` };
4477
- }
4478
- const ref = { target: pick.ref.target, model: pick.ref.model };
4479
- if (thinkingLevel) ref.thinkingLevel = thinkingLevel;
4480
- const result = { ref };
4481
- if (pick.ambiguous) {
4482
- result.warning = `pattern "${pattern}" matched multiple models; using ${pick.ref.full}`;
4483
- }
4484
- return result;
4485
- }
4486
- function resolveModelReference(rawPattern, providers) {
4487
- const trimmed = rawPattern.trim();
4488
- if (!trimmed) return { ref: null, error: "empty pattern" };
4489
- const { base, thinkingLevel } = splitThinkingSuffix(trimmed);
4490
- const candidates = collectCandidates(providers);
4491
- if (candidates.length === 0) {
4492
- return { ref: null, error: "no targets configured; add one with `clio-coder configure` or `clio-coder targets add`" };
4493
- }
4494
- const lower = base.toLowerCase();
4495
- const exactFull = candidates.filter((c) => c.full.toLowerCase() === lower);
4496
- if (exactFull.length > 0) return buildResult(base, pickFirst(exactFull), thinkingLevel);
4497
- if (GLOB_CHARS.test(base)) {
4498
- const re = globToRegExp(base);
4499
- const globMatches = candidates.filter((c) => re.test(c.full) || re.test(c.model));
4500
- return buildResult(base, pickFirst(globMatches), thinkingLevel);
4501
- }
4502
- const slashIdx = base.indexOf("/");
4503
- if (slashIdx !== -1) {
4504
- const ep = base.slice(0, slashIdx).toLowerCase();
4505
- const mdl = base.slice(slashIdx + 1).toLowerCase();
4506
- const epModel = candidates.filter((c) => c.target.toLowerCase() === ep && c.model.toLowerCase() === mdl);
4507
- if (epModel.length > 0) return buildResult(base, pickFirst(epModel), thinkingLevel);
4508
- }
4509
- const exactModel = candidates.filter((c) => c.model.toLowerCase() === lower);
4510
- if (exactModel.length > 0) return buildResult(base, pickFirst(exactModel), thinkingLevel);
4511
- const partial = candidates.filter((c) => c.model.toLowerCase().includes(lower));
4512
- return buildResult(base, pickFirst(partial), thinkingLevel);
4513
- }
4514
-
4515
4765
  // src/domains/providers/index.ts
4516
4766
  var ProvidersDomainModule = {
4517
4767
  manifest: ProvidersManifest,
@@ -4524,8 +4774,10 @@ export {
4524
4774
  resolveReservedOutputTokens,
4525
4775
  canonicalEndpointKey,
4526
4776
  endpointLabel,
4777
+ endpointCapacityFor,
4527
4778
  endpointCapacityForStatus,
4528
4779
  endpointCapacitiesForStatuses,
4780
+ resolveEndpointCapacities,
4529
4781
  registerForegroundStream,
4530
4782
  foregroundStreamUsage,
4531
4783
  setResidencyNoticeSink,
@@ -4536,6 +4788,7 @@ export {
4536
4788
  applyModelCapabilityPatch,
4537
4789
  probeCapabilitiesForModel,
4538
4790
  resolveModelCapabilities,
4791
+ memoryInterventionModelMaxTokens,
4539
4792
  thinkingLevelChoiceLabel,
4540
4793
  thinkingLevelFromChoiceLabel,
4541
4794
  resolveModelRuntimeCapabilitiesForProviders,
@@ -4543,6 +4796,8 @@ export {
4543
4796
  registerClioApiProviders,
4544
4797
  resolveProviderKnowledgeBaseRoots,
4545
4798
  loadPluginRuntimes,
4799
+ readTargetModelSnapshot,
4800
+ recordTargetModelSnapshot,
4546
4801
  FileKnowledgeBase,
4547
4802
  isOrchestratorEligibleRuntime,
4548
4803
  isDispatchEligibleRuntime,
@@ -4560,4 +4815,4 @@ export {
4560
4815
  normalizeCostProvenance,
4561
4816
  ProvidersDomainModule
4562
4817
  };
4563
- //# sourceMappingURL=chunk-MIX5N5AC.js.map
4818
+ //# sourceMappingURL=chunk-UEDMSP56.js.map