@iowarp/clio-coder 0.3.4 → 0.3.7

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 (376) hide show
  1. package/CHANGELOG.md +65 -2
  2. package/CONTRIBUTING.md +6 -6
  3. package/README.md +16 -5
  4. package/dist/{acp-S5R4RR5B.js → acp-SK4MD6MM.js} +11 -11
  5. package/dist/{agents-P6DMMVZY.js → agents-2FN2K6ME.js} +33 -26
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-2XCZLPKS.js → auth-QIYZWM5I.js} +15 -15
  8. package/dist/{chunk-EKMEHE4H.js → chunk-33YXPOE3.js} +2 -3
  9. package/dist/{chunk-VAWWTKDP.js → chunk-3HAPLH5M.js} +11 -11
  10. package/dist/{chunk-YCWGATWI.js → chunk-465YSENW.js} +3 -3
  11. package/dist/{chunk-4OC57DA6.js → chunk-4DGYLA73.js} +53 -2
  12. package/dist/{chunk-UZHIZC5S.js → chunk-4DWFMQDR.js} +61 -76
  13. package/dist/{chunk-ZWMF7253.js → chunk-5C3AQNDW.js} +328 -9
  14. package/dist/{chunk-22NAGB7X.js → chunk-5C77SEEY.js} +5 -94
  15. package/dist/{chunk-WPQLXFOZ.js → chunk-5FR74PWO.js} +3 -2
  16. package/dist/{chunk-35MKKU5R.js → chunk-5UJ6ECTS.js} +18 -10
  17. package/dist/{chunk-BRXQQJFP.js → chunk-6M7VS3J3.js} +571 -50
  18. package/dist/{chunk-QQK64KLB.js → chunk-6TUKSZVF.js} +141 -23
  19. package/dist/{chunk-N4CZJQRK.js → chunk-AB4XIIVB.js} +8 -6
  20. package/dist/{chunk-KRPY7NTG.js → chunk-BMWK7ZIZ.js} +14 -20
  21. package/dist/{chunk-4BPJXDWC.js → chunk-C4JBQ5SR.js} +30 -14
  22. package/dist/{chunk-ZYKPLLNQ.js → chunk-CEYBNUGC.js} +821 -83
  23. package/dist/{chunk-VEZEGCGW.js → chunk-D4MDIG46.js} +20 -18
  24. package/dist/chunk-DJNLUABN.js +843 -0
  25. package/dist/{chunk-BP4OYD6A.js → chunk-DMD2AGVS.js} +21 -2
  26. package/dist/{chunk-KOHPCX4K.js → chunk-DOOEX22V.js} +2 -2
  27. package/dist/chunk-DQA7QLMD.js +123 -0
  28. package/dist/chunk-DR52UMZW.js +21 -0
  29. package/dist/{chunk-3HZ5RWN2.js → chunk-EBEFWSGL.js} +9 -7
  30. package/dist/{chunk-EDRHSCIE.js → chunk-EELBMBT6.js} +128 -13
  31. package/dist/{chunk-HV5X7OR2.js → chunk-EOOQZZDE.js} +16 -14
  32. package/dist/{chunk-WR67VIZY.js → chunk-FOT2FX5J.js} +63 -5
  33. package/dist/{chunk-BPGS2WCQ.js → chunk-GEYXPTRF.js} +2 -1
  34. package/dist/{chunk-FYYLNIL5.js → chunk-GH5622CP.js} +2 -2
  35. package/dist/{chunk-BEY543CS.js → chunk-GOXNB3AO.js} +5 -2
  36. package/dist/chunk-GWS3VEIW.js +195 -0
  37. package/dist/{chunk-G4BMMOKF.js → chunk-HVDIIIQW.js} +2 -2
  38. package/dist/chunk-HWUFFB6L.js +83 -0
  39. package/dist/{chunk-X6COSD2O.js → chunk-J7PIKKWC.js} +8 -436
  40. package/dist/{chunk-NILBFAPG.js → chunk-JNXPYBB4.js} +2 -2
  41. package/dist/{chunk-4VP4KH3K.js → chunk-JRIO5UD2.js} +4 -4
  42. package/dist/{chunk-K6WL7QZT.js → chunk-JTSEDYVQ.js} +7 -7
  43. package/dist/{chunk-QKMUKYO7.js → chunk-KCMKRQX4.js} +236 -84
  44. package/dist/chunk-KZ2H5X4G.js +1026 -0
  45. package/dist/{chunk-A2GZF7DC.js → chunk-LADCF22A.js} +13 -13
  46. package/dist/chunk-LCGCVYZ4.js +57 -0
  47. package/dist/chunk-M4AKACEO.js +382 -0
  48. package/dist/{chunk-POHLU5DW.js → chunk-M6L6IDJG.js} +3 -3
  49. package/dist/{chunk-4JUF2NNX.js → chunk-MXI6J5JF.js} +7 -7
  50. package/dist/{chunk-X4RCMKVQ.js → chunk-NDINPTJ4.js} +2 -2
  51. package/dist/{chunk-TTNYS3EA.js → chunk-OB5HIGJY.js} +1 -1
  52. package/dist/{chunk-7RXG6QRZ.js → chunk-OBMAI2DP.js} +61 -840
  53. package/dist/{chunk-5M54SPOL.js → chunk-ODFEOB4F.js} +161 -5
  54. package/dist/chunk-PD3MESLB.js +242 -0
  55. package/dist/{chunk-ED4KHGC3.js → chunk-PPAMZ32Z.js} +9 -2
  56. package/dist/{chunk-VMNQ6OZA.js → chunk-QCTRSGHQ.js} +963 -786
  57. package/dist/chunk-RVG5JXAL.js +41 -0
  58. package/dist/{chunk-RD5U66HV.js → chunk-SROCI7ZU.js} +7 -7
  59. package/dist/{chunk-MFFY33HR.js → chunk-THKY7CD7.js} +466 -205
  60. package/dist/{chunk-34475P3I.js → chunk-TSHXZTOQ.js} +5 -4
  61. package/dist/{chunk-PCZJO5TI.js → chunk-UFQ3F4FW.js} +13 -178
  62. package/dist/{chunk-AD2SYQYC.js → chunk-UHXRNZ2J.js} +121 -3
  63. package/dist/chunk-UND3GU2L.js +103 -0
  64. package/dist/{chunk-QQL5RT5M.js → chunk-UUANF5CR.js} +2323 -2114
  65. package/dist/{chunk-VJWL6YS5.js → chunk-UUVG37B4.js} +2 -2
  66. package/dist/chunk-UVDSQ6LW.js +472 -0
  67. package/dist/{chunk-QWU7ZBO7.js → chunk-VQNODYQ4.js} +215 -56
  68. package/dist/chunk-VREKEFLL.js +37 -0
  69. package/dist/{chunk-2TZWSW76.js → chunk-WHGPSPT5.js} +2 -2
  70. package/dist/{chunk-TW3WDMVS.js → chunk-WHJYKASB.js} +2 -2
  71. package/dist/{chunk-MEQ45TQ4.js → chunk-WJHBC77E.js} +21 -7
  72. package/dist/{chunk-HXG4IURW.js → chunk-X2KV5FXT.js} +2 -2
  73. package/dist/{chunk-YHZX5GEU.js → chunk-XAKHZX5N.js} +2 -2
  74. package/dist/{chunk-2LZI5CAG.js → chunk-XEGB6BCN.js} +228 -36
  75. package/dist/{chunk-E25LMLRW.js → chunk-YD734TPH.js} +2 -2
  76. package/dist/{verifiers-4UUM6TEE.js → chunk-YTYFXUI3.js} +121 -372
  77. package/dist/{chunk-3JLKSKD7.js → chunk-ZGH7FGS5.js} +17 -7
  78. package/dist/{chunk-VSNATDE6.js → chunk-ZZMN5OM4.js} +2 -2
  79. package/dist/cli/index.js +34 -32
  80. package/dist/{clio-J5JIOIDS.js → clio-WBVQEBKO.js} +7 -7
  81. package/dist/{code-nav-AXCXSBHX.js → code-nav-FGGFIE7L.js} +7 -7
  82. package/dist/codewiki/build-worker.js +4 -4
  83. package/dist/{components-KELWS457.js → components-F7OEATSO.js} +5 -5
  84. package/dist/{config-OEBMIN2U.js → config-TRBL3RCF.js} +48 -41
  85. package/dist/{configure-PUQOSIXQ.js → configure-OLCVPHNM.js} +17 -17
  86. package/dist/{context-URSXPBCK.js → context-MJIJ6GOX.js} +12 -12
  87. package/dist/{context-EKDCKUUZ.js → context-WFPKQSM6.js} +26 -9
  88. package/dist/{context-MGSE4Z2T.js → context-XEWE3MOJ.js} +44 -37
  89. package/dist/{context-clear-KDAJRNUK.js → context-clear-KNOS2JPB.js} +44 -37
  90. package/dist/{context-index-BZ4UYMTC.js → context-index-SSR5ECNE.js} +3 -3
  91. package/dist/{context-working-set-SBKMPPI2.js → context-working-set-EUXAZI6N.js} +14 -13
  92. package/dist/{dispatch-runner-MSWN72NK.js → dispatch-runner-B7MTOVKL.js} +321 -60
  93. package/dist/{docs-2C2LTVT2.js → docs-FLJTIDSE.js} +5 -5
  94. package/dist/{doctor-7BSE27PJ.js → doctor-RN4YKO2X.js} +15 -15
  95. package/dist/{eval-IZGDOO4H.js → eval-RUBJVSNQ.js} +52 -236
  96. package/dist/{evidence-SR7WXB5B.js → evidence-JZNBUOQZ.js} +39 -33
  97. package/dist/{evolve-K7VE2CBX.js → evolve-FJVC4KKI.js} +39 -33
  98. package/dist/{extensions-QVDOHDGJ.js → extensions-IQL36S7K.js} +5 -5
  99. package/dist/{fleet-7XMJNQNF.js → fleet-BDKYJFCP.js} +243 -370
  100. package/dist/fleet-commands-ZFIWZSB3.js +70 -0
  101. package/dist/fleet-graph-Y6HPXIVF.js +125 -0
  102. package/dist/fleet-new-RDVJLHHH.js +48 -0
  103. package/dist/{fleet-preflight-AQNAH644.js → fleet-preflight-BHSNPBMH.js} +2 -2
  104. package/dist/fleet-validate-BIYREGIK.js +79 -0
  105. package/dist/{init-JGNPAYXT.js → init-LQUB5COQ.js} +57 -48
  106. package/dist/library-NJAHIGG4.js +217 -0
  107. package/dist/memory-OG6HOYKM.js +472 -0
  108. package/dist/{models-ZMMLFJNN.js → models-5ZG5XY7J.js} +23 -22
  109. package/dist/{monitor-2F3T5KHP.js → monitor-TJ7AMTGB.js} +69 -35
  110. package/dist/{orchestrator-ORHT43JB.js → orchestrator-WZYB54DM.js} +4868 -1189
  111. package/dist/{paths-UXLN5YYZ.js → paths-XUC7GS6E.js} +5 -5
  112. package/dist/{reset-NXGTYNUO.js → reset-PXQT45IY.js} +8 -8
  113. package/dist/{run-RF4WJGMT.js → run-FQ74YF62.js} +82 -62
  114. package/dist/{share-UT3W6E4M.js → share-FW7SVCL3.js} +34 -10
  115. package/dist/{skills-PSACKC5Q.js → skills-7E7IRB3R.js} +25 -9
  116. package/dist/{skills-eval-WJSI55RZ.js → skills-eval-LI75W6OK.js} +43 -35
  117. package/dist/{targets-PIIRAOYS.js → targets-4CIFKCTW.js} +27 -24
  118. package/dist/{terminal-lease-ULWXWNVY.js → terminal-lease-WUZY7ZV5.js} +5 -4
  119. package/dist/{uninstall-FZCQCDKC.js → uninstall-7FV7IP4E.js} +5 -5
  120. package/dist/{upgrade-346TZ6AV.js → upgrade-K2HVIVMQ.js} +21 -20
  121. package/dist/{usage-6KKXR32N.js → usage-GTZELZQX.js} +159 -59
  122. package/dist/verifiers-RLAHT27O.js +336 -0
  123. package/dist/{verify-X5HDROLA.js → verify-BX3BRKH5.js} +7 -6
  124. package/dist/{wiki-generate-7STOCIFZ.js → wiki-generate-ASIFASCN.js} +58 -48
  125. package/dist/worker/entry.js +98 -84
  126. package/dist/{workspace-G4ZWUIPR.js → workspace-ZJ6BFM3Q.js} +4 -4
  127. package/docs/README.md +4 -3
  128. package/docs/acp.md +1 -1
  129. package/docs/alcf-provider.md +1 -1
  130. package/docs/architecture.md +2 -2
  131. package/docs/artifact-placement.md +1 -2
  132. package/docs/artifact-versions.md +10 -6
  133. package/docs/built-in-agents.md +26 -2
  134. package/docs/capacity-and-scheduling.md +1 -1
  135. package/docs/commands-and-modes.md +90 -8
  136. package/docs/configuration-and-targets.md +90 -2
  137. package/docs/context-engine.md +4 -2
  138. package/docs/context-working-set.md +4 -4
  139. package/docs/development-pipeline.md +1 -1
  140. package/docs/dispatch-architecture-rationale.md +1 -1
  141. package/docs/documentation-coverage.md +4 -4
  142. package/docs/documentation-guide.md +4 -4
  143. package/docs/eval-runner.md +1 -1
  144. package/docs/evals-internal.md +4 -45
  145. package/docs/evidence-and-memory.md +70 -10
  146. package/docs/evolution.md +1 -1
  147. package/docs/exit-codes-and-output.md +4 -1
  148. package/docs/extensions-and-sharing.md +6 -2
  149. package/docs/fleet-demo-runbook.md +2 -2
  150. package/docs/fleet-dispatch.md +224 -11
  151. package/docs/git-commit-provenance.md +2 -2
  152. package/docs/glossary.md +1 -1
  153. package/docs/installation-and-lifecycle.md +2 -2
  154. package/docs/middleware-and-components.md +20 -2
  155. package/docs/model-catalog.md +1 -1
  156. package/docs/observability.md +55 -8
  157. package/docs/proactive-memory.md +26 -16
  158. package/docs/prompt-envelope-and-tools.md +4 -2
  159. package/docs/provider-adapter-cookbook.md +1 -1
  160. package/docs/release-cut-checklist.md +83 -65
  161. package/docs/resource-library.md +59 -0
  162. package/docs/safety-model.md +29 -7
  163. package/docs/scientific-validation.md +3 -3
  164. package/docs/session-lifecycle.md +37 -1
  165. package/docs/skills-marketplace.md +16 -3
  166. package/docs/tool-usage.md +14 -7
  167. package/docs/trace-store.md +1 -1
  168. package/docs/troubleshooting.md +1 -1
  169. package/docs/tui-design.md +38 -4
  170. package/docs/worker-dispatch-mechanics.md +3 -3
  171. package/package.json +7 -4
  172. package/src/cli/agents.ts +2 -3
  173. package/src/cli/argv.ts +14 -1
  174. package/src/cli/fleet-commands.ts +37 -0
  175. package/src/cli/fleet-graph.ts +102 -0
  176. package/src/cli/fleet-new.ts +36 -0
  177. package/src/cli/fleet-preflight.ts +121 -0
  178. package/src/cli/fleet-validate.ts +30 -0
  179. package/src/cli/fleet.ts +188 -335
  180. package/src/cli/index.ts +4 -2
  181. package/src/cli/library.ts +190 -0
  182. package/src/cli/memory.ts +272 -10
  183. package/src/cli/modes/json-stream.ts +2 -2
  184. package/src/cli/modes/print.ts +12 -1
  185. package/src/cli/run.ts +22 -2
  186. package/src/cli/share.ts +13 -1
  187. package/src/cli/targets.ts +12 -3
  188. package/src/cli/usage.ts +160 -20
  189. package/src/core/bus-events.ts +7 -0
  190. package/src/core/commit-attribution.ts +4 -4
  191. package/src/core/config.ts +130 -0
  192. package/src/core/defaults.ts +81 -0
  193. package/src/core/response-model-id.ts +134 -0
  194. package/src/core/toml.ts +62 -0
  195. package/src/core/workspace-files.ts +0 -1
  196. package/src/domains/agents/builtins/architect.md +2 -1
  197. package/src/domains/agents/builtins/oracle.md +33 -0
  198. package/src/domains/agents/catalog.ts +18 -5
  199. package/src/domains/agents/fleet-contract.ts +278 -16
  200. package/src/domains/agents/index.ts +14 -0
  201. package/src/domains/agents/recipe.ts +54 -14
  202. package/src/domains/agents/result-contract.ts +242 -5
  203. package/src/domains/config/classify.ts +4 -0
  204. package/src/domains/context/bootstrap.ts +36 -27
  205. package/src/domains/context/project-metadata.ts +19 -63
  206. package/src/domains/context/prompt-context.ts +8 -0
  207. package/src/domains/context/working-set/policies/index.ts +3 -4
  208. package/src/domains/dispatch/active-route-planner.ts +14 -0
  209. package/src/domains/dispatch/backoff.ts +2 -1
  210. package/src/domains/dispatch/budget-envelope.ts +396 -0
  211. package/src/domains/dispatch/capability-match.ts +1 -0
  212. package/src/domains/dispatch/checkout-writer-lease.ts +175 -0
  213. package/src/domains/dispatch/contract.ts +36 -0
  214. package/src/domains/dispatch/delegation-plan.ts +167 -0
  215. package/src/domains/dispatch/execution-plan.ts +76 -5
  216. package/src/domains/dispatch/execution-role.ts +3 -1
  217. package/src/domains/dispatch/execution-scheduler.ts +183 -67
  218. package/src/domains/dispatch/extension.ts +339 -36
  219. package/src/domains/dispatch/fleet-gate.ts +14 -0
  220. package/src/domains/dispatch/fleet-plan.ts +63 -3
  221. package/src/domains/dispatch/fleet-run.ts +737 -0
  222. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  223. package/src/domains/dispatch/host-verification.ts +178 -0
  224. package/src/domains/dispatch/index.ts +38 -0
  225. package/src/domains/dispatch/intent.ts +159 -0
  226. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  227. package/src/domains/dispatch/receipt-integrity.ts +12 -4
  228. package/src/domains/dispatch/state.ts +37 -3
  229. package/src/domains/dispatch/types.ts +61 -9
  230. package/src/domains/dispatch/validation.ts +80 -6
  231. package/src/domains/dispatch/worker-spawn.ts +14 -3
  232. package/src/domains/eval/metrics/evidence.ts +0 -116
  233. package/src/domains/eval/metrics/invariants.ts +1 -1
  234. package/src/domains/eval/runners/clio-run.ts +1 -10
  235. package/src/domains/eval/runners/external-command.ts +2 -29
  236. package/src/domains/eval/schema/suite.ts +0 -7
  237. package/src/domains/eval/suites/run.ts +1 -7
  238. package/src/domains/evidence/trust-status.ts +10 -1
  239. package/src/domains/memory/index.ts +22 -0
  240. package/src/domains/memory/operations.ts +58 -1
  241. package/src/domains/memory/promotion.ts +281 -0
  242. package/src/domains/memory/prompt-section.ts +25 -5
  243. package/src/domains/memory/proposal.ts +51 -7
  244. package/src/domains/memory/task-bank.ts +3 -2
  245. package/src/domains/memory/task-memory-handoff.ts +181 -24
  246. package/src/domains/memory/task-memory-policy.ts +3 -1
  247. package/src/domains/memory/types.ts +37 -0
  248. package/src/domains/memory/validate.ts +178 -0
  249. package/src/domains/middleware/index.ts +15 -0
  250. package/src/domains/middleware/memory-intervention.ts +35 -25
  251. package/src/domains/middleware/runtime.ts +6 -0
  252. package/src/domains/middleware/skills-reminder.ts +19 -4
  253. package/src/domains/middleware/stalled-turn.ts +43 -1
  254. package/src/domains/middleware/types.ts +10 -0
  255. package/src/domains/middleware/watchdog.ts +281 -0
  256. package/src/domains/observability/contract.ts +9 -2
  257. package/src/domains/observability/cost.ts +31 -4
  258. package/src/domains/observability/extension.ts +2 -2
  259. package/src/domains/observability/index.ts +10 -0
  260. package/src/domains/observability/out-of-turn-usage.ts +223 -0
  261. package/src/domains/providers/index.ts +3 -0
  262. package/src/domains/providers/model-discovery.ts +9 -0
  263. package/src/domains/providers/runtime-resolution.ts +38 -1
  264. package/src/domains/providers/runtimes/common/probe-helpers.ts +97 -16
  265. package/src/domains/providers/types/context-window-slots.ts +18 -0
  266. package/src/domains/providers/types/runtime-descriptor.ts +3 -1
  267. package/src/domains/resources/index.ts +20 -0
  268. package/src/domains/resources/library.ts +326 -0
  269. package/src/domains/resources/skills/marketplace.ts +37 -12
  270. package/src/domains/safety/call-target.ts +211 -14
  271. package/src/domains/safety/decision-presentation.ts +268 -0
  272. package/src/domains/safety/redaction.ts +73 -0
  273. package/src/domains/session/context-ledger.ts +10 -1
  274. package/src/domains/session/decision-board.ts +4 -0
  275. package/src/domains/session/entries.ts +3 -0
  276. package/src/domains/session/handoff.ts +629 -0
  277. package/src/domains/session/history.ts +68 -19
  278. package/src/domains/session/usage.ts +24 -7
  279. package/src/domains/share/archive.ts +67 -2
  280. package/src/engine/acp/event-mapper.ts +7 -0
  281. package/src/engine/acp/server.ts +29 -2
  282. package/src/engine/apis/lmstudio.ts +25 -4
  283. package/src/engine/apis/openai-completions.ts +147 -22
  284. package/src/engine/claude/sdk-runtime.ts +8 -2
  285. package/src/engine/claude/tool-safety.ts +13 -0
  286. package/src/engine/loop-guard.ts +27 -3
  287. package/src/engine/worker-events.ts +4 -3
  288. package/src/engine/worker-runtime.ts +59 -54
  289. package/src/entry/orchestrator.ts +55 -1
  290. package/src/interactive/bus-notices.ts +26 -0
  291. package/src/interactive/chat-loop-messages.ts +22 -0
  292. package/src/interactive/chat-loop.ts +248 -1
  293. package/src/interactive/chat-renderer.ts +41 -3
  294. package/src/interactive/clio-editor.ts +44 -7
  295. package/src/interactive/context-overlay.ts +43 -5
  296. package/src/interactive/cost-overlay.ts +70 -11
  297. package/src/interactive/council-dispatch.ts +30 -0
  298. package/src/interactive/council-grid.ts +213 -0
  299. package/src/interactive/council.ts +99 -0
  300. package/src/interactive/dispatch-board.ts +471 -50
  301. package/src/interactive/fleet-run-preview.ts +307 -0
  302. package/src/interactive/footer/notifications.ts +219 -0
  303. package/src/interactive/footer/widgets.ts +13 -0
  304. package/src/interactive/handoff-round.ts +56 -0
  305. package/src/interactive/interactive-application.ts +49 -2
  306. package/src/interactive/interactive-event-projection.ts +9 -1
  307. package/src/interactive/interactive-input-runtime.ts +11 -1
  308. package/src/interactive/interactive-presentation.ts +11 -1
  309. package/src/interactive/interactive-slash-runtime.ts +52 -2
  310. package/src/interactive/interactive-subscriptions.ts +14 -2
  311. package/src/interactive/memory-overlay.ts +89 -4
  312. package/src/interactive/oracle.ts +179 -0
  313. package/src/interactive/overlay-ask-user-lifecycle.ts +7 -1
  314. package/src/interactive/overlay-frame.ts +5 -2
  315. package/src/interactive/overlay-general-openers.ts +230 -2
  316. package/src/interactive/overlay-key-routing.ts +58 -2
  317. package/src/interactive/overlay-lifecycle.ts +52 -5
  318. package/src/interactive/overlay-permission-lifecycle.ts +33 -8
  319. package/src/interactive/overlay-resource-openers.ts +11 -3
  320. package/src/interactive/overlay-session-lifecycle.ts +234 -2
  321. package/src/interactive/overlay-transitions.ts +11 -0
  322. package/src/interactive/overlays/ask-user.ts +74 -30
  323. package/src/interactive/overlays/decisions.ts +3 -1
  324. package/src/interactive/overlays/fleet-run-approval.ts +208 -0
  325. package/src/interactive/overlays/handoff-review.ts +185 -0
  326. package/src/interactive/overlays/library-install-confirm.ts +151 -0
  327. package/src/interactive/overlays/list-overlay.ts +168 -2
  328. package/src/interactive/overlays/settings.ts +101 -4
  329. package/src/interactive/overlays/side-question.ts +139 -0
  330. package/src/interactive/overlays/skills-hub.ts +401 -15
  331. package/src/interactive/permission-hint.ts +35 -0
  332. package/src/interactive/permission-overlay.ts +95 -45
  333. package/src/interactive/renderers/tool-execution.ts +19 -49
  334. package/src/interactive/session-last-turn.ts +8 -1
  335. package/src/interactive/session-usage-reseed.ts +36 -10
  336. package/src/interactive/side-question.ts +171 -0
  337. package/src/interactive/slash-commands.ts +434 -7
  338. package/src/interactive/slash-spec.ts +19 -6
  339. package/src/interactive/status/summary.ts +5 -0
  340. package/src/interactive/status/types.ts +5 -0
  341. package/src/interactive/terminal-lease.ts +1 -0
  342. package/src/interactive/theme/tokens.ts +30 -0
  343. package/src/interactive/turn-context.ts +96 -23
  344. package/src/interactive/turn-middleware.ts +16 -1
  345. package/src/interactive/turn-runtime.ts +37 -8
  346. package/src/interactive/turn-state.ts +3 -0
  347. package/src/interactive/watchdog-run.ts +75 -0
  348. package/src/interactive/worker-progress.ts +440 -0
  349. package/src/interactive/worker-share.ts +56 -1
  350. package/src/interactive/worker-stream.ts +58 -110
  351. package/src/tools/agent-tools.ts +28 -3
  352. package/src/tools/ask-user.ts +21 -1
  353. package/src/tools/bootstrap.ts +3 -0
  354. package/src/tools/compete-worktrees.ts +13 -79
  355. package/src/tools/context/index.ts +2 -2
  356. package/src/tools/dispatch-admission.ts +242 -8
  357. package/src/tools/dispatch-arguments.ts +65 -1
  358. package/src/tools/dispatch-event-text.ts +19 -0
  359. package/src/tools/dispatch-plan.ts +136 -6
  360. package/src/tools/dispatch-runner.ts +319 -13
  361. package/src/tools/dispatch-types.ts +20 -1
  362. package/src/tools/dispatch.ts +96 -3
  363. package/src/tools/monitor.ts +31 -0
  364. package/src/tools/profiles.ts +18 -4
  365. package/src/tools/registry.ts +15 -5
  366. package/src/tools/result-disposition.ts +156 -0
  367. package/src/tools/result-shaping.ts +59 -1
  368. package/src/tools/task-worktree.ts +238 -0
  369. package/src/tools/verify/authoring.ts +116 -55
  370. package/src/tools/verify/scripts.ts +62 -0
  371. package/src/tools/worker-evidence.ts +21 -1
  372. package/src/worker/spec-contract.ts +44 -3
  373. package/dist/chunk-EFADSJET.js +0 -18
  374. package/dist/chunk-HC4CLZ2Y.js +0 -68
  375. package/dist/memory-4ALKDJ4Q.js +0 -246
  376. package/src/domains/eval/metrics/chaos-stream.ts +0 -93
@@ -1,7 +1,16 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ receiptResponseModelIdObservationLabel
4
+ } from "./chunk-VREKEFLL.js";
2
5
  import {
3
6
  adaptRunReceiptTrustStatus
4
- } from "./chunk-QQL5RT5M.js";
7
+ } from "./chunk-UUANF5CR.js";
8
+ import {
9
+ formatBudgetPolicy,
10
+ formatBudgetReasons,
11
+ formatBudgetRequest,
12
+ formatEffectiveBudget
13
+ } from "./chunk-CEYBNUGC.js";
5
14
  import {
6
15
  mentionsWorkerToolCallCap
7
16
  } from "./chunk-4ZG3XFUR.js";
@@ -74,10 +83,20 @@ function receiptEvidenceLabels(receipt, verification, integrity) {
74
83
  const sections = receipt.projectContext.sections ?? [];
75
84
  projectContext = `project_context=${receipt.projectContext.tier} chars:${receipt.projectContext.chars ?? 0}${sections.length > 0 ? ` sections:${[...sections].sort().join(",")}` : ""}${receipt.projectContext.contentHash !== void 0 ? ` sha256:${receipt.projectContext.contentHash}` : ""}`;
76
85
  }
86
+ const responseModelIdObservation = receiptResponseModelIdObservationLabel(receipt);
87
+ const budget = receipt.budget === void 0 ? [] : [
88
+ `budget_recipe_policy=${JSON.stringify(formatBudgetPolicy(receipt.budget))}`,
89
+ `budget_requested=${JSON.stringify(formatBudgetRequest(receipt.budget))}`,
90
+ `budget_effective=${JSON.stringify(formatEffectiveBudget(receipt.budget))}`,
91
+ `budget_reason=${JSON.stringify(formatBudgetReasons(receipt.budget))}`
92
+ ];
77
93
  return [
78
94
  canonical,
79
95
  `receipt_integrity=verified/v${receipt.integrity.version}/${receipt.integrity.algorithm}`,
80
96
  `evidence_verification=${verification.state}/${verification.basis}`,
97
+ `host_verification=${receipt.hostVerification?.status ?? "not_requested"}`,
98
+ ...responseModelIdObservation ? [responseModelIdObservation] : [],
99
+ ...budget,
81
100
  ...receiptAdmissionLabels(receipt),
82
101
  ...receiptActivityLabels(receipt, status),
83
102
  briefing,
@@ -152,4 +171,4 @@ export {
152
171
  workerTextLabel,
153
172
  workerTextNonEvidenceNotices
154
173
  };
155
- //# sourceMappingURL=chunk-BP4OYD6A.js.map
174
+ //# sourceMappingURL=chunk-DMD2AGVS.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
  DEFAULT_SETTINGS_YAML
4
- } from "./chunk-4OC57DA6.js";
4
+ } from "./chunk-4DGYLA73.js";
5
5
  import {
6
6
  clioCacheDir,
7
7
  clioConfigDir,
@@ -143,4 +143,4 @@ function enforceHomePrefixGuard() {
143
143
  export {
144
144
  initializeClioHome
145
145
  };
146
- //# sourceMappingURL=chunk-KOHPCX4K.js.map
146
+ //# sourceMappingURL=chunk-DOOEX22V.js.map
@@ -0,0 +1,123 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ compileFleetExecutionPlan
4
+ } from "./chunk-M4AKACEO.js";
5
+ import {
6
+ loadRecipesFromDir,
7
+ mergeRecipes
8
+ } from "./chunk-UVDSQ6LW.js";
9
+ import {
10
+ loadFleetCommands,
11
+ loadFleetContract,
12
+ renderFleetPrompt
13
+ } from "./chunk-KCMKRQX4.js";
14
+ import {
15
+ requestExecutionRole,
16
+ withAttemptRole
17
+ } from "./chunk-UND3GU2L.js";
18
+ import {
19
+ normalizeAgentSpec
20
+ } from "./chunk-AOCYTWAV.js";
21
+ import {
22
+ readSettings
23
+ } from "./chunk-UHXRNZ2J.js";
24
+ import {
25
+ clioConfigDir
26
+ } from "./chunk-BNAZZHFG.js";
27
+ import {
28
+ resolvePackageRoot
29
+ } from "./chunk-IWHMRKLL.js";
30
+ import {
31
+ init_esm_shims
32
+ } from "./chunk-3R73A4XB.js";
33
+
34
+ // src/cli/fleet-preflight.ts
35
+ init_esm_shims();
36
+ import { join } from "node:path";
37
+ function discoverSpecs(cwd) {
38
+ const diagnostics = [];
39
+ const builtin = loadRecipesFromDir(
40
+ { dir: join(resolvePackageRoot(), "src", "domains", "agents", "builtins"), source: "builtin" },
41
+ diagnostics
42
+ );
43
+ const user = loadRecipesFromDir({ dir: join(clioConfigDir(), "agents"), source: "user" }, diagnostics);
44
+ const project = loadRecipesFromDir({ dir: join(cwd, ".clio-coder", "agents"), source: "project" }, diagnostics);
45
+ return mergeRecipes(builtin, user, project).map(normalizeAgentSpec);
46
+ }
47
+ function inspectFleet(name, vars) {
48
+ const cwd = process.cwd();
49
+ const contract = loadFleetContract(cwd, name);
50
+ const commands = loadFleetCommands(cwd);
51
+ const prompt = vars === void 0 ? contract.body : renderFleetPrompt(contract.body, vars);
52
+ const specs = discoverSpecs(cwd);
53
+ const byId = new Map(specs.map((spec) => [spec.id, spec]));
54
+ const resolved = /* @__PURE__ */ new Set();
55
+ const settings = readSettings();
56
+ const targetIds = new Set(settings.targets.map((target) => target.id));
57
+ const profileIds = new Set(Object.keys(settings.workers?.profiles ?? {}));
58
+ for (const step of contract.steps) {
59
+ const positions = step.kind === "loop" ? [
60
+ ...step.check.kind === "agent" ? [{ id: `${step.id}.check`, route: step.check }] : [],
61
+ { id: `${step.id}.repair`, route: step.repair }
62
+ ] : step.kind === "agent" || step.kind === "gate" || step.kind === "plan" ? [{ id: step.id, route: step }] : [];
63
+ for (const position of positions) {
64
+ if (position.route.target !== void 0 && !targetIds.has(position.route.target)) {
65
+ throw new Error(`unknown target '${position.route.target}' at step '${position.id}'`);
66
+ }
67
+ if (position.route.profile !== void 0 && !profileIds.has(position.route.profile)) {
68
+ throw new Error(`unknown profile '${position.route.profile}' at step '${position.id}'`);
69
+ }
70
+ }
71
+ }
72
+ const plan = compileFleetExecutionPlan({
73
+ contract,
74
+ task: prompt,
75
+ resolveAgent(context) {
76
+ const spec = byId.get(context.agentId);
77
+ if (spec === void 0) {
78
+ throw new Error(
79
+ `unknown agent '${context.agentId}' (step '${context.stepId}' must name a recipe from 'clio-coder agents')`
80
+ );
81
+ }
82
+ if (spec.capabilityClass === "orchestration" || spec.capabilityClass === "internal") {
83
+ throw new Error(`fleet step '${context.stepId}' has no automatable agent authority`);
84
+ }
85
+ resolved.add(spec.id);
86
+ const role = requestExecutionRole({
87
+ agentId: spec.id,
88
+ resolveFacts: (id) => {
89
+ const found = byId.get(id);
90
+ return found === void 0 ? null : {
91
+ category: found.category,
92
+ capabilityClass: found.capabilityClass,
93
+ resultContractKind: found.resultContract.kind
94
+ };
95
+ },
96
+ ...context.gateRole === void 0 ? {} : { gateRole: context.gateRole }
97
+ });
98
+ return {
99
+ requestedAuthority: spec.capabilityClass,
100
+ approvedAuthority: spec.capabilityClass,
101
+ expectedResultContract: context.planRole === true ? "delegation-plan" : context.gateAuthorRole === true ? "artifact-report" : context.gateRole === "reviewer" ? "verifier-report" : spec.resultContract.kind,
102
+ executionRole: withAttemptRole(role, context.attempt)
103
+ };
104
+ }
105
+ });
106
+ return {
107
+ contract,
108
+ commands,
109
+ plan,
110
+ checks: [
111
+ { check: "parse", summary: `parsed contract version ${contract.version}` },
112
+ { check: "graph", summary: `validated ${contract.steps.length} declared steps` },
113
+ { check: "commands", summary: `validated ${plan.steps.filter((step) => step.kind === "code").length} code steps` },
114
+ { check: "agents", summary: `resolved ${resolved.size} agents` },
115
+ { check: "plan", summary: `compiled ${plan.steps.length} plan steps with hash ${plan.hash}` }
116
+ ]
117
+ };
118
+ }
119
+
120
+ export {
121
+ inspectFleet
122
+ };
123
+ //# sourceMappingURL=chunk-DQA7QLMD.js.map
@@ -0,0 +1,21 @@
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/domains/config/agent-namespace.ts
7
+ init_esm_shims();
8
+ function assertAgentIdNamespace(nativeRecipes, acpDelegates) {
9
+ const native = new Set(nativeRecipes.map((recipe) => recipe.id));
10
+ const collision = acpDelegates.find((delegate) => native.has(delegate.id));
11
+ if (collision !== void 0) {
12
+ throw new Error(
13
+ `agent id collision: native recipe '${collision.id}' and ACP delegation agent '${collision.id}' share one namespace`
14
+ );
15
+ }
16
+ }
17
+
18
+ export {
19
+ assertAgentIdNamespace
20
+ };
21
+ //# sourceMappingURL=chunk-DR52UMZW.js.map
@@ -5,18 +5,18 @@ import {
5
5
  loadProjectRules,
6
6
  renderOperatorProfile,
7
7
  selectActiveRules
8
- } from "./chunk-UZHIZC5S.js";
8
+ } from "./chunk-4DWFMQDR.js";
9
9
  import {
10
10
  compile,
11
11
  compileWorker,
12
12
  sha256
13
- } from "./chunk-QQL5RT5M.js";
13
+ } from "./chunk-UUANF5CR.js";
14
14
  import {
15
15
  isUserVisibleAgent
16
16
  } from "./chunk-AOCYTWAV.js";
17
17
  import {
18
18
  BusChannels
19
- } from "./chunk-TTNYS3EA.js";
19
+ } from "./chunk-OB5HIGJY.js";
20
20
  import {
21
21
  classifyProjectPreload
22
22
  } from "./chunk-JVCV3ICN.js";
@@ -27,6 +27,7 @@ import {
27
27
  // src/domains/agents/catalog.ts
28
28
  init_esm_shims();
29
29
  var DEFAULT_DISPATCH_AGENT_ID = "coder";
30
+ var OPERATOR_ONLY_SHADOW_AGENT_IDS = /* @__PURE__ */ new Set(["oracle"]);
30
31
  var FLEET_PROMPT_PURPOSE_MAX_CHARS = 64;
31
32
  var FLEET_DELEGATION_RULE = "Delegate when the task has two or more independent file-scoped subtasks, or any broad exploration. You keep synthesis and validation; a single narrow change stays with you.";
32
33
  var FLEET_HANDOFF_RULE = "A file you assigned to a worker is not yours to edit while its dispatch is pending or after it succeeds; if you already changed it, say so in your report.";
@@ -43,7 +44,7 @@ function fleetPromptPurpose(description) {
43
44
  return `${sentence.slice(0, cut > 0 ? cut : FLEET_PROMPT_PURPOSE_MAX_CHARS).trimEnd()}...`;
44
45
  }
45
46
  function fleetPromptLine(spec) {
46
- const budget = spec.budget ? `${spec.budget.toolCalls} calls` : "default budget";
47
+ const budget = spec.budget.maximum ? `${spec.budget.toolCalls}..${spec.budget.maximum.toolCalls} calls` : `${spec.budget.toolCalls} calls`;
47
48
  const purpose = fleetPromptPurpose(spec.description);
48
49
  return `- ${spec.id} (${spec.capabilityClass}, ${budget})${purpose.length > 0 ? `: ${purpose}` : ""}`;
49
50
  }
@@ -53,7 +54,7 @@ function renderFleetPromptSection(input) {
53
54
  return category === 0 ? a.id.localeCompare(b.id) : category;
54
55
  });
55
56
  const publicSpecs = specs.filter(isUserVisibleAgent);
56
- const shadowSpecs = specs.filter((spec) => spec.audience === "shadow");
57
+ const shadowSpecs = specs.filter((spec) => spec.audience === "shadow" && !OPERATOR_ONLY_SHADOW_AGENT_IDS.has(spec.id));
57
58
  if (publicSpecs.length === 0 && shadowSpecs.length === 0) return "";
58
59
  const lines = [
59
60
  "# Fleet",
@@ -110,7 +111,8 @@ function renderAgentCatalogSectionsFromSpecs(input) {
110
111
  function formatSpecLine(spec, suffix) {
111
112
  const tags = spec.tags.length > 0 ? `, tags=${spec.tags.join("/")}` : "";
112
113
  const skills = spec.skills.length > 0 ? `, skills=${spec.skills.join("/")}` : "";
113
- const budget = spec.budget ? `, budget=${spec.budget.toolCalls}/${spec.budget.readReserve}/${spec.budget.synthesis ? "synthesize" : "stop"}` : ", budget=operator-default";
114
+ const maximum = spec.budget.maximum ? `..${spec.budget.maximum.toolCalls}/${spec.budget.maximum.readReserve}` : "";
115
+ const budget = `, budget=${spec.budget.toolCalls}/${spec.budget.readReserve}${maximum}/${spec.budget.synthesis ? "synthesize" : "stop"}`;
114
116
  return `- ${spec.name} [${spec.id}] (${spec.audience}, ${spec.category}, ${spec.capabilityClass}, ${spec.latencyClass}, ${spec.source}${tags}${skills}${budget})${suffix}`;
115
117
  }
116
118
 
@@ -653,4 +655,4 @@ export {
653
655
  createPromptsDomainModule,
654
656
  SchedulingDomainModule
655
657
  };
656
- //# sourceMappingURL=chunk-3HZ5RWN2.js.map
658
+ //# sourceMappingURL=chunk-EBEFWSGL.js.map
@@ -4,17 +4,21 @@ import {
4
4
  TOOL_PROFILE_NAMES,
5
5
  classifyAgentTask,
6
6
  cloneApprovedAssignmentRoute,
7
+ cloneDispatchBudgetRequest,
7
8
  isApprovedAssignmentRoute,
9
+ isDispatchIntent,
8
10
  isToolProfileName
9
- } from "./chunk-ZYKPLLNQ.js";
11
+ } from "./chunk-CEYBNUGC.js";
10
12
  import {
11
13
  ROUTE_POLICY_VERSION,
12
- isExecutionRole,
13
14
  isRouteDecisionAgentSelection,
14
15
  isRoutingIntent,
15
- parseRoutingIntent,
16
+ parseRoutingIntent
17
+ } from "./chunk-5C77SEEY.js";
18
+ import {
19
+ isExecutionRole,
16
20
  requestExecutionRole
17
- } from "./chunk-22NAGB7X.js";
21
+ } from "./chunk-UND3GU2L.js";
18
22
  import {
19
23
  AGENT_AUTOMATION_AUTHORITIES
20
24
  } from "./chunk-AOCYTWAV.js";
@@ -29,6 +33,7 @@ import { createHash } from "node:crypto";
29
33
  // src/tools/dispatch-arguments.ts
30
34
  init_esm_shims();
31
35
  var DEFAULT_AGENT_ID = "coder";
36
+ var COUNCIL_DEFAULT_AGENT_ID = "researcher";
32
37
  var AUTO_BASELINE_BY_TASK_TYPE = {
33
38
  // Mutating shapes: capability class first, specialization second.
34
39
  code_write: "coder",
@@ -77,7 +82,7 @@ function dispatchRequestFromArgs(args, options) {
77
82
  const task = stringArg(args, "task");
78
83
  if (!task) return { ok: false, message: "missing task (pass list:true to see available agents)" };
79
84
  if (Object.hasOwn(args, "agent_id")) return { ok: false, message: "agent_id is unsupported; use agent" };
80
- const requestedAgent = stringArg(args, "agent") ?? DEFAULT_AGENT_ID;
85
+ const requestedAgent = stringArg(args, "agent") ?? (args.mode === "council" ? COUNCIL_DEFAULT_AGENT_ID : DEFAULT_AGENT_ID);
81
86
  const auto = requestedAgent === "auto";
82
87
  const agentId = auto ? autoBaselineAgentId(task, options.hasAgent) : requestedAgent;
83
88
  const request = {
@@ -125,6 +130,45 @@ function dispatchRequestFromArgs(args, options) {
125
130
  request.requiredCapabilities = routing.intent.requiredCapabilities;
126
131
  const cwd = stringArg(args, "cwd");
127
132
  if (cwd) request.cwd = cwd;
133
+ if (args.worktree !== void 0) {
134
+ if (args.worktree !== true) return { ok: false, message: "worktree must be true when present" };
135
+ request.worktree = true;
136
+ }
137
+ if (args.apply !== void 0) {
138
+ if (args.apply !== "merge" && args.apply !== "preserve")
139
+ return { ok: false, message: "apply must be merge or preserve" };
140
+ if (request.worktree !== true) return { ok: false, message: "apply requires worktree: true" };
141
+ request.apply = args.apply;
142
+ }
143
+ if (Object.hasOwn(args, "gate") && isRecord(args.intent) && Object.hasOwn(args.intent, "verification")) {
144
+ return { ok: false, message: "gate_and_intent_verification_conflict: gate cannot combine with intent.verification" };
145
+ }
146
+ let rawIntent = args.intent;
147
+ if (Object.hasOwn(args, "gate")) {
148
+ if (typeof args.gate !== "string" || args.gate.trim().length === 0) {
149
+ return { ok: false, message: "gate must be a non-empty declared check id" };
150
+ }
151
+ rawIntent = { ...isRecord(rawIntent) ? rawIntent : {}, verification: [{ check: args.gate.trim() }] };
152
+ }
153
+ if (rawIntent !== void 0) {
154
+ if (options.resolveIntent === void 0) return { ok: false, message: "intent resolver is unavailable" };
155
+ const resolved = options.resolveIntent(rawIntent, cwd);
156
+ if (!resolved.ok) return resolved;
157
+ request.intent = resolved.intent;
158
+ if (resolved.resolvedVerification.length > 0) request.resolvedVerification = resolved.resolvedVerification;
159
+ if (resolved.intent.writeRoots.length > 0) {
160
+ const legacy = Array.isArray(args.writeRoots) ? args.writeRoots.filter((entry) => typeof entry === "string") : void 0;
161
+ if (legacy !== void 0) {
162
+ const left = [...new Set(legacy)].sort();
163
+ if (JSON.stringify(left) !== JSON.stringify(resolved.intent.writeRoots)) {
164
+ return { ok: false, message: "intent_write_roots_contradiction" };
165
+ }
166
+ request.writeRoots = legacy;
167
+ } else {
168
+ request.writeRoots = resolved.intent.writeRoots;
169
+ }
170
+ }
171
+ }
128
172
  if ("persona" in args && args.persona !== void 0) {
129
173
  if (typeof args.persona !== "string") return { ok: false, message: "persona must be a string" };
130
174
  const persona = args.persona.trim();
@@ -147,6 +191,13 @@ function dispatchRequestFromArgs(args, options) {
147
191
  }
148
192
  request.thinkingLevel = thinkingLevel;
149
193
  }
194
+ if (args.budget !== void 0) {
195
+ try {
196
+ request.budget = cloneDispatchBudgetRequest(args.budget);
197
+ } catch (error) {
198
+ return { ok: false, message: error instanceof Error ? error.message : String(error) };
199
+ }
200
+ }
150
201
  return { ok: true, request };
151
202
  }
152
203
  function dispatchRequestsFromArgs(args, options) {
@@ -224,7 +275,14 @@ function withResolvedPlanTaskPin(request, task, options = {}) {
224
275
  ...task.routeApproval === null ? {} : { routeApproval: cloneApprovedAssignmentRoute(task.routeApproval) },
225
276
  ...task.allowedCandidates === void 0 ? {} : { allowedCandidates: task.allowedCandidates.map((candidate) => ({ ...candidate })) },
226
277
  task: options.pinTask === false ? request.task : task.task,
227
- ...task.briefing !== void 0 ? { briefing: task.briefing } : {},
278
+ ...options.pinBriefing === false ? request.briefing !== void 0 ? { briefing: request.briefing } : {} : task.briefing !== void 0 ? { briefing: task.briefing } : {},
279
+ ...task.worktree === true ? {
280
+ worktree: true,
281
+ apply: task.apply ?? "merge",
282
+ ...task.worktreeDestination === void 0 ? {} : { taskWorktreeDestination: task.worktreeDestination }
283
+ } : {},
284
+ ...task.intent !== void 0 ? { intent: structuredClone(task.intent) } : {},
285
+ ...task.resolvedVerification !== void 0 ? { resolvedVerification: task.resolvedVerification.map((check) => ({ ...check, argv: [...check.argv] })) } : {},
228
286
  target: task.target,
229
287
  model: task.model,
230
288
  node: task.node,
@@ -273,6 +331,12 @@ function taskViews(args) {
273
331
  };
274
332
  const briefing = "briefing" in record ? str(record.briefing) : str(args.briefing);
275
333
  if (briefing !== void 0) view.briefing = briefing;
334
+ const worktree = "worktree" in record ? record.worktree : args.worktree;
335
+ if (worktree === true) {
336
+ view.worktree = true;
337
+ const apply = "apply" in record ? record.apply : args.apply;
338
+ view.apply = apply === "preserve" ? "preserve" : "merge";
339
+ }
276
340
  const model = str(record.model) ?? sharedModel;
277
341
  if (model !== void 0) view.model = model;
278
342
  const node = str(record.node) ?? sharedNode;
@@ -307,6 +371,7 @@ function canonicalCandidates(value) {
307
371
  function topologyOf(args) {
308
372
  if (isRecord2(args.apply_winner)) return "compete";
309
373
  if (args.mode === "compete") return "compete";
374
+ if (args.mode === "council") return "council";
310
375
  if (args.review === true || isRecord2(args.review)) return "review";
311
376
  if (args.detach === true) return "detached";
312
377
  if (args.mode === "sequential") return "sequential";
@@ -340,6 +405,15 @@ function renderPlanText(topology, tasks, costCeilingUsd, deadlineMs, source, max
340
405
  lines.push(
341
406
  ` ${index + 1}.${role} agent=${safeField(task.agent)}${target}${model}${node}${failover}${routingText} task=${JSON.stringify(safeField(task.task))}`
342
407
  );
408
+ if (task.council !== void 0) {
409
+ lines.push(
410
+ ` council label=${safeField(task.council.label)} color=${safeField(task.council.color ?? "none")} round=${task.council.round} rounds=${task.council.rounds} synthesis=${task.council.synthesis}`
411
+ );
412
+ }
413
+ if (task.worktree === true)
414
+ lines.push(
415
+ ` worktree=true apply=${task.apply ?? "merge"} destination=${safeField(task.worktreeDestination ?? "unresolved")}`
416
+ );
343
417
  if (task.allowedCandidates !== void 0) {
344
418
  for (const [candidateIndex, candidate] of task.allowedCandidates.entries()) {
345
419
  lines.push(
@@ -374,6 +448,15 @@ function renderPlanText(topology, tasks, costCeilingUsd, deadlineMs, source, max
374
448
  ` briefing_bytes=${Buffer.byteLength(task.briefing, "utf8")} briefing_sha256=${createHash("sha256").update(task.briefing, "utf8").digest("hex")} briefing_preview=${JSON.stringify(safeField(task.briefing))}`
375
449
  );
376
450
  }
451
+ if (task.intent !== void 0) {
452
+ const serialized = JSON.stringify(task.intent);
453
+ lines.push(` intent_sha256=${createHash("sha256").update(serialized, "utf8").digest("hex")}`);
454
+ }
455
+ for (const check of task.resolvedVerification ?? []) {
456
+ lines.push(
457
+ ` verification check=${safeField(check.check)} argv=${JSON.stringify(check.argv)} cwd=${JSON.stringify(check.cwd)} timeout_ms=${check.timeoutMs}`
458
+ );
459
+ }
377
460
  }
378
461
  return lines.join("\n");
379
462
  }
@@ -383,12 +466,16 @@ function isResolvedTask(value) {
383
466
  "agent",
384
467
  "task",
385
468
  "briefing",
469
+ "worktree",
470
+ "apply",
471
+ "worktreeDestination",
386
472
  "model",
387
473
  "node",
388
474
  "nodeKind",
389
475
  "nodeHost",
390
476
  "target",
391
477
  "role",
478
+ "council",
392
479
  "position",
393
480
  "routingIntent",
394
481
  "failover",
@@ -401,7 +488,9 @@ function isResolvedTask(value) {
401
488
  "expectedResultContract",
402
489
  "authorityGrant",
403
490
  "agentDecision",
404
- "wave"
491
+ "wave",
492
+ "intent",
493
+ "resolvedVerification"
405
494
  ]);
406
495
  if (Object.keys(value).some((key) => !allowedKeys.has(key))) return false;
407
496
  for (const key of [
@@ -424,16 +513,24 @@ function isResolvedTask(value) {
424
513
  "wave"
425
514
  ])
426
515
  if (!Object.hasOwn(value, key)) return false;
427
- if (value.role !== void 0 && value.role !== "task" && value.role !== "builder" && value.role !== "reviewer" && value.role !== "candidate" && value.role !== "judge") {
516
+ if (value.role !== void 0 && value.role !== "task" && value.role !== "builder" && value.role !== "reviewer" && value.role !== "candidate" && value.role !== "judge" && value.role !== "member" && value.role !== "synthesis") {
428
517
  return false;
429
518
  }
430
519
  if (value.position !== void 0 && (!Number.isInteger(value.position) || Number(value.position) < 1)) return false;
520
+ if (value.council !== void 0) {
521
+ if (!isRecord2(value.council) || typeof value.council.label !== "string" || value.council.label.length === 0 || value.council.color !== void 0 && typeof value.council.color !== "string" || !Number.isInteger(value.council.round) || Number(value.council.round) < 1 || !Number.isInteger(value.council.rounds) || Number(value.council.rounds) < 1 || value.council.synthesis !== "none" && value.council.synthesis !== "judge" && value.council.synthesis !== "vote")
522
+ return false;
523
+ }
431
524
  if (value.nodeKind !== "local" && value.nodeKind !== "ssh") return false;
432
525
  if (value.nodeKind === "ssh" && (typeof value.nodeHost !== "string" || value.nodeHost.trim().length === 0))
433
526
  return false;
434
527
  if (value.nodeKind === "local" && value.nodeHost !== void 0) return false;
435
528
  if (value.briefing !== void 0 && (typeof value.briefing !== "string" || value.briefing.trim().length === 0))
436
529
  return false;
530
+ if (value.worktree !== void 0 && value.worktree !== true) return false;
531
+ if (value.apply !== void 0 && value.apply !== "merge" && value.apply !== "preserve") return false;
532
+ if (value.apply !== void 0 && value.worktree !== true) return false;
533
+ if (value.worktreeDestination !== void 0 && typeof value.worktreeDestination !== "string") return false;
437
534
  if (failoverModeOf(value.failover) === void 0) return false;
438
535
  if (!isRoutingIntent(value.routingIntent)) return false;
439
536
  if (value.routeApproval !== null && !isApprovedAssignmentRoute(value.routeApproval)) return false;
@@ -447,6 +544,11 @@ function isResolvedTask(value) {
447
544
  return false;
448
545
  if (value.authorityGrant !== null && !isAuthorityGrant(value.authorityGrant)) return false;
449
546
  if (value.agentDecision !== null && !isAgentDecision(value.agentDecision)) return false;
547
+ if (value.intent !== void 0 && !isDispatchIntent(value.intent)) return false;
548
+ if (value.resolvedVerification !== void 0 && (!Array.isArray(value.resolvedVerification) || !value.resolvedVerification.every(
549
+ (check) => isRecord2(check) && typeof check.check === "string" && Array.isArray(check.argv) && check.argv.every((arg) => typeof arg === "string") && typeof check.cwd === "string" && typeof check.timeoutMs === "number"
550
+ )))
551
+ return false;
450
552
  if (value.failover === "approved") {
451
553
  if (canonicalCandidates(value.allowedCandidates) === null) return false;
452
554
  } else if (value.allowedCandidates !== void 0) {
@@ -460,11 +562,16 @@ var RESULT_CONTRACT_KINDS = /* @__PURE__ */ new Set([
460
562
  "architect-plan",
461
563
  "scout-report",
462
564
  "verifier-report",
565
+ "council-report",
463
566
  "debugger-report",
464
567
  "research-report",
465
568
  "mutation-report",
466
569
  "provenance-report",
467
- "external-delegation"
570
+ "oracle-report",
571
+ "external-delegation",
572
+ "artifact-report",
573
+ "context-handbook",
574
+ "delegation-plan"
468
575
  ]);
469
576
  function isAuthorityGrant(value) {
470
577
  return isRecord2(value) && Object.keys(value).sort().join("\0") === "basis\0requested" && AGENT_AUTOMATION_AUTHORITIES.includes(value.requested) && (value.basis === "operator-plan-approval" || value.basis === "full-auto-policy");
@@ -528,7 +635,7 @@ function resolvedDispatchPlanFromArgs(args) {
528
635
  };
529
636
  }
530
637
  if (value.tasks.length === 0 && confirmation === void 0) return null;
531
- if (value.topology !== "parallel" && value.topology !== "sequential" && value.topology !== "pipeline" && value.topology !== "review" && value.topology !== "compete" && value.topology !== "detached" && value.topology !== "fleet") {
638
+ if (value.topology !== "parallel" && value.topology !== "sequential" && value.topology !== "pipeline" && value.topology !== "review" && value.topology !== "compete" && value.topology !== "council" && value.topology !== "detached" && value.topology !== "fleet") {
532
639
  return null;
533
640
  }
534
641
  if (typeof value.costCeilingUsd !== "number" || !Number.isFinite(value.costCeilingUsd) || value.costCeilingUsd <= 0) {
@@ -559,6 +666,11 @@ function resolvedDispatchPlanFromArgs(args) {
559
666
  agent: task.agent.trim(),
560
667
  task: task.task.trim(),
561
668
  ...task.briefing !== void 0 ? { briefing: task.briefing.trim() } : {},
669
+ ...task.worktree === true ? {
670
+ worktree: true,
671
+ apply: task.apply ?? "merge",
672
+ ...task.worktreeDestination === void 0 ? {} : { worktreeDestination: task.worktreeDestination }
673
+ } : {},
562
674
  model: task.model.trim(),
563
675
  node: task.node.trim(),
564
676
  nodeKind: task.nodeKind,
@@ -577,7 +689,10 @@ function resolvedDispatchPlanFromArgs(args) {
577
689
  ...task.failover === "approved" && canonicalCandidates(task.allowedCandidates) !== null ? { allowedCandidates: canonicalCandidates(task.allowedCandidates) } : {},
578
690
  ...task.nodeHost !== void 0 ? { nodeHost: task.nodeHost.trim() } : {},
579
691
  ...task.role !== void 0 ? { role: task.role } : {},
580
- ...task.position !== void 0 ? { position: task.position } : {}
692
+ ...task.council !== void 0 ? { council: { ...task.council } } : {},
693
+ ...task.position !== void 0 ? { position: task.position } : {},
694
+ ...task.intent !== void 0 ? { intent: structuredClone(task.intent) } : {},
695
+ ...task.resolvedVerification !== void 0 ? { resolvedVerification: task.resolvedVerification.map((check) => ({ ...check, argv: [...check.argv] })) } : {}
581
696
  })),
582
697
  costCeilingUsd: value.costCeilingUsd,
583
698
  deadlineMs: value.deadlineMs,
@@ -613,7 +728,7 @@ function describeDispatchPlan(rawArgs) {
613
728
  const maxWorkers = resolved?.maxWorkers ?? null;
614
729
  const onFailure = resolved?.onFailure ?? null;
615
730
  const remote = tasks.some((task) => task.node !== void 0 && task.node !== "local");
616
- const planScale = !preparationFailed && args.list !== true && (tasks.length > 1 || source !== null || topology === "compete" || remote || tasks.some((task) => task.failover === "approved") || confirmation !== void 0 || isRecord2(args.apply_winner));
731
+ const planScale = !preparationFailed && args.list !== true && (tasks.length > 1 || source !== null || topology === "compete" || topology === "council" || remote || tasks.some((task) => task.failover === "approved") || confirmation !== void 0 || isRecord2(args.apply_winner));
617
732
  const text = renderPlanText(topology, tasks, costCeilingUsd, deadlineMs, source, maxWorkers, onFailure, confirmation);
618
733
  return {
619
734
  topology,
@@ -641,4 +756,4 @@ export {
641
756
  withResolvedDispatchPlan,
642
757
  describeDispatchPlan
643
758
  };
644
- //# sourceMappingURL=chunk-EDRHSCIE.js.map
759
+ //# sourceMappingURL=chunk-EELBMBT6.js.map
@@ -5,46 +5,48 @@ import {
5
5
  import {
6
6
  SchedulingDomainModule,
7
7
  createPromptsDomainModule
8
- } from "./chunk-3HZ5RWN2.js";
8
+ } from "./chunk-EBEFWSGL.js";
9
9
  import {
10
- AgentsDomainModule,
11
10
  SafetyDomainModule
12
- } from "./chunk-X6COSD2O.js";
11
+ } from "./chunk-J7PIKKWC.js";
13
12
  import {
14
13
  ConfigDomainModule,
15
14
  loadDomains
16
- } from "./chunk-KRPY7NTG.js";
15
+ } from "./chunk-BMWK7ZIZ.js";
17
16
  import {
18
17
  createObservabilityDomainModule
19
- } from "./chunk-35MKKU5R.js";
18
+ } from "./chunk-5UJ6ECTS.js";
20
19
  import {
21
20
  fallbackBootstrapOutput
22
- } from "./chunk-UZHIZC5S.js";
21
+ } from "./chunk-4DWFMQDR.js";
23
22
  import {
24
23
  renderCodewikiDigest
25
24
  } from "./chunk-5WIGXA4T.js";
26
25
  import {
27
26
  DispatchDomainModule
28
- } from "./chunk-QQL5RT5M.js";
27
+ } from "./chunk-UUANF5CR.js";
29
28
  import {
30
29
  SessionDomainModule
31
- } from "./chunk-QQK64KLB.js";
30
+ } from "./chunk-6TUKSZVF.js";
32
31
  import {
33
32
  ResourcesDomainModule
34
- } from "./chunk-MFFY33HR.js";
33
+ } from "./chunk-THKY7CD7.js";
34
+ import {
35
+ AgentsDomainModule
36
+ } from "./chunk-UVDSQ6LW.js";
35
37
  import {
36
38
  MiddlewareDomainModule
37
- } from "./chunk-2LZI5CAG.js";
39
+ } from "./chunk-XEGB6BCN.js";
38
40
  import {
39
41
  UnsupportedResponseSchemaError,
40
42
  isResponseSchemaRejection
41
- } from "./chunk-ZYKPLLNQ.js";
43
+ } from "./chunk-CEYBNUGC.js";
42
44
  import {
43
45
  parseJsonObjectPayload
44
- } from "./chunk-7RXG6QRZ.js";
46
+ } from "./chunk-DJNLUABN.js";
45
47
  import {
46
48
  ProvidersDomainModule
47
- } from "./chunk-QWU7ZBO7.js";
49
+ } from "./chunk-VQNODYQ4.js";
48
50
  import {
49
51
  init_esm_shims
50
52
  } from "./chunk-3R73A4XB.js";
@@ -673,4 +675,4 @@ export {
673
675
  validateInitOptions,
674
676
  bootstrapInputFromInitOptions
675
677
  };
676
- //# sourceMappingURL=chunk-HV5X7OR2.js.map
678
+ //# sourceMappingURL=chunk-EOOQZZDE.js.map