@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
@@ -0,0 +1,302 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ describeYaziProfile,
4
+ inspectCurrentYaziProfile,
5
+ resetYaziProfile
6
+ } from "./chunk-HZHHCK24.js";
7
+ import {
8
+ installTool,
9
+ installedToolVersions,
10
+ removeTool
11
+ } from "./chunk-BKFM6EJV.js";
12
+ import {
13
+ describeFloorRejection,
14
+ describeResolution,
15
+ installRemedy,
16
+ toolStatus,
17
+ toolStatuses
18
+ } from "./chunk-QSNYB6ZV.js";
19
+ import {
20
+ PINNED_TOOLS,
21
+ findPinnedTool
22
+ } from "./chunk-QDC3K2U3.js";
23
+ import {
24
+ formatColumns,
25
+ printError,
26
+ printOk
27
+ } from "./chunk-VPKWYKEY.js";
28
+ import {
29
+ init_esm_shims
30
+ } from "./chunk-3R73A4XB.js";
31
+
32
+ // src/cli/tools.ts
33
+ init_esm_shims();
34
+ var HELP = `clio-coder tools <command>
35
+
36
+ Manage the external terminal programs Clio can drive. Every one of them is
37
+ optional: Clio works without them and only uses one when it is present. Each is
38
+ pinned to an exact upstream version and checksum, and a copy already on PATH
39
+ wins over Clio's own as long as it clears the pinned minimum.
40
+
41
+ Commands:
42
+ clio-coder tools list [--json] the pinned table and where each resolves
43
+ clio-coder tools status <id> [--json] [--reset-profile] one tool in detail
44
+ clio-coder tools install <id> [--force] [--json] download, verify, and vendor a tool
45
+ clio-coder tools remove <id>|--all [--json] delete every vendored version of a tool
46
+
47
+ Downloads happen only here. Nothing on a startup path fetches anything.
48
+
49
+ An install keeps one version directory per tool: once the pinned version is in
50
+ place, versions it superseded are pruned, along with any staging directory left
51
+ by an install that was killed. Removal touches nothing outside <data>/tools/<id>
52
+ and needs no confirmation, since every byte under it is re-downloadable from the
53
+ checksum-pinned registry. "remove --all" sweeps every tool in the table.
54
+ `;
55
+ async function runToolsCommand(argv = []) {
56
+ let parsed;
57
+ try {
58
+ parsed = parse(argv);
59
+ } catch (error) {
60
+ printError(error instanceof Error ? error.message : String(error));
61
+ process.stderr.write(HELP);
62
+ return 2;
63
+ }
64
+ if (parsed.help || parsed.command === void 0) {
65
+ process.stdout.write(HELP);
66
+ return parsed.help ? 0 : 2;
67
+ }
68
+ if (parsed.all && parsed.command !== "remove") {
69
+ printError("--all is only valid with `tools remove`");
70
+ return 2;
71
+ }
72
+ switch (parsed.command) {
73
+ case "list":
74
+ if (parsed.resetProfile) return invalidResetProfile();
75
+ return listTools(parsed.json);
76
+ case "status":
77
+ return statusTool(parsed.positional[0], parsed.json, parsed.resetProfile);
78
+ case "install":
79
+ if (parsed.resetProfile) return invalidResetProfile();
80
+ return installOne(parsed.positional[0], parsed.force, parsed.json);
81
+ case "remove":
82
+ if (parsed.resetProfile) return invalidResetProfile();
83
+ return parsed.all ? removeAll(parsed.positional[0], parsed.json) : removeOne(parsed.positional[0], parsed.json);
84
+ default:
85
+ printError(`unknown tools command: ${parsed.command}`);
86
+ process.stderr.write(HELP);
87
+ return 2;
88
+ }
89
+ }
90
+ function parse(argv) {
91
+ const out = { positional: [], json: false, force: false, all: false, resetProfile: false, help: false };
92
+ for (const arg of argv) {
93
+ if (!out.command && !arg.startsWith("-")) {
94
+ out.command = arg;
95
+ continue;
96
+ }
97
+ switch (arg) {
98
+ case "--json":
99
+ out.json = true;
100
+ break;
101
+ case "--force":
102
+ case "-f":
103
+ out.force = true;
104
+ break;
105
+ case "--all":
106
+ out.all = true;
107
+ break;
108
+ case "--reset-profile":
109
+ out.resetProfile = true;
110
+ break;
111
+ case "--help":
112
+ case "-h":
113
+ out.help = true;
114
+ break;
115
+ default:
116
+ if (arg.startsWith("-")) throw new Error(`unknown flag: ${arg}`);
117
+ out.positional.push(arg);
118
+ }
119
+ }
120
+ return out;
121
+ }
122
+ function listTools(json) {
123
+ const statuses = toolStatuses();
124
+ if (json) {
125
+ process.stdout.write(`${JSON.stringify(statuses.map(jsonShape), null, 2)}
126
+ `);
127
+ return 0;
128
+ }
129
+ const rows = statuses.map((status) => [
130
+ status.id,
131
+ status.version,
132
+ status.license,
133
+ status.resolution.source,
134
+ describeResolution(status)
135
+ ]);
136
+ process.stdout.write(formatColumns([["TOOL", "PIN", "LICENSE", "SOURCE", "RESOLVED"], ...rows]));
137
+ return 0;
138
+ }
139
+ function invalidResetProfile() {
140
+ printError("--reset-profile is only valid with `tools status yazi`");
141
+ return 2;
142
+ }
143
+ function unknownTool(id) {
144
+ printError(`unknown tool: ${id} (known: ${PINNED_TOOLS.map((row) => row.id).join(", ")})`);
145
+ return 2;
146
+ }
147
+ function statusTool(id, json, resetProfile) {
148
+ if (id === void 0) {
149
+ printError("usage: clio-coder tools status <id>");
150
+ return 2;
151
+ }
152
+ const entry = findPinnedTool(id);
153
+ if (entry === null) {
154
+ return unknownTool(id);
155
+ }
156
+ if (resetProfile && id !== "yazi") return invalidResetProfile();
157
+ if (resetProfile) resetYaziProfile();
158
+ const status = toolStatus(entry);
159
+ const profile = id === "yazi" ? inspectCurrentYaziProfile() : null;
160
+ if (json) {
161
+ process.stdout.write(
162
+ `${JSON.stringify({ ...jsonShape(status), ...profile ? { profile, profileReset: resetProfile } : {} }, null, 2)}
163
+ `
164
+ );
165
+ return 0;
166
+ }
167
+ const rejection = describeFloorRejection(status);
168
+ const installedVersions = installedToolVersions(entry.id);
169
+ const lines = [
170
+ `${entry.id} ${entry.version} (${entry.license})`,
171
+ ` ${entry.summary}`,
172
+ ` homepage ${entry.homepage}`,
173
+ ` binaries ${entry.binaries.join(", ")}`,
174
+ ` PATH floor ${entry.minimumVersion}`,
175
+ ` platform ${status.platform ?? `${process.platform}-${process.arch}`}${status.supported ? "" : " (no pinned asset)"}`,
176
+ ` vendor dir ${status.installDir}${status.installed ? "" : " (not installed)"}`,
177
+ ` vendored ${installedVersions.length === 0 ? "nothing" : installedVersions.join(", ")}`,
178
+ ` resolves to ${describeResolution(status)}`,
179
+ // Spelled out on its own line as well as inside the resolution sentence,
180
+ // because a rejected PATH copy is the one thing an operator reads this
181
+ // command to understand and the sentence above may be about something else.
182
+ ...rejection === null ? [] : [
183
+ ` floor rejected: ${rejection}`,
184
+ ...status.resolution.source === "none" && status.supported ? [` remedy ${installRemedy(entry.id)}`] : []
185
+ ],
186
+ ...profile ? [
187
+ ` profile ${describeYaziProfile(profile)}`,
188
+ ...resetProfile ? [" profile reset; next open regenerates it"] : []
189
+ ] : []
190
+ ];
191
+ process.stdout.write(`${lines.join("\n")}
192
+ `);
193
+ return 0;
194
+ }
195
+ async function installOne(id, force, json) {
196
+ if (id === void 0) {
197
+ printError("usage: clio-coder tools install <id>");
198
+ return 2;
199
+ }
200
+ if (findPinnedTool(id) === null) {
201
+ return unknownTool(id);
202
+ }
203
+ const result = await installTool(id, {
204
+ force,
205
+ ...json ? {} : { onProgress: (message) => process.stderr.write(` ${message}
206
+ `) }
207
+ });
208
+ if (json) {
209
+ process.stdout.write(`${JSON.stringify(result, null, 2)}
210
+ `);
211
+ return result.ok ? 0 : 1;
212
+ }
213
+ if (!result.ok) {
214
+ printError(result.message);
215
+ return 1;
216
+ }
217
+ printOk(result.message);
218
+ for (const path of result.documents) process.stdout.write(` license ${path}
219
+ `);
220
+ for (const version of result.pruned) process.stdout.write(` pruned ${id} ${version}
221
+ `);
222
+ return 0;
223
+ }
224
+ function removeOne(id, json) {
225
+ if (id === void 0) {
226
+ printError("usage: clio-coder tools remove <id>");
227
+ return 2;
228
+ }
229
+ if (findPinnedTool(id) === null) return unknownTool(id);
230
+ const result = removeTool(id);
231
+ if (json) {
232
+ process.stdout.write(`${JSON.stringify(result, null, 2)}
233
+ `);
234
+ return result.ok ? 0 : 1;
235
+ }
236
+ if (!result.ok) {
237
+ printError(result.message);
238
+ return 1;
239
+ }
240
+ printOk(result.message);
241
+ if (result.removed.length > 0) {
242
+ process.stdout.write(` reinstall with \`${installRemedy(id)}\`
243
+ `);
244
+ }
245
+ return 0;
246
+ }
247
+ function removeAll(id, json) {
248
+ if (id !== void 0) {
249
+ printError("`tools remove --all` takes no tool id; drop the id or drop --all");
250
+ return 2;
251
+ }
252
+ const results = PINNED_TOOLS.map((entry) => removeTool(entry.id));
253
+ if (json) {
254
+ process.stdout.write(`${JSON.stringify(results, null, 2)}
255
+ `);
256
+ return results.every((result) => result.ok) ? 0 : 1;
257
+ }
258
+ for (const result of results) {
259
+ if (!result.ok) printError(result.message);
260
+ else if (result.removed.length > 0 || result.staleStaging.length > 0) printOk(result.message);
261
+ }
262
+ const touched = results.filter((result) => result.ok && result.removed.length > 0);
263
+ const untouched = results.filter((result) => result.ok && result.removed.length === 0);
264
+ if (touched.length > 0) {
265
+ process.stdout.write(` reinstall with \`clio-coder tools install <id>\`
266
+ `);
267
+ }
268
+ if (untouched.length > 0) {
269
+ process.stdout.write(` ${untouched.length} of ${results.length} had nothing vendored
270
+ `);
271
+ }
272
+ return results.every((result) => result.ok) ? 0 : 1;
273
+ }
274
+ function jsonShape(status) {
275
+ return {
276
+ id: status.id,
277
+ version: status.version,
278
+ license: status.license,
279
+ platform: status.platform,
280
+ supported: status.supported,
281
+ installed: status.installed,
282
+ installDir: status.installDir,
283
+ source: status.resolution.source,
284
+ binaryPath: status.resolution.binaryPath,
285
+ foundVersion: status.resolution.version,
286
+ minimumVersion: status.resolution.entry?.minimumVersion ?? null,
287
+ pathCandidate: status.resolution.pathCandidate,
288
+ // A script deciding whether to warn about a floor rejection should not have
289
+ // to parse `detail` for it, so the rejection and the command that answers
290
+ // it are their own fields. `remedy` is null exactly where installing would
291
+ // change nothing: already vendored, or no asset for this platform.
292
+ floorRejection: describeFloorRejection(status),
293
+ remedy: status.resolution.source === "none" && status.supported ? installRemedy(status.id) : null,
294
+ installedVersions: installedToolVersions(status.id),
295
+ detail: describeResolution(status)
296
+ };
297
+ }
298
+
299
+ export {
300
+ runToolsCommand
301
+ };
302
+ //# sourceMappingURL=chunk-NQQH3YT7.js.map
@@ -0,0 +1,15 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-3R73A4XB.js";
5
+
6
+ // src/engine/tui-primitives.ts
7
+ init_esm_shims();
8
+ import { ProcessTerminal, TuiAltScreen, truncateToWidth } from "@earendil-works/pi-tui";
9
+
10
+ export {
11
+ ProcessTerminal,
12
+ TuiAltScreen,
13
+ truncateToWidth
14
+ };
15
+ //# sourceMappingURL=chunk-NYS75XW5.js.map
@@ -1,33 +1,35 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  parseAgentRecipeSchema
4
- } from "./chunk-FBVTI2TJ.js";
4
+ } from "./chunk-Z4TXYIEG.js";
5
+ import {
6
+ parseFleetContract
7
+ } from "./chunk-CTJ4RNAA.js";
5
8
  import {
6
- parseFleetContract,
7
9
  parseFrontmatter
8
- } from "./chunk-E77JEWSD.js";
10
+ } from "./chunk-RKKLTLYB.js";
9
11
  import {
10
12
  assertAgentSpecPolicy,
11
13
  normalizeAgentSpec
12
- } from "./chunk-AOCYTWAV.js";
14
+ } from "./chunk-DYJP44XW.js";
13
15
  import {
14
16
  readSettings,
15
17
  settingsPath,
16
18
  updateSettings
17
- } from "./chunk-IJ7RPIYJ.js";
19
+ } from "./chunk-VFA6GDY5.js";
18
20
  import {
19
21
  readClioVersion
20
22
  } from "./chunk-IWHMRKLL.js";
21
23
  import {
22
24
  DEFAULT_SETTINGS
23
- } from "./chunk-4DGYLA73.js";
25
+ } from "./chunk-GXNLGKAB.js";
24
26
  import {
25
27
  require_dist
26
28
  } from "./chunk-APJ265NV.js";
27
29
  import {
28
30
  clioConfigDir,
29
31
  resolveClioDirs
30
- } from "./chunk-BNAZZHFG.js";
32
+ } from "./chunk-BYP5D4HI.js";
31
33
  import {
32
34
  safeResourceBackupPath,
33
35
  safeResourceWrite
@@ -610,4 +612,4 @@ export {
610
612
  importShareArchive,
611
613
  ShareDomainModule
612
614
  };
613
- //# sourceMappingURL=chunk-GN57SG4G.js.map
615
+ //# sourceMappingURL=chunk-O4XIVISU.js.map
@@ -4,25 +4,25 @@ import {
4
4
  READONLY_SCOPE,
5
5
  WORKSPACE_SCOPE,
6
6
  isSubset
7
- } from "./chunk-VCBR6CU7.js";
7
+ } from "./chunk-5PSMVOLM.js";
8
8
  import {
9
9
  createLoopState,
10
10
  observe
11
11
  } from "./chunk-UOV2BYIW.js";
12
12
  import {
13
13
  createSafetyPolicyEngine
14
- } from "./chunk-5H3GB5BO.js";
14
+ } from "./chunk-32KWKNSF.js";
15
15
  import {
16
16
  classify
17
- } from "./chunk-AOCYTWAV.js";
17
+ } from "./chunk-DYJP44XW.js";
18
18
  import {
19
19
  BusChannels,
20
20
  isRunAbortedPayload
21
- } from "./chunk-TT36MB5S.js";
21
+ } from "./chunk-HLW2MRKE.js";
22
22
  import {
23
23
  clioStateDir,
24
24
  stateRootRemoved
25
- } from "./chunk-BNAZZHFG.js";
25
+ } from "./chunk-BYP5D4HI.js";
26
26
  import {
27
27
  init_esm_shims
28
28
  } from "./chunk-3R73A4XB.js";
@@ -608,4 +608,4 @@ var SafetyDomainModule = {
608
608
  export {
609
609
  SafetyDomainModule
610
610
  };
611
- //# sourceMappingURL=chunk-EMYUUSFG.js.map
611
+ //# sourceMappingURL=chunk-O6TL7WWY.js.map
@@ -0,0 +1,97 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ compileExecutionPlan
4
+ } from "./chunk-QBJA7R7N.js";
5
+ import {
6
+ deriveExecutionRole
7
+ } from "./chunk-H7IXIC72.js";
8
+ import {
9
+ init_esm_shims
10
+ } from "./chunk-3R73A4XB.js";
11
+
12
+ // src/domains/dispatch/scout-transition.ts
13
+ init_esm_shims();
14
+ function scopeFor(authority) {
15
+ return authority === "read-only" || authority === "verification" ? "readonly" : "workspace";
16
+ }
17
+ function assertReceiptDigest(value) {
18
+ if (!/^[0-9a-f]{64}$/u.test(value)) throw new Error("scout transition: source receipt digest is invalid");
19
+ }
20
+ function compileScoutTransition(input) {
21
+ assertReceiptDigest(input.sourceReceiptDigest);
22
+ if (!input.scout.needsSplit) {
23
+ return {
24
+ kind: "settled",
25
+ sourceReceiptDigest: input.sourceReceiptDigest,
26
+ findings: input.scout.findings.map((finding) => ({ ...finding }))
27
+ };
28
+ }
29
+ const subtasks = input.scout.proposedSubtasks;
30
+ const byId = new Map(input.bindings.map((binding) => [binding.subtaskId, binding]));
31
+ if (byId.size !== input.bindings.length || byId.size !== subtasks.length) {
32
+ throw new Error("scout transition: coordinator bindings must match subtasks exactly");
33
+ }
34
+ for (const binding of input.bindings) {
35
+ if (!subtasks.some((subtask) => subtask.id === binding.subtaskId)) {
36
+ throw new Error(`scout transition: undeclared binding '${binding.subtaskId}'`);
37
+ }
38
+ }
39
+ const approved = new Set(input.authority.approvedAuthorities);
40
+ const missing = /* @__PURE__ */ new Set();
41
+ const steps = subtasks.map((subtask) => {
42
+ const binding = byId.get(subtask.id);
43
+ if (binding === void 0) throw new Error(`scout transition: subtask '${subtask.id}' has no agent binding`);
44
+ if (binding.spec.resultContract.kind !== subtask.expectedResultContract) {
45
+ throw new Error(`scout transition: subtask '${subtask.id}' result contract does not match its bound agent`);
46
+ }
47
+ if (binding.spec.capabilityClass !== subtask.requestedAuthority) {
48
+ throw new Error(`scout transition: subtask '${subtask.id}' authority does not match its bound agent`);
49
+ }
50
+ const granted = approved.has(subtask.requestedAuthority);
51
+ if (!granted) missing.add(subtask.requestedAuthority);
52
+ return {
53
+ id: subtask.id,
54
+ agentId: binding.spec.id,
55
+ executionRole: deriveExecutionRole({
56
+ attempt: 0,
57
+ capabilityClass: binding.spec.capabilityClass,
58
+ resultContractKind: binding.spec.resultContract.kind
59
+ }),
60
+ scope: scopeFor(subtask.requestedAuthority),
61
+ expectedResultContract: subtask.expectedResultContract,
62
+ requestedAuthority: subtask.requestedAuthority,
63
+ approvedAuthority: granted ? subtask.requestedAuthority : null,
64
+ dependencies: [...subtask.dependencies],
65
+ task: subtask.task
66
+ };
67
+ });
68
+ const plan = compileExecutionPlan({
69
+ topology: "fleet",
70
+ rootTask: input.rootTask,
71
+ maxWorkers: Math.max(1, Math.min(4, input.maxWorkers, steps.length)),
72
+ onFailure: "stop",
73
+ steps
74
+ });
75
+ if (missing.size > 0) {
76
+ return {
77
+ kind: "approval-required",
78
+ sourceReceiptDigest: input.sourceReceiptDigest,
79
+ plan,
80
+ requiredAuthorities: [...missing]
81
+ };
82
+ }
83
+ return {
84
+ kind: "ready",
85
+ sourceReceiptDigest: input.sourceReceiptDigest,
86
+ plan,
87
+ authority: {
88
+ basis: input.authority.basis,
89
+ approvedAuthorities: [...input.authority.approvedAuthorities]
90
+ }
91
+ };
92
+ }
93
+
94
+ export {
95
+ compileScoutTransition
96
+ };
97
+ //# sourceMappingURL=chunk-OQBA45DZ.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  openAuthStorage
4
- } from "./chunk-EQ63NRB7.js";
4
+ } from "./chunk-BBVYXMFO.js";
5
5
  import {
6
6
  getRuntimeRegistry
7
7
  } from "./chunk-NUGM5KR6.js";
@@ -30,4 +30,4 @@ function credentialsPresent() {
30
30
  export {
31
31
  credentialsPresent
32
32
  };
33
- //# sourceMappingURL=chunk-LU7P4LHA.js.map
33
+ //# sourceMappingURL=chunk-P3FOHJT4.js.map
@@ -0,0 +1,25 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-3R73A4XB.js";
5
+
6
+ // src/interactive/pane-policy.ts
7
+ init_esm_shims();
8
+ var WATCHABLE_STATUSES = /* @__PURE__ */ new Set(["running", "stale", "cancelling", "enqueued", "retrying"]);
9
+ function paneWatchDecision(request) {
10
+ if (request.source === "dispatch") {
11
+ return { open: false, reason: "dispatches run headless; watch a run from the workers view or /panes show" };
12
+ }
13
+ if (!WATCHABLE_STATUSES.has(request.runStatus)) {
14
+ return {
15
+ open: false,
16
+ reason: `run is ${request.runStatus}; use \`clio-coder fleet view <runId>\` for the post-mortem`
17
+ };
18
+ }
19
+ return { open: true };
20
+ }
21
+
22
+ export {
23
+ paneWatchDecision
24
+ };
25
+ //# sourceMappingURL=chunk-PMZCIOCJ.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  resolveClioDirs
4
- } from "./chunk-BNAZZHFG.js";
4
+ } from "./chunk-BYP5D4HI.js";
5
5
  import {
6
6
  init_esm_shims
7
7
  } from "./chunk-3R73A4XB.js";
@@ -70,4 +70,4 @@ export {
70
70
  workerCompileCacheEnvironment,
71
71
  deleteInjectedCompileCacheFrom
72
72
  };
73
- //# sourceMappingURL=chunk-I4HZDVNP.js.map
73
+ //# sourceMappingURL=chunk-PQEFIJ36.js.map
@@ -3,7 +3,10 @@ import {
3
3
  fleetLoopCheckStepId,
4
4
  fleetLoopRepairStepId,
5
5
  fleetStepWriteBoundary
6
- } from "./chunk-E77JEWSD.js";
6
+ } from "./chunk-CTJ4RNAA.js";
7
+ import {
8
+ resultContractShape
9
+ } from "./chunk-DYJP44XW.js";
7
10
  import {
8
11
  init_esm_shims
9
12
  } from "./chunk-3R73A4XB.js";
@@ -45,11 +48,23 @@ function executionPlanWaves(steps, maxWorkers) {
45
48
  const ready = steps.filter((step) => remaining.has(step.id) && step.dependencies.every((id) => completed.has(id)));
46
49
  if (ready.length === 0) throw new Error("execution plan: dependency cycle detected");
47
50
  const codeReady = ready.filter((step) => step.kind === "code").map((step) => step.id);
48
- const agentReady = ready.filter((step) => step.kind !== "code").map((step) => step.id);
51
+ const agentReady = ready.filter((step) => step.kind !== "code");
49
52
  const chunks = [];
50
- for (let offset = 0; offset < agentReady.length; offset += maxWorkers) {
51
- chunks.push(agentReady.slice(offset, offset + maxWorkers));
53
+ let chunk = [];
54
+ let endpointCounts = /* @__PURE__ */ new Map();
55
+ for (const step of agentReady) {
56
+ const endpoint = step.endpoint;
57
+ const endpointLimit = endpoint === void 0 ? Number.POSITIVE_INFINITY : Math.max(1, endpoint.limit - (endpoint.foregroundHeld ?? 0));
58
+ const endpointFull = endpoint !== void 0 && (endpointCounts.get(endpoint.key) ?? 0) >= endpointLimit;
59
+ if (chunk.length >= maxWorkers || endpointFull) {
60
+ chunks.push(chunk);
61
+ chunk = [];
62
+ endpointCounts = /* @__PURE__ */ new Map();
63
+ }
64
+ chunk.push(step.id);
65
+ if (endpoint !== void 0) endpointCounts.set(endpoint.key, (endpointCounts.get(endpoint.key) ?? 0) + 1);
52
66
  }
67
+ if (chunk.length > 0) chunks.push(chunk);
53
68
  if (chunks.length === 0) chunks.push([]);
54
69
  chunks[0] = [...codeReady, ...chunks[0] ?? []];
55
70
  for (const wave of chunks) {
@@ -139,6 +154,21 @@ function compileExecutionPlan(input) {
139
154
  };
140
155
  return { ...canonical, hash: createHash("sha256").update(JSON.stringify(canonical)).digest("hex") };
141
156
  }
157
+ function bindExecutionPlanEndpoints(plan, bindings) {
158
+ return compileExecutionPlan({
159
+ topology: plan.topology,
160
+ rootTask: plan.rootTask,
161
+ maxWorkers: plan.maxWorkers,
162
+ ...plan.writers === 1 ? { writers: 1 } : {},
163
+ onFailure: plan.onFailure,
164
+ steps: plan.steps.map((step) => {
165
+ if (step.kind === "code") return step;
166
+ const endpoint = bindings[step.id];
167
+ return endpoint === void 0 ? step : { ...step, endpoint: { ...endpoint } };
168
+ }),
169
+ loops: plan.loops
170
+ });
171
+ }
142
172
  function executionPlanAncestors(plan, stepId) {
143
173
  const byId = new Map(plan.steps.map((step) => [step.id, step]));
144
174
  const ancestors = /* @__PURE__ */ new Set();
@@ -185,6 +215,31 @@ function spliceExecutionPlan(plan, parentId, tasks) {
185
215
 
186
216
  // src/domains/dispatch/fleet-plan.ts
187
217
  init_esm_shims();
218
+
219
+ // src/domains/dispatch/fleet-node-prompt.ts
220
+ init_esm_shims();
221
+ function fleetNodeAnswerDirective(kind) {
222
+ if (kind === "architect-plan") return null;
223
+ return [
224
+ `Your result contract for this step is \`${kind}\`.`,
225
+ "The task above describes the whole chain. Any result shape it states belongs to the step that produces it, and does not apply to you.",
226
+ `End with exactly this shape and nothing else: ${resultContractShape({ kind })}`,
227
+ // The wire example carries literal names and evidence, and a small model
228
+ // handed one on a first attempt copies them: the first run of this
229
+ // directive came back claiming `npm run typecheck` / `exit 0` in the same
230
+ // breath as admitting it could not run a command. The fields are the
231
+ // contract; the values in the example are not.
232
+ "Its field values are an example. Fill them with what this run actually produced or observed, and never report a name or evidence you did not."
233
+ ].join("\n");
234
+ }
235
+ function renderFleetNodeTask(task, kind) {
236
+ const directive = fleetNodeAnswerDirective(kind);
237
+ return directive === null ? task : `${task}
238
+
239
+ ${directive}`;
240
+ }
241
+
242
+ // src/domains/dispatch/fleet-plan.ts
188
243
  function expandDependencies(dependencies, loopMembers) {
189
244
  return dependencies.flatMap((id) => {
190
245
  const loop = loopMembers.get(id);
@@ -233,7 +288,7 @@ function compileFleetExecutionPlan(input) {
233
288
  agentId: context.agentId,
234
289
  scope: context.scope,
235
290
  dependencies: [...dependencies],
236
- task,
291
+ task: renderFleetNodeTask(task, resolved.expectedResultContract),
237
292
  expectedResultContract: resolved.expectedResultContract,
238
293
  requestedAuthority: resolved.requestedAuthority,
239
294
  approvedAuthority: resolved.approvedAuthority,
@@ -375,8 +430,9 @@ function compileFleetExecutionPlan(input) {
375
430
  export {
376
431
  requireAgentSteps,
377
432
  compileExecutionPlan,
433
+ bindExecutionPlanEndpoints,
378
434
  executionPlanAncestors,
379
435
  spliceExecutionPlan,
380
436
  compileFleetExecutionPlan
381
437
  };
382
- //# sourceMappingURL=chunk-J3YUBZWY.js.map
438
+ //# sourceMappingURL=chunk-QBJA7R7N.js.map