@iowarp/clio-coder 0.3.8 → 0.4.0

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 (552) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/NOTICE +33 -0
  3. package/README.md +12 -3
  4. package/dist/{acp-U67UHUK2.js → acp-G5WJBNCT.js} +13 -12
  5. package/dist/{agents-YU6SGALZ.js → agents-FMV2Q5G4.js} +41 -36
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-5ZPJOIVG.js → auth-3IDSJEIK.js} +18 -18
  8. package/dist/{builtins-C6JMZVV6.js → builtins-XCZWXSC7.js} +5 -5
  9. package/dist/{chunk-IFBNV6H6.js → chunk-2ANTL7MR.js} +3 -3
  10. package/dist/{chunk-5FR74PWO.js → chunk-2JDWVJND.js} +2 -2
  11. package/dist/{chunk-XWSF374K.js → chunk-2OQE55CK.js} +3 -3
  12. package/dist/{chunk-5H3GB5BO.js → chunk-32KWKNSF.js} +8 -384
  13. package/dist/{chunk-KTYTFRMB.js → chunk-36EJLSQQ.js} +34 -36
  14. package/dist/{chunk-FHJEP5SW.js → chunk-3BT2XMV4.js} +19 -13
  15. package/dist/chunk-3DPEIQKN.js +113 -0
  16. package/dist/{chunk-GU2UIAFZ.js → chunk-3URVFKWK.js} +7 -7
  17. package/dist/{chunk-WEH5XRJQ.js → chunk-3XML7CDN.js} +3 -3
  18. package/dist/chunk-42FMPA75.js +101 -0
  19. package/dist/{chunk-A2NJGIB3.js → chunk-5LXZXPKX.js} +2 -2
  20. package/dist/{chunk-VCBR6CU7.js → chunk-5PSMVOLM.js} +2 -2
  21. package/dist/{chunk-NMPKI6XL.js → chunk-6DB53AJS.js} +203 -25
  22. package/dist/{chunk-3BINW3FP.js → chunk-76ONBSIA.js} +2 -2
  23. package/dist/{chunk-26LEYJZH.js → chunk-7MCTRUCE.js} +2 -2
  24. package/dist/{chunk-TYPGUK6W.js → chunk-AB44T6BB.js} +111 -5
  25. package/dist/{chunk-K4XHGFR5.js → chunk-B7OBL7PK.js} +317 -721
  26. package/dist/{chunk-B5CSFE7B.js → chunk-BBVJUZHB.js} +2 -2
  27. package/dist/{chunk-EQ63NRB7.js → chunk-BBVYXMFO.js} +2 -2
  28. package/dist/{chunk-ZVJ5BLO2.js → chunk-BKFJHQCA.js} +154 -16
  29. package/dist/chunk-BKFM6EJV.js +462 -0
  30. package/dist/chunk-BMS5RKQY.js +27 -0
  31. package/dist/{chunk-ZNLWCMVZ.js → chunk-BPKCPIL7.js} +2 -2
  32. package/dist/{chunk-TLQJPP24.js → chunk-BUMFYQFY.js} +1394 -1349
  33. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  34. package/dist/chunk-C2LTL2W6.js +2447 -0
  35. package/dist/{chunk-ME6CCNFO.js → chunk-CODPRO7Q.js} +8 -8
  36. package/dist/{chunk-E77JEWSD.js → chunk-CTJ4RNAA.js} +7 -37
  37. package/dist/{chunk-ODFEOB4F.js → chunk-CY6FY24N.js} +26 -8
  38. package/dist/{chunk-7RFXX52T.js → chunk-DQITNCXG.js} +642 -172
  39. package/dist/{chunk-TTHACPOM.js → chunk-DYJP44XW.js} +578 -117
  40. package/dist/{chunk-2HFZQUHL.js → chunk-F4CKPOEQ.js} +18 -8
  41. package/dist/{chunk-DGSYXYMX.js → chunk-FEFIFZTL.js} +3 -3
  42. package/dist/{chunk-GWS3VEIW.js → chunk-FWDFM5ZU.js} +24 -3
  43. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  44. package/dist/chunk-GKF55TAZ.js +391 -0
  45. package/dist/{chunk-VWZOAB7K.js → chunk-GR5G2PVF.js} +9 -8
  46. package/dist/{chunk-4DGYLA73.js → chunk-GXNLGKAB.js} +80 -9
  47. package/dist/chunk-HHV2GANA.js +88 -0
  48. package/dist/{chunk-IIZWH4XA.js → chunk-HI63TFOG.js} +5 -4
  49. package/dist/{chunk-WLFILSD5.js → chunk-HJJTYUHX.js} +113 -83
  50. package/dist/{chunk-TT36MB5S.js → chunk-HLW2MRKE.js} +3 -1
  51. package/dist/{chunk-PMDBGQSJ.js → chunk-HWHKMHUA.js} +7 -7
  52. package/dist/chunk-HZHHCK24.js +1631 -0
  53. package/dist/{chunk-WSB3FPX7.js → chunk-I5VEOC6I.js} +39 -143
  54. package/dist/chunk-IBEBSCYA.js +564 -0
  55. package/dist/chunk-IQ7KR472.js +362 -0
  56. package/dist/{chunk-A3WNZD3P.js → chunk-J4W7KFM7.js} +949 -972
  57. package/dist/{chunk-TB5666IT.js → chunk-JDG2WCRO.js} +5 -5
  58. package/dist/{chunk-N22QMJKY.js → chunk-K5C3NCBD.js} +4 -4
  59. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  60. package/dist/{chunk-5C3AQNDW.js → chunk-KFZI4NIL.js} +216 -38
  61. package/dist/chunk-KMVISBZR.js +132 -0
  62. package/dist/{chunk-WXY7KU3G.js → chunk-LDQ2ZF2M.js} +2 -2
  63. package/dist/{chunk-XN3L4EYL.js → chunk-LQ3DZAMX.js} +3 -3
  64. package/dist/{chunk-U6MBIEMB.js → chunk-LY4S7GJC.js} +173 -144
  65. package/dist/{chunk-4SPRNWDE.js → chunk-MLKNTWH2.js} +19 -19
  66. package/dist/{chunk-MVVUPGPW.js → chunk-MXHC5QYU.js} +6 -6
  67. package/dist/chunk-NEKRRTYW.js +56 -0
  68. package/dist/{chunk-SPULKLCF.js → chunk-NHCZP4K7.js} +3 -3
  69. package/dist/chunk-NHLBIGRH.js +1506 -0
  70. package/dist/chunk-NQQH3YT7.js +302 -0
  71. package/dist/chunk-NYS75XW5.js +15 -0
  72. package/dist/{chunk-GN57SG4G.js → chunk-O4XIVISU.js} +10 -8
  73. package/dist/{chunk-EMYUUSFG.js → chunk-O6TL7WWY.js} +6 -6
  74. package/dist/chunk-OQBA45DZ.js +97 -0
  75. package/dist/{chunk-LU7P4LHA.js → chunk-P3FOHJT4.js} +2 -2
  76. package/dist/chunk-PMZCIOCJ.js +25 -0
  77. package/dist/{chunk-I4HZDVNP.js → chunk-PQEFIJ36.js} +2 -2
  78. package/dist/{chunk-J3YUBZWY.js → chunk-QBJA7R7N.js} +62 -6
  79. package/dist/chunk-QDC3K2U3.js +262 -0
  80. package/dist/{chunk-2HEJ2F35.js → chunk-QLFS5GO2.js} +22 -10
  81. package/dist/{chunk-7RGZWPB6.js → chunk-QLL7ILRG.js} +95 -32
  82. package/dist/{chunk-YS5VLNH5.js → chunk-QREDIESB.js} +6 -6
  83. package/dist/chunk-QSNYB6ZV.js +195 -0
  84. package/dist/{chunk-GOXNB3AO.js → chunk-RAPCMZL4.js} +75 -4
  85. package/dist/chunk-RKKLTLYB.js +45 -0
  86. package/dist/{chunk-P43ETTHK.js → chunk-SJ5ZKQ4S.js} +2 -2
  87. package/dist/{chunk-GPIEI3LY.js → chunk-SP2RXXYO.js} +6 -54
  88. package/dist/chunk-SUCTJL45.js +45 -0
  89. package/dist/{chunk-DYIM5TJT.js → chunk-SUW5DORT.js} +263 -7
  90. package/dist/chunk-T56WDKA5.js +183 -0
  91. package/dist/chunk-TVHHYFHE.js +255 -0
  92. package/dist/{chunk-FJ3H4MN5.js → chunk-TZ3SGWZZ.js} +3 -3
  93. package/dist/{chunk-MXKJU4JB.js → chunk-U77AMWDL.js} +91 -10
  94. package/dist/{chunk-5DHKRSMQ.js → chunk-ULC6OTWO.js} +11 -7
  95. package/dist/{chunk-RWSI4YD7.js → chunk-UM7N4G5A.js} +33 -12
  96. package/dist/{chunk-FCSXB6T2.js → chunk-UOSL25KY.js} +14 -2
  97. package/dist/{chunk-IGWKHNIQ.js → chunk-UXMFQ54G.js} +44 -37
  98. package/dist/{chunk-HFSBBKSQ.js → chunk-V5DHCITQ.js} +171 -3
  99. package/dist/{chunk-5WIGXA4T.js → chunk-VAZSBTKF.js} +111 -4
  100. package/dist/{chunk-VHN4MY6O.js → chunk-VEO4AP2K.js} +2 -2
  101. package/dist/{chunk-IJ7RPIYJ.js → chunk-VFA6GDY5.js} +65 -4
  102. package/dist/{chunk-PT7HYKEM.js → chunk-VO2LKSTM.js} +2 -2
  103. package/dist/chunk-VO67MWHC.js +75 -0
  104. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  105. package/dist/{chunk-TANS5ZJS.js → chunk-VYMXRQI6.js} +36 -22
  106. package/dist/{chunk-WWCZ5F23.js → chunk-W5VSYASO.js} +77 -16
  107. package/dist/{chunk-WNIJTQQK.js → chunk-WZR7K7ZX.js} +72 -116
  108. package/dist/{chunk-5Q2VVUKB.js → chunk-X3YGUTOB.js} +4 -4
  109. package/dist/chunk-X75E3D2N.js +686 -0
  110. package/dist/{chunk-VAWNZU7Z.js → chunk-YDFRH54B.js} +4 -4
  111. package/dist/chunk-YJX4SHTD.js +40 -0
  112. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  113. package/dist/chunk-Z2RR6MAK.js +127 -0
  114. package/dist/{chunk-FBVTI2TJ.js → chunk-Z4TXYIEG.js} +12 -131
  115. package/dist/cli/index.js +47 -36
  116. package/dist/{clio-QVTYJ57A.js → clio-2JXHBBY5.js} +7 -7
  117. package/dist/{code-nav-FGGFIE7L.js → code-nav-3YYRMYNF.js} +8 -8
  118. package/dist/{compile-cache-CVJMMODC.js → compile-cache-7FPE6PS3.js} +3 -3
  119. package/dist/{components-ZFA3SAER.js → components-RYZV4JGP.js} +5 -5
  120. package/dist/{config-LW5IJFQN.js → config-QZPCMYSO.js} +99 -63
  121. package/dist/{configure-7XIZCOU4.js → configure-TEGEBYCA.js} +23 -22
  122. package/dist/{context-Y6Y7QPR6.js → context-AV7OEZ4D.js} +12 -12
  123. package/dist/{context-L3WL3X7K.js → context-E6H5RNMC.js} +56 -47
  124. package/dist/{context-N52ZA626.js → context-GSXUE4CT.js} +29 -27
  125. package/dist/{context-clear-MBQRLSDQ.js → context-clear-SHIBYK6T.js} +55 -46
  126. package/dist/{context-index-HVMFQHK3.js → context-index-HNG3MOME.js} +2 -2
  127. package/dist/{context-working-set-GS6DSO7F.js → context-working-set-5ZGKPGZQ.js} +13 -13
  128. package/dist/{dispatch-runner-22ZCNOM3.js → dispatch-runner-EFMJT4LD.js} +93 -64
  129. package/dist/{docs-7LQ23DLM.js → docs-23KQS3XK.js} +5 -5
  130. package/dist/doctor-QOA5FNY5.js +313 -0
  131. package/dist/{eval-BEC2WHDA.js → eval-TFBYQH4H.js} +2032 -156
  132. package/dist/eval-inventory-SXH7PDKX.js +316 -0
  133. package/dist/{evidence-REJUMSKM.js → evidence-ERGESKGN.js} +203 -48
  134. package/dist/{evolve-PY5ZBA5K.js → evolve-VDXTSYCJ.js} +52 -43
  135. package/dist/{extensions-HVKU65YU.js → extensions-7BGBHN57.js} +13 -7
  136. package/dist/{fleet-7WZEWRFA.js → fleet-2RRVDF2V.js} +228 -108
  137. package/dist/{fleet-commands-UVHWM76J.js → fleet-commands-VJ726XIA.js} +11 -11
  138. package/dist/fleet-decisions-EPAPM3XJ.js +157 -0
  139. package/dist/{fleet-graph-6ULH7PES.js → fleet-graph-JF5QOATM.js} +18 -15
  140. package/dist/fleet-inspect-VLY4S7QM.js +442 -0
  141. package/dist/{fleet-preflight-J53T6CCE.js → fleet-preflight-AIZUEJOY.js} +5 -5
  142. package/dist/{fleet-validate-72PC4SLA.js → fleet-validate-AJRPDMDV.js} +22 -19
  143. package/dist/fleet-verify-JFEL2L3H.js +175 -0
  144. package/dist/fleet-view-ZCON35AG.js +102 -0
  145. package/dist/{init-OG3TPGQG.js → init-DN2WWLFE.js} +72 -62
  146. package/dist/install-XGLBQY5E.js +13 -0
  147. package/dist/interop-OZBKXAYL.js +114 -0
  148. package/dist/{library-CNTMPLRF.js → library-YWZG7IMW.js} +21 -18
  149. package/dist/{memory-6IS7F275.js → memory-I4C4HMLW.js} +54 -45
  150. package/dist/{models-ENRJDA5W.js → models-CEYXJBO6.js} +33 -30
  151. package/dist/{monitor-XLDVO7TN.js → monitor-NZ6GCI3P.js} +59 -52
  152. package/dist/{orchestrator-6KSPYRHA.js → orchestrator-GCGQ4N5I.js} +7827 -7328
  153. package/dist/panes-HMABYVO4.js +58 -0
  154. package/dist/panes-KY6W3V2E.js +103 -0
  155. package/dist/{paths-DBXMZMDU.js → paths-II4K7DNR.js} +5 -5
  156. package/dist/{reset-RZ4ER727.js → reset-DQ6FGCSH.js} +13 -11
  157. package/dist/resources-BB3MVJMD.js +111 -0
  158. package/dist/{run-Y2CNK5RU.js → run-H2GQDUER.js} +119 -87
  159. package/dist/{share-A55GYP6Z.js → share-GTJN6A5O.js} +20 -17
  160. package/dist/{skills-ALC5J6AT.js → skills-L55TEW6R.js} +33 -24
  161. package/dist/{skills-eval-JPBEBYQU.js → skills-eval-XVXPH2JI.js} +67 -56
  162. package/dist/skills-inventory-S4MXPJFV.js +126 -0
  163. package/dist/slash-commands-ZSGASKJC.js +77 -0
  164. package/dist/{steer-GGWFUJUD.js → steer-RZGSCY4R.js} +4 -4
  165. package/dist/{support-MIETYA5E.js → support-PKEUNNQL.js} +6 -6
  166. package/dist/{targets-VGNXIR3S.js → targets-NCPZ644J.js} +68 -40
  167. package/dist/{terminal-lease-WOBR64YA.js → terminal-lease-44SV3YCN.js} +6 -4
  168. package/dist/tools-DAF3DI3C.js +27 -0
  169. package/dist/{trace-PNCASAXC.js → trace-FYVW2MQA.js} +207 -10
  170. package/dist/tui-primitives-2AKXQNZK.js +13 -0
  171. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-DW2PNOIC.js} +5 -5
  172. package/dist/{upgrade-FUSUAGHR.js → upgrade-3XPP6OQL.js} +27 -24
  173. package/dist/{usage-N4MKVHKD.js → usage-3NLHGTU2.js} +114 -62
  174. package/dist/{verifiers-YAWOJ3H2.js → verifiers-SSQONKRT.js} +172 -13
  175. package/dist/{verify-LTDHYBGY.js → verify-3U6J7FZI.js} +10 -10
  176. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-S7RR6GZ7.js} +3 -3
  177. package/dist/{wiki-generate-6M7GHTBJ.js → wiki-generate-CEHYGPGQ.js} +75 -65
  178. package/dist/with-panes-MKB46MPQ.js +782 -0
  179. package/dist/worker/entry.js +106 -75
  180. package/docs/README.md +3 -2
  181. package/docs/acp.md +24 -3
  182. package/docs/alcf-provider.md +1 -1
  183. package/docs/architecture.md +2 -2
  184. package/docs/artifact-versions.md +9 -1
  185. package/docs/built-in-agents.md +1 -1
  186. package/docs/capacity-and-scheduling.md +62 -3
  187. package/docs/commands-and-modes.md +31 -2
  188. package/docs/configuration-and-targets.md +69 -12
  189. package/docs/context-engine.md +63 -4
  190. package/docs/development-pipeline.md +19 -0
  191. package/docs/dispatch-typed-intent.md +385 -0
  192. package/docs/documentation-coverage.md +5 -5
  193. package/docs/documentation-guide.md +1 -1
  194. package/docs/environment-variables.md +3 -0
  195. package/docs/eval-runner.md +262 -11
  196. package/docs/evals-internal.md +72 -2
  197. package/docs/evidence-and-memory.md +12 -11
  198. package/docs/evolution.md +1 -1
  199. package/docs/exit-codes-and-output.md +1 -1
  200. package/docs/extensions-and-sharing.md +27 -1
  201. package/docs/fleet-dispatch.md +25 -4
  202. package/docs/installation-and-lifecycle.md +15 -2
  203. package/docs/middleware-and-components.md +1 -1
  204. package/docs/model-catalog.md +10 -1
  205. package/docs/observability.md +55 -4
  206. package/docs/proactive-memory.md +127 -14
  207. package/docs/prompt-envelope-and-tools.md +19 -1
  208. package/docs/provider-adapter-cookbook.md +1 -1
  209. package/docs/release-cut-checklist.md +19 -3
  210. package/docs/safety-model.md +2 -2
  211. package/docs/scientific-validation.md +3 -3
  212. package/docs/session-lifecycle.md +1 -1
  213. package/docs/skills-marketplace.md +1 -1
  214. package/docs/tool-usage.md +18 -8
  215. package/docs/trace-store.md +1 -1
  216. package/docs/troubleshooting.md +88 -1
  217. package/docs/tui-design.md +1 -1
  218. package/docs/worker-dispatch-mechanics.md +1 -1
  219. package/package.json +5 -2
  220. package/src/cli/acp.ts +6 -2
  221. package/src/cli/agents.ts +1 -1
  222. package/src/cli/argv.ts +25 -0
  223. package/src/cli/config-inspect.ts +33 -6
  224. package/src/cli/config.ts +1 -1
  225. package/src/cli/configure.ts +23 -21
  226. package/src/cli/doctor-panes.ts +124 -0
  227. package/src/cli/doctor-state-size.ts +82 -0
  228. package/src/cli/doctor-toolchain.ts +57 -0
  229. package/src/cli/doctor.ts +22 -1
  230. package/src/cli/eval-inventory.ts +436 -0
  231. package/src/cli/eval.ts +93 -16
  232. package/src/cli/evidence-detail.ts +88 -0
  233. package/src/cli/evidence-inventory.ts +183 -0
  234. package/src/cli/evidence.ts +30 -5
  235. package/src/cli/extensions.ts +5 -1
  236. package/src/cli/fleet-decisions.ts +69 -0
  237. package/src/cli/fleet-inspect.ts +334 -0
  238. package/src/cli/fleet-verify.ts +133 -0
  239. package/src/cli/fleet-view.ts +810 -0
  240. package/src/cli/fleet.ts +179 -39
  241. package/src/cli/index.ts +14 -2
  242. package/src/cli/interop-inspect.ts +128 -0
  243. package/src/cli/interop.ts +34 -0
  244. package/src/cli/panes.ts +35 -0
  245. package/src/cli/reset.ts +5 -2
  246. package/src/cli/run.ts +58 -0
  247. package/src/cli/skills-inventory.ts +185 -0
  248. package/src/cli/skills.ts +16 -13
  249. package/src/cli/targets.ts +44 -13
  250. package/src/cli/tools.ts +321 -0
  251. package/src/cli/trace-inspect.ts +252 -0
  252. package/src/cli/trace.ts +85 -5
  253. package/src/cli/usage.ts +63 -14
  254. package/src/cli/verifiers-inspect.ts +347 -0
  255. package/src/cli/verifiers.ts +9 -0
  256. package/src/core/bus-events.ts +33 -1
  257. package/src/core/cache-telemetry.ts +42 -0
  258. package/src/core/config.ts +67 -0
  259. package/src/core/defaults.ts +124 -8
  260. package/src/core/endpoint-key.ts +27 -0
  261. package/src/core/residency-target-key.ts +25 -0
  262. package/src/core/response-schema.ts +80 -6
  263. package/src/core/theme-token-hex.ts +43 -0
  264. package/src/core/tool-names.ts +2 -1
  265. package/src/core/xdg.ts +1 -1
  266. package/src/domains/agents/fleets/build-review.md +0 -3
  267. package/src/domains/agents/fleets/build-test.md +0 -3
  268. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  269. package/src/domains/agents/result-contract.ts +164 -35
  270. package/src/domains/config/classify.ts +6 -0
  271. package/src/domains/context/codewiki/coordinator.ts +12 -4
  272. package/src/domains/dispatch/admission-error.ts +9 -0
  273. package/src/domains/dispatch/admission.ts +52 -14
  274. package/src/domains/dispatch/capacity-lease.ts +118 -9
  275. package/src/domains/dispatch/contract.ts +11 -0
  276. package/src/domains/dispatch/council-topology.ts +398 -0
  277. package/src/domains/dispatch/execution-plan.ts +44 -4
  278. package/src/domains/dispatch/extension.ts +378 -82
  279. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  280. package/src/domains/dispatch/fleet-plan.ts +7 -2
  281. package/src/domains/dispatch/fleet-run.ts +87 -4
  282. package/src/domains/dispatch/gate-decisions.ts +11 -1
  283. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  284. package/src/domains/dispatch/gate-topology.ts +289 -0
  285. package/src/domains/dispatch/heartbeat.ts +32 -8
  286. package/src/domains/dispatch/index.ts +22 -0
  287. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  288. package/src/domains/dispatch/intent.ts +85 -1
  289. package/src/domains/dispatch/orphan-recovery.ts +5 -0
  290. package/src/domains/dispatch/reservation-store.ts +139 -11
  291. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  292. package/src/domains/dispatch/run-event-journal.ts +598 -0
  293. package/src/domains/dispatch/state.ts +49 -1
  294. package/src/domains/dispatch/types.ts +13 -0
  295. package/src/domains/dispatch/validation.ts +33 -8
  296. package/src/domains/dispatch/worker-spawn.ts +25 -11
  297. package/src/domains/dispatch/write-boundary-enforcer.ts +20 -3
  298. package/src/domains/dispatch/write-boundary.ts +62 -1
  299. package/src/domains/eval/artifacts/store.ts +62 -0
  300. package/src/domains/eval/compare/behavioral.ts +224 -0
  301. package/src/domains/eval/compare/compare.ts +342 -2
  302. package/src/domains/eval/compare/envelope.ts +128 -0
  303. package/src/domains/eval/compare/gates.ts +24 -6
  304. package/src/domains/eval/compare/thresholds.ts +30 -3
  305. package/src/domains/eval/execution-provenance.ts +240 -0
  306. package/src/domains/eval/inventory.ts +113 -0
  307. package/src/domains/eval/metrics/aggregate.ts +136 -0
  308. package/src/domains/eval/metrics/call-ledger-stream.ts +112 -0
  309. package/src/domains/eval/metrics/tracked.ts +413 -0
  310. package/src/domains/eval/provenance.ts +117 -0
  311. package/src/domains/eval/reports/comparison.ts +128 -0
  312. package/src/domains/eval/reports/junit.ts +17 -3
  313. package/src/domains/eval/reports/markdown.ts +3 -3
  314. package/src/domains/eval/reports/text.ts +14 -0
  315. package/src/domains/eval/run-compare.ts +20 -0
  316. package/src/domains/eval/runners/clio-run.ts +127 -0
  317. package/src/domains/eval/runners/external-command.ts +28 -3
  318. package/src/domains/eval/schema/adapter.ts +111 -0
  319. package/src/domains/eval/schema/artifact.ts +20 -0
  320. package/src/domains/eval/schema/behavioral-metrics.ts +204 -0
  321. package/src/domains/eval/schema/behavioral.ts +520 -0
  322. package/src/domains/eval/schema/execution-envelope.ts +194 -0
  323. package/src/domains/eval/schema/serving.ts +105 -0
  324. package/src/domains/eval/schema/suite.ts +38 -8
  325. package/src/domains/eval/schema/validate.ts +58 -3
  326. package/src/domains/eval/schema/verdict.ts +237 -0
  327. package/src/domains/eval/suites/resolve.ts +2 -0
  328. package/src/domains/eval/suites/run.ts +264 -33
  329. package/src/domains/eval/verifiers/command.ts +2 -1
  330. package/src/domains/eval/workspaces/temp-copy.ts +145 -13
  331. package/src/domains/evidence/build.ts +2 -13
  332. package/src/domains/evidence/eval.ts +2 -12
  333. package/src/domains/evidence/findings-markdown.ts +33 -0
  334. package/src/domains/evidence/run-trust.ts +7 -113
  335. package/src/domains/evidence/store.ts +6 -0
  336. package/src/domains/evidence/trust-projection.ts +2 -2
  337. package/src/domains/extensions/compatibility.ts +285 -0
  338. package/src/domains/extensions/discovery.ts +38 -3
  339. package/src/domains/extensions/resources.ts +1 -1
  340. package/src/domains/extensions/state.ts +12 -3
  341. package/src/domains/extensions/types.ts +2 -0
  342. package/src/domains/lifecycle/doctor.ts +69 -1
  343. package/src/domains/memory/index.ts +14 -1
  344. package/src/domains/memory/task-bank-promotion.ts +64 -0
  345. package/src/domains/memory/task-memory-policy.ts +82 -17
  346. package/src/domains/memory/task-memory-spend.ts +131 -0
  347. package/src/domains/memory/task-memory-status.ts +7 -0
  348. package/src/domains/memory/task-memory-telemetry.ts +3 -0
  349. package/src/domains/middleware/index.ts +1 -0
  350. package/src/domains/middleware/memory-intervention.ts +97 -21
  351. package/src/domains/middleware/memory-step-endpoint.ts +71 -0
  352. package/src/domains/mux/contract.ts +434 -0
  353. package/src/domains/mux/detect.ts +158 -0
  354. package/src/domains/mux/extension.ts +47 -0
  355. package/src/domains/mux/index.ts +96 -0
  356. package/src/domains/mux/manifest.ts +6 -0
  357. package/src/domains/mux/operations.ts +164 -0
  358. package/src/domains/mux/pane-registry.ts +90 -0
  359. package/src/domains/mux/protocol.ts +49 -0
  360. package/src/domains/mux/socket-client.ts +816 -0
  361. package/src/domains/mux/types.ts +222 -0
  362. package/src/domains/mux/viewer-command.ts +59 -0
  363. package/src/domains/mux/yazi/assets/init.lua +2 -0
  364. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  365. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  366. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  367. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  368. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  369. package/src/domains/mux/yazi/event-stream.ts +180 -0
  370. package/src/domains/mux/yazi/profile.ts +299 -0
  371. package/src/domains/mux/yazi/session.ts +228 -0
  372. package/src/domains/mux/yazi/theme.ts +30 -0
  373. package/src/domains/observability/background-memory-usage.ts +140 -0
  374. package/src/domains/observability/cost.ts +22 -1
  375. package/src/domains/observability/index.ts +9 -0
  376. package/src/domains/observability/out-of-turn-usage.ts +51 -2
  377. package/src/domains/observability/trace-store.ts +234 -2
  378. package/src/domains/prompts/compiler.ts +100 -13
  379. package/src/domains/providers/endpoint-capacity.ts +228 -0
  380. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  381. package/src/domains/providers/extension.ts +20 -3
  382. package/src/domains/providers/index.ts +32 -0
  383. package/src/domains/providers/model-runtime-capabilities.ts +32 -0
  384. package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +243 -1
  385. package/src/domains/providers/runtime-resolution.ts +8 -1
  386. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  387. package/src/domains/providers/runtimes/builtins.ts +2 -0
  388. package/src/domains/providers/runtimes/common/probe-helpers.ts +31 -9
  389. package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +1 -1
  390. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  391. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +1 -1
  392. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +1 -1
  393. package/src/domains/providers/runtimes/local-native/llamacpp.ts +4 -1
  394. package/src/domains/providers/runtimes/local-native/lmstudio.ts +4 -1
  395. package/src/domains/providers/runtimes/local-native/ollama-native.ts +6 -1
  396. package/src/domains/providers/runtimes/protocol/litellm.ts +375 -0
  397. package/src/domains/providers/support.ts +1 -0
  398. package/src/domains/providers/target-model-cache.ts +124 -0
  399. package/src/domains/providers/types/capability-flags.ts +2 -0
  400. package/src/domains/providers/types/target-descriptor.ts +2 -0
  401. package/src/domains/resources/index.ts +3 -0
  402. package/src/domains/resources/prompts/loader.ts +95 -33
  403. package/src/domains/resources/skills/loader.ts +33 -0
  404. package/src/domains/safety/action-classifier.ts +6 -0
  405. package/src/domains/safety/call-target.ts +52 -0
  406. package/src/domains/safety/run-effects.ts +35 -4
  407. package/src/domains/session/context-accounting.ts +52 -1
  408. package/src/domains/session/context-ledger.ts +37 -13
  409. package/src/domains/session/index.ts +6 -0
  410. package/src/domains/session/prompt-cache.ts +140 -0
  411. package/src/domains/session/prompt-manifest.ts +42 -0
  412. package/src/domains/toolchain/archive.ts +175 -0
  413. package/src/domains/toolchain/contract.ts +28 -0
  414. package/src/domains/toolchain/extension.ts +47 -0
  415. package/src/domains/toolchain/index.ts +39 -0
  416. package/src/domains/toolchain/install.ts +327 -0
  417. package/src/domains/toolchain/manifest.ts +8 -0
  418. package/src/domains/toolchain/paths.ts +34 -0
  419. package/src/domains/toolchain/registry.ts +265 -0
  420. package/src/domains/toolchain/remove.ts +218 -0
  421. package/src/domains/toolchain/resolve.ts +182 -0
  422. package/src/domains/toolchain/types.ts +113 -0
  423. package/src/domains/toolchain/version.ts +88 -0
  424. package/src/engine/acp/adapter.ts +18 -3
  425. package/src/engine/acp/server.ts +413 -70
  426. package/src/engine/acp/types.ts +19 -1
  427. package/src/engine/ai.ts +35 -0
  428. package/src/engine/apis/llamacpp-residency.ts +55 -3
  429. package/src/engine/apis/lmstudio.ts +25 -5
  430. package/src/engine/apis/ollama-native.ts +2 -1
  431. package/src/engine/apis/openai-completions.ts +80 -17
  432. package/src/engine/apis/residency-lock.ts +3 -1
  433. package/src/engine/apis/residency.ts +34 -1
  434. package/src/engine/claude/sdk-module.ts +98 -0
  435. package/src/engine/claude/sdk-runtime.ts +19 -11
  436. package/src/engine/provider-payload.ts +29 -1
  437. package/src/engine/tui-primitives.ts +21 -0
  438. package/src/engine/tui.ts +1 -0
  439. package/src/engine/worker-runtime.ts +2 -13
  440. package/src/entry/boot-options.ts +2 -0
  441. package/src/entry/orchestrator.ts +279 -35
  442. package/src/entry/panes-activation.ts +31 -0
  443. package/src/entry/with-panes.ts +20 -0
  444. package/src/interactive/chat-loop-messages.ts +26 -7
  445. package/src/interactive/chat-loop.ts +318 -41
  446. package/src/interactive/chat-panel.ts +62 -8
  447. package/src/interactive/clio-editor.ts +45 -8
  448. package/src/interactive/context-activity.ts +5 -1
  449. package/src/interactive/context-meter.ts +1 -1
  450. package/src/interactive/context-overlay.ts +41 -10
  451. package/src/interactive/cost-overlay.ts +66 -6
  452. package/src/interactive/council-grid.ts +1 -3
  453. package/src/interactive/council.ts +11 -0
  454. package/src/interactive/dispatch-board.ts +102 -20
  455. package/src/interactive/fleet-run-preview.ts +41 -15
  456. package/src/interactive/handoff-round.ts +41 -2
  457. package/src/interactive/interactive-application.ts +177 -7
  458. package/src/interactive/interactive-input-runtime.ts +15 -0
  459. package/src/interactive/interactive-presentation.ts +4 -0
  460. package/src/interactive/interactive-shell.ts +20 -17
  461. package/src/interactive/interactive-slash-runtime.ts +63 -10
  462. package/src/interactive/memory-overlay.ts +9 -0
  463. package/src/interactive/modal-marker.ts +170 -0
  464. package/src/interactive/mutation-preview.ts +295 -0
  465. package/src/interactive/mux-bridge.ts +214 -0
  466. package/src/interactive/overlay-frame.ts +58 -2
  467. package/src/interactive/overlay-general-openers.ts +17 -0
  468. package/src/interactive/overlay-key-routing.ts +52 -3
  469. package/src/interactive/overlay-lifecycle.ts +56 -7
  470. package/src/interactive/overlay-model-selectors.ts +40 -3
  471. package/src/interactive/overlay-permission-lifecycle.ts +112 -24
  472. package/src/interactive/overlay-session-lifecycle.ts +73 -9
  473. package/src/interactive/overlay-transitions.ts +18 -4
  474. package/src/interactive/overlays/agents.ts +1 -0
  475. package/src/interactive/overlays/ask-user.ts +227 -49
  476. package/src/interactive/overlays/auth-dialog.ts +1 -0
  477. package/src/interactive/overlays/context-reset.ts +1 -0
  478. package/src/interactive/overlays/cwd-fallback.ts +1 -0
  479. package/src/interactive/overlays/decisions.ts +11 -11
  480. package/src/interactive/overlays/extensions.ts +1 -0
  481. package/src/interactive/overlays/fleet-run-approval.ts +1 -0
  482. package/src/interactive/overlays/handoff-review.ts +1 -0
  483. package/src/interactive/overlays/help-reference.ts +6 -0
  484. package/src/interactive/overlays/interop.ts +1 -0
  485. package/src/interactive/overlays/library-install-confirm.ts +1 -0
  486. package/src/interactive/overlays/library-tabs.ts +28 -0
  487. package/src/interactive/overlays/list-overlay.ts +10 -1
  488. package/src/interactive/overlays/message-picker.ts +1 -0
  489. package/src/interactive/overlays/model-scope.ts +86 -0
  490. package/src/interactive/overlays/model-selector.ts +1 -0
  491. package/src/interactive/overlays/prompts.ts +12 -1
  492. package/src/interactive/overlays/session-selector.ts +1 -0
  493. package/src/interactive/overlays/settings-sections.ts +30 -0
  494. package/src/interactive/overlays/settings.ts +614 -45
  495. package/src/interactive/overlays/side-question.ts +1 -0
  496. package/src/interactive/overlays/skills-hub.ts +3 -11
  497. package/src/interactive/overlays/tree-selector.ts +1 -0
  498. package/src/interactive/pane-policy.ts +46 -0
  499. package/src/interactive/panes-runtime.ts +292 -0
  500. package/src/interactive/permission-hint.ts +34 -2
  501. package/src/interactive/permission-overlay.ts +159 -9
  502. package/src/interactive/prewarm.ts +197 -0
  503. package/src/interactive/render-trace.ts +162 -15
  504. package/src/interactive/renderers/compaction-summary.ts +29 -0
  505. package/src/interactive/renderers/tool-execution.ts +4 -0
  506. package/src/interactive/renderers/worker-entry.ts +122 -14
  507. package/src/interactive/side-question.ts +58 -1
  508. package/src/interactive/slash-commands.ts +251 -15
  509. package/src/interactive/status/controller.ts +11 -0
  510. package/src/interactive/status/state-machine.ts +54 -2
  511. package/src/interactive/status/types.ts +7 -0
  512. package/src/interactive/tasks-overlay.ts +1 -0
  513. package/src/interactive/terminal-lease.ts +2 -0
  514. package/src/interactive/theme/tokens.ts +3 -14
  515. package/src/interactive/turn-context.ts +346 -33
  516. package/src/interactive/turn-persistence.ts +14 -4
  517. package/src/interactive/turn-prewarm.ts +364 -0
  518. package/src/interactive/turn-queues.ts +7 -4
  519. package/src/interactive/turn-runtime.ts +8 -1
  520. package/src/interactive/turn-state.ts +23 -0
  521. package/src/interactive/view/artifacts.ts +109 -1
  522. package/src/interactive/view/view-overlay.ts +29 -3
  523. package/src/interactive/watch-pane.ts +152 -0
  524. package/src/interactive/worker-progress.ts +7 -1
  525. package/src/interactive/worker-receipts.ts +19 -1
  526. package/src/interactive/worker-stream.ts +5 -0
  527. package/src/interactive/yazi-bridge.ts +444 -0
  528. package/src/tools/ask-user.ts +43 -2
  529. package/src/tools/bootstrap.ts +26 -2
  530. package/src/tools/builtin-tool-catalog.ts +15 -0
  531. package/src/tools/compete-worktrees.ts +83 -2
  532. package/src/tools/core-bootstrap.ts +2 -1
  533. package/src/tools/dispatch-admission.ts +14 -3
  534. package/src/tools/dispatch-arguments.ts +20 -20
  535. package/src/tools/dispatch-plan.ts +17 -9
  536. package/src/tools/dispatch-run-events.ts +134 -19
  537. package/src/tools/dispatch-runner.ts +29 -7
  538. package/src/tools/dispatch-scout.ts +1 -1
  539. package/src/tools/dispatch-types.ts +15 -3
  540. package/src/tools/dispatch.ts +1 -1
  541. package/src/tools/executables.ts +17 -14
  542. package/src/tools/observation.ts +54 -4
  543. package/src/tools/panes-surface.ts +38 -0
  544. package/src/tools/panes.ts +112 -0
  545. package/src/tools/policy.ts +10 -1
  546. package/src/tools/presentation.ts +1 -0
  547. package/src/tools/registry.ts +16 -0
  548. package/dist/chunk-AOCYTWAV.js +0 -449
  549. package/dist/chunk-HLE42MG7.js +0 -37
  550. package/dist/chunk-HWUFFB6L.js +0 -83
  551. package/dist/chunk-JOZYP4GM.js +0 -279
  552. package/dist/doctor-M7YEDGAE.js +0 -91
@@ -1,12 +1,12 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  THINKING_LEVELS
4
- } from "./chunk-4DGYLA73.js";
4
+ } from "./chunk-GXNLGKAB.js";
5
5
  import {
6
6
  listCatalogModelsForRuntime,
7
7
  mergeCapabilities,
8
8
  synthesizeCatalogBackedModel
9
- } from "./chunk-PT7HYKEM.js";
9
+ } from "./chunk-VO2LKSTM.js";
10
10
  import {
11
11
  init_esm_shims
12
12
  } from "./chunk-3R73A4XB.js";
@@ -414,8 +414,8 @@ function localAnthropicCompat() {
414
414
  };
415
415
  }
416
416
  function synthLocalModel(input) {
417
- const { target, wireModelId, kb, defaultCapabilities: defaultCapabilities25, apiFamily, provider } = input;
418
- const caps = mergeCapabilities(defaultCapabilities25, kb?.entry.capabilities ?? null, null, target.capabilities ?? null);
417
+ const { target, wireModelId, kb, defaultCapabilities: defaultCapabilities26, apiFamily, provider } = input;
418
+ const caps = mergeCapabilities(defaultCapabilities26, kb?.entry.capabilities ?? null, null, target.capabilities ?? null);
419
419
  const rawUrl = target.url ?? "";
420
420
  const baseUrl = rawUrl.length > 0 ? input.baseUrlForTarget(rawUrl) : "";
421
421
  const pricing = target.pricing;
@@ -865,6 +865,9 @@ async function probeLlamaCppModelStatus(base, target, ctx) {
865
865
  if (flags.reasoning === true || flags.reasoningBudget !== void 0) caps.reasoning = true;
866
866
  if (flags.mmproj) caps.vision = true;
867
867
  if (flags.jinja === true) caps.tools = true;
868
+ if (flags.parallel !== void 0 && Number.isInteger(flags.parallel) && flags.parallel > 0) {
869
+ caps.parallelSlots = flags.parallel;
870
+ }
868
871
  const enrichment = { modelId: selected.id, serverFlags: flags };
869
872
  if (Object.keys(caps).length > 0) enrichment.discoveredCapabilities = caps;
870
873
  const notes = statusNotes(selected.id, selected.status);
@@ -885,11 +888,16 @@ async function detectModelMismatch(base, target, ctx) {
885
888
  const loaded = ids[0] ?? "(unknown)";
886
889
  return `wire model id ${expected} does not match server's loaded model ${loaded}; llama.cpp serves a single fixed model`;
887
890
  }
888
- async function probeLlamaCppProps(base, ctx) {
889
- const opts = { url: `${base}/props`, timeoutMs: ctx.httpTimeoutMs };
890
- const result = await (ctx.signal ? probeJson({ ...opts, signal: ctx.signal }) : probeJson(opts));
891
- if (!result.ok || !result.data) return {};
892
- const data = result.data;
891
+ async function probeLlamaCppProps(base, ctx, modelId) {
892
+ const request = async (url2) => {
893
+ const opts = { url: url2, timeoutMs: ctx.httpTimeoutMs };
894
+ const result = await (ctx.signal ? probeJson({ ...opts, signal: ctx.signal }) : probeJson(opts));
895
+ return result.ok && result.data ? result.data : null;
896
+ };
897
+ const router = await request(`${base}/props`);
898
+ if (router === null) return {};
899
+ const selected = typeof router.total_slots === "number" || !modelId ? null : await request(`${base}/props?model=${encodeURIComponent(modelId)}`);
900
+ const data = selected ?? router;
893
901
  const enrichment = {};
894
902
  const caps = {};
895
903
  const nCtx = data.default_generation_settings?.n_ctx;
@@ -898,9 +906,12 @@ async function probeLlamaCppProps(base, ctx) {
898
906
  if (typeof nPredict === "number" && nPredict > 0) caps.maxTokens = nPredict;
899
907
  const vision = data.modalities?.vision;
900
908
  if (typeof vision === "boolean") caps.vision = vision;
909
+ const totalSlots = data.total_slots;
910
+ if (typeof totalSlots === "number" && Number.isInteger(totalSlots) && totalSlots > 0) caps.parallelSlots = totalSlots;
901
911
  if (Object.keys(caps).length > 0) enrichment.discoveredCapabilities = caps;
902
- if (typeof data.build_info === "string" && data.build_info.length > 0) {
903
- enrichment.serverVersion = data.build_info;
912
+ const buildInfo = data.build_info ?? router.build_info;
913
+ if (typeof buildInfo === "string" && buildInfo.length > 0) {
914
+ enrichment.serverVersion = buildInfo;
904
915
  }
905
916
  return enrichment;
906
917
  }
@@ -1785,8 +1796,8 @@ var llamacppRuntime = {
1785
1796
  const healthOpts = { url: `${base}/health`, timeoutMs: ctx.httpTimeoutMs };
1786
1797
  const health = await (ctx.signal ? probeHttp({ ...healthOpts, signal: ctx.signal }) : probeHttp(healthOpts));
1787
1798
  if (!health.ok) return health;
1788
- const props = await probeLlamaCppProps(base, ctx);
1789
1799
  const status = await probeLlamaCppModelStatus(base, target, ctx);
1800
+ const props = await probeLlamaCppProps(base, ctx, status.modelId ?? target.defaultModel);
1790
1801
  const catalog = await probeOpenAIModelCatalog(base, ctx);
1791
1802
  const result = { ok: true };
1792
1803
  if (catalog.models.length > 0) result.models = catalog.models;
@@ -1795,7 +1806,8 @@ var llamacppRuntime = {
1795
1806
  if (typeof health.latencyMs === "number") result.latencyMs = health.latencyMs;
1796
1807
  const discoveredCapabilities = {
1797
1808
  ...props.discoveredCapabilities ?? {},
1798
- ...status.discoveredCapabilities ?? {}
1809
+ ...status.discoveredCapabilities ?? {},
1810
+ ...props.discoveredCapabilities?.parallelSlots !== void 0 ? { parallelSlots: props.discoveredCapabilities.parallelSlots } : {}
1799
1811
  };
1800
1812
  if (Object.keys(discoveredCapabilities).length > 0) {
1801
1813
  result.discoveredCapabilities = discoveredCapabilities;
@@ -1866,7 +1878,7 @@ var llamacppAnthropicRuntime = {
1866
1878
  };
1867
1879
  const head = await (ctx.signal ? probeHttp({ ...headOpts, signal: ctx.signal }) : probeHttp(headOpts));
1868
1880
  if (!head.ok) return head;
1869
- const props = await probeLlamaCppProps(base, ctx);
1881
+ const props = await probeLlamaCppProps(base, ctx, target.defaultModel);
1870
1882
  const enriched = { ...head };
1871
1883
  if (props.discoveredCapabilities) enriched.discoveredCapabilities = props.discoveredCapabilities;
1872
1884
  if (props.serverVersion) enriched.serverVersion = props.serverVersion;
@@ -2018,7 +2030,7 @@ var llamacppCompletionRuntime = {
2018
2030
  const healthOpts = { url: `${base}/health`, timeoutMs: ctx.httpTimeoutMs };
2019
2031
  const health = await (ctx.signal ? probeHttp({ ...healthOpts, signal: ctx.signal }) : probeHttp(healthOpts));
2020
2032
  if (!health.ok) return health;
2021
- const props = await probeLlamaCppProps(base, ctx);
2033
+ const props = await probeLlamaCppProps(base, ctx, target.defaultModel);
2022
2034
  const status = await probeLlamaCppModelStatus(base, target, ctx);
2023
2035
  const enriched = { ...health };
2024
2036
  const discoveredCapabilities = {
@@ -2140,7 +2152,7 @@ var llamacppEmbedRuntime = {
2140
2152
  if (!probeResponse.ok) {
2141
2153
  return { ok: false, error: `/embedding not available: HTTP ${probeResponse.status}` };
2142
2154
  }
2143
- const props = await probeLlamaCppProps(base, ctx);
2155
+ const props = await probeLlamaCppProps(base, ctx, target.defaultModel);
2144
2156
  const result = { ok: true };
2145
2157
  if (health.latencyMs !== void 0) result.latencyMs = health.latencyMs;
2146
2158
  if (props.discoveredCapabilities) result.discoveredCapabilities = props.discoveredCapabilities;
@@ -2257,7 +2269,7 @@ var llamacppRerankRuntime = {
2257
2269
  if (!(probeResponse.status === 200 || probeResponse.status === 202)) {
2258
2270
  return { ok: false, error: `/reranking not available: HTTP ${probeResponse.status}` };
2259
2271
  }
2260
- const props = await probeLlamaCppProps(base, ctx);
2272
+ const props = await probeLlamaCppProps(base, ctx, target.defaultModel);
2261
2273
  const result = { ok: true };
2262
2274
  if (health.latencyMs !== void 0) result.latencyMs = health.latencyMs;
2263
2275
  if (props.discoveredCapabilities) result.discoveredCapabilities = props.discoveredCapabilities;
@@ -2470,15 +2482,15 @@ function foldLmStudioModels(models) {
2470
2482
  return [...byKey.values()];
2471
2483
  }
2472
2484
  function rememberHostCatalog(target, models) {
2473
- const rootUrl = lmStudioRootUrl(target.url ?? "");
2474
- if (!rootUrl) return;
2475
- catalogsByHost.set(rootUrl, { targetId: target.id, rootUrl, models: foldLmStudioModels(models) });
2485
+ const rootUrl2 = lmStudioRootUrl(target.url ?? "");
2486
+ if (!rootUrl2) return;
2487
+ catalogsByHost.set(rootUrl2, { targetId: target.id, rootUrl: rootUrl2, models: foldLmStudioModels(models) });
2476
2488
  }
2477
2489
  function peerTargetsFor(target, instanceId) {
2478
- const rootUrl = lmStudioRootUrl(target.url ?? "");
2490
+ const rootUrl2 = lmStudioRootUrl(target.url ?? "");
2479
2491
  const peers = [];
2480
2492
  for (const catalog of catalogsByHost.values()) {
2481
- if (catalog.rootUrl === rootUrl) continue;
2493
+ if (catalog.rootUrl === rootUrl2) continue;
2482
2494
  if (catalog.models.some((model) => model.loadedInstances.some((instance) => instance.id === instanceId))) {
2483
2495
  peers.push(catalog.targetId);
2484
2496
  }
@@ -2694,6 +2706,8 @@ function capabilities(model, instance) {
2694
2706
  out.reasoning = model.reasoningOptions.some((option) => option !== "off");
2695
2707
  const contextWindow = loadedContextLength(instance) ?? model.maxContextLength;
2696
2708
  if (contextWindow !== void 0) out.contextWindow = contextWindow;
2709
+ const parallel = instance?.config.parallel;
2710
+ if (typeof parallel === "number" && Number.isInteger(parallel) && parallel > 0) out.parallelSlots = parallel;
2697
2711
  return out;
2698
2712
  }
2699
2713
  function statusFor(model, instance, reasoningLevels) {
@@ -2745,6 +2759,7 @@ function probeFromCatalog(catalog, target) {
2745
2759
  const selected = resolveModel(models, configuredModel(target));
2746
2760
  const result = {
2747
2761
  ok: true,
2762
+ discoveredCapabilities: { parallelSlots: 1 },
2748
2763
  models: ids,
2749
2764
  modelCapabilities,
2750
2765
  modelStates,
@@ -2757,7 +2772,7 @@ function probeFromCatalog(catalog, target) {
2757
2772
  };
2758
2773
  if (catalog.latencyMs !== void 0) result.latencyMs = catalog.latencyMs;
2759
2774
  if (selected) {
2760
- result.discoveredCapabilities = capabilities(selected.model, selected.instance);
2775
+ result.discoveredCapabilities = { parallelSlots: 1, ...capabilities(selected.model, selected.instance) };
2761
2776
  result.capabilityModelId = configuredModel(target) ?? selected.model.key;
2762
2777
  }
2763
2778
  const loaded = models.flatMap(
@@ -2838,6 +2853,10 @@ var defaultCapabilities22 = {
2838
2853
  function positiveNumber3(value) {
2839
2854
  return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : void 0;
2840
2855
  }
2856
+ function ollamaParallelSlots() {
2857
+ const parsed = Number(process.env.OLLAMA_NUM_PARALLEL);
2858
+ return Number.isInteger(parsed) && parsed > 0 ? parsed : 1;
2859
+ }
2841
2860
  async function probeResidentModelStates(base, ctx) {
2842
2861
  const opts = { url: `${base}/api/ps`, timeoutMs: ctx.httpTimeoutMs };
2843
2862
  const result = await (ctx.signal ? probeJson({ ...opts, signal: ctx.signal }) : probeJson(opts));
@@ -2874,7 +2893,7 @@ var ollamaNativeRuntime = {
2874
2893
  if (result.latencyMs !== void 0) failed.latencyMs = result.latencyMs;
2875
2894
  return failed;
2876
2895
  }
2877
- const out = { ok: true };
2896
+ const out = { ok: true, discoveredCapabilities: { parallelSlots: ollamaParallelSlots() } };
2878
2897
  if (result.latencyMs !== void 0) out.latencyMs = result.latencyMs;
2879
2898
  const modelStates = await probeResidentModelStates(base, ctx);
2880
2899
  if (modelStates) out.modelStates = modelStates;
@@ -2951,6 +2970,164 @@ var vllm_default = makeOpenAICompatRuntime({
2951
2970
  healthPath: "/health"
2952
2971
  });
2953
2972
 
2973
+ // src/domains/providers/runtimes/protocol/litellm.ts
2974
+ init_esm_shims();
2975
+ var LITELLM_PROVIDER = "litellm";
2976
+ var defaultCapabilities25 = {
2977
+ chat: true,
2978
+ tools: false,
2979
+ reasoning: false,
2980
+ vision: false,
2981
+ audio: false,
2982
+ embeddings: false,
2983
+ rerank: false,
2984
+ fim: false,
2985
+ structuredOutputs: "json-schema",
2986
+ contextWindow: CLIO_MIN_CONTEXT_WINDOW,
2987
+ maxTokens: CLIO_MIN_MAX_OUTPUT_TOKENS
2988
+ };
2989
+ function rootUrl(target) {
2990
+ if (!target.url) return null;
2991
+ const trimmed = stripTrailingSlash(target.url);
2992
+ return trimmed.endsWith("/v1") ? trimmed.slice(0, -"/v1".length) : trimmed;
2993
+ }
2994
+ function bearerHeaders(target, ctx) {
2995
+ const headers = { ...target.auth?.headers ?? {} };
2996
+ const envName = target.auth?.apiKeyEnvVar;
2997
+ const fromEnv = envName && ctx.credentialsPresent.has(envName) ? process.env[envName]?.trim() : void 0;
2998
+ const token = ctx.authToken?.trim() || fromEnv;
2999
+ if (token) headers.authorization = `Bearer ${token}`;
3000
+ return headers;
3001
+ }
3002
+ function positiveInteger(value) {
3003
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.floor(value) : void 0;
3004
+ }
3005
+ function boolean(value) {
3006
+ return typeof value === "boolean" ? value : void 0;
3007
+ }
3008
+ function capabilitiesFromLiteLLMModelInfo(info) {
3009
+ const caps = {};
3010
+ const contextWindow = positiveInteger(info.max_input_tokens) ?? positiveInteger(info.max_tokens);
3011
+ if (contextWindow !== void 0) caps.contextWindow = contextWindow;
3012
+ const maxTokens = positiveInteger(info.max_output_tokens);
3013
+ if (maxTokens !== void 0) caps.maxTokens = maxTokens;
3014
+ const tools = boolean(info.supports_function_calling);
3015
+ if (tools !== void 0) caps.tools = tools;
3016
+ const vision = boolean(info.supports_vision);
3017
+ if (vision !== void 0) caps.vision = vision;
3018
+ const reasoning = boolean(info.supports_reasoning);
3019
+ if (reasoning !== void 0) caps.reasoning = reasoning;
3020
+ const audio = boolean(info.supports_audio_input);
3021
+ if (audio !== void 0) caps.audio = audio;
3022
+ if (info.mode === "embedding") {
3023
+ caps.chat = false;
3024
+ caps.embeddings = true;
3025
+ }
3026
+ if (info.mode === "rerank") {
3027
+ caps.chat = false;
3028
+ caps.rerank = true;
3029
+ }
3030
+ if (info.mode === "chat") caps.chat = true;
3031
+ if (boolean(info.supports_response_schema) === true) caps.structuredOutputs = "json-schema";
3032
+ return caps;
3033
+ }
3034
+ var EMPTY_CATALOG = { models: [], modelCapabilities: {}, modelStates: {}, deployments: {} };
3035
+ async function fetchCatalog(base, ctx, headers) {
3036
+ const detailOpts = { url: `${base}/v1/model/info`, timeoutMs: ctx.httpTimeoutMs, headers };
3037
+ const detail = await (ctx.signal ? probeJson({ ...detailOpts, signal: ctx.signal }) : probeJson(detailOpts));
3038
+ if (detail.ok && Array.isArray(detail.data?.data)) {
3039
+ const catalog = { models: [], modelCapabilities: {}, modelStates: {}, deployments: {} };
3040
+ for (const row of detail.data.data) {
3041
+ if (typeof row?.model_name !== "string" || row.model_name.length === 0) continue;
3042
+ const alias = row.model_name;
3043
+ if (catalog.deployments[alias] !== void 0) continue;
3044
+ catalog.models.push(alias);
3045
+ const caps = row.model_info ? capabilitiesFromLiteLLMModelInfo(row.model_info) : {};
3046
+ if (Object.keys(caps).length > 0) catalog.modelCapabilities[alias] = caps;
3047
+ const upstream = row.litellm_params?.model;
3048
+ const apiBase = row.litellm_params?.api_base;
3049
+ catalog.deployments[alias] = {
3050
+ model: typeof upstream === "string" ? upstream : alias,
3051
+ ...typeof apiBase === "string" ? { apiBase } : {}
3052
+ };
3053
+ }
3054
+ if (catalog.models.length > 0) return catalog;
3055
+ }
3056
+ const listOpts = { url: `${base}/v1/models`, timeoutMs: ctx.httpTimeoutMs, headers };
3057
+ const list = await (ctx.signal ? probeJson({ ...listOpts, signal: ctx.signal }) : probeJson(listOpts));
3058
+ if (!list.ok || !Array.isArray(list.data?.data)) return EMPTY_CATALOG;
3059
+ const models = list.data.data.map((row) => typeof row?.id === "string" ? row.id : null).filter((id) => id !== null && id.length > 0);
3060
+ return { models, modelCapabilities: {}, modelStates: {}, deployments: {} };
3061
+ }
3062
+ var litellmRuntime = {
3063
+ id: "litellm",
3064
+ displayName: "LiteLLM gateway",
3065
+ kind: "http",
3066
+ tier: "protocol",
3067
+ apiFamily: "openai-completions",
3068
+ auth: "api-key",
3069
+ defaultCapabilities: defaultCapabilities25,
3070
+ async probe(target, ctx) {
3071
+ const base = rootUrl(target);
3072
+ if (!base) return { ok: false, error: "target has no url" };
3073
+ const headers = bearerHeaders(target, ctx);
3074
+ const liveOpts = { url: `${base}/health/liveliness`, timeoutMs: ctx.httpTimeoutMs };
3075
+ const live = await (ctx.signal ? probeJson({ ...liveOpts, signal: ctx.signal }) : probeJson(liveOpts));
3076
+ if (!live.ok) return { ok: false, error: live.error ?? "gateway is not reachable" };
3077
+ const catalog = await fetchCatalog(base, ctx, headers);
3078
+ if (catalog.models.length === 0) {
3079
+ const result2 = {
3080
+ ok: false,
3081
+ error: "gateway is live but served no model catalog; check the target's API key"
3082
+ };
3083
+ if (live.latencyMs !== void 0) result2.latencyMs = live.latencyMs;
3084
+ return result2;
3085
+ }
3086
+ const result = { ok: true, models: catalog.models };
3087
+ if (live.latencyMs !== void 0) result.latencyMs = live.latencyMs;
3088
+ if (Object.keys(catalog.modelCapabilities).length > 0) {
3089
+ result.modelCapabilities = catalog.modelCapabilities;
3090
+ const selected = target.defaultModel?.trim();
3091
+ const selectedCaps = selected ? catalog.modelCapabilities[selected] : void 0;
3092
+ if (selected && selectedCaps) {
3093
+ result.discoveredCapabilities = selectedCaps;
3094
+ result.capabilityModelId = selected;
3095
+ }
3096
+ }
3097
+ const notes = [];
3098
+ const configured = target.defaultModel?.trim();
3099
+ if (configured && !catalog.models.includes(configured)) {
3100
+ notes.push(`configured model '${configured}' is not in the gateway catalog`);
3101
+ }
3102
+ const routed = Object.entries(catalog.deployments).map(([alias, deployment]) => `${alias}=${deployment.model}`).sort();
3103
+ if (routed.length > 0) notes.push(`routes: ${routed.join(", ")}`);
3104
+ if (notes.length > 0) result.notes = notes;
3105
+ return result;
3106
+ },
3107
+ async probeModels(target, ctx) {
3108
+ const base = rootUrl(target);
3109
+ if (!base) return [];
3110
+ return (await fetchCatalog(base, ctx, bearerHeaders(target, ctx))).models;
3111
+ },
3112
+ synthesizeModel(target, wireModelId, kb) {
3113
+ return synthLocalModel({
3114
+ // A LiteLLM target is a gateway whether or not settings said so. The
3115
+ // residency layer reads this to stay observe-only: the models behind an
3116
+ // alias are the proxy's to load and evict, and a Clio stream that tried
3117
+ // to manage them would be issuing load commands to a host that does not
3118
+ // take them.
3119
+ target: { ...target, gateway: true },
3120
+ wireModelId,
3121
+ kb,
3122
+ defaultCapabilities: defaultCapabilities25,
3123
+ apiFamily: "openai-completions",
3124
+ provider: LITELLM_PROVIDER,
3125
+ baseUrlForTarget: withV1
3126
+ });
3127
+ }
3128
+ };
3129
+ var litellm_default = litellmRuntime;
3130
+
2954
3131
  // src/domains/providers/runtimes/builtins.ts
2955
3132
  var BUILTIN_RUNTIMES = [
2956
3133
  alcf_default,
@@ -2974,6 +3151,7 @@ var BUILTIN_RUNTIMES = [
2974
3151
  lmstudio_default,
2975
3152
  ollama_native_default,
2976
3153
  anthropic_compat_default,
3154
+ litellm_default,
2977
3155
  openai_compat_default,
2978
3156
  sglang_default,
2979
3157
  vllm_default,
@@ -3003,4 +3181,4 @@ export {
3003
3181
  BUILTIN_RUNTIMES,
3004
3182
  registerBuiltinRuntimes
3005
3183
  };
3006
- //# sourceMappingURL=chunk-NMPKI6XL.js.map
3184
+ //# sourceMappingURL=chunk-6DB53AJS.js.map
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  clioStateDir,
11
11
  stateRootRemoved
12
- } from "./chunk-BNAZZHFG.js";
12
+ } from "./chunk-BYP5D4HI.js";
13
13
  import {
14
14
  fsyncDirectory,
15
15
  safeResourceWrite
@@ -567,4 +567,4 @@ export {
567
567
  openSession,
568
568
  resumeSession
569
569
  };
570
- //# sourceMappingURL=chunk-3BINW3FP.js.map
570
+ //# sourceMappingURL=chunk-76ONBSIA.js.map
@@ -5,7 +5,7 @@ import {
5
5
  settingsPath,
6
6
  updateSavedSettingsDocument,
7
7
  validateSettings
8
- } from "./chunk-IJ7RPIYJ.js";
8
+ } from "./chunk-VFA6GDY5.js";
9
9
  import {
10
10
  require_dist
11
11
  } from "./chunk-APJ265NV.js";
@@ -226,4 +226,4 @@ export {
226
226
  updateLayeredSettings,
227
227
  settingsSourceFor
228
228
  };
229
- //# sourceMappingURL=chunk-26LEYJZH.js.map
229
+ //# sourceMappingURL=chunk-7MCTRUCE.js.map
@@ -1,12 +1,14 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  inspectEvidence
4
- } from "./chunk-TLQJPP24.js";
4
+ } from "./chunk-BUMFYQFY.js";
5
5
  import {
6
6
  TASK_MEMORY_CONTENT_MAX_CHARS,
7
7
  TASK_MEMORY_DEFAULT_KNOWLEDGE_CAP,
8
- TASK_MEMORY_DEFAULT_PROCEDURAL_CAP
9
- } from "./chunk-ZVJ5BLO2.js";
8
+ TASK_MEMORY_DEFAULT_PROCEDURAL_CAP,
9
+ TASK_MEMORY_TELEMETRY_FILE,
10
+ parseTaskMemoryTelemetryRecord
11
+ } from "./chunk-BKFJHQCA.js";
10
12
  import {
11
13
  createRedactionTally,
12
14
  redactSecretsText
@@ -16,7 +18,10 @@ import {
16
18
  } from "./chunk-ECH6PKUQ.js";
17
19
  import {
18
20
  ceilChars
19
- } from "./chunk-RWSI4YD7.js";
21
+ } from "./chunk-UM7N4G5A.js";
22
+ import {
23
+ clioStateDir
24
+ } from "./chunk-BYP5D4HI.js";
20
25
  import {
21
26
  safeResourceWrite
22
27
  } from "./chunk-WEPFGWHJ.js";
@@ -1116,6 +1121,30 @@ function compareStrings3(a, b) {
1116
1121
  return a.localeCompare(b);
1117
1122
  }
1118
1123
 
1124
+ // src/domains/memory/task-bank-promotion.ts
1125
+ init_esm_shims();
1126
+ async function proposeInjectedTaskMemory(dataDir, input) {
1127
+ const result = { records: [], errors: [] };
1128
+ const sessionId = input.sessionId;
1129
+ const repository = canonicalMemoryRepositoryIdentity(input.cwd);
1130
+ if (sessionId === null || sessionId.length === 0 || repository === null) return result;
1131
+ for (const entry of input.entries) {
1132
+ if (entry.kind === "status") continue;
1133
+ try {
1134
+ const proposal = await proposeMemoryPromotion(
1135
+ dataDir,
1136
+ { kind: "task-bank-entry", sessionId, evidenceRefs: [`session:${sessionId}`], entry },
1137
+ { scope: "repo", repository },
1138
+ input.now ?? /* @__PURE__ */ new Date()
1139
+ );
1140
+ result.records.push(proposal.record);
1141
+ } catch (error) {
1142
+ result.errors.push(`${entry.id}: ${error instanceof Error ? error.message : String(error)}`);
1143
+ }
1144
+ }
1145
+ return result;
1146
+ }
1147
+
1119
1148
  // src/domains/memory/task-memory-handoff.ts
1120
1149
  init_esm_shims();
1121
1150
  import { existsSync, readdirSync, readFileSync as readFileSync2, statSync } from "node:fs";
@@ -1367,6 +1396,80 @@ function compareStrings4(left, right) {
1367
1396
  return left < right ? -1 : left > right ? 1 : 0;
1368
1397
  }
1369
1398
 
1399
+ // src/domains/memory/task-memory-spend.ts
1400
+ init_esm_shims();
1401
+ import { readFileSync as readFileSync3, statSync as statSync2 } from "node:fs";
1402
+ import { join as join3 } from "node:path";
1403
+ function taskMemoryStepsPath(stateDir = clioStateDir()) {
1404
+ return join3(stateDir, "memory", TASK_MEMORY_TELEMETRY_FILE);
1405
+ }
1406
+ function emptyTaskMemorySpendSummary() {
1407
+ return {
1408
+ llmSteps: 0,
1409
+ injections: 0,
1410
+ hitRate: 0,
1411
+ inputTokens: 0,
1412
+ outputTokens: 0,
1413
+ totalTokens: 0,
1414
+ modelMs: 0,
1415
+ slowestStepMs: 0,
1416
+ timeouts: 0,
1417
+ endpointBusySkips: 0,
1418
+ firstAt: null,
1419
+ lastAt: null
1420
+ };
1421
+ }
1422
+ function foldTaskMemorySpend(lines) {
1423
+ const summary = emptyTaskMemorySpendSummary();
1424
+ for (const line of lines) {
1425
+ if (line.trim().length === 0) continue;
1426
+ let parsed;
1427
+ try {
1428
+ parsed = JSON.parse(line);
1429
+ } catch {
1430
+ continue;
1431
+ }
1432
+ const record = parseTaskMemoryTelemetryRecord(parsed);
1433
+ if (record === null) continue;
1434
+ if (summary.firstAt === null || record.at < summary.firstAt) summary.firstAt = record.at;
1435
+ if (summary.lastAt === null || record.at > summary.lastAt) summary.lastAt = record.at;
1436
+ if (record.reason === "endpoint_busy") summary.endpointBusySkips += 1;
1437
+ if (record.tier !== "llm") continue;
1438
+ summary.llmSteps += 1;
1439
+ if (record.decision === "injected") summary.injections += 1;
1440
+ if (record.decision === "timeout") summary.timeouts += 1;
1441
+ summary.inputTokens += record.tokenCost.input;
1442
+ summary.outputTokens += record.tokenCost.output;
1443
+ summary.totalTokens += record.tokenCost.total;
1444
+ summary.modelMs += record.latencyMs;
1445
+ summary.slowestStepMs = Math.max(summary.slowestStepMs, record.latencyMs);
1446
+ }
1447
+ summary.hitRate = summary.llmSteps === 0 ? 0 : summary.injections / summary.llmSteps;
1448
+ return summary;
1449
+ }
1450
+ var spendCache = /* @__PURE__ */ new Map();
1451
+ function readTaskMemorySpendSummary(stateDir = clioStateDir()) {
1452
+ const path = taskMemoryStepsPath(stateDir);
1453
+ try {
1454
+ const info = statSync2(path);
1455
+ const cached = spendCache.get(path);
1456
+ if (cached !== void 0 && cached.mtimeMs === info.mtimeMs && cached.size === info.size) return cached.summary;
1457
+ const summary = foldTaskMemorySpend(readFileSync3(path, "utf8").split("\n"));
1458
+ spendCache.set(path, { mtimeMs: info.mtimeMs, size: info.size, summary });
1459
+ return summary;
1460
+ } catch {
1461
+ return emptyTaskMemorySpendSummary();
1462
+ }
1463
+ }
1464
+ function formatTaskMemorySpend(summary) {
1465
+ if (summary.llmSteps === 0) return "";
1466
+ const tokens = summary.totalTokens >= 1e3 ? `${(summary.totalTokens / 1e3).toFixed(1)}k tok` : `${summary.totalTokens} tok`;
1467
+ const seconds = summary.modelMs / 1e3;
1468
+ const time = seconds >= 60 ? `${(seconds / 60).toFixed(1)}m` : `${seconds.toFixed(1)}s`;
1469
+ const rate = `${Math.round(summary.hitRate * 100)}%`;
1470
+ return `spend ${summary.llmSteps} steps \xB7 ${tokens} \xB7 ${time} \xB7 hit ${summary.injections}/${summary.llmSteps} (${rate})`;
1471
+ }
1472
+
1370
1473
  // src/domains/memory/task-memory-status.ts
1371
1474
  init_esm_shims();
1372
1475
  function describeTaskMemoryActivity(event) {
@@ -1441,13 +1544,16 @@ export {
1441
1544
  proposeMemoryPromotion,
1442
1545
  buildMemoryPromptSection,
1443
1546
  proposeMemoryFromEvidence,
1547
+ proposeInjectedTaskMemory,
1444
1548
  renderTaskMemoryHandoffSource,
1445
1549
  parseTaskMemoryHandoffSnapshot,
1446
1550
  taskMemoryHandoffSeedOffer,
1447
1551
  seedTaskMemoryFromNewestHandoff,
1552
+ readTaskMemorySpendSummary,
1553
+ formatTaskMemorySpend,
1448
1554
  describeTaskMemoryActivity,
1449
1555
  taskMemoryBankSize,
1450
1556
  taskMemoryTracePath,
1451
1557
  createTaskMemoryTrace
1452
1558
  };
1453
- //# sourceMappingURL=chunk-TYPGUK6W.js.map
1559
+ //# sourceMappingURL=chunk-AB44T6BB.js.map