@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,4 +1,18 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ fingerprintNativeRuntime
4
+ } from "./chunk-NEKRRTYW.js";
5
+ import {
6
+ INHERITED_PROJECT_CONTEXT,
7
+ acceptInteropAgents,
8
+ declineInteropAgents,
9
+ detectInteropAgents,
10
+ interopProposals,
11
+ renderProposalEntry
12
+ } from "./chunk-SP2RXXYO.js";
13
+ import {
14
+ initializeClioHome
15
+ } from "./chunk-2OQE55CK.js";
2
16
  import {
3
17
  createDelayedManualCodeInput,
4
18
  promptOAuthSelection
@@ -13,40 +27,30 @@ import {
13
27
  import {
14
28
  credentialWriteFailed,
15
29
  printPlaintextCredentialWarning
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-GPIEI3LY.js";
26
- import {
27
- initializeClioHome
28
- } from "./chunk-XWSF374K.js";
30
+ } from "./chunk-2ANTL7MR.js";
29
31
  import {
30
32
  printError,
31
33
  printOk
32
- } from "./chunk-XK56QHLX.js";
34
+ } from "./chunk-VPKWYKEY.js";
33
35
  import {
34
36
  isOrchestratorEligibleRuntime,
35
- probeCapabilitiesForModel
36
- } from "./chunk-7RFXX52T.js";
37
+ probeCapabilitiesForModel,
38
+ readTargetModelSnapshot,
39
+ recordTargetModelSnapshot
40
+ } from "./chunk-DQITNCXG.js";
37
41
  import {
38
42
  credentialsPresent
39
- } from "./chunk-LU7P4LHA.js";
43
+ } from "./chunk-P3FOHJT4.js";
40
44
  import {
41
45
  readSettings,
42
46
  removeTargetFromSettings,
43
47
  settingsPath,
44
48
  updateSettings
45
- } from "./chunk-IJ7RPIYJ.js";
49
+ } from "./chunk-VFA6GDY5.js";
46
50
  import {
47
51
  greetLmStudio,
48
52
  registerBuiltinRuntimes
49
- } from "./chunk-NMPKI6XL.js";
53
+ } from "./chunk-6DB53AJS.js";
50
54
  import {
51
55
  buildProviderSupportEntry,
52
56
  configuredTargetsForRuntime,
@@ -54,20 +58,20 @@ import {
54
58
  listKnownModelsForRuntime,
55
59
  listProviderSupportEntries,
56
60
  supportGroupLabel
57
- } from "./chunk-IIZWH4XA.js";
61
+ } from "./chunk-HI63TFOG.js";
58
62
  import {
59
63
  openAuthStorage,
60
64
  registerClioOAuthProviders,
61
65
  resolveAuthTarget,
62
66
  resolveRuntimeAuthTarget,
63
67
  targetRequiresAuth
64
- } from "./chunk-EQ63NRB7.js";
68
+ } from "./chunk-BBVYXMFO.js";
65
69
  import {
66
70
  getRuntimeRegistry
67
71
  } from "./chunk-NUGM5KR6.js";
68
72
  import {
69
73
  getCatalogModelForRuntime
70
- } from "./chunk-PT7HYKEM.js";
74
+ } from "./chunk-VO2LKSTM.js";
71
75
  import {
72
76
  init_esm_shims
73
77
  } from "./chunk-3R73A4XB.js";
@@ -358,7 +362,8 @@ var DEFAULT_PORTS = {
358
362
  "lemonade-anthropic": 8e3,
359
363
  lemonade: 8e3,
360
364
  "anthropic-compat": 8e3,
361
- "openai-compat": 8e3
365
+ "openai-compat": 8e3,
366
+ litellm: 4e3
362
367
  };
363
368
  function parseSetupArgs(argv) {
364
369
  const out = {
@@ -523,7 +528,7 @@ function printRuntimeList(includeHidden) {
523
528
  for (const entry of listProviderSupportEntries(getRuntimeRegistry().list(), { includeHidden })) {
524
529
  const runtime = getRuntimeRegistry().get(entry.runtimeId);
525
530
  const status = runtime && entry.connectable ? auth.statusForTarget(resolveRuntimeAuthTarget(runtime), { includeFallback: false }) : null;
526
- const authLabel = runtime?.auth === "oauth" ? status?.available ? "connected" : "login" : runtime?.auth === "api-key" ? status?.available ? "credential" : "needs-key" : runtime?.auth ?? "none";
531
+ const authLabel = runtime?.auth === "oauth" ? status?.available ? "connected" : "login" : runtime?.auth === "api-key" ? status?.available ? "credential" : targetRequiresAuth({ id: entry.runtimeId, runtime: entry.runtimeId }, runtime) ? "needs-key" : "key-optional" : runtime?.auth ?? "none";
527
532
  rows.push({
528
533
  group: supportGroupLabel(entry.group),
529
534
  runtimeId: entry.runtimeId,
@@ -764,18 +769,12 @@ settings written to ${settingsPath()}
764
769
  function buildDescriptor(runtime, id, parts) {
765
770
  const descriptor = { id, runtime: runtime.id };
766
771
  if (parts.url) descriptor.url = parts.url;
767
- const wireModels = parts.wireModels?.filter((value, index, all) => value.trim().length > 0 && all.indexOf(value) === index) ?? [];
768
772
  if (parts.model) descriptor.defaultModel = parts.model;
769
- else {
770
- const firstWireModel = wireModels[0];
771
- if (firstWireModel) descriptor.defaultModel = firstWireModel;
772
- }
773
773
  const auth = {};
774
774
  if (parts.apiKeyEnv) auth.apiKeyEnvVar = parts.apiKeyEnv;
775
775
  if (parts.apiKeyRef) auth.apiKeyRef = parts.apiKeyRef;
776
776
  if (parts.oauthProfile) auth.oauthProfile = parts.oauthProfile;
777
777
  if (Object.keys(auth).length > 0) descriptor.auth = auth;
778
- if (wireModels.length > 0) descriptor.wireModels = wireModels;
779
778
  if (parts.gateway) descriptor.gateway = true;
780
779
  if (parts.lifecycle) descriptor.lifecycle = parts.lifecycle;
781
780
  const caps = {};
@@ -862,13 +861,21 @@ async function resolveSupportedWireModels(runtime, target, existing, authToken)
862
861
  if (runtime.kind === "http") {
863
862
  const probe = await runtimeProbe(runtime, target, authToken);
864
863
  if (probe?.ok && probe.models && probe.models.length > 0) {
864
+ recordTargetModelSnapshot(target, probe.models);
865
865
  return { models: [...probe.models], source: "probe", modelStates: probe.modelStates };
866
866
  }
867
867
  const discovered = await runtimeProbeModels(runtime, target, authToken);
868
- if (discovered.length > 0) return { models: discovered, source: "probe" };
868
+ if (discovered.length > 0) {
869
+ recordTargetModelSnapshot(target, discovered);
870
+ return { models: discovered, source: "probe" };
871
+ }
872
+ }
873
+ const cached = readTargetModelSnapshot(target);
874
+ if (cached && cached.models.length > 0) return { models: [...cached.models], source: "cache" };
875
+ if (existing?.wireModels && existing.wireModels.length > 0) {
876
+ recordTargetModelSnapshot(target, existing.wireModels);
877
+ return { models: [...existing.wireModels], source: "legacy" };
869
878
  }
870
- if (existing?.wireModels && existing.wireModels.length > 0)
871
- return { models: [...existing.wireModels], source: "existing" };
872
879
  return { models: [], source: "none" };
873
880
  }
874
881
  function resolveModelChoice(answer, wireModels, defaultValue) {
@@ -972,7 +979,6 @@ async function runNonInteractive(runtime, args) {
972
979
  const descriptor = buildDescriptor(runtime, args.id, {
973
980
  ...url !== void 0 ? { url } : {},
974
981
  ...model ? { model } : {},
975
- ...wireModels.length > 0 ? { wireModels } : {},
976
982
  ...apiKeyEnv !== void 0 ? { apiKeyEnv } : {},
977
983
  ...apiKeyRef !== void 0 ? { apiKeyRef } : {},
978
984
  ...oauthProfile !== void 0 ? { oauthProfile } : {},
@@ -1023,6 +1029,7 @@ async function runNonInteractive(runtime, args) {
1023
1029
  applyConfiguration(settings);
1024
1030
  updateSettings(applyConfiguration);
1025
1031
  const probe = await runtimeProbe(runtime, descriptor);
1032
+ if (probe?.ok && probe.models) recordTargetModelSnapshot(descriptor, probe.models);
1026
1033
  printSummary(settings, descriptor, probe);
1027
1034
  if (runtime.auth === "oauth" && !auth.statusForTarget(resolveRuntimeAuthTarget(runtime), { includeFallback: false }).available) {
1028
1035
  process.stdout.write(
@@ -1280,7 +1287,7 @@ Selected runtime: ${runtime.id} (${support.summary})
1280
1287
  oauthProfile = runtime.oauthProviderId ?? runtime.id;
1281
1288
  }
1282
1289
  let model = defaults.model;
1283
- let inventory = existing?.wireModels && existing.wireModels.length > 0 ? { models: [...existing.wireModels], source: "existing" } : { models: [], source: "none" };
1290
+ let inventory = { models: [], source: "none" };
1284
1291
  const tentative = buildDescriptor(runtime, targetId, {
1285
1292
  ...url !== void 0 ? { url } : {},
1286
1293
  ...apiKeyEnv !== void 0 ? { apiKeyEnv } : {},
@@ -1360,7 +1367,6 @@ Selected runtime: ${runtime.id} (${support.summary})
1360
1367
  ...apiKeyEnv !== void 0 ? { apiKeyEnv } : {},
1361
1368
  ...apiKeyRef !== void 0 ? { apiKeyRef } : {},
1362
1369
  ...oauthProfile !== void 0 ? { oauthProfile } : {},
1363
- ...wireModels.length > 0 ? { wireModels } : {},
1364
1370
  gateway: gatewayAnswer,
1365
1371
  ...defaults.lifecycle !== void 0 ? { lifecycle: defaults.lifecycle } : existing?.lifecycle !== void 0 ? { lifecycle: existing.lifecycle } : {},
1366
1372
  ...contextWindowChoice !== void 0 ? { contextWindow: contextWindowChoice } : {},
@@ -1381,6 +1387,7 @@ Selected runtime: ${runtime.id} (${support.summary})
1381
1387
  printPlaintextCredentialWarning();
1382
1388
  }
1383
1389
  const probe = await runtimeProbe(runtime, descriptor);
1390
+ if (probe?.ok && probe.models) recordTargetModelSnapshot(descriptor, probe.models);
1384
1391
  if (probe) {
1385
1392
  process.stdout.write("\n");
1386
1393
  for (const line of probeLines(descriptor, probe)) process.stdout.write(`${line}
@@ -1548,4 +1555,4 @@ export {
1548
1555
  runTargetRename,
1549
1556
  runConfigureCommand
1550
1557
  };
1551
- //# sourceMappingURL=chunk-IGWKHNIQ.js.map
1558
+ //# sourceMappingURL=chunk-UXMFQ54G.js.map
@@ -14,7 +14,7 @@ import {
14
14
  // src/domains/observability/trace-store.ts
15
15
  init_esm_shims();
16
16
  import { createHash } from "node:crypto";
17
- import { mkdirSync } from "node:fs";
17
+ import { mkdirSync, statSync } from "node:fs";
18
18
  import { createRequire } from "node:module";
19
19
  import { hostname } from "node:os";
20
20
  import { dirname, join } from "node:path";
@@ -23,6 +23,14 @@ var TRACE_DATABASE_FILE = "trace.sqlite";
23
23
  var TRACE_EVENT_POLL_LIMIT = 500;
24
24
  var TRACE_PAYLOAD_LIMIT_BYTES = 16 * 1024;
25
25
  var TRACE_WRITE_QUEUE_LIMIT = 2048;
26
+ var TRACE_RETENTION_DAYS_ENV = "CLIO_CODER_TRACE_RETENTION_DAYS";
27
+ var TRACE_MAX_BYTES_ENV = "CLIO_CODER_TRACE_MAX_BYTES";
28
+ var DEFAULT_TRACE_RETENTION_POLICY = Object.freeze({
29
+ maxAgeDays: 30,
30
+ maxBytes: 128 * 1024 * 1024
31
+ });
32
+ var MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1e3;
33
+ var VACUUM_RECLAIMABLE_FRACTION = 0.2;
26
34
  var sqliteConstructor = null;
27
35
  function warningTracingRequested() {
28
36
  const flagged = (argument) => argument === "--trace-warnings" || argument.startsWith("--trace-warnings=");
@@ -62,6 +70,27 @@ function databaseSyncConstructor() {
62
70
  function traceDatabasePath(stateDir) {
63
71
  return join(stateDir, TRACE_DATABASE_FILE);
64
72
  }
73
+ function resolveTraceRetentionPolicy(overrides = {}, environment = process.env) {
74
+ const maxAgeDays = overrides.maxAgeDays ?? parsePositiveRetentionNumber(environment[TRACE_RETENTION_DAYS_ENV], TRACE_RETENTION_DAYS_ENV, 1);
75
+ const maxBytes = overrides.maxBytes ?? parsePositiveRetentionNumber(environment[TRACE_MAX_BYTES_ENV], TRACE_MAX_BYTES_ENV, 1024 * 1024);
76
+ return {
77
+ maxAgeDays: requirePositiveRetentionNumber(maxAgeDays, TRACE_RETENTION_DAYS_ENV, 1),
78
+ maxBytes: requirePositiveRetentionNumber(maxBytes, TRACE_MAX_BYTES_ENV, 1024 * 1024)
79
+ };
80
+ }
81
+ function parsePositiveRetentionNumber(raw, name, fallback) {
82
+ if (raw === void 0 || raw.trim().length === 0) {
83
+ return name === TRACE_RETENTION_DAYS_ENV ? DEFAULT_TRACE_RETENTION_POLICY.maxAgeDays : DEFAULT_TRACE_RETENTION_POLICY.maxBytes;
84
+ }
85
+ const value = Number(raw);
86
+ return requirePositiveRetentionNumber(value, name, fallback);
87
+ }
88
+ function requirePositiveRetentionNumber(value, name, minimum) {
89
+ if (!Number.isSafeInteger(value) || value < minimum) {
90
+ throw new Error(`${name} must be an integer of at least ${minimum}`);
91
+ }
92
+ return value;
93
+ }
65
94
  var TraceSchemaVersionError = class extends Error {
66
95
  constructor(found) {
67
96
  super(
@@ -221,8 +250,9 @@ function reconcileAbandonedRuns(db) {
221
250
  }
222
251
  }
223
252
  var TraceStore = class {
224
- constructor(path) {
253
+ constructor(path, options = {}) {
225
254
  this.path = path;
255
+ this.retention = resolveTraceRetentionPolicy(options.retention);
226
256
  mkdirSync(dirname(path), { recursive: true });
227
257
  this.db = new (databaseSyncConstructor())(path);
228
258
  applyConnectionPragmas(this.db);
@@ -236,6 +266,7 @@ var TraceStore = class {
236
266
  }
237
267
  path;
238
268
  db;
269
+ retention;
239
270
  close() {
240
271
  this.db.close();
241
272
  }
@@ -249,6 +280,72 @@ var TraceStore = class {
249
280
  throw error;
250
281
  }
251
282
  }
283
+ /**
284
+ * Remove whole terminal runs, including all of their dependent rows.
285
+ *
286
+ * Age pruning runs first. If the allocated database is still above the byte
287
+ * limit, the oldest remaining terminal runs are removed until the live page
288
+ * set fits or only queued/running runs remain. A live run is never a candidate.
289
+ */
290
+ prune(policy = this.retention, now = (/* @__PURE__ */ new Date()).toISOString()) {
291
+ const resolved = resolveTraceRetentionPolicy(policy);
292
+ const nowMs = Date.parse(now);
293
+ if (!Number.isFinite(nowMs)) throw new Error(`trace prune time is invalid: ${now}`);
294
+ const bytesBefore = traceDatabaseFootprintBytes(this.path);
295
+ let rowsRemoved = 0;
296
+ let runsRemoved = 0;
297
+ const removed = /* @__PURE__ */ new Set();
298
+ const cutoff = new Date(Math.max(0, nowMs - resolved.maxAgeDays * MILLISECONDS_PER_DAY)).toISOString();
299
+ const ageCandidates = this.db.prepare(
300
+ "SELECT run_id FROM runs WHERE status IN ('success','fail') AND ended_at IS NOT NULL AND ended_at < ? ORDER BY ended_at, started_at, run_id"
301
+ ).all(cutoff);
302
+ if (ageCandidates.length > 0) {
303
+ this.transaction(() => {
304
+ for (const candidate of ageCandidates) {
305
+ rowsRemoved += deleteTraceRun(this.db, candidate.run_id);
306
+ runsRemoved += 1;
307
+ removed.add(candidate.run_id);
308
+ }
309
+ });
310
+ }
311
+ let pages = tracePageStats(this.db);
312
+ if (pages.usedBytes > resolved.maxBytes) {
313
+ const sizeCandidates = this.db.prepare(
314
+ "SELECT run_id FROM runs WHERE status IN ('success','fail') AND ended_at IS NOT NULL ORDER BY ended_at, started_at, run_id"
315
+ ).all();
316
+ this.transaction(() => {
317
+ for (const candidate of sizeCandidates) {
318
+ if (pages.usedBytes <= resolved.maxBytes) break;
319
+ if (removed.has(candidate.run_id)) continue;
320
+ rowsRemoved += deleteTraceRun(this.db, candidate.run_id);
321
+ runsRemoved += 1;
322
+ removed.add(candidate.run_id);
323
+ pages = tracePageStats(this.db);
324
+ }
325
+ });
326
+ }
327
+ pages = tracePageStats(this.db);
328
+ const reclaimableFraction = pages.pageCount === 0 ? 0 : pages.freePages / pages.pageCount;
329
+ const sizeNeedsReclaim = pages.allocatedBytes > resolved.maxBytes && pages.freePages > 0;
330
+ const vacuumed = rowsRemoved > 0 && pages.freePages > 0 && (reclaimableFraction >= VACUUM_RECLAIMABLE_FRACTION || sizeNeedsReclaim);
331
+ if (vacuumed) {
332
+ this.db.exec("VACUUM");
333
+ this.db.prepare("PRAGMA wal_checkpoint(TRUNCATE)").get();
334
+ }
335
+ const protectedRuns = Number(
336
+ this.db.prepare("SELECT COUNT(*) AS count FROM runs WHERE status IN ('queued','running')").get().count
337
+ );
338
+ const bytesAfter = traceDatabaseFootprintBytes(this.path);
339
+ return {
340
+ runsRemoved,
341
+ rowsRemoved,
342
+ bytesBefore,
343
+ bytesAfter,
344
+ bytesRemoved: Math.max(0, bytesBefore - bytesAfter),
345
+ vacuumed,
346
+ protectedRuns
347
+ };
348
+ }
252
349
  upsertRun(input, at = (/* @__PURE__ */ new Date()).toISOString()) {
253
350
  this.transaction(() => {
254
351
  this.db.prepare(`INSERT INTO runs
@@ -533,6 +630,7 @@ var TraceStore = class {
533
630
  startedAt: at
534
631
  });
535
632
  });
633
+ this.prune(this.retention, at);
536
634
  }
537
635
  /**
538
636
  * Record one fact about a turn the operator ran in the chat loop.
@@ -634,8 +732,42 @@ var TraceStore = class {
634
732
  startedAt: input.at
635
733
  });
636
734
  });
735
+ this.prune(this.retention, input.at);
637
736
  }
638
737
  };
738
+ function tracePageStats(db) {
739
+ const pageSize = Number(db.prepare("PRAGMA page_size").get().page_size);
740
+ const pageCount = Number(db.prepare("PRAGMA page_count").get().page_count);
741
+ const freePages = Number(
742
+ db.prepare("PRAGMA freelist_count").get().freelist_count
743
+ );
744
+ return {
745
+ pageCount,
746
+ freePages,
747
+ allocatedBytes: pageCount * pageSize,
748
+ usedBytes: Math.max(0, pageCount - freePages) * pageSize
749
+ };
750
+ }
751
+ function deleteTraceRun(db, runId) {
752
+ let rows = 0;
753
+ for (const table of ["events", "envelopes", "gate_results", "agent_sessions", "processes", "phases", "runs"]) {
754
+ const result = db.prepare(`DELETE FROM ${table} WHERE run_id=?`).run(runId);
755
+ rows += Number(result.changes);
756
+ }
757
+ return rows;
758
+ }
759
+ function traceDatabaseFootprintBytes(path) {
760
+ let total = 0;
761
+ for (const candidate of [path, `${path}-wal`, `${path}-shm`]) {
762
+ try {
763
+ total += statSync(candidate).size;
764
+ } catch (error) {
765
+ const code = typeof error === "object" && error !== null && "code" in error ? String(error.code) : "";
766
+ if (code !== "ENOENT") throw error;
767
+ }
768
+ }
769
+ return total;
770
+ }
639
771
  var TraceReader = class {
640
772
  constructor(path) {
641
773
  this.path = path;
@@ -669,6 +801,39 @@ var TraceReader = class {
669
801
  clampInt(limit, 1, TRACE_EVENT_POLL_LIMIT)
670
802
  );
671
803
  }
804
+ /**
805
+ * Per-kind event tallies for one run.
806
+ *
807
+ * Aggregated in SQL rather than by reading rows, so `payload_json` and the
808
+ * free-form event name are never loaded at all. That is the point: a caller
809
+ * that only ever wants shapes should not be holding the payloads in memory
810
+ * on the way to counting them.
811
+ */
812
+ eventKindCounts(runId) {
813
+ return this.db.prepare("SELECT type, COUNT(*) AS count FROM events WHERE run_id=? GROUP BY type ORDER BY count DESC, type").all(runId);
814
+ }
815
+ /** Total events and the wall span they cover, without reading one of them. */
816
+ eventSpan(runId) {
817
+ const row = this.db.prepare(
818
+ `SELECT COUNT(*) AS total, MIN(started_at) AS firstAt,
819
+ MAX(COALESCE(ended_at, started_at)) AS lastAt FROM events WHERE run_id=?`
820
+ ).get(runId);
821
+ return row ?? { total: 0, firstAt: null, lastAt: null };
822
+ }
823
+ /**
824
+ * Per-kind process tallies for one run.
825
+ *
826
+ * Same reason as {@link eventKindCounts}, and more sharply: a process row
827
+ * carries the command line, the pid, and the host, none of which a shape
828
+ * count needs.
829
+ */
830
+ processKindCounts(runId) {
831
+ return this.db.prepare(
832
+ `SELECT kind, COUNT(*) AS total,
833
+ SUM(CASE WHEN ended_at IS NULL THEN 1 ELSE 0 END) AS running
834
+ FROM processes WHERE run_id=? GROUP BY kind ORDER BY total DESC, kind`
835
+ ).all(runId);
836
+ }
672
837
  processes(runId) {
673
838
  return this.db.prepare("SELECT * FROM processes WHERE run_id=? ORDER BY ended_at IS NOT NULL, id").all(runId);
674
839
  }
@@ -991,8 +1156,11 @@ function finiteNonNegative(value) {
991
1156
 
992
1157
  export {
993
1158
  TRACE_EVENT_POLL_LIMIT,
1159
+ DEFAULT_TRACE_RETENTION_POLICY,
994
1160
  traceDatabasePath,
1161
+ resolveTraceRetentionPolicy,
1162
+ TraceStore,
995
1163
  TraceReader,
996
1164
  createDispatchTraceMirror
997
1165
  };
998
- //# sourceMappingURL=chunk-HFSBBKSQ.js.map
1166
+ //# sourceMappingURL=chunk-V5DHCITQ.js.map
@@ -1,5 +1,15 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
+ sha256
4
+ } from "./chunk-B7OBL7PK.js";
5
+ import {
6
+ resolvePackageRoot
7
+ } from "./chunk-IWHMRKLL.js";
8
+ import {
9
+ require_dist
10
+ } from "./chunk-APJ265NV.js";
11
+ import {
12
+ __toESM,
3
13
  init_esm_shims
4
14
  } from "./chunk-3R73A4XB.js";
5
15
 
@@ -8,8 +18,8 @@ init_esm_shims();
8
18
  function compareStrings(a, b) {
9
19
  return a.localeCompare(b);
10
20
  }
11
- function topTwoSegments(path) {
12
- const parts = path.split("/").slice(0, -1);
21
+ function topTwoSegments(path2) {
22
+ const parts = path2.split("/").slice(0, -1);
13
23
  if (parts.length === 0) return ".";
14
24
  return parts.slice(0, 2).join("/");
15
25
  }
@@ -115,7 +125,104 @@ function renderCodewikiDigest(codewiki, tokenBudget = 1200) {
115
125
  return fitLines(lines, tokenBudget);
116
126
  }
117
127
 
128
+ // src/domains/prompts/fragment-loader.ts
129
+ init_esm_shims();
130
+ var import_yaml = __toESM(require_dist(), 1);
131
+ import { readdirSync, readFileSync } from "node:fs";
132
+ import path from "node:path";
133
+ var frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
134
+ var fragmentIdRegex = /^[a-z0-9-]+(?:\.[a-z0-9-]+)+$/;
135
+ function defaultRootDir() {
136
+ return path.join(resolvePackageRoot(), "src", "domains", "prompts", "fragments");
137
+ }
138
+ function walk(root) {
139
+ const out = [];
140
+ let entries;
141
+ try {
142
+ entries = readdirSync(root, { withFileTypes: true });
143
+ } catch {
144
+ return out;
145
+ }
146
+ for (const entry of entries) {
147
+ const full = path.join(root, entry.name);
148
+ if (entry.isDirectory()) {
149
+ out.push(...walk(full));
150
+ continue;
151
+ }
152
+ if (entry.isFile() && entry.name.endsWith(".md")) {
153
+ out.push(full);
154
+ }
155
+ }
156
+ return out.sort((left, right) => left.localeCompare(right));
157
+ }
158
+ function parseFragment(filePath, rootDir) {
159
+ const raw = readFileSync(filePath, "utf8");
160
+ const rawRel = path.relative(rootDir, filePath);
161
+ const relPath = rawRel.split(path.sep).join("/");
162
+ const match = raw.match(frontmatterRegex);
163
+ if (!match) {
164
+ throw new Error(`fragment-loader: ${relPath}: missing or malformed YAML frontmatter`);
165
+ }
166
+ const frontmatterText = match[1] ?? "";
167
+ const body = match[2] ?? "";
168
+ let parsed;
169
+ try {
170
+ parsed = import_yaml.default.parse(frontmatterText);
171
+ } catch (err) {
172
+ const reason = err instanceof Error ? err.message : String(err);
173
+ throw new Error(`fragment-loader: ${relPath}: invalid YAML frontmatter (${reason})`);
174
+ }
175
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
176
+ throw new Error(`fragment-loader: ${relPath}: frontmatter must be a YAML object`);
177
+ }
178
+ const fm = parsed;
179
+ const id = fm.id;
180
+ if (typeof id !== "string" || !fragmentIdRegex.test(id)) {
181
+ throw new Error(`fragment-loader: ${relPath}: frontmatter.id must be a dot-separated namespace`);
182
+ }
183
+ const version = fm.version;
184
+ if (version !== 1) {
185
+ throw new Error(`fragment-loader: ${relPath}: frontmatter.version must be 1`);
186
+ }
187
+ const description = fm.description;
188
+ if (typeof description !== "string" || description.trim() === "") {
189
+ throw new Error(`fragment-loader: ${relPath}: frontmatter.description must be a non-empty string`);
190
+ }
191
+ const dynamicRaw = fm.dynamic;
192
+ if (dynamicRaw !== void 0 && typeof dynamicRaw !== "boolean") {
193
+ throw new Error(`fragment-loader: ${relPath}: frontmatter.dynamic must be a boolean when present`);
194
+ }
195
+ return {
196
+ path: filePath,
197
+ relPath,
198
+ id,
199
+ version,
200
+ description,
201
+ dynamic: dynamicRaw === true,
202
+ body,
203
+ contentHash: sha256(raw)
204
+ };
205
+ }
206
+ function loadFragments(options) {
207
+ const rootDir = typeof options === "string" ? options : options?.rootDir;
208
+ const resolvedRoot = rootDir ? path.resolve(rootDir) : defaultRootDir();
209
+ const files = walk(resolvedRoot);
210
+ const byId = /* @__PURE__ */ new Map();
211
+ for (const file of files) {
212
+ const fragment = parseFragment(file, resolvedRoot);
213
+ const existing = byId.get(fragment.id);
214
+ if (existing) {
215
+ throw new Error(
216
+ `fragment-loader: duplicate fragment id "${fragment.id}" in ${existing.relPath} and ${fragment.relPath}`
217
+ );
218
+ }
219
+ byId.set(fragment.id, fragment);
220
+ }
221
+ return { byId, rootDir: resolvedRoot };
222
+ }
223
+
118
224
  export {
119
- renderCodewikiDigest
225
+ renderCodewikiDigest,
226
+ loadFragments
120
227
  };
121
- //# sourceMappingURL=chunk-5WIGXA4T.js.map
228
+ //# sourceMappingURL=chunk-VAZSBTKF.js.map
@@ -25,7 +25,7 @@ import {
25
25
  ceilChars,
26
26
  contentChars,
27
27
  estimateAgentMessageTokens
28
- } from "./chunk-RWSI4YD7.js";
28
+ } from "./chunk-UM7N4G5A.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-VHN4MY6O.js.map
677
+ //# sourceMappingURL=chunk-VEO4AP2K.js.map