@iowarp/clio-coder 0.3.7 → 0.3.9

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 (400) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +13 -4
  3. package/dist/{acp-SK4MD6MM.js → acp-7LOELQFP.js} +13 -13
  4. package/dist/{agents-2FN2K6ME.js → agents-FIBG2SHA.js} +41 -37
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-QIYZWM5I.js → auth-OI4LIH2I.js} +31 -24
  7. package/dist/builtins-AD25UL3C.js +17 -0
  8. package/dist/{chunk-5FR74PWO.js → chunk-2JDWVJND.js} +2 -2
  9. package/dist/chunk-3DPEIQKN.js +113 -0
  10. package/dist/{chunk-EOOQZZDE.js → chunk-3DUR4WUA.js} +19 -19
  11. package/dist/{chunk-WHJYKASB.js → chunk-3MRC2YSQ.js} +2 -2
  12. package/dist/{chunk-EBEFWSGL.js → chunk-3UUY7R3Z.js} +14 -10
  13. package/dist/{chunk-LADCF22A.js → chunk-3V5AYSEQ.js} +113 -54
  14. package/dist/{chunk-BMWK7ZIZ.js → chunk-465CC7FK.js} +16 -13
  15. package/dist/{chunk-5WIGXA4T.js → chunk-47CMYGET.js} +111 -4
  16. package/dist/{chunk-CEYBNUGC.js → chunk-4H6ULJ3H.js} +378 -36
  17. package/dist/{chunk-YTYFXUI3.js → chunk-4LJX2PUC.js} +9 -9
  18. package/dist/{chunk-DOOEX22V.js → chunk-56KB5IJP.js} +5 -5
  19. package/dist/{chunk-SPULKLCF.js → chunk-5DQRIYDZ.js} +2 -2
  20. package/dist/{chunk-TSHXZTOQ.js → chunk-5HFBWUMU.js} +23 -11
  21. package/dist/{chunk-5UJ6ECTS.js → chunk-5PVQ4SRS.js} +80 -8
  22. package/dist/{chunk-ZWLZP4ZT.js → chunk-5QKCQQ3E.js} +359 -17
  23. package/dist/{chunk-6M7VS3J3.js → chunk-5T7RBWN2.js} +111 -5
  24. package/dist/chunk-774ILSRL.js +172 -0
  25. package/dist/chunk-7C6RYZGQ.js +391 -0
  26. package/dist/{chunk-GH5622CP.js → chunk-A2NJGIB3.js} +2 -2
  27. package/dist/{chunk-C4JBQ5SR.js → chunk-AD7Y7STJ.js} +6 -6
  28. package/dist/{chunk-GEYXPTRF.js → chunk-AEYBF3TB.js} +33 -12
  29. package/dist/{chunk-2SFS6XQE.js → chunk-AMKHQW3C.js} +3 -2
  30. package/dist/{chunk-D4MDIG46.js → chunk-B5CSFE7B.js} +7 -7
  31. package/dist/{chunk-MXI6J5JF.js → chunk-B5XRQOLB.js} +10 -10
  32. package/dist/{chunk-X2KV5FXT.js → chunk-BVDVID7E.js} +2 -2
  33. package/dist/{chunk-JNXPYBB4.js → chunk-CA42X6KT.js} +3 -3
  34. package/dist/{chunk-VREKEFLL.js → chunk-D73KXYPF.js} +3 -3
  35. package/dist/{chunk-JTSEDYVQ.js → chunk-DG4M6ZUE.js} +7 -7
  36. package/dist/{chunk-DQA7QLMD.js → chunk-EBOC7MT3.js} +10 -25
  37. package/dist/{chunk-KZ2H5X4G.js → chunk-ECUO3KDP.js} +129 -14
  38. package/dist/{chunk-JRIO5UD2.js → chunk-EQ63NRB7.js} +5 -5
  39. package/dist/{chunk-YD734TPH.js → chunk-FALJGAWU.js} +2 -2
  40. package/dist/{chunk-GWS3VEIW.js → chunk-FWDFM5ZU.js} +24 -3
  41. package/dist/{chunk-XEGB6BCN.js → chunk-GAYUJ7LE.js} +68 -14
  42. package/dist/{chunk-UND3GU2L.js → chunk-H7IXIC72.js} +2 -2
  43. package/dist/{chunk-IR4CFBFN.js → chunk-HAY4ZE2P.js} +12 -12
  44. package/dist/{chunk-UVDSQ6LW.js → chunk-HCBCAYZU.js} +74 -147
  45. package/dist/{chunk-4DWFMQDR.js → chunk-HJB5IUKP.js} +89 -145
  46. package/dist/{chunk-M4AKACEO.js → chunk-HKO36JWF.js} +33 -5
  47. package/dist/{chunk-KCMKRQX4.js → chunk-HPCTNZM2.js} +45 -82
  48. package/dist/{chunk-465YSENW.js → chunk-IFBNV6H6.js} +3 -3
  49. package/dist/{chunk-FJ3H4MN5.js → chunk-IHKBWSXF.js} +2 -2
  50. package/dist/chunk-JEQQR47K.js +3025 -0
  51. package/dist/{chunk-FO5ZOVUY.js → chunk-KV2AOLDF.js} +27 -7
  52. package/dist/chunk-LU7P4LHA.js +33 -0
  53. package/dist/{chunk-6TUKSZVF.js → chunk-LXPJXFM5.js} +11 -11
  54. package/dist/{chunk-VQNODYQ4.js → chunk-MIX5N5AC.js} +488 -3668
  55. package/dist/chunk-MLOK6ZOS.js +2888 -0
  56. package/dist/{chunk-ZZMN5OM4.js → chunk-MV2VUEJC.js} +2 -2
  57. package/dist/{chunk-MVVUPGPW.js → chunk-MXHC5QYU.js} +6 -6
  58. package/dist/{chunk-OBMAI2DP.js → chunk-N3PBVRTZ.js} +12 -388
  59. package/dist/{chunk-WJHBC77E.js → chunk-N5XKWMDW.js} +17 -7
  60. package/dist/{chunk-5C3AQNDW.js → chunk-NNNWO6F2.js} +124 -36
  61. package/dist/{chunk-UFQ3F4FW.js → chunk-NQ6UCCOD.js} +4 -4
  62. package/dist/chunk-NUGM5KR6.js +165 -0
  63. package/dist/{chunk-DMD2AGVS.js → chunk-NZU6YDNV.js} +20 -18
  64. package/dist/{chunk-WHGPSPT5.js → chunk-O6I4CIEU.js} +151 -13
  65. package/dist/{chunk-XN3L4EYL.js → chunk-OEDBCISO.js} +2 -2
  66. package/dist/{chunk-PD3MESLB.js → chunk-P3JGPQFL.js} +4 -4
  67. package/dist/{chunk-UHXRNZ2J.js → chunk-PNY46YEY.js} +23 -6
  68. package/dist/{chunk-THKY7CD7.js → chunk-PZ4I4JE2.js} +134 -29
  69. package/dist/{chunk-SROCI7ZU.js → chunk-QQ7EKM72.js} +5 -5
  70. package/dist/{chunk-QCTRSGHQ.js → chunk-R7LNVMCS.js} +91 -53
  71. package/dist/{chunk-GOXNB3AO.js → chunk-RAPCMZL4.js} +75 -4
  72. package/dist/chunk-RKKLTLYB.js +45 -0
  73. package/dist/{chunk-OB5HIGJY.js → chunk-RKRLDWD3.js} +4 -1
  74. package/dist/{chunk-DJNLUABN.js → chunk-S4COXYBG.js} +588 -32
  75. package/dist/{chunk-3HAPLH5M.js → chunk-T3Z6VAAF.js} +172 -11
  76. package/dist/{chunk-FOT2FX5J.js → chunk-TD7UE2L5.js} +12 -10
  77. package/dist/{chunk-UUANF5CR.js → chunk-TEO2TLVN.js} +856 -967
  78. package/dist/{chunk-FCSXB6T2.js → chunk-UOSL25KY.js} +14 -2
  79. package/dist/{chunk-EELBMBT6.js → chunk-VKBMFOYV.js} +74 -15
  80. package/dist/chunk-VO2LKSTM.js +165 -0
  81. package/dist/{chunk-5C77SEEY.js → chunk-VPTUJU4P.js} +3 -3
  82. package/dist/{chunk-WEH5XRJQ.js → chunk-WIE7ZOSW.js} +2 -2
  83. package/dist/{chunk-J7PIKKWC.js → chunk-WXCJ7VME.js} +8 -8
  84. package/dist/{chunk-4DGYLA73.js → chunk-XDOQXGFO.js} +22 -7
  85. package/dist/{chunk-PPAMZ32Z.js → chunk-XK56QHLX.js} +6 -1
  86. package/dist/{chunk-AB4XIIVB.js → chunk-YKOFT37S.js} +6 -6
  87. package/dist/chunk-YSEHGPCT.js +127 -0
  88. package/dist/{chunk-HFSBBKSQ.js → chunk-YW7UVM5V.js} +138 -3
  89. package/dist/cli/index.js +32 -32
  90. package/dist/{clio-WBVQEBKO.js → clio-LT5V7SSZ.js} +9 -9
  91. package/dist/{code-nav-FGGFIE7L.js → code-nav-LMW275PA.js} +5 -5
  92. package/dist/codewiki/build-worker.js +4 -4
  93. package/dist/{components-F7OEATSO.js → components-ZFA3SAER.js} +8 -8
  94. package/dist/{config-TRBL3RCF.js → config-RXS5T3JT.js} +98 -65
  95. package/dist/{configure-OLCVPHNM.js → configure-2WYWSCSD.js} +26 -22
  96. package/dist/{context-MJIJ6GOX.js → context-I3BTOTCS.js} +12 -12
  97. package/dist/{context-XEWE3MOJ.js → context-MVOORGMF.js} +54 -47
  98. package/dist/{context-WFPKQSM6.js → context-PALKKQYL.js} +28 -28
  99. package/dist/{context-clear-KNOS2JPB.js → context-clear-N2WOYZ2K.js} +53 -46
  100. package/dist/{context-index-SSR5ECNE.js → context-index-HNG3MOME.js} +6 -6
  101. package/dist/{context-working-set-EUXAZI6N.js → context-working-set-MIEVECVZ.js} +17 -18
  102. package/dist/{dispatch-runner-B7MTOVKL.js → dispatch-runner-VVA4SRRH.js} +90 -61
  103. package/dist/{docs-FLJTIDSE.js → docs-7LQ23DLM.js} +8 -8
  104. package/dist/doctor-TWBWFK5V.js +165 -0
  105. package/dist/eval-IJ5VEZDJ.js +4483 -0
  106. package/dist/{evidence-JZNBUOQZ.js → evidence-L5APPXNV.js} +68 -61
  107. package/dist/{evolve-FJVC4KKI.js → evolve-RGNKFJ52.js} +47 -40
  108. package/dist/{extensions-IQL36S7K.js → extensions-7WYWUX5A.js} +13 -7
  109. package/dist/{fleet-BDKYJFCP.js → fleet-6CNVBZZP.js} +113 -76
  110. package/dist/{fleet-commands-ZFIWZSB3.js → fleet-commands-L2SXSYEI.js} +10 -10
  111. package/dist/{fleet-graph-Y6HPXIVF.js → fleet-graph-2J3OOIPO.js} +17 -15
  112. package/dist/{fleet-preflight-BHSNPBMH.js → fleet-preflight-CZRJ4JP5.js} +5 -6
  113. package/dist/{fleet-validate-BIYREGIK.js → fleet-validate-C5RI6DP7.js} +20 -19
  114. package/dist/{init-LQUB5COQ.js → init-VBN2ACVA.js} +70 -63
  115. package/dist/{library-NJAHIGG4.js → library-JHGUMLY2.js} +22 -20
  116. package/dist/{memory-OG6HOYKM.js → memory-K4OQIYWG.js} +49 -42
  117. package/dist/{models-5ZG5XY7J.js → models-2NCZUWDD.js} +35 -29
  118. package/dist/{monitor-TJ7AMTGB.js → monitor-MMVTJABD.js} +64 -45
  119. package/dist/{orchestrator-WZYB54DM.js → orchestrator-ZKBPCHW6.js} +1971 -520
  120. package/dist/{paths-XUC7GS6E.js → paths-DBXMZMDU.js} +5 -5
  121. package/dist/registry-LG64LTF4.js +11 -0
  122. package/dist/{reset-PXQT45IY.js → reset-DD5JGOY3.js} +11 -11
  123. package/dist/{run-FQ74YF62.js → run-QEGNX7FL.js} +89 -83
  124. package/dist/{share-FW7SVCL3.js → share-JKD3BQMW.js} +20 -18
  125. package/dist/{skills-7E7IRB3R.js → skills-LMQIKDOZ.js} +23 -21
  126. package/dist/{skills-eval-LI75W6OK.js → skills-eval-I7X2774U.js} +59 -52
  127. package/dist/{steer-GGWFUJUD.js → steer-CF5TDANS.js} +3 -3
  128. package/dist/support-I7LOJLIF.js +38 -0
  129. package/dist/{targets-4CIFKCTW.js → targets-RUSR6B5Z.js} +77 -42
  130. package/dist/{terminal-lease-WUZY7ZV5.js → terminal-lease-QYVORFR4.js} +6 -4
  131. package/dist/{trace-PNCASAXC.js → trace-ODOQIVIW.js} +61 -6
  132. package/dist/{uninstall-7FV7IP4E.js → uninstall-ZJF5H5ZN.js} +8 -8
  133. package/dist/{upgrade-K2HVIVMQ.js → upgrade-XANW3FXB.js} +29 -26
  134. package/dist/{usage-GTZELZQX.js → usage-4H7ZRXQT.js} +110 -61
  135. package/dist/{verifiers-RLAHT27O.js → verifiers-UZXNBZEB.js} +13 -13
  136. package/dist/{verify-BX3BRKH5.js → verify-BVKWTNDL.js} +9 -9
  137. package/dist/{wiki-generate-ASIFASCN.js → wiki-generate-MY7WV2QI.js} +76 -69
  138. package/dist/worker/entry.js +69 -66
  139. package/docs/alcf-provider.md +1 -1
  140. package/docs/architecture.md +1 -1
  141. package/docs/artifact-versions.md +11 -5
  142. package/docs/built-in-agents.md +1 -1
  143. package/docs/capacity-and-scheduling.md +23 -2
  144. package/docs/commands-and-modes.md +2 -2
  145. package/docs/configuration-and-targets.md +37 -5
  146. package/docs/context-engine.md +63 -4
  147. package/docs/documentation-coverage.md +3 -3
  148. package/docs/documentation-guide.md +1 -1
  149. package/docs/environment-variables.md +2 -0
  150. package/docs/eval-runner.md +262 -11
  151. package/docs/evals-internal.md +72 -2
  152. package/docs/evidence-and-memory.md +77 -12
  153. package/docs/evolution.md +1 -1
  154. package/docs/extensions-and-sharing.md +3 -1
  155. package/docs/fleet-dispatch.md +34 -9
  156. package/docs/glossary.md +21 -1
  157. package/docs/installation-and-lifecycle.md +1 -1
  158. package/docs/middleware-and-components.md +1 -1
  159. package/docs/model-catalog.md +1 -1
  160. package/docs/observability.md +54 -3
  161. package/docs/proactive-memory.md +127 -14
  162. package/docs/prompt-envelope-and-tools.md +22 -2
  163. package/docs/provider-adapter-cookbook.md +1 -1
  164. package/docs/release-cut-checklist.md +60 -41
  165. package/docs/safety-model.md +1 -1
  166. package/docs/scientific-validation.md +1 -1
  167. package/docs/skills-marketplace.md +1 -1
  168. package/docs/tool-usage.md +1 -1
  169. package/docs/trace-store.md +1 -1
  170. package/docs/troubleshooting.md +87 -0
  171. package/docs/tui-design.md +1 -1
  172. package/docs/worker-dispatch-mechanics.md +1 -1
  173. package/package.json +2 -2
  174. package/src/cli/agents.ts +1 -1
  175. package/src/cli/argv.ts +5 -0
  176. package/src/cli/config-inspect.ts +33 -6
  177. package/src/cli/config.ts +1 -1
  178. package/src/cli/configure.ts +107 -23
  179. package/src/cli/doctor-state-size.ts +82 -0
  180. package/src/cli/doctor.ts +7 -1
  181. package/src/cli/eval.ts +80 -16
  182. package/src/cli/evidence.ts +30 -25
  183. package/src/cli/extensions.ts +5 -1
  184. package/src/cli/fleet-preflight.ts +2 -12
  185. package/src/cli/fleet.ts +32 -3
  186. package/src/cli/shared.ts +1 -0
  187. package/src/cli/targets.ts +45 -11
  188. package/src/cli/trace.ts +63 -4
  189. package/src/cli/usage.ts +63 -14
  190. package/src/cli/validate-model.ts +60 -5
  191. package/src/core/bus-events.ts +54 -1
  192. package/src/core/cache-telemetry.ts +42 -0
  193. package/src/core/commit-attribution.ts +4 -4
  194. package/src/core/config.ts +18 -0
  195. package/src/core/defaults.ts +36 -6
  196. package/src/core/endpoint-key.ts +27 -0
  197. package/src/core/path-boundary.ts +100 -0
  198. package/src/core/residency-target-key.ts +25 -0
  199. package/src/core/response-schema.ts +36 -2
  200. package/src/domains/agents/extension.ts +2 -11
  201. package/src/domains/agents/fleet-contract.ts +30 -12
  202. package/src/domains/agents/recipe.ts +7 -1
  203. package/src/domains/agents/registry.ts +73 -5
  204. package/src/domains/agents/result-contract.ts +128 -17
  205. package/src/domains/agents/write-boundary.ts +15 -50
  206. package/src/domains/config/classify.ts +3 -0
  207. package/src/domains/context/codewiki/coordinator.ts +12 -4
  208. package/src/domains/context/project-rules.ts +51 -1
  209. package/src/domains/dispatch/admission.ts +40 -3
  210. package/src/domains/dispatch/assignment-reconcile.ts +22 -5
  211. package/src/domains/dispatch/assignment-store.ts +151 -14
  212. package/src/domains/dispatch/capacity-lease.ts +98 -9
  213. package/src/domains/dispatch/contract.ts +26 -1
  214. package/src/domains/dispatch/delegation-plan.ts +2 -5
  215. package/src/domains/dispatch/execution-plan.ts +44 -4
  216. package/src/domains/dispatch/execution-role.ts +9 -1
  217. package/src/domains/dispatch/extension.ts +309 -96
  218. package/src/domains/dispatch/fleet-run.ts +78 -4
  219. package/src/domains/dispatch/gate-role-prompts.ts +38 -0
  220. package/src/domains/dispatch/heartbeat.ts +32 -8
  221. package/src/domains/dispatch/index.ts +6 -1
  222. package/src/domains/dispatch/intent-requirements.ts +40 -0
  223. package/src/domains/dispatch/intent.ts +84 -8
  224. package/src/domains/dispatch/orphan-recovery.ts +5 -0
  225. package/src/domains/dispatch/path-scope.ts +370 -0
  226. package/src/domains/dispatch/receipt-integrity.ts +2 -1
  227. package/src/domains/dispatch/reservation-store.ts +116 -8
  228. package/src/domains/dispatch/state.ts +4 -0
  229. package/src/domains/dispatch/types.ts +14 -7
  230. package/src/domains/dispatch/validation.ts +6 -3
  231. package/src/domains/dispatch/worker-spawn.ts +25 -11
  232. package/src/domains/dispatch/write-boundary-enforcer.ts +62 -0
  233. package/src/domains/dispatch/write-boundary.ts +262 -22
  234. package/src/domains/eval/artifacts/store.ts +62 -0
  235. package/src/domains/eval/compare/behavioral.ts +224 -0
  236. package/src/domains/eval/compare/compare.ts +355 -2
  237. package/src/domains/eval/compare/envelope.ts +128 -0
  238. package/src/domains/eval/compare/gates.ts +24 -6
  239. package/src/domains/eval/compare/thresholds.ts +30 -3
  240. package/src/domains/eval/execution-provenance.ts +240 -0
  241. package/src/domains/eval/metrics/aggregate.ts +136 -0
  242. package/src/domains/eval/metrics/call-ledger-stream.ts +112 -0
  243. package/src/domains/eval/metrics/evidence.ts +79 -2
  244. package/src/domains/eval/metrics/tracked.ts +413 -0
  245. package/src/domains/eval/provenance.ts +117 -0
  246. package/src/domains/eval/reports/comparison.ts +128 -0
  247. package/src/domains/eval/reports/junit.ts +17 -3
  248. package/src/domains/eval/reports/markdown.ts +3 -3
  249. package/src/domains/eval/reports/text.ts +14 -0
  250. package/src/domains/eval/run-compare.ts +20 -0
  251. package/src/domains/eval/runners/clio-run.ts +139 -2
  252. package/src/domains/eval/runners/external-command.ts +28 -3
  253. package/src/domains/eval/schema/adapter.ts +111 -0
  254. package/src/domains/eval/schema/artifact.ts +20 -0
  255. package/src/domains/eval/schema/behavioral-metrics.ts +204 -0
  256. package/src/domains/eval/schema/behavioral.ts +520 -0
  257. package/src/domains/eval/schema/execution-envelope.ts +194 -0
  258. package/src/domains/eval/schema/serving.ts +74 -0
  259. package/src/domains/eval/schema/suite.ts +38 -8
  260. package/src/domains/eval/schema/validate.ts +58 -3
  261. package/src/domains/eval/schema/verdict.ts +237 -0
  262. package/src/domains/eval/suites/resolve.ts +2 -0
  263. package/src/domains/eval/suites/run.ts +264 -33
  264. package/src/domains/eval/verifiers/command.ts +2 -1
  265. package/src/domains/eval/workspaces/temp-copy.ts +145 -13
  266. package/src/domains/evidence/build.ts +68 -21
  267. package/src/domains/evidence/eval.ts +2 -12
  268. package/src/domains/evidence/findings-markdown.ts +33 -0
  269. package/src/domains/evidence/index.ts +21 -0
  270. package/src/domains/evidence/provenance.ts +46 -11
  271. package/src/domains/evidence/run-trust.ts +7 -113
  272. package/src/domains/evidence/trust-projection.ts +274 -0
  273. package/src/domains/evidence/trust-status.ts +145 -17
  274. package/src/domains/evidence/types.ts +4 -0
  275. package/src/domains/extensions/compatibility.ts +285 -0
  276. package/src/domains/extensions/discovery.ts +126 -4
  277. package/src/domains/extensions/resources.ts +21 -9
  278. package/src/domains/extensions/state.ts +18 -5
  279. package/src/domains/extensions/types.ts +6 -1
  280. package/src/domains/lifecycle/doctor.ts +209 -2
  281. package/src/domains/memory/index.ts +14 -0
  282. package/src/domains/memory/task-bank-promotion.ts +64 -0
  283. package/src/domains/memory/task-memory-policy.ts +77 -8
  284. package/src/domains/memory/task-memory-spend.ts +131 -0
  285. package/src/domains/memory/task-memory-status.ts +7 -0
  286. package/src/domains/memory/task-memory-telemetry.ts +2 -0
  287. package/src/domains/middleware/index.ts +1 -0
  288. package/src/domains/middleware/memory-intervention.ts +69 -5
  289. package/src/domains/middleware/memory-step-endpoint.ts +71 -0
  290. package/src/domains/observability/background-memory-usage.ts +140 -0
  291. package/src/domains/observability/cost.ts +1 -1
  292. package/src/domains/observability/index.ts +7 -0
  293. package/src/domains/observability/out-of-turn-usage.ts +51 -2
  294. package/src/domains/observability/trace-store.ts +192 -2
  295. package/src/domains/prompts/compiler.ts +100 -13
  296. package/src/domains/prompts/contract.ts +3 -5
  297. package/src/domains/providers/endpoint-capacity.ts +96 -0
  298. package/src/domains/providers/extension.ts +30 -2
  299. package/src/domains/providers/index.ts +10 -0
  300. package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +243 -1
  301. package/src/domains/providers/runtime-resolution.ts +8 -1
  302. package/src/domains/providers/runtimes/common/probe-helpers.ts +31 -9
  303. package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +1 -1
  304. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  305. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +1 -1
  306. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +1 -1
  307. package/src/domains/providers/runtimes/local-native/llamacpp.ts +4 -1
  308. package/src/domains/providers/runtimes/local-native/lmstudio.ts +4 -1
  309. package/src/domains/providers/runtimes/local-native/ollama-native.ts +6 -1
  310. package/src/domains/providers/types/capability-flags.ts +2 -0
  311. package/src/domains/providers/types/target-descriptor.ts +2 -0
  312. package/src/domains/resources/common-loader.ts +3 -0
  313. package/src/domains/resources/prompts/loader.ts +184 -17
  314. package/src/domains/safety/call-target.ts +52 -0
  315. package/src/domains/safety/policy-engine.ts +5 -5
  316. package/src/domains/safety/run-effects.ts +96 -2
  317. package/src/domains/safety/scope.ts +7 -12
  318. package/src/domains/session/context-accounting.ts +52 -1
  319. package/src/domains/session/context-ledger.ts +37 -13
  320. package/src/domains/session/index.ts +6 -0
  321. package/src/domains/session/prompt-cache.ts +140 -0
  322. package/src/domains/session/prompt-manifest.ts +42 -0
  323. package/src/engine/acp/adapter.ts +18 -3
  324. package/src/engine/acp/server.ts +4 -1
  325. package/src/engine/ai.ts +35 -0
  326. package/src/engine/apis/llamacpp-residency.ts +55 -3
  327. package/src/engine/apis/lmstudio.ts +25 -5
  328. package/src/engine/apis/ollama-native.ts +2 -1
  329. package/src/engine/apis/openai-completions.ts +80 -17
  330. package/src/engine/apis/residency-lock.ts +3 -1
  331. package/src/engine/apis/residency.ts +34 -1
  332. package/src/engine/prompt-templates.ts +18 -1
  333. package/src/engine/provider-payload.ts +29 -1
  334. package/src/engine/worker-runtime.ts +6 -3
  335. package/src/entry/orchestrator.ts +176 -30
  336. package/src/interactive/chat-loop-messages.ts +26 -7
  337. package/src/interactive/chat-loop.ts +318 -41
  338. package/src/interactive/chat-panel.ts +62 -8
  339. package/src/interactive/clio-editor.ts +45 -8
  340. package/src/interactive/context-activity.ts +5 -1
  341. package/src/interactive/context-meter.ts +1 -1
  342. package/src/interactive/context-overlay.ts +40 -10
  343. package/src/interactive/cost-overlay.ts +64 -6
  344. package/src/interactive/dispatch-board.ts +127 -5
  345. package/src/interactive/fleet-run-preview.ts +41 -15
  346. package/src/interactive/handoff-round.ts +41 -2
  347. package/src/interactive/interactive-application.ts +24 -1
  348. package/src/interactive/interactive-event-projection.ts +14 -0
  349. package/src/interactive/interactive-input-runtime.ts +8 -0
  350. package/src/interactive/interactive-presentation.ts +4 -0
  351. package/src/interactive/interactive-shell.ts +20 -17
  352. package/src/interactive/interactive-slash-runtime.ts +27 -4
  353. package/src/interactive/memory-overlay.ts +8 -0
  354. package/src/interactive/mutation-preview.ts +295 -0
  355. package/src/interactive/overlay-general-openers.ts +16 -0
  356. package/src/interactive/overlay-key-routing.ts +38 -0
  357. package/src/interactive/overlay-lifecycle.ts +38 -5
  358. package/src/interactive/overlay-permission-lifecycle.ts +22 -2
  359. package/src/interactive/overlay-session-lifecycle.ts +73 -9
  360. package/src/interactive/overlays/ask-user.ts +91 -19
  361. package/src/interactive/overlays/help-reference.ts +4 -0
  362. package/src/interactive/overlays/prompts.ts +11 -1
  363. package/src/interactive/overlays/settings.ts +176 -48
  364. package/src/interactive/permission-hint.ts +34 -2
  365. package/src/interactive/permission-overlay.ts +159 -9
  366. package/src/interactive/prewarm.ts +197 -0
  367. package/src/interactive/render-trace.ts +162 -15
  368. package/src/interactive/renderers/tool-execution.ts +4 -0
  369. package/src/interactive/side-question.ts +58 -1
  370. package/src/interactive/slash-commands.ts +7 -2
  371. package/src/interactive/status/controller.ts +11 -0
  372. package/src/interactive/status/state-machine.ts +54 -2
  373. package/src/interactive/status/types.ts +7 -0
  374. package/src/interactive/terminal-lease.ts +2 -0
  375. package/src/interactive/turn-context.ts +299 -31
  376. package/src/interactive/turn-persistence.ts +14 -4
  377. package/src/interactive/turn-prewarm.ts +364 -0
  378. package/src/interactive/turn-queues.ts +7 -4
  379. package/src/interactive/turn-runtime.ts +8 -1
  380. package/src/interactive/turn-state.ts +23 -0
  381. package/src/interactive/view/artifacts.ts +42 -9
  382. package/src/interactive/view/view-overlay.ts +43 -6
  383. package/src/interactive/worker-receipts.ts +14 -2
  384. package/src/interactive/worker-stream.ts +8 -0
  385. package/src/tools/ask-user.ts +43 -2
  386. package/src/tools/dispatch-admission.ts +12 -13
  387. package/src/tools/dispatch-arguments.ts +27 -0
  388. package/src/tools/dispatch-plan.ts +46 -9
  389. package/src/tools/dispatch-runner.ts +48 -13
  390. package/src/tools/dispatch-scout.ts +1 -1
  391. package/src/tools/monitor.ts +13 -0
  392. package/src/tools/registry.ts +16 -0
  393. package/src/tools/worker-evidence.ts +19 -13
  394. package/src/worker/spec-contract.ts +2 -1
  395. package/dist/chunk-AOCYTWAV.js +0 -449
  396. package/dist/chunk-HWUFFB6L.js +0 -83
  397. package/dist/chunk-R346GLFC.js +0 -31
  398. package/dist/chunk-ZGH7FGS5.js +0 -1079
  399. package/dist/doctor-RN4YKO2X.js +0 -87
  400. package/dist/eval-RUBJVSNQ.js +0 -2557
@@ -10,52 +10,59 @@ import {
10
10
  import {
11
11
  credentialWriteFailed,
12
12
  printPlaintextCredentialWarning
13
- } from "./chunk-465YSENW.js";
13
+ } from "./chunk-IFBNV6H6.js";
14
14
  import {
15
15
  columnWidths,
16
16
  formatColumnRow,
17
17
  formatColumns,
18
18
  printError,
19
19
  printOk
20
- } from "./chunk-PPAMZ32Z.js";
20
+ } from "./chunk-XK56QHLX.js";
21
21
  import "./chunk-5TSRNF4G.js";
22
22
  import {
23
- EMPTY_CAPABILITIES,
24
- getRuntimeRegistry,
23
+ EMPTY_CAPABILITIES
24
+ } from "./chunk-MIX5N5AC.js";
25
+ import "./chunk-CFGTUFWB.js";
26
+ import "./chunk-LU7P4LHA.js";
27
+ import "./chunk-AEYBF3TB.js";
28
+ import {
29
+ readSettings
30
+ } from "./chunk-PNY46YEY.js";
31
+ import "./chunk-FQ4SKYE4.js";
32
+ import "./chunk-ZGVHUX3M.js";
33
+ import "./chunk-RKRLDWD3.js";
34
+ import "./chunk-KV2AOLDF.js";
35
+ import "./chunk-IWHMRKLL.js";
36
+ import {
37
+ registerBuiltinRuntimes
38
+ } from "./chunk-JEQQR47K.js";
39
+ import "./chunk-XDOQXGFO.js";
40
+ import "./chunk-LL4KHSZI.js";
41
+ import "./chunk-4ZG3XFUR.js";
42
+ import {
25
43
  listProviderSupportEntries,
26
- registerBuiltinRuntimes,
27
44
  resolveProviderReference,
28
45
  supportGroupLabel
29
- } from "./chunk-VQNODYQ4.js";
30
- import "./chunk-CFGTUFWB.js";
46
+ } from "./chunk-774ILSRL.js";
31
47
  import {
32
48
  authNotRequiredStatus,
33
49
  openAuthStorage,
34
50
  registerClioOAuthProviders,
35
51
  resolveRuntimeAuthTarget,
36
52
  targetRequiresAuth
37
- } from "./chunk-JRIO5UD2.js";
38
- import "./chunk-GEYXPTRF.js";
39
- import {
40
- readSettings
41
- } from "./chunk-UHXRNZ2J.js";
42
- import "./chunk-4DGYLA73.js";
43
- import "./chunk-LL4KHSZI.js";
53
+ } from "./chunk-EQ63NRB7.js";
44
54
  import "./chunk-SST6Z5JA.js";
45
- import "./chunk-FO5ZOVUY.js";
46
- import "./chunk-R346GLFC.js";
47
- import "./chunk-FQ4SKYE4.js";
48
- import "./chunk-4ZG3XFUR.js";
49
55
  import "./chunk-IKCO5N3L.js";
50
56
  import "./chunk-3I7MS7N2.js";
51
- import "./chunk-FCSXB6T2.js";
52
57
  import "./chunk-APJ265NV.js";
53
- import "./chunk-YXLYO42X.js";
54
58
  import "./chunk-BNAZZHFG.js";
55
59
  import "./chunk-WEPFGWHJ.js";
56
- import "./chunk-ZGVHUX3M.js";
57
- import "./chunk-OB5HIGJY.js";
58
- import "./chunk-IWHMRKLL.js";
60
+ import {
61
+ getRuntimeRegistry
62
+ } from "./chunk-NUGM5KR6.js";
63
+ import "./chunk-VO2LKSTM.js";
64
+ import "./chunk-UOSL25KY.js";
65
+ import "./chunk-YXLYO42X.js";
59
66
  import {
60
67
  init_esm_shims
61
68
  } from "./chunk-3R73A4XB.js";
@@ -537,4 +544,4 @@ async function runAuthCommand(args) {
537
544
  export {
538
545
  runAuthCommand
539
546
  };
540
- //# sourceMappingURL=auth-QIYZWM5I.js.map
547
+ //# sourceMappingURL=auth-OI4LIH2I.js.map
@@ -0,0 +1,17 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ BUILTIN_RUNTIMES,
4
+ registerBuiltinRuntimes
5
+ } from "./chunk-JEQQR47K.js";
6
+ import "./chunk-XDOQXGFO.js";
7
+ import "./chunk-LL4KHSZI.js";
8
+ import "./chunk-4ZG3XFUR.js";
9
+ import "./chunk-VO2LKSTM.js";
10
+ import "./chunk-UOSL25KY.js";
11
+ import "./chunk-YXLYO42X.js";
12
+ import "./chunk-3R73A4XB.js";
13
+ export {
14
+ BUILTIN_RUNTIMES,
15
+ registerBuiltinRuntimes
16
+ };
17
+ //# sourceMappingURL=builtins-AD25UL3C.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  isSessionEntry
4
- } from "./chunk-GOXNB3AO.js";
4
+ } from "./chunk-RAPCMZL4.js";
5
5
  import {
6
6
  init_esm_shims
7
7
  } from "./chunk-3R73A4XB.js";
@@ -373,4 +373,4 @@ export {
373
373
  foldSessionTaskHistory,
374
374
  createTaskBoardStore
375
375
  };
376
- //# sourceMappingURL=chunk-5FR74PWO.js.map
376
+ //# sourceMappingURL=chunk-2JDWVJND.js.map
@@ -0,0 +1,113 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-3R73A4XB.js";
5
+
6
+ // src/domains/session/prompt-cache.ts
7
+ init_esm_shims();
8
+
9
+ // src/core/cache-telemetry.ts
10
+ init_esm_shims();
11
+ function emptyCacheVerdictCounts() {
12
+ return { hot: 0, partial: 0, cold: 0, small: 0 };
13
+ }
14
+ function uncachedPrefillTokens(backend) {
15
+ if (backend === null || backend === void 0 || backend.cachedTokens === null) return null;
16
+ if (!Number.isFinite(backend.promptTokens) || backend.promptTokens < 0 || !Number.isFinite(backend.cachedTokens) || backend.cachedTokens < 0 || backend.cachedTokens > backend.promptTokens) {
17
+ return null;
18
+ }
19
+ return backend.promptTokens - backend.cachedTokens;
20
+ }
21
+
22
+ // src/domains/session/prompt-cache.ts
23
+ function isRecord(value) {
24
+ return value !== null && typeof value === "object" && !Array.isArray(value);
25
+ }
26
+ function finiteNonNegative(value) {
27
+ return typeof value === "number" && Number.isFinite(value) && value >= 0;
28
+ }
29
+ function backendTimings(value) {
30
+ if (!isRecord(value)) return null;
31
+ if (!finiteNonNegative(value.promptTokens) || !finiteNonNegative(value.predictedTokens) || !finiteNonNegative(value.promptMs) || !finiteNonNegative(value.predictedMs) || value.source !== "llamacpp-timings" && value.source !== "lmstudio-timings") {
32
+ return null;
33
+ }
34
+ const cachedTokens = value.cachedTokens;
35
+ if (cachedTokens !== null && !finiteNonNegative(cachedTokens)) return null;
36
+ if (typeof cachedTokens === "number" && cachedTokens > value.promptTokens) return null;
37
+ return {
38
+ promptTokens: value.promptTokens,
39
+ cachedTokens,
40
+ predictedTokens: value.predictedTokens,
41
+ promptMs: value.promptMs,
42
+ predictedMs: value.predictedMs,
43
+ source: value.source
44
+ };
45
+ }
46
+ function cacheVerdict(value) {
47
+ switch (value) {
48
+ case "hot":
49
+ case "partial":
50
+ case "cold":
51
+ case "small":
52
+ return value;
53
+ default:
54
+ return null;
55
+ }
56
+ }
57
+ function hasPromptCacheTelemetry(telemetry) {
58
+ return telemetry.verdictCalls > 0 || telemetry.uncachedPrefillCalls > 0 || Object.keys(telemetry.expectedColdReasonCounts).length > 0;
59
+ }
60
+ function topExpectedColdReason(telemetry) {
61
+ const ranked = Object.entries(telemetry.expectedColdReasonCounts).sort(
62
+ ([leftReason, leftCount], [rightReason, rightCount]) => rightCount - leftCount || leftReason.localeCompare(rightReason)
63
+ );
64
+ const first = ranked[0];
65
+ return first === void 0 ? null : { reason: first[0], count: first[1] };
66
+ }
67
+ function foldPromptCacheTelemetry(entries) {
68
+ const verdictCounts = emptyCacheVerdictCounts();
69
+ const expectedColdReasonCounts = {};
70
+ let verdictCalls = 0;
71
+ let uncachedTotal = 0;
72
+ let uncachedPrefillCalls = 0;
73
+ for (const entry of entries) {
74
+ if (entry.kind !== "message" || entry.role !== "assistant" || !isRecord(entry.payload)) continue;
75
+ const promptCache = entry.payload.promptCache;
76
+ if (!isRecord(promptCache)) continue;
77
+ const verdict = cacheVerdict(promptCache.backendVerdict);
78
+ if (verdict !== null) {
79
+ verdictCounts[verdict] += 1;
80
+ verdictCalls += 1;
81
+ }
82
+ const backend = backendTimings(promptCache.backend);
83
+ const uncached = uncachedPrefillTokens(backend);
84
+ if (uncached !== null) {
85
+ uncachedTotal += uncached;
86
+ uncachedPrefillCalls += 1;
87
+ }
88
+ if (!Array.isArray(promptCache.expectedColdReasons)) continue;
89
+ const reasons = new Set(
90
+ promptCache.expectedColdReasons.filter(
91
+ (reason) => typeof reason === "string" && reason.trim().length > 0
92
+ )
93
+ );
94
+ for (const reason of reasons) {
95
+ expectedColdReasonCounts[reason] = (expectedColdReasonCounts[reason] ?? 0) + 1;
96
+ }
97
+ }
98
+ return {
99
+ uncachedPrefillTokens: uncachedPrefillCalls > 0 ? uncachedTotal : null,
100
+ uncachedPrefillCalls,
101
+ verdictCounts,
102
+ verdictCalls,
103
+ expectedColdReasonCounts
104
+ };
105
+ }
106
+
107
+ export {
108
+ uncachedPrefillTokens,
109
+ hasPromptCacheTelemetry,
110
+ topExpectedColdReason,
111
+ foldPromptCacheTelemetry
112
+ };
113
+ //# sourceMappingURL=chunk-3DPEIQKN.js.map
@@ -5,48 +5,48 @@ import {
5
5
  import {
6
6
  SchedulingDomainModule,
7
7
  createPromptsDomainModule
8
- } from "./chunk-EBEFWSGL.js";
8
+ } from "./chunk-3UUY7R3Z.js";
9
9
  import {
10
10
  SafetyDomainModule
11
- } from "./chunk-J7PIKKWC.js";
11
+ } from "./chunk-WXCJ7VME.js";
12
12
  import {
13
13
  ConfigDomainModule,
14
14
  loadDomains
15
- } from "./chunk-BMWK7ZIZ.js";
15
+ } from "./chunk-465CC7FK.js";
16
+ import {
17
+ ResourcesDomainModule
18
+ } from "./chunk-PZ4I4JE2.js";
19
+ import {
20
+ AgentsDomainModule
21
+ } from "./chunk-YSEHGPCT.js";
16
22
  import {
17
23
  createObservabilityDomainModule
18
- } from "./chunk-5UJ6ECTS.js";
24
+ } from "./chunk-5PVQ4SRS.js";
19
25
  import {
20
26
  fallbackBootstrapOutput
21
- } from "./chunk-4DWFMQDR.js";
27
+ } from "./chunk-HJB5IUKP.js";
22
28
  import {
23
29
  renderCodewikiDigest
24
- } from "./chunk-5WIGXA4T.js";
30
+ } from "./chunk-47CMYGET.js";
25
31
  import {
26
32
  DispatchDomainModule
27
- } from "./chunk-UUANF5CR.js";
33
+ } from "./chunk-TEO2TLVN.js";
28
34
  import {
29
35
  SessionDomainModule
30
- } from "./chunk-6TUKSZVF.js";
31
- import {
32
- ResourcesDomainModule
33
- } from "./chunk-THKY7CD7.js";
34
- import {
35
- AgentsDomainModule
36
- } from "./chunk-UVDSQ6LW.js";
36
+ } from "./chunk-LXPJXFM5.js";
37
37
  import {
38
38
  MiddlewareDomainModule
39
- } from "./chunk-XEGB6BCN.js";
39
+ } from "./chunk-GAYUJ7LE.js";
40
40
  import {
41
41
  UnsupportedResponseSchemaError,
42
42
  isResponseSchemaRejection
43
- } from "./chunk-CEYBNUGC.js";
43
+ } from "./chunk-4H6ULJ3H.js";
44
44
  import {
45
45
  parseJsonObjectPayload
46
- } from "./chunk-DJNLUABN.js";
46
+ } from "./chunk-S4COXYBG.js";
47
47
  import {
48
48
  ProvidersDomainModule
49
- } from "./chunk-VQNODYQ4.js";
49
+ } from "./chunk-MIX5N5AC.js";
50
50
  import {
51
51
  init_esm_shims
52
52
  } from "./chunk-3R73A4XB.js";
@@ -675,4 +675,4 @@ export {
675
675
  validateInitOptions,
676
676
  bootstrapInputFromInitOptions
677
677
  };
678
- //# sourceMappingURL=chunk-EOOQZZDE.js.map
678
+ //# sourceMappingURL=chunk-3DUR4WUA.js.map
@@ -25,7 +25,7 @@ import {
25
25
  ceilChars,
26
26
  contentChars,
27
27
  estimateAgentMessageTokens
28
- } from "./chunk-GEYXPTRF.js";
28
+ } from "./chunk-AEYBF3TB.js";
29
29
  import {
30
30
  init_esm_shims
31
31
  } from "./chunk-3R73A4XB.js";
@@ -674,4 +674,4 @@ export {
674
674
  compactionCut,
675
675
  selectVisibleEntries
676
676
  };
677
- //# sourceMappingURL=chunk-WHJYKASB.js.map
677
+ //# sourceMappingURL=chunk-3MRC2YSQ.js.map
@@ -1,25 +1,29 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
- loadFragments,
4
3
  loadOperatorProfile,
5
4
  loadProjectRules,
6
5
  renderOperatorProfile,
7
6
  selectActiveRules
8
- } from "./chunk-4DWFMQDR.js";
7
+ } from "./chunk-HJB5IUKP.js";
8
+ import {
9
+ loadFragments
10
+ } from "./chunk-47CMYGET.js";
9
11
  import {
10
12
  compile,
11
- compileWorker,
13
+ compileWorker
14
+ } from "./chunk-TEO2TLVN.js";
15
+ import {
12
16
  sha256
13
- } from "./chunk-UUANF5CR.js";
17
+ } from "./chunk-MLOK6ZOS.js";
18
+ import {
19
+ classifyProjectPreload
20
+ } from "./chunk-JVCV3ICN.js";
14
21
  import {
15
22
  isUserVisibleAgent
16
- } from "./chunk-AOCYTWAV.js";
23
+ } from "./chunk-S4COXYBG.js";
17
24
  import {
18
25
  BusChannels
19
- } from "./chunk-OB5HIGJY.js";
20
- import {
21
- classifyProjectPreload
22
- } from "./chunk-JVCV3ICN.js";
26
+ } from "./chunk-RKRLDWD3.js";
23
27
  import {
24
28
  init_esm_shims
25
29
  } from "./chunk-3R73A4XB.js";
@@ -655,4 +659,4 @@ export {
655
659
  createPromptsDomainModule,
656
660
  SchedulingDomainModule
657
661
  };
658
- //# sourceMappingURL=chunk-EBEFWSGL.js.map
662
+ //# sourceMappingURL=chunk-3UUY7R3Z.js.map
@@ -1,16 +1,4 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- INHERITED_PROJECT_CONTEXT,
4
- acceptInteropAgents,
5
- declineInteropAgents,
6
- detectInteropAgents,
7
- fingerprintNativeRuntime,
8
- interopProposals,
9
- renderProposalEntry
10
- } from "./chunk-SROCI7ZU.js";
11
- import {
12
- initializeClioHome
13
- } from "./chunk-DOOEX22V.js";
14
2
  import {
15
3
  createDelayedManualCodeInput,
16
4
  promptOAuthSelection
@@ -25,39 +13,61 @@ import {
25
13
  import {
26
14
  credentialWriteFailed,
27
15
  printPlaintextCredentialWarning
28
- } from "./chunk-465YSENW.js";
16
+ } from "./chunk-IFBNV6H6.js";
17
+ import {
18
+ INHERITED_PROJECT_CONTEXT,
19
+ acceptInteropAgents,
20
+ declineInteropAgents,
21
+ detectInteropAgents,
22
+ fingerprintNativeRuntime,
23
+ interopProposals,
24
+ renderProposalEntry
25
+ } from "./chunk-QQ7EKM72.js";
26
+ import {
27
+ initializeClioHome
28
+ } from "./chunk-56KB5IJP.js";
29
29
  import {
30
30
  printError,
31
31
  printOk
32
- } from "./chunk-PPAMZ32Z.js";
32
+ } from "./chunk-XK56QHLX.js";
33
+ import {
34
+ isOrchestratorEligibleRuntime,
35
+ probeCapabilitiesForModel
36
+ } from "./chunk-MIX5N5AC.js";
37
+ import {
38
+ credentialsPresent
39
+ } from "./chunk-LU7P4LHA.js";
40
+ import {
41
+ readSettings,
42
+ removeTargetFromSettings,
43
+ settingsPath,
44
+ updateSettings
45
+ } from "./chunk-PNY46YEY.js";
46
+ import {
47
+ greetLmStudio,
48
+ registerBuiltinRuntimes
49
+ } from "./chunk-JEQQR47K.js";
33
50
  import {
34
51
  buildProviderSupportEntry,
35
52
  configuredTargetsForRuntime,
36
- credentialsPresent,
37
53
  describeRuntimeModels,
38
- getCatalogModelForRuntime,
39
- getRuntimeRegistry,
40
- greetLmStudio,
41
- isOrchestratorEligibleRuntime,
42
54
  listKnownModelsForRuntime,
43
55
  listProviderSupportEntries,
44
- probeCapabilitiesForModel,
45
- registerBuiltinRuntimes,
46
56
  supportGroupLabel
47
- } from "./chunk-VQNODYQ4.js";
57
+ } from "./chunk-774ILSRL.js";
48
58
  import {
49
59
  openAuthStorage,
50
60
  registerClioOAuthProviders,
51
61
  resolveAuthTarget,
52
62
  resolveRuntimeAuthTarget,
53
63
  targetRequiresAuth
54
- } from "./chunk-JRIO5UD2.js";
64
+ } from "./chunk-EQ63NRB7.js";
55
65
  import {
56
- readSettings,
57
- removeTargetFromSettings,
58
- settingsPath,
59
- updateSettings
60
- } from "./chunk-UHXRNZ2J.js";
66
+ getRuntimeRegistry
67
+ } from "./chunk-NUGM5KR6.js";
68
+ import {
69
+ getCatalogModelForRuntime
70
+ } from "./chunk-VO2LKSTM.js";
61
71
  import {
62
72
  init_esm_shims
63
73
  } from "./chunk-3R73A4XB.js";
@@ -261,9 +271,21 @@ function formatRuntimeList(rows, width) {
261
271
 
262
272
  // src/cli/validate-model.ts
263
273
  init_esm_shims();
274
+ var SAMPLE_SIZE = 10;
275
+ function sample(models) {
276
+ const shown = models.slice(0, SAMPLE_SIZE).join(", ");
277
+ return models.length > SAMPLE_SIZE ? `${shown}, \u2026` : shown;
278
+ }
279
+ function describeLiveTarget(live) {
280
+ return live.url ? `target '${live.targetId}' at ${live.url}` : `target '${live.targetId}'`;
281
+ }
282
+ function formatUnadvertisedModelReason(modelId, live) {
283
+ const resident = live.resident.length > 0 ? live.resident.join(", ") : "none";
284
+ return `${describeLiveTarget(live)} does not advertise model '${modelId}'. Advertised (${live.models.length}): ${sample(live.models)}. Resident instances: ${resident}. Pass one of the advertised ids with --model, or --force to save a model the target cannot serve.`;
285
+ }
264
286
  function validateModelChoice(input2) {
265
- const { runtimeId, modelId, knownModels, force } = input2;
266
- if (knownModels.length === 0) return { ok: true };
287
+ const { runtimeId, modelId, knownModels, live, force } = input2;
288
+ if (knownModels.length === 0) return validateAgainstLive(modelId, live, force);
267
289
  if (knownModels.includes(modelId)) return { ok: true };
268
290
  if (force) {
269
291
  return {
@@ -271,13 +293,19 @@ function validateModelChoice(input2) {
271
293
  warning: `model '${modelId}' not in ${runtimeId} catalog (use without --force to reject)`
272
294
  };
273
295
  }
274
- const sample = knownModels.slice(0, 10).join(", ");
275
296
  return {
276
297
  ok: false,
277
- reason: `model '${modelId}' not in ${runtimeId} catalog. Known: ${sample}. Use --force to skip validation.`,
278
- knownModels: knownModels.slice(0, 10)
298
+ reason: `model '${modelId}' not in ${runtimeId} catalog. Known: ${sample(knownModels)}. Use --force to skip validation.`,
299
+ knownModels: knownModels.slice(0, SAMPLE_SIZE)
279
300
  };
280
301
  }
302
+ function validateAgainstLive(modelId, live, force) {
303
+ if (!live || live.models.length === 0) return { ok: true };
304
+ if (live.models.includes(modelId)) return { ok: true };
305
+ const reason = formatUnadvertisedModelReason(modelId, live);
306
+ if (force) return { ok: true, warning: `${reason.replace(/ Pass one of.*$/u, "")} Saved anyway because of --force.` };
307
+ return { ok: false, reason, knownModels: live.models.slice(0, SAMPLE_SIZE) };
308
+ }
281
309
 
282
310
  // src/cli/configure.ts
283
311
  var HELP = `clio-coder configure
@@ -304,7 +332,8 @@ Non-interactive flags:
304
332
  --agent-profile-model <id> model to use for --agent-profile
305
333
  --api-key-env <VAR> read API key from this env var at call time
306
334
  --api-key <literal> store API key in credentials.yaml
307
- --force allow a model outside the runtime catalog
335
+ --force save a model outside the runtime catalog, or one the
336
+ target does not advertise, without refusing
308
337
  --gateway mark the target as a gateway
309
338
  --lifecycle <user-managed|clio-managed>
310
339
  resident model lifecycle policy
@@ -552,14 +581,11 @@ function catalogContextWindowFor(runtime, modelId) {
552
581
  }
553
582
  return null;
554
583
  }
555
- function validateResolvedModel(runtimeId, modelId, force) {
584
+ function validateResolvedModel(runtime, target, modelId, force, inventory) {
556
585
  if (!modelId) return true;
557
- const validation = validateModelChoice({
558
- runtimeId,
559
- modelId,
560
- knownModels: runtimeKnownModelsFor(runtimeId),
561
- force
562
- });
586
+ const knownModels = runtimeKnownModelsFor(runtime.id);
587
+ const live = inventory.source === "probe" ? liveInventoryFor(target, inventory) : void 0;
588
+ const validation = validateModelChoice({ runtimeId: runtime.id, modelId, knownModels, live, force });
563
589
  if (!validation.ok) {
564
590
  process.stderr.write(`error: ${validation.reason}
565
591
  `);
@@ -567,6 +593,12 @@ function validateResolvedModel(runtimeId, modelId, force) {
567
593
  }
568
594
  if (validation.warning) process.stderr.write(`warning: ${validation.warning}
569
595
  `);
596
+ if (knownModels.length === 0 && live === void 0 && runtime.kind === "http") {
597
+ process.stderr.write(
598
+ `warning: could not verify model '${modelId}': ${target.url ?? `target '${target.id}'`} returned no model list; it is saved as written
599
+ `
600
+ );
601
+ }
570
602
  return true;
571
603
  }
572
604
  function validateContextWindowOverride(runtime, modelId, contextWindow, force) {
@@ -583,10 +615,11 @@ function validateContextWindowOverride(runtime, modelId, contextWindow, force) {
583
615
  `);
584
616
  return true;
585
617
  }
586
- async function runtimeProbe(runtime, target) {
618
+ async function runtimeProbe(runtime, target, authToken) {
587
619
  if (typeof runtime.probe !== "function") return null;
588
620
  try {
589
- return await runtime.probe(target, await buildProbeContext(runtime, target));
621
+ const context = await buildProbeContext(runtime, target);
622
+ return await runtime.probe(target, authToken === void 0 ? context : { ...context, authToken });
590
623
  } catch (err) {
591
624
  return { ok: false, error: err instanceof Error ? err.message : String(err) };
592
625
  }
@@ -807,12 +840,36 @@ Open: ${verificationUri}
807
840
  manualCodeInput.cancel();
808
841
  }
809
842
  }
843
+ function advertisedModelIds(inventory) {
844
+ const ids = [...inventory.models];
845
+ for (const id of Object.keys(inventory.modelStates ?? {})) if (!ids.includes(id)) ids.push(id);
846
+ return ids;
847
+ }
848
+ function residentModelIds(modelStates) {
849
+ return Object.entries(modelStates ?? {}).filter(([, status]) => status.state === "loaded" || status.state === "loading").map(([id]) => id);
850
+ }
851
+ function liveInventoryFor(target, inventory) {
852
+ return {
853
+ targetId: target.id,
854
+ url: target.url,
855
+ models: advertisedModelIds(inventory),
856
+ resident: residentModelIds(inventory.modelStates)
857
+ };
858
+ }
810
859
  async function resolveSupportedWireModels(runtime, target, existing, authToken) {
811
860
  const known = listKnownModelsForRuntime(runtime.id);
812
- if (known.length > 0) return known;
813
- const discovered = runtime.kind === "http" ? await runtimeProbeModels(runtime, target, authToken) : [];
814
- if (discovered.length > 0) return discovered;
815
- return existing?.wireModels ? [...existing.wireModels] : [];
861
+ if (known.length > 0) return { models: known, source: "catalog" };
862
+ if (runtime.kind === "http") {
863
+ const probe = await runtimeProbe(runtime, target, authToken);
864
+ if (probe?.ok && probe.models && probe.models.length > 0) {
865
+ return { models: [...probe.models], source: "probe", modelStates: probe.modelStates };
866
+ }
867
+ const discovered = await runtimeProbeModels(runtime, target, authToken);
868
+ if (discovered.length > 0) return { models: discovered, source: "probe" };
869
+ }
870
+ if (existing?.wireModels && existing.wireModels.length > 0)
871
+ return { models: [...existing.wireModels], source: "existing" };
872
+ return { models: [], source: "none" };
816
873
  }
817
874
  function resolveModelChoice(answer, wireModels, defaultValue) {
818
875
  if (answer.length === 0) return defaultValue;
@@ -903,13 +960,14 @@ async function runNonInteractive(runtime, args) {
903
960
  ...args.reasoning !== void 0 ? { reasoning: args.reasoning } : {},
904
961
  ...existing?.lmstudio ? { lmstudio: existing.lmstudio } : {}
905
962
  });
906
- const wireModels = await resolveSupportedWireModels(runtime, seed, existing, args.apiKey);
963
+ const inventory = await resolveSupportedWireModels(runtime, seed, existing, args.apiKey);
964
+ const wireModels = inventory.models;
907
965
  const model = args.model ?? existing?.defaultModel ?? support.defaultModel ?? (support.modelSource === "catalog" ? void 0 : wireModels[0]);
908
966
  if (model === void 0 && support.modelSource === "catalog") {
909
967
  refuseCatalogSeededModel(runtime, support);
910
968
  return 2;
911
969
  }
912
- if (!validateResolvedModel(runtime.id, model, args.force)) return 2;
970
+ if (!validateResolvedModel(runtime, seed, model, args.force, inventory)) return 2;
913
971
  if (!validateContextWindowOverride(runtime, model, args.contextWindow, args.force)) return 2;
914
972
  const descriptor = buildDescriptor(runtime, args.id, {
915
973
  ...url !== void 0 ? { url } : {},
@@ -1222,7 +1280,7 @@ Selected runtime: ${runtime.id} (${support.summary})
1222
1280
  oauthProfile = runtime.oauthProviderId ?? runtime.id;
1223
1281
  }
1224
1282
  let model = defaults.model;
1225
- let wireModels = existing?.wireModels ? [...existing.wireModels] : [];
1283
+ let inventory = existing?.wireModels && existing.wireModels.length > 0 ? { models: [...existing.wireModels], source: "existing" } : { models: [], source: "none" };
1226
1284
  const tentative = buildDescriptor(runtime, targetId, {
1227
1285
  ...url !== void 0 ? { url } : {},
1228
1286
  ...apiKeyEnv !== void 0 ? { apiKeyEnv } : {},
@@ -1236,8 +1294,9 @@ Selected runtime: ${runtime.id} (${support.summary})
1236
1294
  ...existing?.lmstudio ? { lmstudio: existing.lmstudio } : {}
1237
1295
  });
1238
1296
  if (runtime.kind === "http") {
1239
- wireModels = await resolveSupportedWireModels(runtime, tentative, existing ?? void 0);
1297
+ inventory = await resolveSupportedWireModels(runtime, tentative, existing ?? void 0);
1240
1298
  }
1299
+ const wireModels = inventory.models;
1241
1300
  const catalogOrdered = support.modelSource === "catalog";
1242
1301
  model = model ?? existing?.defaultModel ?? support.defaultModel ?? (catalogOrdered ? void 0 : wireModels[0]);
1243
1302
  if (wireModels.length > 0) {
@@ -1258,11 +1317,11 @@ Selected runtime: ${runtime.id} (${support.summary})
1258
1317
  process.stdout.write(" a model is required: enter a number from the list or a model id.\n");
1259
1318
  continue;
1260
1319
  }
1261
- if (validateResolvedModel(runtime.id, model, defaults.force)) break;
1320
+ if (validateResolvedModel(runtime, tentative, model, defaults.force, inventory)) break;
1262
1321
  }
1263
1322
  } else {
1264
1323
  for (; ; ) {
1265
- if (model && validateResolvedModel(runtime.id, model, defaults.force)) break;
1324
+ if (model && validateResolvedModel(runtime, tentative, model, defaults.force, inventory)) break;
1266
1325
  const manual = await ask(rl, "Default model id (blank to leave empty)", model ?? "");
1267
1326
  if (manual === null) return 0;
1268
1327
  model = manual.length > 0 ? manual : void 0;
@@ -1489,4 +1548,4 @@ export {
1489
1548
  runTargetRename,
1490
1549
  runConfigureCommand
1491
1550
  };
1492
- //# sourceMappingURL=chunk-LADCF22A.js.map
1551
+ //# sourceMappingURL=chunk-3V5AYSEQ.js.map