@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
@@ -2,28 +2,31 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  canonicalJson,
4
4
  sha256
5
- } from "./chunk-TLQJPP24.js";
5
+ } from "./chunk-B7OBL7PK.js";
6
6
  import {
7
7
  addResponseModelIdObservationCount,
8
8
  emptyResponseModelIdObservationCounts,
9
9
  responseModelIdObservationFromRecord
10
- } from "./chunk-YS5VLNH5.js";
10
+ } from "./chunk-QREDIESB.js";
11
+ import {
12
+ uncachedPrefillTokens
13
+ } from "./chunk-3DPEIQKN.js";
11
14
  import {
12
15
  ToolNames
13
- } from "./chunk-CGKSTWHD.js";
16
+ } from "./chunk-K6BSR66V.js";
14
17
  import {
15
18
  ceilChars,
16
19
  extractReasoningTokens
17
- } from "./chunk-RWSI4YD7.js";
20
+ } from "./chunk-UM7N4G5A.js";
18
21
  import {
19
22
  settingsPath
20
- } from "./chunk-IJ7RPIYJ.js";
23
+ } from "./chunk-VFA6GDY5.js";
21
24
  import {
22
25
  expandConfigPath
23
26
  } from "./chunk-SST6Z5JA.js";
24
27
  import {
25
28
  isEngineContextOverflow
26
- } from "./chunk-FCSXB6T2.js";
29
+ } from "./chunk-UOSL25KY.js";
27
30
  import {
28
31
  init_esm_shims
29
32
  } from "./chunk-3R73A4XB.js";
@@ -371,10 +374,17 @@ function sumRunUsage(messages) {
371
374
  }
372
375
  return summary;
373
376
  }
374
- function backendCacheVerdict(input, cacheRead) {
377
+ function classifyCacheUsage(input, cacheRead) {
375
378
  if (cacheRead > 0) return input >= 2e3 ? "partial" : "hot";
376
379
  return input >= 2e3 ? "cold" : "small";
377
380
  }
381
+ function backendCacheVerdict(input, cacheRead, backend) {
382
+ if (cacheRead === 0 && backend?.cachedTokens !== null && backend?.cachedTokens !== void 0) {
383
+ const backendInput = uncachedPrefillTokens(backend);
384
+ if (backendInput !== null) return classifyCacheUsage(backendInput, backend.cachedTokens);
385
+ }
386
+ return classifyCacheUsage(input, cacheRead);
387
+ }
378
388
  function assistantSessionPayload(message, failure) {
379
389
  const text = extractText(message).trim();
380
390
  const thinking = extractThinking(message).trim();
@@ -1094,4 +1104,4 @@ export {
1094
1104
  readFileArgsAsync,
1095
1105
  expandInlineFileReferencesAsync
1096
1106
  };
1097
- //# sourceMappingURL=chunk-2HFZQUHL.js.map
1107
+ //# sourceMappingURL=chunk-F4CKPOEQ.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  enabledExtensionResourceRoots
4
- } from "./chunk-DYIM5TJT.js";
4
+ } from "./chunk-SUW5DORT.js";
5
5
  import {
6
6
  require_dist
7
7
  } from "./chunk-APJ265NV.js";
8
8
  import {
9
9
  clioConfigDir
10
- } from "./chunk-BNAZZHFG.js";
10
+ } from "./chunk-BYP5D4HI.js";
11
11
  import {
12
12
  __toESM,
13
13
  init_esm_shims
@@ -120,4 +120,4 @@ export {
120
120
  splitYamlFrontmatter,
121
121
  stringField
122
122
  };
123
- //# sourceMappingURL=chunk-DGSYXYMX.js.map
123
+ //# sourceMappingURL=chunk-FEFIFZTL.js.map
@@ -150,10 +150,13 @@ function readOutOfTurnUsageRows(stateDir) {
150
150
  function asOutOfTurnUsageRow(value) {
151
151
  if (!isRecord(value)) return null;
152
152
  const label = value.label;
153
- if (label !== "side-question" && label !== "handoff") return null;
153
+ if (label !== "side-question" && label !== "handoff" && label !== "prewarm" && label !== "background-memory")
154
+ return null;
154
155
  if (typeof value.timestamp !== "string" || value.timestamp.length === 0) return null;
155
156
  if (!isRecord(value.usage)) return null;
156
157
  const usage = value.usage;
158
+ const timing = asTiming(value.timing);
159
+ const promptCache = asPromptCache(value.promptCache);
157
160
  return {
158
161
  label,
159
162
  sessionId: typeof value.sessionId === "string" ? value.sessionId : null,
@@ -170,7 +173,25 @@ function asOutOfTurnUsageRow(value) {
170
173
  totalTokens: numberOr0(usage.totalTokens),
171
174
  costUsd: numberOr0(usage.costUsd),
172
175
  costProvenance: asCostProvenance(usage.costProvenance)
173
- }
176
+ },
177
+ ...timing === null ? {} : { timing },
178
+ ...promptCache === null ? {} : { promptCache }
179
+ };
180
+ }
181
+ function asTiming(value) {
182
+ if (!isRecord(value)) return null;
183
+ const durationMs = numberOr0(value.durationMs);
184
+ return durationMs === 0 ? null : { durationMs };
185
+ }
186
+ function asPromptCache(value) {
187
+ if (!isRecord(value)) return null;
188
+ if (typeof value.source !== "string" || value.source.length === 0) return null;
189
+ return {
190
+ promptTokens: numberOr0(value.promptTokens),
191
+ cachedTokens: typeof value.cachedTokens === "number" ? value.cachedTokens : null,
192
+ uncachedPrefillTokens: typeof value.uncachedPrefillTokens === "number" ? value.uncachedPrefillTokens : null,
193
+ promptMs: numberOr0(value.promptMs),
194
+ source: value.source
174
195
  };
175
196
  }
176
197
  function asCostProvenance(value) {
@@ -192,4 +213,4 @@ export {
192
213
  appendOutOfTurnUsageRow,
193
214
  readOutOfTurnUsageRows
194
215
  };
195
- //# sourceMappingURL=chunk-GWS3VEIW.js.map
216
+ //# sourceMappingURL=chunk-FWDFM5ZU.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-ECH6PKUQ.js";
8
8
  import {
9
9
  ToolNames
10
- } from "./chunk-CGKSTWHD.js";
10
+ } from "./chunk-K6BSR66V.js";
11
11
  import {
12
12
  init_esm_shims
13
13
  } from "./chunk-3R73A4XB.js";
@@ -761,4 +761,4 @@ export {
761
761
  extractCommandDeleteTargets,
762
762
  tokenizeShellLike
763
763
  };
764
- //# sourceMappingURL=chunk-MV3K5QF2.js.map
764
+ //# sourceMappingURL=chunk-GCSMB2KY.js.map
@@ -0,0 +1,391 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ detectValidationCommand,
4
+ extractCommandDeleteTargets,
5
+ extractCommandWriteTargets,
6
+ toolMutationPaths
7
+ } from "./chunk-GCSMB2KY.js";
8
+ import {
9
+ isProjectVerifierCheckId,
10
+ isVerificationScriptName
11
+ } from "./chunk-UL3WSD3F.js";
12
+ import {
13
+ ToolNames
14
+ } from "./chunk-K6BSR66V.js";
15
+ import {
16
+ init_esm_shims
17
+ } from "./chunk-3R73A4XB.js";
18
+
19
+ // src/domains/safety/finish-contract.ts
20
+ init_esm_shims();
21
+ var FINISH_CONTRACT_ADVISORY_MESSAGE = "[Clio Coder] finish-contract advisory: you changed files this turn without recording validation evidence or an explicit limitation. Run a verification command or state what could not be verified.";
22
+ var DEFAULT_RECENT_ENTRY_LIMIT = 80;
23
+ var LIMITATION_PATTERNS = [
24
+ /\b(?:blocked by|blocker|blockers|unable to|not able to|could not|couldn't|cannot|can't)\b/i,
25
+ /\b(?:did not|didn't|have not|haven't|has not|hasn't|was not able|wasn't able)\b/i,
26
+ /\b(?:not complete|incomplete)\b/i,
27
+ /\b(?:not|un)(?:\s|-)?(?:validated|verified|tested)\b/i,
28
+ /^\s*Tests\s*:\s*(?:not run|not executed|not available|failed|blocked|skipped)\b/im,
29
+ /^\s*Known gaps?\s*:\s*(?!\s*(?:none|no\b|n\/a|not applicable)\b).+/im,
30
+ /\bremaining(?:\s+\w+){0,3}\s+(?:work|issue|issues|gap|gaps|blocker|blockers)\b/i
31
+ ];
32
+ function assessFinishContract(input) {
33
+ const assistantText = input.assistantText.trim();
34
+ const sessionEntries = input.sessionEntries ?? [];
35
+ const assistantTurnId = input.assistantTurnId ?? null;
36
+ const window = recentEntries(sessionEntries, assistantTurnId, input.recentEntryLimit ?? DEFAULT_RECENT_ENTRY_LIMIT);
37
+ const mutatedPaths = mutatingReceipts(window);
38
+ if (mutatedPaths.length === 0) {
39
+ return { kind: "ok", reason: "no_mutation", evidence: [], mutatedPaths };
40
+ }
41
+ const evidence = collectValidationEvidence(window);
42
+ if (evidence.length > 0) {
43
+ return { kind: "ok", reason: "validation_evidence", evidence, mutatedPaths };
44
+ }
45
+ if (hasExplicitLimitation(assistantText)) {
46
+ return { kind: "ok", reason: "explicit_limitation", evidence: [], mutatedPaths };
47
+ }
48
+ return {
49
+ kind: "engage",
50
+ reason: "unvalidated_mutation",
51
+ message: FINISH_CONTRACT_ADVISORY_MESSAGE,
52
+ evidence: [],
53
+ mutatedPaths
54
+ };
55
+ }
56
+ function hasExplicitLimitation(text) {
57
+ const normalized = text.trim();
58
+ if (normalized.length === 0) return false;
59
+ return LIMITATION_PATTERNS.some((pattern) => pattern.test(normalized));
60
+ }
61
+ function mutatingReceipts(recent) {
62
+ const mutationCalls = /* @__PURE__ */ new Map();
63
+ const paths = [];
64
+ const seen = /* @__PURE__ */ new Set();
65
+ for (const entry of recent) {
66
+ const bashMutation = bashExecutionMutationPaths(entry);
67
+ if (bashMutation !== null) {
68
+ for (const path of bashMutation) pushPath(paths, seen, path);
69
+ continue;
70
+ }
71
+ const call = mutatingToolCall(entry);
72
+ if (call !== null) {
73
+ mutationCalls.set(call.toolCallId, call);
74
+ continue;
75
+ }
76
+ const resultId = successfulToolResultId(entry);
77
+ if (resultId !== null) {
78
+ const candidate = mutationCalls.get(resultId);
79
+ if (candidate !== void 0) {
80
+ for (const path of candidate.paths) pushPath(paths, seen, path);
81
+ }
82
+ }
83
+ }
84
+ return paths;
85
+ }
86
+ function mutationPathsForTool(toolName, args) {
87
+ if (toolName === ToolNames.Bash) {
88
+ const command = typeof args?.command === "string" ? args.command : null;
89
+ if (command === null) return [];
90
+ return [...extractCommandWriteTargets(command), ...extractCommandDeleteTargets(command)];
91
+ }
92
+ return toolMutationPaths(toolName, args);
93
+ }
94
+ function mutatingToolCall(entry) {
95
+ const record = asRecord(entry);
96
+ if (record?.kind !== "message" || record.role !== "tool_call") return null;
97
+ const payload = asRecord(record.payload);
98
+ if (payload === null) return null;
99
+ const toolName = stringFromFirst(payload, ["name", "toolName", "tool"]);
100
+ if (toolName === null) return null;
101
+ const args = asRecord(payload.args ?? payload.arguments ?? payload.input) ?? void 0;
102
+ const paths = mutationPathsForTool(toolName, args);
103
+ if (paths.length === 0) return null;
104
+ const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
105
+ if (toolCallId === null) return null;
106
+ return { toolCallId, paths };
107
+ }
108
+ function bashExecutionMutationPaths(entry) {
109
+ const record = asRecord(entry);
110
+ if (record?.kind !== "bashExecution") return null;
111
+ if (typeof record.command !== "string") return null;
112
+ if (record.cancelled === true || record.exitCode !== 0) return null;
113
+ return [...extractCommandWriteTargets(record.command), ...extractCommandDeleteTargets(record.command)];
114
+ }
115
+ function pushPath(paths, seen, path) {
116
+ if (path.length === 0 || seen.has(path)) return;
117
+ seen.add(path);
118
+ paths.push(path);
119
+ }
120
+ function collectValidationEvidence(recent) {
121
+ const evidence = [];
122
+ const toolCalls = /* @__PURE__ */ new Map();
123
+ const dispatchCalls = /* @__PURE__ */ new Map();
124
+ const seen = /* @__PURE__ */ new Set();
125
+ for (const entry of recent) {
126
+ const protectedArtifact = protectedArtifactEvidence(entry);
127
+ if (protectedArtifact !== null) {
128
+ pushEvidence(evidence, seen, protectedArtifact);
129
+ continue;
130
+ }
131
+ const call = bashValidationCall(entry);
132
+ if (call !== null) {
133
+ toolCalls.set(call.toolCallId, call);
134
+ continue;
135
+ }
136
+ const typedValidationCall = validationToolCall(entry);
137
+ if (typedValidationCall !== null) {
138
+ toolCalls.set(typedValidationCall.toolCallId, typedValidationCall);
139
+ continue;
140
+ }
141
+ const dispatchCall = dispatchEvidenceCall(entry);
142
+ if (dispatchCall !== null) {
143
+ dispatchCalls.set(dispatchCall.toolCallId, dispatchCall);
144
+ continue;
145
+ }
146
+ const resultId = successfulToolResultId(entry);
147
+ if (resultId !== null) {
148
+ const dispatchCandidate = dispatchCalls.get(resultId);
149
+ const dispatchReceipt = dispatchReceiptEvidence(entry, dispatchCandidate);
150
+ if (dispatchReceipt !== null) {
151
+ pushEvidence(evidence, seen, dispatchReceipt);
152
+ continue;
153
+ }
154
+ const candidate = toolCalls.get(resultId);
155
+ if (candidate !== void 0) {
156
+ pushEvidence(evidence, seen, validationEvidence(candidate));
157
+ }
158
+ continue;
159
+ }
160
+ const bashExecution = bashExecutionEvidence(entry);
161
+ if (bashExecution !== null) pushEvidence(evidence, seen, bashExecution);
162
+ }
163
+ return evidence;
164
+ }
165
+ function recentEntries(entries, assistantTurnId, recentEntryLimit) {
166
+ const boundedLimit = Number.isFinite(recentEntryLimit) && recentEntryLimit > 0 ? Math.floor(recentEntryLimit) : DEFAULT_RECENT_ENTRY_LIMIT;
167
+ const assistantIndex = assistantTurnId === null ? -1 : entries.findIndex((entry) => turnIdOf(entry) === assistantTurnId);
168
+ const endExclusive = assistantIndex >= 0 ? assistantIndex : entries.length;
169
+ let startInclusive = Math.max(0, endExclusive - boundedLimit);
170
+ for (let index = endExclusive - 1; index >= startInclusive; index -= 1) {
171
+ if (isUserMessageEntry(entries[index])) {
172
+ startInclusive = index + 1;
173
+ break;
174
+ }
175
+ }
176
+ return entries.slice(startInclusive, endExclusive);
177
+ }
178
+ function bashValidationCall(entry) {
179
+ const record = asRecord(entry);
180
+ if (record?.kind !== "message" || record.role !== "tool_call") return null;
181
+ const payload = asRecord(record.payload);
182
+ if (payload === null) return null;
183
+ const toolName = stringFromFirst(payload, ["name", "toolName", "tool"]);
184
+ if (toolName !== "bash") return null;
185
+ const args = asRecord(payload.args ?? payload.arguments ?? payload.input);
186
+ const command = typeof args?.command === "string" ? args.command : null;
187
+ if (command === null) return null;
188
+ const detected = detectValidationCommand(command);
189
+ if (detected.kind !== "validation") return null;
190
+ const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
191
+ if (toolCallId === null) return null;
192
+ const candidate = {
193
+ toolCallId,
194
+ command: detected.matched
195
+ };
196
+ const turnId = turnIdOf(entry);
197
+ if (turnId !== null) candidate.turnId = turnId;
198
+ return candidate;
199
+ }
200
+ function dispatchEvidenceCall(entry) {
201
+ const record = asRecord(entry);
202
+ if (record?.kind !== "message" || record.role !== "tool_call") return null;
203
+ const payload = asRecord(record.payload);
204
+ if (payload === null) return null;
205
+ const toolName = stringFromFirst(payload, ["name", "toolName", "tool"]);
206
+ if (toolName !== "dispatch") return null;
207
+ const args = asRecord(payload.args ?? payload.arguments ?? payload.input);
208
+ const { agentId, task } = dispatchCallDescriptor(args);
209
+ const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
210
+ if (toolCallId === null) return null;
211
+ const candidate = {
212
+ toolCallId,
213
+ command: `agent=${agentId}${task.length > 0 ? ` task=${task}` : ""}`
214
+ };
215
+ const turnId = turnIdOf(entry);
216
+ if (turnId !== null) candidate.turnId = turnId;
217
+ return candidate;
218
+ }
219
+ function dispatchCallDescriptor(args) {
220
+ const defaultAgent = stringFromFirst(args ?? {}, ["agent", "agent_id", "agentId"]);
221
+ const tasks = Array.isArray(args?.tasks) ? args.tasks : null;
222
+ if (tasks !== null && tasks.length > 0) {
223
+ const first = tasks[0];
224
+ if (typeof first === "string") {
225
+ return { agentId: defaultAgent ?? "coder", task: first.trim() };
226
+ }
227
+ const firstRecord = asRecord(first);
228
+ const itemAgent = firstRecord === null ? null : stringFromFirst(firstRecord, ["agent", "agent_id", "agentId"]);
229
+ const itemTask = typeof firstRecord?.task === "string" ? firstRecord.task.trim() : "";
230
+ return { agentId: itemAgent ?? defaultAgent ?? "coder", task: itemTask };
231
+ }
232
+ const singleTask = typeof args?.task === "string" ? args.task.trim() : "";
233
+ return { agentId: defaultAgent ?? "coder", task: singleTask };
234
+ }
235
+ function validationToolCall(entry) {
236
+ const record = asRecord(entry);
237
+ if (record?.kind !== "message" || record.role !== "tool_call") return null;
238
+ const payload = asRecord(record.payload);
239
+ if (payload === null) return null;
240
+ const toolName = stringFromFirst(payload, ["name", "toolName", "tool"]);
241
+ if (toolName === null) return null;
242
+ const summary = typedValidationSummary(toolName, payload);
243
+ if (summary === null) return null;
244
+ const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
245
+ if (toolCallId === null) return null;
246
+ const candidate = {
247
+ toolCallId,
248
+ command: summary
249
+ };
250
+ const turnId = turnIdOf(entry);
251
+ if (turnId !== null) candidate.turnId = turnId;
252
+ return candidate;
253
+ }
254
+ function typedValidationSummary(toolName, payload) {
255
+ const args = asRecord(payload.args ?? payload.arguments ?? payload.input);
256
+ if (toolName === "verify") {
257
+ const check = typeof args?.check === "string" ? args.check.trim() : "";
258
+ if (check === "frontend") {
259
+ const path = typeof args?.path === "string" && args.path.trim().length > 0 ? args.path.trim() : "artifact";
260
+ return `verify frontend ${path}`;
261
+ }
262
+ if (isVerificationScriptName(check)) return `npm run ${check}`;
263
+ if (isProjectVerifierCheckId(check)) return `verify ${check}`;
264
+ return null;
265
+ }
266
+ return null;
267
+ }
268
+ function successfulToolResultId(entry) {
269
+ const record = asRecord(entry);
270
+ if (record?.kind !== "message" || record.role !== "tool_result") return null;
271
+ const payload = asRecord(record.payload);
272
+ if (payload === null) return null;
273
+ if (payload.isError === true || payload.error === true) return null;
274
+ const result = asRecord(payload.result);
275
+ const details = asRecord(result?.details);
276
+ if (details?.kind === "error") return null;
277
+ return stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]);
278
+ }
279
+ function dispatchReceiptEvidence(entry, candidate) {
280
+ const record = asRecord(entry);
281
+ if (record?.kind !== "message" || record.role !== "tool_result") return null;
282
+ const payload = asRecord(record.payload);
283
+ if (payload === null) return null;
284
+ const toolName = stringFromFirst(payload, ["toolName", "name", "tool"]);
285
+ if (toolName !== null && toolName !== "dispatch") return null;
286
+ const result = asRecord(payload.result);
287
+ const details = asRecord(result?.details);
288
+ if (details === null) return null;
289
+ const summary = passedDispatchReceiptSummary(details, candidate);
290
+ if (summary === null) return null;
291
+ const evidence = {
292
+ kind: "dispatch_receipt",
293
+ summary
294
+ };
295
+ const turnId = candidate?.turnId ?? turnIdOf(entry);
296
+ if (turnId !== null && turnId !== void 0) evidence.turnId = turnId;
297
+ return evidence;
298
+ }
299
+ function passedDispatchReceiptSummary(details, candidate) {
300
+ if (Array.isArray(details.runs)) {
301
+ const runs = details.runs.map(asRecord);
302
+ if (runs.length === 0 || runs.some((run) => run === null || run.exitCode !== 0)) return null;
303
+ if (typeof details.failedCount === "number" && details.failedCount !== 0) return null;
304
+ const first = runs[0];
305
+ const runId = typeof first?.runId === "string" && first.runId.length > 0 ? first.runId : "unknown";
306
+ const agentId = dispatchReceiptAgentId(typeof first?.agentId === "string" ? first.agentId : void 0, candidate);
307
+ const extra = runs.length > 1 ? ` (+${runs.length - 1} more)` : "";
308
+ return `dispatch receipt passed: run ${runId} agent ${agentId}${extra}`;
309
+ }
310
+ if (details.exitCode === 0) {
311
+ const runId = typeof details.runId === "string" && details.runId.length > 0 ? details.runId : "unknown";
312
+ const agentId = dispatchReceiptAgentId(typeof details.agentId === "string" ? details.agentId : void 0, candidate);
313
+ return `dispatch receipt passed: run ${runId} agent ${agentId}`;
314
+ }
315
+ return null;
316
+ }
317
+ function dispatchReceiptAgentId(receiptAgentId, candidate) {
318
+ if (receiptAgentId !== void 0 && receiptAgentId.length > 0) return receiptAgentId;
319
+ return candidate?.command.match(/^agent=([^\s]+)/)?.[1] ?? "unknown";
320
+ }
321
+ function bashExecutionEvidence(entry) {
322
+ const record = asRecord(entry);
323
+ if (record?.kind !== "bashExecution") return null;
324
+ if (typeof record.command !== "string") return null;
325
+ if (record.cancelled === true) return null;
326
+ if (record.exitCode !== 0) return null;
327
+ const detected = detectValidationCommand(record.command);
328
+ if (detected.kind !== "validation") return null;
329
+ const evidence = {
330
+ kind: "validation_command",
331
+ summary: `validation command passed: ${detected.matched}`
332
+ };
333
+ const turnId = turnIdOf(entry);
334
+ if (turnId !== null) evidence.turnId = turnId;
335
+ return evidence;
336
+ }
337
+ function protectedArtifactEvidence(entry) {
338
+ const record = asRecord(entry);
339
+ if (record?.kind !== "protectedArtifact" || record.action !== "protect") return null;
340
+ const artifact = asRecord(record.artifact);
341
+ const path = typeof artifact?.path === "string" && artifact.path.trim().length > 0 ? artifact.path.trim() : null;
342
+ if (path === null) return null;
343
+ const evidence = {
344
+ kind: "protected_artifact",
345
+ summary: `protected artifact recorded: ${path}`
346
+ };
347
+ const turnId = turnIdOf(entry);
348
+ if (turnId !== null) evidence.turnId = turnId;
349
+ return evidence;
350
+ }
351
+ function validationEvidence(candidate) {
352
+ const evidence = {
353
+ kind: "validation_command",
354
+ summary: `validation command passed: ${candidate.command}`
355
+ };
356
+ if (candidate.turnId !== void 0) evidence.turnId = candidate.turnId;
357
+ return evidence;
358
+ }
359
+ function pushEvidence(evidence, seen, item) {
360
+ const key = `${item.kind}\0${item.summary}\0${item.turnId ?? ""}`;
361
+ if (seen.has(key)) return;
362
+ seen.add(key);
363
+ evidence.push(item);
364
+ }
365
+ function isUserMessageEntry(entry) {
366
+ const record = asRecord(entry);
367
+ if (record?.kind !== "message" || record.role !== "user") return false;
368
+ const payload = asRecord(record.payload);
369
+ return payload?.synthetic !== true;
370
+ }
371
+ function turnIdOf(entry) {
372
+ const record = asRecord(entry);
373
+ return typeof record?.turnId === "string" ? record.turnId : null;
374
+ }
375
+ function stringFromFirst(record, keys) {
376
+ for (const key of keys) {
377
+ const value = record[key];
378
+ if (typeof value === "string" && value.length > 0) return value;
379
+ }
380
+ return null;
381
+ }
382
+ function asRecord(value) {
383
+ return value !== null && typeof value === "object" ? value : null;
384
+ }
385
+
386
+ export {
387
+ DEFAULT_RECENT_ENTRY_LIMIT,
388
+ assessFinishContract,
389
+ typedValidationSummary
390
+ };
391
+ //# sourceMappingURL=chunk-GKF55TAZ.js.map
@@ -2,22 +2,22 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  readLayeredSettings,
4
4
  readStrictLayeredSettings
5
- } from "./chunk-26LEYJZH.js";
5
+ } from "./chunk-7MCTRUCE.js";
6
6
  import {
7
7
  formatBootTrace
8
8
  } from "./chunk-HKIYEGME.js";
9
9
  import {
10
10
  initializeClioHome
11
- } from "./chunk-XWSF374K.js";
11
+ } from "./chunk-2OQE55CK.js";
12
12
  import {
13
13
  readSettings
14
- } from "./chunk-IJ7RPIYJ.js";
14
+ } from "./chunk-VFA6GDY5.js";
15
15
  import {
16
16
  require_dist
17
17
  } from "./chunk-APJ265NV.js";
18
18
  import {
19
19
  clioConfigDir
20
- } from "./chunk-BNAZZHFG.js";
20
+ } from "./chunk-BYP5D4HI.js";
21
21
  import {
22
22
  findEngineEnvKeys,
23
23
  getEngineEnvApiKey
@@ -100,6 +100,7 @@ var BUILTIN_RUNTIME_BOOT_MANIFEST = [
100
100
  { id: "lmstudio", aliases: ["lmstudio-native"], kind: "http", tier: "local-native", auth: "api-key" },
101
101
  { id: "ollama-native", kind: "http", tier: "local-native", auth: "none" },
102
102
  { id: "anthropic-compat", kind: "http", tier: "protocol", auth: "api-key" },
103
+ { id: "litellm", kind: "http", tier: "protocol", auth: "api-key" },
103
104
  { id: "openai-compat", kind: "http", tier: "protocol", auth: "api-key" },
104
105
  { id: "sglang", kind: "http", tier: "local-native", auth: "api-key" },
105
106
  { id: "vllm", kind: "http", tier: "local-native", auth: "api-key" },
@@ -158,7 +159,7 @@ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; loc
158
159
  } else if (verdict.kind !== "usable") {
159
160
  process.stdout.write(`${describeVerdict(verdict)} Starting \`clio-coder configure\`.
160
161
  `);
161
- const { runConfigureCommand } = await import("./configure-7XIZCOU4.js");
162
+ const { runConfigureCommand } = await import("./configure-TEGEBYCA.js");
162
163
  const configured = await runConfigureCommand([]);
163
164
  if (configured !== 0) return configured;
164
165
  startupSettings = readStrictLayeredSettings(process.cwd()).settings;
@@ -167,7 +168,7 @@ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; loc
167
168
  let terminalLease;
168
169
  try {
169
170
  if (terminalLeaseEligible(options)) {
170
- const { createProcessTerminalLease, instantShellEnabled } = await import("./terminal-lease-WOBR64YA.js");
171
+ const { createProcessTerminalLease, instantShellEnabled } = await import("./terminal-lease-44SV3YCN.js");
171
172
  if (instantShellEnabled()) {
172
173
  let stage0FrameId = null;
173
174
  terminalLease = createProcessTerminalLease({
@@ -190,7 +191,7 @@ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; loc
190
191
  throw new Error("injected Stage 1 hydration failure");
191
192
  }
192
193
  }
193
- const { bootOrchestrator } = await import("./orchestrator-6KSPYRHA.js");
194
+ const { bootOrchestrator } = await import("./orchestrator-GCGQ4N5I.js");
194
195
  const result = await bootOrchestrator({
195
196
  ...options,
196
197
  ...startupSettings ? { startupSettings } : {},
@@ -214,4 +215,4 @@ export {
214
215
  terminalLeaseEligible,
215
216
  runClioCommand
216
217
  };
217
- //# sourceMappingURL=chunk-VWZOAB7K.js.map
218
+ //# sourceMappingURL=chunk-GR5G2PVF.js.map