@iowarp/clio-coder 0.3.9 → 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 (416) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/NOTICE +33 -0
  3. package/README.md +7 -2
  4. package/dist/{acp-7LOELQFP.js → acp-G5WJBNCT.js} +13 -12
  5. package/dist/{agents-FIBG2SHA.js → agents-FMV2Q5G4.js} +39 -36
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-OI4LIH2I.js → auth-3IDSJEIK.js} +16 -15
  8. package/dist/{builtins-AD25UL3C.js → builtins-XCZWXSC7.js} +3 -3
  9. package/dist/{chunk-IFBNV6H6.js → chunk-2ANTL7MR.js} +3 -3
  10. package/dist/{chunk-56KB5IJP.js → chunk-2OQE55CK.js} +3 -3
  11. package/dist/{chunk-N3PBVRTZ.js → chunk-32KWKNSF.js} +9 -7
  12. package/dist/{chunk-VKBMFOYV.js → chunk-36EJLSQQ.js} +23 -27
  13. package/dist/{chunk-465CC7FK.js → chunk-3BT2XMV4.js} +16 -13
  14. package/dist/{chunk-NQ6UCCOD.js → chunk-3URVFKWK.js} +7 -7
  15. package/dist/{chunk-WIE7ZOSW.js → chunk-3XML7CDN.js} +2 -2
  16. package/dist/chunk-42FMPA75.js +101 -0
  17. package/dist/{chunk-A2NJGIB3.js → chunk-5LXZXPKX.js} +2 -2
  18. package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
  19. package/dist/{chunk-JEQQR47K.js → chunk-6DB53AJS.js} +168 -9
  20. package/dist/{chunk-KV2AOLDF.js → chunk-76ONBSIA.js} +5 -25
  21. package/dist/{chunk-FALJGAWU.js → chunk-7MCTRUCE.js} +2 -2
  22. package/dist/{chunk-5T7RBWN2.js → chunk-AB44T6BB.js} +5 -5
  23. package/dist/chunk-B7OBL7PK.js +1405 -0
  24. package/dist/{chunk-B5CSFE7B.js → chunk-BBVJUZHB.js} +2 -2
  25. package/dist/{chunk-EQ63NRB7.js → chunk-BBVYXMFO.js} +2 -2
  26. package/dist/{chunk-O6I4CIEU.js → chunk-BKFJHQCA.js} +6 -6
  27. package/dist/chunk-BKFM6EJV.js +462 -0
  28. package/dist/chunk-BMS5RKQY.js +27 -0
  29. package/dist/{chunk-MV2VUEJC.js → chunk-BPKCPIL7.js} +2 -2
  30. package/dist/{chunk-TEO2TLVN.js → chunk-BUMFYQFY.js} +964 -1120
  31. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  32. package/dist/chunk-C2LTL2W6.js +2447 -0
  33. package/dist/{chunk-EBOC7MT3.js → chunk-CODPRO7Q.js} +8 -8
  34. package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
  35. package/dist/{chunk-ODFEOB4F.js → chunk-CY6FY24N.js} +26 -8
  36. package/dist/{chunk-MIX5N5AC.js → chunk-DQITNCXG.js} +394 -154
  37. package/dist/{chunk-S4COXYBG.js → chunk-DYJP44XW.js} +129 -106
  38. package/dist/{chunk-N5XKWMDW.js → chunk-F4CKPOEQ.js} +6 -6
  39. package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
  40. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  41. package/dist/{chunk-7C6RYZGQ.js → chunk-GKF55TAZ.js} +3 -3
  42. package/dist/{chunk-B5XRQOLB.js → chunk-GR5G2PVF.js} +9 -8
  43. package/dist/{chunk-XDOQXGFO.js → chunk-GXNLGKAB.js} +64 -8
  44. package/dist/chunk-HHV2GANA.js +88 -0
  45. package/dist/{chunk-774ILSRL.js → chunk-HI63TFOG.js} +4 -3
  46. package/dist/{chunk-R7LNVMCS.js → chunk-HJJTYUHX.js} +64 -72
  47. package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
  48. package/dist/{chunk-CA42X6KT.js → chunk-HWHKMHUA.js} +6 -6
  49. package/dist/chunk-HZHHCK24.js +1631 -0
  50. package/dist/{chunk-HJB5IUKP.js → chunk-I5VEOC6I.js} +12 -12
  51. package/dist/chunk-IBEBSCYA.js +564 -0
  52. package/dist/chunk-IQ7KR472.js +362 -0
  53. package/dist/{chunk-4H6ULJ3H.js → chunk-J4W7KFM7.js} +921 -990
  54. package/dist/{chunk-4LJX2PUC.js → chunk-JDG2WCRO.js} +5 -5
  55. package/dist/{chunk-NZU6YDNV.js → chunk-K5C3NCBD.js} +4 -4
  56. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  57. package/dist/{chunk-NNNWO6F2.js → chunk-KFZI4NIL.js} +93 -3
  58. package/dist/chunk-KMVISBZR.js +132 -0
  59. package/dist/{chunk-BVDVID7E.js → chunk-LDQ2ZF2M.js} +2 -2
  60. package/dist/{chunk-OEDBCISO.js → chunk-LQ3DZAMX.js} +2 -2
  61. package/dist/{chunk-PZ4I4JE2.js → chunk-LY4S7GJC.js} +124 -116
  62. package/dist/{chunk-3DUR4WUA.js → chunk-MLKNTWH2.js} +19 -19
  63. package/dist/chunk-NEKRRTYW.js +56 -0
  64. package/dist/{chunk-5DQRIYDZ.js → chunk-NHCZP4K7.js} +2 -2
  65. package/dist/chunk-NHLBIGRH.js +1506 -0
  66. package/dist/chunk-NQQH3YT7.js +302 -0
  67. package/dist/chunk-NYS75XW5.js +15 -0
  68. package/dist/{chunk-TD7UE2L5.js → chunk-O4XIVISU.js} +7 -7
  69. package/dist/{chunk-WXCJ7VME.js → chunk-O6TL7WWY.js} +6 -6
  70. package/dist/chunk-OQBA45DZ.js +97 -0
  71. package/dist/{chunk-LU7P4LHA.js → chunk-P3FOHJT4.js} +2 -2
  72. package/dist/chunk-PMZCIOCJ.js +25 -0
  73. package/dist/{chunk-I4HZDVNP.js → chunk-PQEFIJ36.js} +2 -2
  74. package/dist/{chunk-HKO36JWF.js → chunk-QBJA7R7N.js} +31 -3
  75. package/dist/chunk-QDC3K2U3.js +262 -0
  76. package/dist/{chunk-5HFBWUMU.js → chunk-QLFS5GO2.js} +4 -4
  77. package/dist/{chunk-GAYUJ7LE.js → chunk-QLL7ILRG.js} +41 -32
  78. package/dist/{chunk-LXPJXFM5.js → chunk-QREDIESB.js} +7 -7
  79. package/dist/chunk-QSNYB6ZV.js +195 -0
  80. package/dist/chunk-R346GLFC.js +31 -0
  81. package/dist/{chunk-VPTUJU4P.js → chunk-SJ5ZKQ4S.js} +2 -2
  82. package/dist/{chunk-QQ7EKM72.js → chunk-SP2RXXYO.js} +6 -54
  83. package/dist/chunk-SUCTJL45.js +45 -0
  84. package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
  85. package/dist/chunk-T56WDKA5.js +183 -0
  86. package/dist/chunk-TVHHYFHE.js +255 -0
  87. package/dist/{chunk-IHKBWSXF.js → chunk-TZ3SGWZZ.js} +2 -2
  88. package/dist/{chunk-ECUO3KDP.js → chunk-U77AMWDL.js} +47 -7
  89. package/dist/{chunk-3UUY7R3Z.js → chunk-ULC6OTWO.js} +7 -7
  90. package/dist/{chunk-AEYBF3TB.js → chunk-UM7N4G5A.js} +2 -2
  91. package/dist/{chunk-3V5AYSEQ.js → chunk-UXMFQ54G.js} +43 -36
  92. package/dist/{chunk-YW7UVM5V.js → chunk-V5DHCITQ.js} +34 -1
  93. package/dist/{chunk-47CMYGET.js → chunk-VAZSBTKF.js} +2 -2
  94. package/dist/{chunk-3MRC2YSQ.js → chunk-VEO4AP2K.js} +2 -2
  95. package/dist/{chunk-PNY46YEY.js → chunk-VFA6GDY5.js} +47 -3
  96. package/dist/chunk-VO67MWHC.js +75 -0
  97. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  98. package/dist/{chunk-AD7Y7STJ.js → chunk-VYMXRQI6.js} +36 -22
  99. package/dist/{chunk-T3Z6VAAF.js → chunk-W5VSYASO.js} +19 -17
  100. package/dist/{chunk-5PVQ4SRS.js → chunk-WZR7K7ZX.js} +7 -123
  101. package/dist/{chunk-DG4M6ZUE.js → chunk-X3YGUTOB.js} +4 -4
  102. package/dist/chunk-X75E3D2N.js +686 -0
  103. package/dist/{chunk-P3JGPQFL.js → chunk-YDFRH54B.js} +4 -4
  104. package/dist/chunk-YJX4SHTD.js +40 -0
  105. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  106. package/dist/{chunk-YSEHGPCT.js → chunk-Z2RR6MAK.js} +3 -3
  107. package/dist/{chunk-HCBCAYZU.js → chunk-Z4TXYIEG.js} +5 -5
  108. package/dist/cli/index.js +47 -36
  109. package/dist/{clio-LT5V7SSZ.js → clio-2JXHBBY5.js} +7 -7
  110. package/dist/{code-nav-LMW275PA.js → code-nav-3YYRMYNF.js} +6 -6
  111. package/dist/{compile-cache-CVJMMODC.js → compile-cache-7FPE6PS3.js} +3 -3
  112. package/dist/{components-ZFA3SAER.js → components-RYZV4JGP.js} +5 -5
  113. package/dist/{config-RXS5T3JT.js → config-QZPCMYSO.js} +58 -50
  114. package/dist/{configure-2WYWSCSD.js → configure-TEGEBYCA.js} +21 -19
  115. package/dist/{context-I3BTOTCS.js → context-AV7OEZ4D.js} +11 -11
  116. package/dist/{context-MVOORGMF.js → context-E6H5RNMC.js} +49 -41
  117. package/dist/{context-PALKKQYL.js → context-GSXUE4CT.js} +25 -23
  118. package/dist/{context-clear-N2WOYZ2K.js → context-clear-SHIBYK6T.js} +48 -40
  119. package/dist/{context-working-set-MIEVECVZ.js → context-working-set-5ZGKPGZQ.js} +11 -10
  120. package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-EFMJT4LD.js} +88 -60
  121. package/dist/{docs-7LQ23DLM.js → docs-23KQS3XK.js} +5 -5
  122. package/dist/doctor-QOA5FNY5.js +313 -0
  123. package/dist/{eval-IJ5VEZDJ.js → eval-TFBYQH4H.js} +66 -64
  124. package/dist/eval-inventory-SXH7PDKX.js +316 -0
  125. package/dist/{evidence-L5APPXNV.js → evidence-ERGESKGN.js} +198 -44
  126. package/dist/{evolve-RGNKFJ52.js → evolve-VDXTSYCJ.js} +46 -38
  127. package/dist/{extensions-7WYWUX5A.js → extensions-7BGBHN57.js} +6 -6
  128. package/dist/{fleet-6CNVBZZP.js → fleet-2RRVDF2V.js} +189 -101
  129. package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-VJ726XIA.js} +10 -10
  130. package/dist/fleet-decisions-EPAPM3XJ.js +157 -0
  131. package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-JF5QOATM.js} +16 -15
  132. package/dist/fleet-inspect-VLY4S7QM.js +442 -0
  133. package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-AIZUEJOY.js} +6 -5
  134. package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-AJRPDMDV.js} +20 -18
  135. package/dist/fleet-verify-JFEL2L3H.js +175 -0
  136. package/dist/fleet-view-ZCON35AG.js +102 -0
  137. package/dist/{init-VBN2ACVA.js → init-DN2WWLFE.js} +64 -56
  138. package/dist/install-XGLBQY5E.js +13 -0
  139. package/dist/interop-OZBKXAYL.js +114 -0
  140. package/dist/{library-JHGUMLY2.js → library-YWZG7IMW.js} +19 -18
  141. package/dist/{memory-K4OQIYWG.js → memory-I4C4HMLW.js} +48 -40
  142. package/dist/{models-2NCZUWDD.js → models-CEYXJBO6.js} +30 -28
  143. package/dist/{monitor-MMVTJABD.js → monitor-NZ6GCI3P.js} +53 -47
  144. package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-GCGQ4N5I.js} +6311 -7145
  145. package/dist/panes-HMABYVO4.js +58 -0
  146. package/dist/panes-KY6W3V2E.js +103 -0
  147. package/dist/{paths-DBXMZMDU.js → paths-II4K7DNR.js} +5 -5
  148. package/dist/{reset-DD5JGOY3.js → reset-DQ6FGCSH.js} +13 -11
  149. package/dist/resources-BB3MVJMD.js +111 -0
  150. package/dist/{run-QEGNX7FL.js → run-H2GQDUER.js} +113 -82
  151. package/dist/{share-JKD3BQMW.js → share-GTJN6A5O.js} +18 -17
  152. package/dist/{skills-LMQIKDOZ.js → skills-L55TEW6R.js} +31 -24
  153. package/dist/{skills-eval-I7X2774U.js → skills-eval-XVXPH2JI.js} +61 -52
  154. package/dist/skills-inventory-S4MXPJFV.js +126 -0
  155. package/dist/slash-commands-ZSGASKJC.js +77 -0
  156. package/dist/{steer-CF5TDANS.js → steer-RZGSCY4R.js} +3 -3
  157. package/dist/{support-I7LOJLIF.js → support-PKEUNNQL.js} +4 -4
  158. package/dist/{targets-RUSR6B5Z.js → targets-NCPZ644J.js} +31 -29
  159. package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-44SV3YCN.js} +4 -4
  160. package/dist/tools-DAF3DI3C.js +27 -0
  161. package/dist/{trace-ODOQIVIW.js → trace-FYVW2MQA.js} +149 -7
  162. package/dist/tui-primitives-2AKXQNZK.js +13 -0
  163. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-DW2PNOIC.js} +5 -5
  164. package/dist/{upgrade-XANW3FXB.js → upgrade-3XPP6OQL.js} +26 -24
  165. package/dist/{usage-4H7ZRXQT.js → usage-3NLHGTU2.js} +57 -49
  166. package/dist/{verifiers-UZXNBZEB.js → verifiers-SSQONKRT.js} +171 -12
  167. package/dist/{verify-BVKWTNDL.js → verify-3U6J7FZI.js} +9 -9
  168. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-S7RR6GZ7.js} +3 -3
  169. package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-CEHYGPGQ.js} +67 -59
  170. package/dist/with-panes-MKB46MPQ.js +782 -0
  171. package/dist/worker/entry.js +101 -66
  172. package/docs/README.md +3 -2
  173. package/docs/acp.md +24 -3
  174. package/docs/alcf-provider.md +1 -1
  175. package/docs/architecture.md +2 -2
  176. package/docs/artifact-versions.md +4 -1
  177. package/docs/built-in-agents.md +1 -1
  178. package/docs/capacity-and-scheduling.md +43 -5
  179. package/docs/commands-and-modes.md +31 -2
  180. package/docs/configuration-and-targets.md +40 -10
  181. package/docs/context-engine.md +1 -1
  182. package/docs/development-pipeline.md +19 -0
  183. package/docs/dispatch-typed-intent.md +385 -0
  184. package/docs/documentation-coverage.md +2 -2
  185. package/docs/documentation-guide.md +1 -1
  186. package/docs/environment-variables.md +1 -0
  187. package/docs/eval-runner.md +1 -1
  188. package/docs/evals-internal.md +1 -1
  189. package/docs/evidence-and-memory.md +2 -2
  190. package/docs/evolution.md +1 -1
  191. package/docs/exit-codes-and-output.md +1 -1
  192. package/docs/extensions-and-sharing.md +25 -1
  193. package/docs/fleet-dispatch.md +22 -1
  194. package/docs/installation-and-lifecycle.md +15 -2
  195. package/docs/middleware-and-components.md +1 -1
  196. package/docs/model-catalog.md +10 -1
  197. package/docs/observability.md +3 -3
  198. package/docs/proactive-memory.md +1 -1
  199. package/docs/prompt-envelope-and-tools.md +1 -1
  200. package/docs/provider-adapter-cookbook.md +1 -1
  201. package/docs/safety-model.md +2 -2
  202. package/docs/scientific-validation.md +3 -3
  203. package/docs/session-lifecycle.md +1 -1
  204. package/docs/skills-marketplace.md +1 -1
  205. package/docs/tool-usage.md +18 -8
  206. package/docs/trace-store.md +1 -1
  207. package/docs/troubleshooting.md +1 -1
  208. package/docs/tui-design.md +1 -1
  209. package/docs/worker-dispatch-mechanics.md +1 -1
  210. package/package.json +4 -2
  211. package/src/cli/acp.ts +6 -2
  212. package/src/cli/argv.ts +25 -0
  213. package/src/cli/configure.ts +23 -21
  214. package/src/cli/doctor-panes.ts +124 -0
  215. package/src/cli/doctor-toolchain.ts +57 -0
  216. package/src/cli/doctor.ts +20 -1
  217. package/src/cli/eval-inventory.ts +436 -0
  218. package/src/cli/eval.ts +13 -0
  219. package/src/cli/evidence-detail.ts +88 -0
  220. package/src/cli/evidence-inventory.ts +183 -0
  221. package/src/cli/evidence.ts +30 -5
  222. package/src/cli/fleet-decisions.ts +69 -0
  223. package/src/cli/fleet-inspect.ts +334 -0
  224. package/src/cli/fleet-verify.ts +133 -0
  225. package/src/cli/fleet-view.ts +810 -0
  226. package/src/cli/fleet.ts +148 -37
  227. package/src/cli/index.ts +14 -2
  228. package/src/cli/interop-inspect.ts +128 -0
  229. package/src/cli/interop.ts +34 -0
  230. package/src/cli/panes.ts +35 -0
  231. package/src/cli/reset.ts +5 -2
  232. package/src/cli/run.ts +58 -0
  233. package/src/cli/skills-inventory.ts +185 -0
  234. package/src/cli/skills.ts +16 -13
  235. package/src/cli/tools.ts +321 -0
  236. package/src/cli/trace-inspect.ts +252 -0
  237. package/src/cli/trace.ts +23 -2
  238. package/src/cli/verifiers-inspect.ts +347 -0
  239. package/src/cli/verifiers.ts +9 -0
  240. package/src/core/bus-events.ts +4 -0
  241. package/src/core/config.ts +49 -0
  242. package/src/core/defaults.ts +93 -7
  243. package/src/core/response-schema.ts +44 -4
  244. package/src/core/theme-token-hex.ts +43 -0
  245. package/src/core/tool-names.ts +2 -1
  246. package/src/core/xdg.ts +1 -1
  247. package/src/domains/agents/fleets/build-review.md +0 -3
  248. package/src/domains/agents/fleets/build-test.md +0 -3
  249. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  250. package/src/domains/agents/result-contract.ts +164 -35
  251. package/src/domains/config/classify.ts +3 -0
  252. package/src/domains/dispatch/admission-error.ts +9 -0
  253. package/src/domains/dispatch/admission.ts +22 -21
  254. package/src/domains/dispatch/capacity-lease.ts +21 -1
  255. package/src/domains/dispatch/council-topology.ts +398 -0
  256. package/src/domains/dispatch/extension.ts +222 -50
  257. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  258. package/src/domains/dispatch/fleet-plan.ts +7 -2
  259. package/src/domains/dispatch/fleet-run.ts +64 -1
  260. package/src/domains/dispatch/gate-decisions.ts +11 -1
  261. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  262. package/src/domains/dispatch/gate-topology.ts +289 -0
  263. package/src/domains/dispatch/index.ts +19 -0
  264. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  265. package/src/domains/dispatch/intent.ts +85 -1
  266. package/src/domains/dispatch/reservation-store.ts +24 -4
  267. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  268. package/src/domains/dispatch/run-event-journal.ts +598 -0
  269. package/src/domains/dispatch/state.ts +45 -1
  270. package/src/domains/dispatch/types.ts +13 -0
  271. package/src/domains/dispatch/validation.ts +33 -8
  272. package/src/domains/eval/compare/compare.ts +3 -16
  273. package/src/domains/eval/inventory.ts +113 -0
  274. package/src/domains/eval/schema/serving.ts +31 -0
  275. package/src/domains/evidence/store.ts +6 -0
  276. package/src/domains/memory/index.ts +0 -1
  277. package/src/domains/memory/task-memory-policy.ts +6 -10
  278. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  279. package/src/domains/middleware/memory-intervention.ts +33 -21
  280. package/src/domains/mux/contract.ts +434 -0
  281. package/src/domains/mux/detect.ts +158 -0
  282. package/src/domains/mux/extension.ts +47 -0
  283. package/src/domains/mux/index.ts +96 -0
  284. package/src/domains/mux/manifest.ts +6 -0
  285. package/src/domains/mux/operations.ts +164 -0
  286. package/src/domains/mux/pane-registry.ts +90 -0
  287. package/src/domains/mux/protocol.ts +49 -0
  288. package/src/domains/mux/socket-client.ts +816 -0
  289. package/src/domains/mux/types.ts +222 -0
  290. package/src/domains/mux/viewer-command.ts +59 -0
  291. package/src/domains/mux/yazi/assets/init.lua +2 -0
  292. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  293. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  294. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  295. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  296. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  297. package/src/domains/mux/yazi/event-stream.ts +180 -0
  298. package/src/domains/mux/yazi/profile.ts +299 -0
  299. package/src/domains/mux/yazi/session.ts +228 -0
  300. package/src/domains/mux/yazi/theme.ts +30 -0
  301. package/src/domains/observability/cost.ts +21 -0
  302. package/src/domains/observability/index.ts +2 -0
  303. package/src/domains/observability/trace-store.ts +42 -0
  304. package/src/domains/providers/endpoint-capacity.ts +154 -22
  305. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  306. package/src/domains/providers/extension.ts +20 -3
  307. package/src/domains/providers/index.ts +22 -0
  308. package/src/domains/providers/model-runtime-capabilities.ts +32 -0
  309. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  310. package/src/domains/providers/runtimes/builtins.ts +2 -0
  311. package/src/domains/providers/runtimes/protocol/litellm.ts +375 -0
  312. package/src/domains/providers/support.ts +1 -0
  313. package/src/domains/providers/target-model-cache.ts +124 -0
  314. package/src/domains/resources/index.ts +3 -0
  315. package/src/domains/resources/skills/loader.ts +33 -0
  316. package/src/domains/safety/action-classifier.ts +6 -0
  317. package/src/domains/toolchain/archive.ts +175 -0
  318. package/src/domains/toolchain/contract.ts +28 -0
  319. package/src/domains/toolchain/extension.ts +47 -0
  320. package/src/domains/toolchain/index.ts +39 -0
  321. package/src/domains/toolchain/install.ts +327 -0
  322. package/src/domains/toolchain/manifest.ts +8 -0
  323. package/src/domains/toolchain/paths.ts +34 -0
  324. package/src/domains/toolchain/registry.ts +265 -0
  325. package/src/domains/toolchain/remove.ts +218 -0
  326. package/src/domains/toolchain/resolve.ts +182 -0
  327. package/src/domains/toolchain/types.ts +113 -0
  328. package/src/domains/toolchain/version.ts +88 -0
  329. package/src/engine/acp/server.ts +413 -70
  330. package/src/engine/acp/types.ts +19 -1
  331. package/src/engine/claude/sdk-module.ts +98 -0
  332. package/src/engine/claude/sdk-runtime.ts +19 -11
  333. package/src/engine/tui-primitives.ts +21 -0
  334. package/src/engine/tui.ts +1 -0
  335. package/src/engine/worker-runtime.ts +2 -13
  336. package/src/entry/boot-options.ts +2 -0
  337. package/src/entry/orchestrator.ts +103 -5
  338. package/src/entry/panes-activation.ts +31 -0
  339. package/src/entry/with-panes.ts +20 -0
  340. package/src/interactive/context-overlay.ts +1 -0
  341. package/src/interactive/cost-overlay.ts +2 -0
  342. package/src/interactive/council-grid.ts +1 -3
  343. package/src/interactive/council.ts +11 -0
  344. package/src/interactive/dispatch-board.ts +26 -16
  345. package/src/interactive/interactive-application.ts +153 -6
  346. package/src/interactive/interactive-input-runtime.ts +7 -0
  347. package/src/interactive/interactive-slash-runtime.ts +36 -6
  348. package/src/interactive/memory-overlay.ts +1 -0
  349. package/src/interactive/modal-marker.ts +170 -0
  350. package/src/interactive/mux-bridge.ts +214 -0
  351. package/src/interactive/overlay-frame.ts +58 -2
  352. package/src/interactive/overlay-general-openers.ts +1 -0
  353. package/src/interactive/overlay-key-routing.ts +14 -3
  354. package/src/interactive/overlay-lifecycle.ts +19 -3
  355. package/src/interactive/overlay-model-selectors.ts +40 -3
  356. package/src/interactive/overlay-permission-lifecycle.ts +90 -22
  357. package/src/interactive/overlay-transitions.ts +18 -4
  358. package/src/interactive/overlays/agents.ts +1 -0
  359. package/src/interactive/overlays/ask-user.ts +136 -30
  360. package/src/interactive/overlays/auth-dialog.ts +1 -0
  361. package/src/interactive/overlays/context-reset.ts +1 -0
  362. package/src/interactive/overlays/cwd-fallback.ts +1 -0
  363. package/src/interactive/overlays/decisions.ts +11 -11
  364. package/src/interactive/overlays/extensions.ts +1 -0
  365. package/src/interactive/overlays/fleet-run-approval.ts +1 -0
  366. package/src/interactive/overlays/handoff-review.ts +1 -0
  367. package/src/interactive/overlays/help-reference.ts +2 -0
  368. package/src/interactive/overlays/interop.ts +1 -0
  369. package/src/interactive/overlays/library-install-confirm.ts +1 -0
  370. package/src/interactive/overlays/library-tabs.ts +28 -0
  371. package/src/interactive/overlays/list-overlay.ts +10 -1
  372. package/src/interactive/overlays/message-picker.ts +1 -0
  373. package/src/interactive/overlays/model-scope.ts +86 -0
  374. package/src/interactive/overlays/model-selector.ts +1 -0
  375. package/src/interactive/overlays/prompts.ts +1 -0
  376. package/src/interactive/overlays/session-selector.ts +1 -0
  377. package/src/interactive/overlays/settings-sections.ts +30 -0
  378. package/src/interactive/overlays/settings.ts +579 -44
  379. package/src/interactive/overlays/side-question.ts +1 -0
  380. package/src/interactive/overlays/skills-hub.ts +3 -11
  381. package/src/interactive/overlays/tree-selector.ts +1 -0
  382. package/src/interactive/pane-policy.ts +46 -0
  383. package/src/interactive/panes-runtime.ts +292 -0
  384. package/src/interactive/renderers/compaction-summary.ts +29 -0
  385. package/src/interactive/renderers/worker-entry.ts +122 -14
  386. package/src/interactive/slash-commands.ts +251 -15
  387. package/src/interactive/tasks-overlay.ts +1 -0
  388. package/src/interactive/theme/tokens.ts +3 -14
  389. package/src/interactive/turn-context.ts +47 -2
  390. package/src/interactive/view/artifacts.ts +109 -1
  391. package/src/interactive/view/view-overlay.ts +1 -0
  392. package/src/interactive/watch-pane.ts +152 -0
  393. package/src/interactive/worker-progress.ts +7 -1
  394. package/src/interactive/worker-receipts.ts +19 -1
  395. package/src/interactive/worker-stream.ts +5 -0
  396. package/src/interactive/yazi-bridge.ts +444 -0
  397. package/src/tools/bootstrap.ts +26 -2
  398. package/src/tools/builtin-tool-catalog.ts +15 -0
  399. package/src/tools/compete-worktrees.ts +83 -2
  400. package/src/tools/core-bootstrap.ts +2 -1
  401. package/src/tools/dispatch-admission.ts +14 -3
  402. package/src/tools/dispatch-arguments.ts +20 -20
  403. package/src/tools/dispatch-run-events.ts +134 -19
  404. package/src/tools/dispatch-runner.ts +29 -7
  405. package/src/tools/dispatch-types.ts +15 -3
  406. package/src/tools/dispatch.ts +1 -1
  407. package/src/tools/executables.ts +17 -14
  408. package/src/tools/observation.ts +54 -4
  409. package/src/tools/panes-surface.ts +38 -0
  410. package/src/tools/panes.ts +112 -0
  411. package/src/tools/policy.ts +10 -1
  412. package/src/tools/presentation.ts +1 -0
  413. package/dist/chunk-D73KXYPF.js +0 -37
  414. package/dist/chunk-MLOK6ZOS.js +0 -2888
  415. package/dist/chunk-YKOFT37S.js +0 -279
  416. package/dist/doctor-TWBWFK5V.js +0 -165
@@ -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,35 +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-HCBCAYZU.js";
4
+ } from "./chunk-Z4TXYIEG.js";
5
5
  import {
6
6
  parseFleetContract
7
- } from "./chunk-HPCTNZM2.js";
7
+ } from "./chunk-CTJ4RNAA.js";
8
8
  import {
9
9
  parseFrontmatter
10
10
  } from "./chunk-RKKLTLYB.js";
11
11
  import {
12
12
  assertAgentSpecPolicy,
13
13
  normalizeAgentSpec
14
- } from "./chunk-S4COXYBG.js";
14
+ } from "./chunk-DYJP44XW.js";
15
15
  import {
16
16
  readSettings,
17
17
  settingsPath,
18
18
  updateSettings
19
- } from "./chunk-PNY46YEY.js";
19
+ } from "./chunk-VFA6GDY5.js";
20
20
  import {
21
21
  readClioVersion
22
22
  } from "./chunk-IWHMRKLL.js";
23
23
  import {
24
24
  DEFAULT_SETTINGS
25
- } from "./chunk-XDOQXGFO.js";
25
+ } from "./chunk-GXNLGKAB.js";
26
26
  import {
27
27
  require_dist
28
28
  } from "./chunk-APJ265NV.js";
29
29
  import {
30
30
  clioConfigDir,
31
31
  resolveClioDirs
32
- } from "./chunk-BNAZZHFG.js";
32
+ } from "./chunk-BYP5D4HI.js";
33
33
  import {
34
34
  safeResourceBackupPath,
35
35
  safeResourceWrite
@@ -612,4 +612,4 @@ export {
612
612
  importShareArchive,
613
613
  ShareDomainModule
614
614
  };
615
- //# sourceMappingURL=chunk-TD7UE2L5.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-HAY4ZE2P.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-N3PBVRTZ.js";
14
+ } from "./chunk-32KWKNSF.js";
15
15
  import {
16
16
  classify
17
- } from "./chunk-S4COXYBG.js";
17
+ } from "./chunk-DYJP44XW.js";
18
18
  import {
19
19
  BusChannels,
20
20
  isRunAbortedPayload
21
- } from "./chunk-RKRLDWD3.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-WXCJ7VME.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-HPCTNZM2.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";
@@ -212,6 +215,31 @@ function spliceExecutionPlan(plan, parentId, tasks) {
212
215
 
213
216
  // src/domains/dispatch/fleet-plan.ts
214
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
215
243
  function expandDependencies(dependencies, loopMembers) {
216
244
  return dependencies.flatMap((id) => {
217
245
  const loop = loopMembers.get(id);
@@ -260,7 +288,7 @@ function compileFleetExecutionPlan(input) {
260
288
  agentId: context.agentId,
261
289
  scope: context.scope,
262
290
  dependencies: [...dependencies],
263
- task,
291
+ task: renderFleetNodeTask(task, resolved.expectedResultContract),
264
292
  expectedResultContract: resolved.expectedResultContract,
265
293
  requestedAuthority: resolved.requestedAuthority,
266
294
  approvedAuthority: resolved.approvedAuthority,
@@ -407,4 +435,4 @@ export {
407
435
  spliceExecutionPlan,
408
436
  compileFleetExecutionPlan
409
437
  };
410
- //# sourceMappingURL=chunk-HKO36JWF.js.map
438
+ //# sourceMappingURL=chunk-QBJA7R7N.js.map