@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
@@ -20,6 +20,7 @@ import type { ResultContract } from "../domains/agents/result-contract.js";
20
20
  import { AGENT_AUTOMATION_AUTHORITIES, type AgentAutomationAuthority } from "../domains/agents/spec.js";
21
21
  import type { DispatchRequest } from "../domains/dispatch/contract.js";
22
22
  import { type ExecutionRole, isExecutionRole } from "../domains/dispatch/execution-role.js";
23
+ import { type DispatchIntent, isDispatchIntent } from "../domains/dispatch/intent.js";
23
24
  import {
24
25
  type ApprovedAssignmentRoute,
25
26
  cloneApprovedAssignmentRoute,
@@ -31,7 +32,15 @@ import { isRoutingIntent, type RoutingIntent } from "../domains/dispatch/routing
31
32
  import type { DispatchFailoverCandidate, DispatchFailoverMode } from "../domains/dispatch/validation.js";
32
33
  import { prepareDispatchArguments } from "./dispatch-arguments.js";
33
34
 
34
- export type DispatchPlanTopology = "parallel" | "sequential" | "pipeline" | "review" | "compete" | "detached" | "fleet";
35
+ export type DispatchPlanTopology =
36
+ | "parallel"
37
+ | "sequential"
38
+ | "pipeline"
39
+ | "review"
40
+ | "compete"
41
+ | "council"
42
+ | "detached"
43
+ | "fleet";
35
44
 
36
45
  export type DispatchPlanSource = null | {
37
46
  kind: "scout-transition";
@@ -51,6 +60,9 @@ export interface DispatchPlanTaskView {
51
60
  task: string;
52
61
  /** Exact canonical bounded briefing approved for this task. */
53
62
  briefing?: string;
63
+ worktree?: true;
64
+ apply?: "merge" | "preserve";
65
+ worktreeDestination?: string;
54
66
  model?: string;
55
67
  node?: string;
56
68
  /** Effective transport identity; host is authenticated for SSH placement. */
@@ -59,7 +71,8 @@ export interface DispatchPlanTaskView {
59
71
  /** Effective configured target id used as the execution pin. */
60
72
  target?: string;
61
73
  /** Coordinator role when the topology expands one user task into several runs. */
62
- role?: "task" | "builder" | "reviewer" | "candidate" | "judge";
74
+ role?: "task" | "builder" | "reviewer" | "candidate" | "judge" | "member" | "synthesis";
75
+ council?: { label: string; color?: string; round: number; rounds: number; synthesis: "none" | "judge" | "vote" };
63
76
  /** One-based source task or gate cycle/candidate number. */
64
77
  position?: number;
65
78
  /** Normalized advisory posture and hard bounds sealed into the plan. */
@@ -79,6 +92,8 @@ export interface DispatchPlanTaskView {
79
92
  authorityGrant: DispatchPlanAuthorityGrant;
80
93
  agentDecision: RouteDecisionV1 | null;
81
94
  wave: number | null;
95
+ intent?: DispatchIntent;
96
+ resolvedVerification?: NonNullable<DispatchRequest["resolvedVerification"]>;
82
97
  }
83
98
 
84
99
  export interface DispatchPlanView {
@@ -112,7 +127,20 @@ export interface ResolvedDispatchPlanArtifact {
112
127
  Required<Pick<DispatchPlanTaskView, "agent" | "task" | "model" | "node" | "target">> &
113
128
  Required<Pick<DispatchPlanTaskView, "nodeKind" | "failover">> &
114
129
  Required<Pick<DispatchPlanTaskView, "routingIntent">> &
115
- Pick<DispatchPlanTaskView, "briefing" | "nodeHost" | "role" | "position" | "allowedCandidates"> &
130
+ Pick<
131
+ DispatchPlanTaskView,
132
+ | "briefing"
133
+ | "worktree"
134
+ | "apply"
135
+ | "worktreeDestination"
136
+ | "nodeHost"
137
+ | "role"
138
+ | "council"
139
+ | "position"
140
+ | "allowedCandidates"
141
+ | "intent"
142
+ | "resolvedVerification"
143
+ > &
116
144
  Required<
117
145
  Pick<
118
146
  DispatchPlanTaskView,
@@ -136,7 +164,7 @@ export interface ResolvedDispatchPlanArtifact {
136
164
  export function withResolvedPlanTaskPin(
137
165
  request: DispatchRequest,
138
166
  task: ResolvedDispatchPlanArtifact["tasks"][number] | undefined,
139
- options: { pinTask?: boolean } = {},
167
+ options: { pinTask?: boolean; pinBriefing?: boolean } = {},
140
168
  ): DispatchRequest {
141
169
  if (task === undefined) return request;
142
170
  const {
@@ -170,7 +198,24 @@ export function withResolvedPlanTaskPin(
170
198
  ? {}
171
199
  : { allowedCandidates: task.allowedCandidates.map((candidate) => ({ ...candidate })) }),
172
200
  task: options.pinTask === false ? request.task : task.task,
173
- ...(task.briefing !== undefined ? { briefing: task.briefing } : {}),
201
+ ...(options.pinBriefing === false
202
+ ? request.briefing !== undefined
203
+ ? { briefing: request.briefing }
204
+ : {}
205
+ : task.briefing !== undefined
206
+ ? { briefing: task.briefing }
207
+ : {}),
208
+ ...(task.worktree === true
209
+ ? {
210
+ worktree: true as const,
211
+ apply: task.apply ?? "merge",
212
+ ...(task.worktreeDestination === undefined ? {} : { taskWorktreeDestination: task.worktreeDestination }),
213
+ }
214
+ : {}),
215
+ ...(task.intent !== undefined ? { intent: structuredClone(task.intent) } : {}),
216
+ ...(task.resolvedVerification !== undefined
217
+ ? { resolvedVerification: task.resolvedVerification.map((check) => ({ ...check, argv: [...check.argv] })) }
218
+ : {}),
174
219
  target: task.target,
175
220
  model: task.model,
176
221
  node: task.node,
@@ -224,6 +269,12 @@ function taskViews(args: Record<string, unknown>): DispatchPlanTaskView[] {
224
269
  };
225
270
  const briefing = "briefing" in record ? str(record.briefing) : str(args.briefing);
226
271
  if (briefing !== undefined) view.briefing = briefing;
272
+ const worktree = "worktree" in record ? record.worktree : args.worktree;
273
+ if (worktree === true) {
274
+ view.worktree = true;
275
+ const apply = "apply" in record ? record.apply : args.apply;
276
+ view.apply = apply === "preserve" ? "preserve" : "merge";
277
+ }
227
278
  const model = str(record.model) ?? sharedModel;
228
279
  if (model !== undefined) view.model = model;
229
280
  const node = str(record.node) ?? sharedNode;
@@ -266,6 +317,7 @@ function canonicalCandidates(value: unknown): DispatchFailoverCandidate[] | null
266
317
  function topologyOf(args: Record<string, unknown>): DispatchPlanTopology {
267
318
  if (isRecord(args.apply_winner)) return "compete";
268
319
  if (args.mode === "compete") return "compete";
320
+ if (args.mode === "council") return "council";
269
321
  if (args.review === true || isRecord(args.review)) return "review";
270
322
  if (args.detach === true) return "detached";
271
323
  if (args.mode === "sequential") return "sequential";
@@ -315,6 +367,15 @@ function renderPlanText(
315
367
  lines.push(
316
368
  ` ${index + 1}.${role} agent=${safeField(task.agent)}${target}${model}${node}${failover}${routingText} task=${JSON.stringify(safeField(task.task))}`,
317
369
  );
370
+ if (task.council !== undefined) {
371
+ lines.push(
372
+ ` council label=${safeField(task.council.label)} color=${safeField(task.council.color ?? "none")} round=${task.council.round} rounds=${task.council.rounds} synthesis=${task.council.synthesis}`,
373
+ );
374
+ }
375
+ if (task.worktree === true)
376
+ lines.push(
377
+ ` worktree=true apply=${task.apply ?? "merge"} destination=${safeField(task.worktreeDestination ?? "unresolved")}`,
378
+ );
318
379
  if (task.allowedCandidates !== undefined) {
319
380
  for (const [candidateIndex, candidate] of task.allowedCandidates.entries()) {
320
381
  lines.push(
@@ -352,6 +413,15 @@ function renderPlanText(
352
413
  ` briefing_bytes=${Buffer.byteLength(task.briefing, "utf8")} briefing_sha256=${createHash("sha256").update(task.briefing, "utf8").digest("hex")} briefing_preview=${JSON.stringify(safeField(task.briefing))}`,
353
414
  );
354
415
  }
416
+ if (task.intent !== undefined) {
417
+ const serialized = JSON.stringify(task.intent);
418
+ lines.push(` intent_sha256=${createHash("sha256").update(serialized, "utf8").digest("hex")}`);
419
+ }
420
+ for (const check of task.resolvedVerification ?? []) {
421
+ lines.push(
422
+ ` verification check=${safeField(check.check)} argv=${JSON.stringify(check.argv)} cwd=${JSON.stringify(check.cwd)} timeout_ms=${check.timeoutMs}`,
423
+ );
424
+ }
355
425
  }
356
426
  return lines.join("\n");
357
427
  }
@@ -362,12 +432,16 @@ function isResolvedTask(value: unknown): value is ResolvedDispatchPlanArtifact["
362
432
  "agent",
363
433
  "task",
364
434
  "briefing",
435
+ "worktree",
436
+ "apply",
437
+ "worktreeDestination",
365
438
  "model",
366
439
  "node",
367
440
  "nodeKind",
368
441
  "nodeHost",
369
442
  "target",
370
443
  "role",
444
+ "council",
371
445
  "position",
372
446
  "routingIntent",
373
447
  "failover",
@@ -381,6 +455,8 @@ function isResolvedTask(value: unknown): value is ResolvedDispatchPlanArtifact["
381
455
  "authorityGrant",
382
456
  "agentDecision",
383
457
  "wave",
458
+ "intent",
459
+ "resolvedVerification",
384
460
  ]);
385
461
  if (Object.keys(value).some((key) => !allowedKeys.has(key))) return false;
386
462
  for (const key of [
@@ -409,17 +485,37 @@ function isResolvedTask(value: unknown): value is ResolvedDispatchPlanArtifact["
409
485
  value.role !== "builder" &&
410
486
  value.role !== "reviewer" &&
411
487
  value.role !== "candidate" &&
412
- value.role !== "judge"
488
+ value.role !== "judge" &&
489
+ value.role !== "member" &&
490
+ value.role !== "synthesis"
413
491
  ) {
414
492
  return false;
415
493
  }
416
494
  if (value.position !== undefined && (!Number.isInteger(value.position) || Number(value.position) < 1)) return false;
495
+ if (value.council !== undefined) {
496
+ if (
497
+ !isRecord(value.council) ||
498
+ typeof value.council.label !== "string" ||
499
+ value.council.label.length === 0 ||
500
+ (value.council.color !== undefined && typeof value.council.color !== "string") ||
501
+ !Number.isInteger(value.council.round) ||
502
+ Number(value.council.round) < 1 ||
503
+ !Number.isInteger(value.council.rounds) ||
504
+ Number(value.council.rounds) < 1 ||
505
+ (value.council.synthesis !== "none" && value.council.synthesis !== "judge" && value.council.synthesis !== "vote")
506
+ )
507
+ return false;
508
+ }
417
509
  if (value.nodeKind !== "local" && value.nodeKind !== "ssh") return false;
418
510
  if (value.nodeKind === "ssh" && (typeof value.nodeHost !== "string" || value.nodeHost.trim().length === 0))
419
511
  return false;
420
512
  if (value.nodeKind === "local" && value.nodeHost !== undefined) return false;
421
513
  if (value.briefing !== undefined && (typeof value.briefing !== "string" || value.briefing.trim().length === 0))
422
514
  return false;
515
+ if (value.worktree !== undefined && value.worktree !== true) return false;
516
+ if (value.apply !== undefined && value.apply !== "merge" && value.apply !== "preserve") return false;
517
+ if (value.apply !== undefined && value.worktree !== true) return false;
518
+ if (value.worktreeDestination !== undefined && typeof value.worktreeDestination !== "string") return false;
423
519
  if (failoverModeOf(value.failover) === undefined) return false;
424
520
  if (!isRoutingIntent(value.routingIntent)) return false;
425
521
  if (value.routeApproval !== null && !isApprovedAssignmentRoute(value.routeApproval)) return false;
@@ -441,6 +537,21 @@ function isResolvedTask(value: unknown): value is ResolvedDispatchPlanArtifact["
441
537
  return false;
442
538
  if (value.authorityGrant !== null && !isAuthorityGrant(value.authorityGrant)) return false;
443
539
  if (value.agentDecision !== null && !isAgentDecision(value.agentDecision)) return false;
540
+ if (value.intent !== undefined && !isDispatchIntent(value.intent)) return false;
541
+ if (
542
+ value.resolvedVerification !== undefined &&
543
+ (!Array.isArray(value.resolvedVerification) ||
544
+ !value.resolvedVerification.every(
545
+ (check) =>
546
+ isRecord(check) &&
547
+ typeof check.check === "string" &&
548
+ Array.isArray(check.argv) &&
549
+ check.argv.every((arg) => typeof arg === "string") &&
550
+ typeof check.cwd === "string" &&
551
+ typeof check.timeoutMs === "number",
552
+ ))
553
+ )
554
+ return false;
444
555
  if (value.failover === "approved") {
445
556
  if (canonicalCandidates(value.allowedCandidates) === null) return false;
446
557
  } else if (value.allowedCandidates !== undefined) {
@@ -455,11 +566,16 @@ const RESULT_CONTRACT_KINDS = new Set<ResultContract["kind"]>([
455
566
  "architect-plan",
456
567
  "scout-report",
457
568
  "verifier-report",
569
+ "council-report",
458
570
  "debugger-report",
459
571
  "research-report",
460
572
  "mutation-report",
461
573
  "provenance-report",
574
+ "oracle-report",
462
575
  "external-delegation",
576
+ "artifact-report",
577
+ "context-handbook",
578
+ "delegation-plan",
463
579
  ]);
464
580
 
465
581
  function isAuthorityGrant(value: unknown): value is Exclude<DispatchPlanAuthorityGrant, null> {
@@ -572,6 +688,7 @@ export function resolvedDispatchPlanFromArgs(args: Record<string, unknown>): Res
572
688
  value.topology !== "pipeline" &&
573
689
  value.topology !== "review" &&
574
690
  value.topology !== "compete" &&
691
+ value.topology !== "council" &&
575
692
  value.topology !== "detached" &&
576
693
  value.topology !== "fleet"
577
694
  ) {
@@ -632,6 +749,13 @@ export function resolvedDispatchPlanFromArgs(args: Record<string, unknown>): Res
632
749
  agent: task.agent.trim(),
633
750
  task: task.task.trim(),
634
751
  ...(task.briefing !== undefined ? { briefing: task.briefing.trim() } : {}),
752
+ ...(task.worktree === true
753
+ ? {
754
+ worktree: true as const,
755
+ apply: task.apply ?? "merge",
756
+ ...(task.worktreeDestination === undefined ? {} : { worktreeDestination: task.worktreeDestination }),
757
+ }
758
+ : {}),
635
759
  model: task.model.trim(),
636
760
  node: task.node.trim(),
637
761
  nodeKind: task.nodeKind,
@@ -652,7 +776,12 @@ export function resolvedDispatchPlanFromArgs(args: Record<string, unknown>): Res
652
776
  : {}),
653
777
  ...(task.nodeHost !== undefined ? { nodeHost: task.nodeHost.trim() } : {}),
654
778
  ...(task.role !== undefined ? { role: task.role } : {}),
779
+ ...(task.council !== undefined ? { council: { ...task.council } } : {}),
655
780
  ...(task.position !== undefined ? { position: task.position } : {}),
781
+ ...(task.intent !== undefined ? { intent: structuredClone(task.intent) } : {}),
782
+ ...(task.resolvedVerification !== undefined
783
+ ? { resolvedVerification: task.resolvedVerification.map((check) => ({ ...check, argv: [...check.argv] })) }
784
+ : {}),
656
785
  })),
657
786
  costCeilingUsd: value.costCeilingUsd,
658
787
  deadlineMs: value.deadlineMs as number | null,
@@ -716,6 +845,7 @@ export function describeDispatchPlan(rawArgs: Record<string, unknown> | undefine
716
845
  (tasks.length > 1 ||
717
846
  source !== null ||
718
847
  topology === "compete" ||
848
+ topology === "council" ||
719
849
  remote ||
720
850
  tasks.some((task) => task.failover === "approved") ||
721
851
  confirmation !== undefined ||