@iowarp/clio-coder 0.3.6 → 0.3.8

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 (323) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +22 -6
  3. package/dist/{acp-2BEHC4DL.js → acp-U67UHUK2.js} +14 -14
  4. package/dist/{agents-LNNFTM53.js → agents-YU6SGALZ.js} +42 -35
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-KXXFI2VS.js → auth-5ZPJOIVG.js} +32 -24
  7. package/dist/builtins-C6JMZVV6.js +17 -0
  8. package/dist/{chunk-E25LMLRW.js → chunk-26LEYJZH.js} +2 -2
  9. package/dist/{chunk-TSHXZTOQ.js → chunk-2HEJ2F35.js} +5 -5
  10. package/dist/{chunk-PBTHKCPN.js → chunk-2HFZQUHL.js} +7 -7
  11. package/dist/{chunk-FO5ZOVUY.js → chunk-3BINW3FP.js} +5 -5
  12. package/dist/{chunk-4OC57DA6.js → chunk-4DGYLA73.js} +53 -2
  13. package/dist/{chunk-CKXWIANG.js → chunk-4SPRNWDE.js} +18 -16
  14. package/dist/{chunk-E2ER4LJF.js → chunk-5C3AQNDW.js} +25 -1
  15. package/dist/{chunk-XF5N4U5A.js → chunk-5DHKRSMQ.js} +9 -8
  16. package/dist/{chunk-43AOLP7E.js → chunk-5FR74PWO.js} +2 -1
  17. package/dist/{chunk-EKY57CSP.js → chunk-5H3GB5BO.js} +68 -772
  18. package/dist/{chunk-6XXKFVSN.js → chunk-5Q2VVUKB.js} +4 -4
  19. package/dist/{chunk-DJVECN66.js → chunk-7RFXX52T.js} +295 -3705
  20. package/dist/{chunk-ZXF4XRKW.js → chunk-7RGZWPB6.js} +158 -8
  21. package/dist/{chunk-FYYLNIL5.js → chunk-A2NJGIB3.js} +2 -2
  22. package/dist/{chunk-XXQNGV4M.js → chunk-A3WNZD3P.js} +548 -72
  23. package/dist/{chunk-VEZEGCGW.js → chunk-B5CSFE7B.js} +23 -21
  24. package/dist/{chunk-2SFS6XQE.js → chunk-DGSYXYMX.js} +3 -2
  25. package/dist/chunk-DR52UMZW.js +21 -0
  26. package/dist/{chunk-ZWLZP4ZT.js → chunk-DYIM5TJT.js} +98 -12
  27. package/dist/{chunk-QKMUKYO7.js → chunk-E77JEWSD.js} +270 -125
  28. package/dist/{chunk-LYF7OHWH.js → chunk-EMYUUSFG.js} +12 -467
  29. package/dist/{chunk-4VP4KH3K.js → chunk-EQ63NRB7.js} +8 -8
  30. package/dist/chunk-FBVTI2TJ.js +518 -0
  31. package/dist/{chunk-R46L2BIR.js → chunk-FHJEP5SW.js} +19 -25
  32. package/dist/{chunk-WR67VIZY.js → chunk-GN57SG4G.js} +66 -8
  33. package/dist/{chunk-RD5U66HV.js → chunk-GPIEI3LY.js} +9 -9
  34. package/dist/{chunk-PCZJO5TI.js → chunk-GU2UIAFZ.js} +13 -178
  35. package/dist/chunk-GWS3VEIW.js +195 -0
  36. package/dist/chunk-H7IXIC72.js +103 -0
  37. package/dist/{chunk-3BPUFZDL.js → chunk-HLE42MG7.js} +3 -3
  38. package/dist/{chunk-24I7BN55.js → chunk-IFBNV6H6.js} +3 -3
  39. package/dist/{chunk-QNQHSOLF.js → chunk-IGWKHNIQ.js} +114 -55
  40. package/dist/chunk-IIZWH4XA.js +172 -0
  41. package/dist/{chunk-AD2SYQYC.js → chunk-IJ7RPIYJ.js} +124 -6
  42. package/dist/chunk-J3YUBZWY.js +382 -0
  43. package/dist/{chunk-5JGRAMKL.js → chunk-JOZYP4GM.js} +8 -6
  44. package/dist/{chunk-OH3TOQTB.js → chunk-K4XHGFR5.js} +751 -15
  45. package/dist/{chunk-EYPA3EGJ.js → chunk-KTYTFRMB.js} +178 -14
  46. package/dist/chunk-LU7P4LHA.js +33 -0
  47. package/dist/chunk-ME6CCNFO.js +108 -0
  48. package/dist/chunk-MXKJU4JB.js +1100 -0
  49. package/dist/{chunk-RY3LY4J5.js → chunk-N22QMJKY.js} +21 -18
  50. package/dist/chunk-NMPKI6XL.js +3006 -0
  51. package/dist/chunk-NUGM5KR6.js +165 -0
  52. package/dist/{chunk-22NAGB7X.js → chunk-P43ETTHK.js} +5 -94
  53. package/dist/{chunk-NILBFAPG.js → chunk-PMDBGQSJ.js} +2 -2
  54. package/dist/chunk-PT7HYKEM.js +165 -0
  55. package/dist/chunk-RVG5JXAL.js +41 -0
  56. package/dist/{chunk-GEYXPTRF.js → chunk-RWSI4YD7.js} +2 -2
  57. package/dist/{chunk-4BPJXDWC.js → chunk-TANS5ZJS.js} +35 -19
  58. package/dist/{verifiers-NCBTHHN2.js → chunk-TB5666IT.js} +67 -324
  59. package/dist/{chunk-QM3F2GKX.js → chunk-TLQJPP24.js} +7927 -8088
  60. package/dist/{chunk-G7MUEIGA.js → chunk-TT36MB5S.js} +2 -1
  61. package/dist/chunk-TTHACPOM.js +961 -0
  62. package/dist/{chunk-6US73PDB.js → chunk-TYPGUK6W.js} +7 -7
  63. package/dist/{chunk-MFFY33HR.js → chunk-U6MBIEMB.js} +554 -209
  64. package/dist/chunk-VAWNZU7Z.js +242 -0
  65. package/dist/{chunk-IR4CFBFN.js → chunk-VCBR6CU7.js} +12 -12
  66. package/dist/{chunk-WHJYKASB.js → chunk-VHN4MY6O.js} +2 -2
  67. package/dist/{chunk-XYDYPRZI.js → chunk-VWZOAB7K.js} +10 -10
  68. package/dist/{chunk-ZRGEBJ4T.js → chunk-WLFILSD5.js} +48 -48
  69. package/dist/{chunk-K7T3E2SR.js → chunk-WNIJTQQK.js} +12 -11
  70. package/dist/{chunk-CYQKWTG3.js → chunk-WSB3FPX7.js} +68 -20
  71. package/dist/{chunk-KHSFENX2.js → chunk-WWCZ5F23.js} +116 -14
  72. package/dist/{chunk-XE2VEJHX.js → chunk-WXY7KU3G.js} +2 -2
  73. package/dist/{chunk-PPAMZ32Z.js → chunk-XK56QHLX.js} +6 -1
  74. package/dist/{chunk-KOHPCX4K.js → chunk-XWSF374K.js} +5 -5
  75. package/dist/{chunk-CJUB2JJ2.js → chunk-YS5VLNH5.js} +10 -10
  76. package/dist/{chunk-ZZMN5OM4.js → chunk-ZNLWCMVZ.js} +2 -2
  77. package/dist/{chunk-WHGPSPT5.js → chunk-ZVJ5BLO2.js} +2 -2
  78. package/dist/cli/index.js +33 -31
  79. package/dist/{clio-M2KGYUFZ.js → clio-QVTYJ57A.js} +10 -10
  80. package/dist/{code-nav-GQNL7XA6.js → code-nav-FGGFIE7L.js} +5 -5
  81. package/dist/codewiki/build-worker.js +4 -4
  82. package/dist/{components-5TTYYX6G.js → components-ZFA3SAER.js} +9 -9
  83. package/dist/{config-XUUYQIWO.js → config-LW5IJFQN.js} +65 -55
  84. package/dist/{configure-IHJ7YOMV.js → configure-7XIZCOU4.js} +29 -24
  85. package/dist/{context-75MIWW3U.js → context-L3WL3X7K.js} +54 -43
  86. package/dist/{context-ZQ7SIFJV.js → context-N52ZA626.js} +30 -14
  87. package/dist/{context-74JLXAWD.js → context-Y6Y7QPR6.js} +12 -12
  88. package/dist/{context-clear-GYKWNUML.js → context-clear-MBQRLSDQ.js} +54 -43
  89. package/dist/{context-index-SSR5ECNE.js → context-index-HVMFQHK3.js} +5 -5
  90. package/dist/{context-working-set-UX5KEP4J.js → context-working-set-GS6DSO7F.js} +18 -18
  91. package/dist/{dispatch-runner-GIJBHNFL.js → dispatch-runner-22ZCNOM3.js} +367 -79
  92. package/dist/{docs-6FZSCG5B.js → docs-7LQ23DLM.js} +9 -9
  93. package/dist/{doctor-SVJ5BZCW.js → doctor-M7YEDGAE.js} +27 -23
  94. package/dist/{eval-CG6LLBLD.js → eval-BEC2WHDA.js} +73 -20
  95. package/dist/{evidence-ZYFIEN42.js → evidence-REJUMSKM.js} +70 -59
  96. package/dist/{evolve-QGEXEMDW.js → evolve-PY5ZBA5K.js} +50 -39
  97. package/dist/{extensions-ADGNCJJD.js → extensions-HVKU65YU.js} +7 -7
  98. package/dist/{fleet-S5R4ZOQY.js → fleet-7WZEWRFA.js} +236 -377
  99. package/dist/fleet-commands-UVHWM76J.js +70 -0
  100. package/dist/fleet-graph-6ULH7PES.js +125 -0
  101. package/dist/fleet-new-RDVJLHHH.js +48 -0
  102. package/dist/{fleet-preflight-BHSNPBMH.js → fleet-preflight-J53T6CCE.js} +5 -5
  103. package/dist/fleet-validate-72PC4SLA.js +79 -0
  104. package/dist/{init-5DRU55YR.js → init-OG3TPGQG.js} +69 -57
  105. package/dist/library-CNTMPLRF.js +217 -0
  106. package/dist/{memory-7YKKR6UC.js → memory-6IS7F275.js} +52 -41
  107. package/dist/{models-ZPOLRU2C.js → models-ENRJDA5W.js} +37 -31
  108. package/dist/{monitor-US5F5YGZ.js → monitor-XLDVO7TN.js} +79 -42
  109. package/dist/{orchestrator-E2AL4T5N.js → orchestrator-6KSPYRHA.js} +4126 -762
  110. package/dist/{paths-E7KYAQWE.js → paths-DBXMZMDU.js} +6 -6
  111. package/dist/registry-LG64LTF4.js +11 -0
  112. package/dist/{reset-KZ652EK6.js → reset-RZ4ER727.js} +12 -12
  113. package/dist/{run-SRNBKDWD.js → run-Y2CNK5RU.js} +89 -76
  114. package/dist/{share-CGZE33UP.js → share-A55GYP6Z.js} +37 -13
  115. package/dist/{skills-S2X4DLY5.js → skills-ALC5J6AT.js} +29 -13
  116. package/dist/{skills-eval-W2GGIC4R.js → skills-eval-JPBEBYQU.js} +60 -48
  117. package/dist/support-MIETYA5E.js +38 -0
  118. package/dist/{targets-54SWINWB.js → targets-VGNXIR3S.js} +46 -36
  119. package/dist/{terminal-lease-SAIF2OGY.js → terminal-lease-WOBR64YA.js} +4 -4
  120. package/dist/{uninstall-BVLWXKBT.js → uninstall-ZJF5H5ZN.js} +9 -9
  121. package/dist/{upgrade-JKAR27XC.js → upgrade-FUSUAGHR.js} +31 -28
  122. package/dist/{usage-MSAWCLX4.js → usage-N4MKVHKD.js} +140 -68
  123. package/dist/verifiers-YAWOJ3H2.js +336 -0
  124. package/dist/{verify-X5HDROLA.js → verify-LTDHYBGY.js} +10 -9
  125. package/dist/{wiki-generate-GUSOQ6ZP.js → wiki-generate-6M7GHTBJ.js} +75 -62
  126. package/dist/worker/entry.js +67 -57
  127. package/docs/README.md +3 -2
  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-versions.md +11 -6
  132. package/docs/built-in-agents.md +26 -2
  133. package/docs/capacity-and-scheduling.md +1 -1
  134. package/docs/commands-and-modes.md +83 -3
  135. package/docs/configuration-and-targets.md +86 -4
  136. package/docs/context-engine.md +1 -1
  137. package/docs/development-pipeline.md +1 -1
  138. package/docs/dispatch-architecture-rationale.md +1 -1
  139. package/docs/documentation-coverage.md +3 -3
  140. package/docs/documentation-guide.md +3 -3
  141. package/docs/eval-runner.md +1 -1
  142. package/docs/evals-internal.md +1 -1
  143. package/docs/evidence-and-memory.md +74 -10
  144. package/docs/evolution.md +1 -1
  145. package/docs/exit-codes-and-output.md +4 -1
  146. package/docs/extensions-and-sharing.md +6 -2
  147. package/docs/fleet-demo-runbook.md +2 -2
  148. package/docs/fleet-dispatch.md +228 -16
  149. package/docs/git-commit-provenance.md +2 -2
  150. package/docs/glossary.md +22 -2
  151. package/docs/installation-and-lifecycle.md +2 -2
  152. package/docs/middleware-and-components.md +2 -1
  153. package/docs/model-catalog.md +1 -1
  154. package/docs/observability.md +56 -9
  155. package/docs/proactive-memory.md +1 -1
  156. package/docs/prompt-envelope-and-tools.md +4 -2
  157. package/docs/provider-adapter-cookbook.md +1 -1
  158. package/docs/release-cut-checklist.md +83 -65
  159. package/docs/resource-library.md +59 -0
  160. package/docs/safety-model.md +2 -2
  161. package/docs/scientific-validation.md +3 -3
  162. package/docs/session-lifecycle.md +37 -1
  163. package/docs/skills-marketplace.md +16 -3
  164. package/docs/tool-usage.md +14 -7
  165. package/docs/trace-store.md +1 -1
  166. package/docs/troubleshooting.md +1 -1
  167. package/docs/tui-design.md +1 -1
  168. package/docs/worker-dispatch-mechanics.md +3 -3
  169. package/package.json +1 -2
  170. package/src/cli/argv.ts +5 -0
  171. package/src/cli/configure.ts +107 -23
  172. package/src/cli/doctor.ts +5 -1
  173. package/src/cli/evidence.ts +30 -25
  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 +111 -0
  178. package/src/cli/fleet-validate.ts +30 -0
  179. package/src/cli/fleet.ts +173 -335
  180. package/src/cli/index.ts +3 -1
  181. package/src/cli/library.ts +190 -0
  182. package/src/cli/share.ts +13 -1
  183. package/src/cli/shared.ts +1 -0
  184. package/src/cli/targets.ts +4 -1
  185. package/src/cli/usage.ts +111 -19
  186. package/src/cli/validate-model.ts +60 -5
  187. package/src/core/bus-events.ts +29 -0
  188. package/src/core/commit-attribution.ts +4 -4
  189. package/src/core/config.ts +130 -0
  190. package/src/core/defaults.ts +81 -0
  191. package/src/core/path-boundary.ts +100 -0
  192. package/src/domains/agents/builtins/architect.md +1 -0
  193. package/src/domains/agents/builtins/oracle.md +33 -0
  194. package/src/domains/agents/catalog.ts +13 -1
  195. package/src/domains/agents/extension.ts +2 -11
  196. package/src/domains/agents/fleet-contract.ts +304 -24
  197. package/src/domains/agents/index.ts +14 -0
  198. package/src/domains/agents/recipe.ts +7 -1
  199. package/src/domains/agents/registry.ts +73 -5
  200. package/src/domains/agents/result-contract.ts +360 -15
  201. package/src/domains/agents/write-boundary.ts +15 -50
  202. package/src/domains/config/classify.ts +4 -0
  203. package/src/domains/context/project-rules.ts +51 -1
  204. package/src/domains/dispatch/active-route-planner.ts +14 -0
  205. package/src/domains/dispatch/assignment-reconcile.ts +22 -5
  206. package/src/domains/dispatch/assignment-store.ts +151 -14
  207. package/src/domains/dispatch/backoff.ts +2 -1
  208. package/src/domains/dispatch/capability-match.ts +1 -0
  209. package/src/domains/dispatch/checkout-writer-lease.ts +175 -0
  210. package/src/domains/dispatch/contract.ts +48 -0
  211. package/src/domains/dispatch/delegation-plan.ts +164 -0
  212. package/src/domains/dispatch/execution-plan.ts +76 -5
  213. package/src/domains/dispatch/execution-role.ts +12 -2
  214. package/src/domains/dispatch/execution-scheduler.ts +183 -67
  215. package/src/domains/dispatch/extension.ts +412 -74
  216. package/src/domains/dispatch/fleet-gate.ts +14 -0
  217. package/src/domains/dispatch/fleet-plan.ts +63 -3
  218. package/src/domains/dispatch/fleet-run.ts +791 -0
  219. package/src/domains/dispatch/gate-role-prompts.ts +47 -0
  220. package/src/domains/dispatch/host-verification.ts +178 -0
  221. package/src/domains/dispatch/index.ts +41 -1
  222. package/src/domains/dispatch/intent-requirements.ts +40 -0
  223. package/src/domains/dispatch/intent.ts +235 -0
  224. package/src/domains/dispatch/path-scope.ts +370 -0
  225. package/src/domains/dispatch/receipt-integrity.ts +9 -4
  226. package/src/domains/dispatch/state.ts +36 -3
  227. package/src/domains/dispatch/types.ts +64 -12
  228. package/src/domains/dispatch/validation.ts +69 -6
  229. package/src/domains/dispatch/write-boundary-enforcer.ts +45 -0
  230. package/src/domains/dispatch/write-boundary.ts +201 -22
  231. package/src/domains/eval/metrics/evidence.ts +79 -2
  232. package/src/domains/eval/runners/clio-run.ts +12 -2
  233. package/src/domains/evidence/build.ts +69 -11
  234. package/src/domains/evidence/index.ts +21 -0
  235. package/src/domains/evidence/provenance.ts +46 -11
  236. package/src/domains/evidence/trust-projection.ts +274 -0
  237. package/src/domains/evidence/trust-status.ts +155 -18
  238. package/src/domains/evidence/types.ts +4 -0
  239. package/src/domains/extensions/discovery.ts +88 -1
  240. package/src/domains/extensions/resources.ts +20 -8
  241. package/src/domains/extensions/state.ts +6 -2
  242. package/src/domains/extensions/types.ts +4 -1
  243. package/src/domains/lifecycle/doctor.ts +140 -1
  244. package/src/domains/middleware/index.ts +15 -0
  245. package/src/domains/middleware/watchdog.ts +281 -0
  246. package/src/domains/observability/contract.ts +3 -1
  247. package/src/domains/observability/cost.ts +12 -1
  248. package/src/domains/observability/extension.ts +2 -2
  249. package/src/domains/observability/index.ts +10 -0
  250. package/src/domains/observability/out-of-turn-usage.ts +223 -0
  251. package/src/domains/prompts/contract.ts +3 -5
  252. package/src/domains/providers/extension.ts +30 -2
  253. package/src/domains/resources/common-loader.ts +3 -0
  254. package/src/domains/resources/index.ts +20 -0
  255. package/src/domains/resources/library.ts +326 -0
  256. package/src/domains/resources/prompts/loader.ts +119 -14
  257. package/src/domains/resources/skills/marketplace.ts +37 -12
  258. package/src/domains/safety/policy-engine.ts +5 -5
  259. package/src/domains/safety/run-effects.ts +64 -1
  260. package/src/domains/safety/scope.ts +7 -12
  261. package/src/domains/session/handoff.ts +629 -0
  262. package/src/domains/share/archive.ts +67 -2
  263. package/src/engine/acp/server.ts +4 -1
  264. package/src/engine/prompt-templates.ts +18 -1
  265. package/src/engine/worker-runtime.ts +6 -3
  266. package/src/entry/orchestrator.ts +37 -0
  267. package/src/interactive/bus-notices.ts +26 -0
  268. package/src/interactive/chat-loop.ts +235 -1
  269. package/src/interactive/chat-renderer.ts +22 -0
  270. package/src/interactive/cost-overlay.ts +31 -3
  271. package/src/interactive/council-dispatch.ts +30 -0
  272. package/src/interactive/council-grid.ts +213 -0
  273. package/src/interactive/council.ts +99 -0
  274. package/src/interactive/dispatch-board.ts +311 -17
  275. package/src/interactive/fleet-run-preview.ts +307 -0
  276. package/src/interactive/footer/notifications.ts +219 -0
  277. package/src/interactive/handoff-round.ts +56 -0
  278. package/src/interactive/interactive-application.ts +43 -1
  279. package/src/interactive/interactive-event-projection.ts +23 -1
  280. package/src/interactive/interactive-slash-runtime.ts +52 -2
  281. package/src/interactive/interactive-subscriptions.ts +14 -2
  282. package/src/interactive/oracle.ts +179 -0
  283. package/src/interactive/overlay-ask-user-lifecycle.ts +6 -0
  284. package/src/interactive/overlay-general-openers.ts +190 -1
  285. package/src/interactive/overlay-key-routing.ts +17 -1
  286. package/src/interactive/overlay-lifecycle.ts +41 -1
  287. package/src/interactive/overlay-permission-lifecycle.ts +10 -0
  288. package/src/interactive/overlay-resource-openers.ts +11 -3
  289. package/src/interactive/overlay-session-lifecycle.ts +234 -2
  290. package/src/interactive/overlays/fleet-run-approval.ts +208 -0
  291. package/src/interactive/overlays/handoff-review.ts +185 -0
  292. package/src/interactive/overlays/library-install-confirm.ts +151 -0
  293. package/src/interactive/overlays/list-overlay.ts +168 -2
  294. package/src/interactive/overlays/settings.ts +221 -30
  295. package/src/interactive/overlays/side-question.ts +139 -0
  296. package/src/interactive/overlays/skills-hub.ts +401 -15
  297. package/src/interactive/side-question.ts +171 -0
  298. package/src/interactive/slash-commands.ts +439 -7
  299. package/src/interactive/slash-spec.ts +19 -6
  300. package/src/interactive/theme/tokens.ts +30 -0
  301. package/src/interactive/turn-middleware.ts +15 -1
  302. package/src/interactive/view/artifacts.ts +42 -9
  303. package/src/interactive/view/view-overlay.ts +15 -3
  304. package/src/interactive/watchdog-run.ts +75 -0
  305. package/src/interactive/worker-receipts.ts +14 -2
  306. package/src/interactive/worker-share.ts +56 -1
  307. package/src/interactive/worker-stream.ts +15 -0
  308. package/src/tools/bootstrap.ts +3 -0
  309. package/src/tools/compete-worktrees.ts +13 -79
  310. package/src/tools/dispatch-admission.ts +251 -18
  311. package/src/tools/dispatch-arguments.ts +84 -1
  312. package/src/tools/dispatch-plan.ts +165 -6
  313. package/src/tools/dispatch-runner.ts +364 -23
  314. package/src/tools/dispatch-types.ts +20 -1
  315. package/src/tools/dispatch.ts +72 -2
  316. package/src/tools/monitor.ts +29 -0
  317. package/src/tools/profiles.ts +18 -4
  318. package/src/tools/task-worktree.ts +238 -0
  319. package/src/tools/verify/authoring.ts +61 -1
  320. package/src/tools/verify/scripts.ts +62 -0
  321. package/src/tools/worker-evidence.ts +21 -14
  322. package/src/worker/spec-contract.ts +3 -1
  323. package/dist/chunk-HC4CLZ2Y.js +0 -68
package/CHANGELOG.md CHANGED
@@ -2,6 +2,65 @@
2
2
 
3
3
  All notable changes to Clio Coder are documented in this file. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and versions follow Semantic Versioning; pre-1.0 minor releases may include incompatible changes.
4
4
 
5
+ ## 0.3.8 - 2026-08-29
6
+
7
+ ### Added
8
+ - An extension may ship agents, fleets, and namespaced prompts alongside the skills it already provided. `clio-coder-extension.yaml` accepts `resources.agents` and `resources.fleets` beside `resources.skills`, `resources.prompts`, and `resources.themes`, and every declared root is validated when the manifest loads rather than when a resource is first read: a root must be relative, must resolve inside the extension package, must not be the package root itself, must be a directory, and must not reach outside the package through a symbolic link. The whole resource tree is walked for escaping or unresolvable links, and any failure refuses the install with a named diagnostic instead of installing a package whose resources cannot be trusted. Extension agents merge between the builtin recipes and the operator's own, ordered by extension source, so an extension can add an agent but never shadow a shipped one; an attempt is dropped with `ignore override id=<id> by=extension reason=reserved-builtin`. An extension agent's `skills:` bindings resolve only against that same extension's declared skills root with discovery disabled, so a recipe cannot bind a skill from the operator's roots or from another extension, and a binding that escapes the root is refused by name. An extension that binds skills without declaring a skills root is refused rather than silently resolving nothing. Extension fleets take the same position between builtin and user, and a project or user fleet of the same name still wins. Prompts load under the extension's namespace, so `/wtfp:new-paper` addresses the `wtfp` extension's `new-paper` template with no collision against a same-named project prompt, and a `${extensionRoot}` reference in a prompt body resolves to the installed package so a template can cite files it ships. Only an existing path contained by the declaring package resolves; a reference that is missing or escapes is refused with a diagnostic rather than expanding to a path the operator never granted.
9
+ - Nested state resources survive an extension install. The installer excludes `state.json` because that name is the extension manager's own bookkeeping file, but it now excludes only the one at the package root. An extension that ships, say, `core/templates/state.json` as a project-state template keeps it, where every file of that name was previously dropped.
10
+
11
+ ### Changed
12
+ - Receipt integrity moves from v19 to v20, covering the new `pathProvenance` field on dispatch intent (#159). Receipts sealed by 0.3.7 fail verification under 0.3.8 and are never read as evidence; they are not migrated, on the same terms as every prior integrity bump.
13
+ - Legacy path inference is retained with explicit provenance and confidence, and inferred scope is visible before a supervised dispatch runs (#159). #158 made declared intent authoritative and left the inference path unlabelled, so a receipt recorded which project rules applied but never the path set that selected them: the effect was sealed and the cause was discarded. Dispatch intent moves to version 2 and gains `pathProvenance`, one integrity-sealed entry per policy-bearing path carrying its source, whether the value was declared, derived, or inferred, and a confidence with a deterministic ordering. Receipt integrity moves to v20 to cover it. A receipt records that a path was inferred and from which field, never the sentence it was inferred from, so briefing prose stays out of durable evidence. Declared values always outrank inferred ones and inference never widens a scope a declaration closed; an ambiguous or contradictory inference returns a typed refusal rather than passing as though it had been declared. The approval artifact renders inferred policy-bearing scope in full beside the verification argv it already showed, instead of the bare `intent_sha256` hash, and that artifact plus the sealed `pathProvenance` are the two places it appears. A dispatch that declared no intent gets no transcript notice: it is the ordinary case rather than an anomaly, one receipt in ninety-nine carries an intent key today, and warning on it fired on nearly every dispatch, printed twenty entries carrying identical provenance inline, and buried the one scope notice that does mean something.
14
+ - Typed dispatch intent is authoritative for policy-bearing scope, and one path grammar governs every containment check (#158). `readRoots`, `relevantPaths`, and `expectedOutputs` shipped in 0.3.7 with no consumer at all: they were normalized, hashed, and sealed into the receipt, and nothing read them back. Worker rule selection ran on a regular expression over the task and briefing prose, authority admission never saw declared write scope so every writer was admitted against the whole working directory, and five separate containment predicates used three incompatible grammars, under which the entry `src/` meant a subtree to the fleet write boundary and an opaque literal to intent normalization. One owner now defines the grammar, repository-relative POSIX paths where a trailing slash means a subtree and its absence means an exact file, and admission, project-rule selection, worker enforcement, delegation-plan validation, and boundary verification all ask it. The grammar is the fleet write boundary's existing one, so a contract valid before this release means exactly what it meant before. When a request carries `intent`, the declared set replaces prose inference for rule selection and authority rather than joining it, and a path the inference would have contributed that the declaration does not carry is reported to the operator as a transcript notice naming the omitted paths and stating that they selected no project rules and expanded no worker authority. A request without `intent` keeps prose inference unchanged. Batch intent now merges field by field, and a `tasks[]` entry that would widen the top-level declaration is refused rather than silently replacing it.
15
+ - The fleet write boundary stays post-run by design, and the two request constructors say so (#158). Wiring a fleet step's declared `writes` into `spec.writeRoots` would reach the policy engine's blanket refusal of `bash`, `verify`, and `dispatch` under an active write root, which every fleet step running a command depends on. That refusal is honest because the target check can only prove containment when it is handed a concrete write path; narrowing it to admit a fleet-declared command would claim confinement with no mechanism able to enforce it. Pre-emptive fleet confinement needs a command sandbox and is tracked separately.
16
+
17
+ ### Fixed
18
+ - Extension fleets now resolve their own extension-provided agents during `fleet validate` and `fleet graph`. Those read-only commands rebuilt an agent catalog from built-in, user, and project recipes and omitted the extension slot, even though `agents`, `fleet run`, and dispatch used the domain catalog that contained it; a valid installed fleet therefore listed correctly but failed inspection with `unknown agent`. Discovery is now shared with the run and dispatch surface, preserving the existing built-in-before-extension-before-user-before-project precedence, built-in shadow protection, same-extension skill binding, quarantine behavior, and unknown-agent refusal.
19
+ - `$ARGUMENTS` carries the operator's own text byte-for-byte instead of a shell-tokenized reconstruction of it (#240). Every slash prompt template passed its post-command payload through `parseCommandArgs`, whose tokenizer strips both quote characters and splits on spaces and tabs, and then rebuilt the aggregate placeholder with `args.join(" ")`. The round trip silently destroyed every literal quote, every tab, and every run of more than one space, indentation included, from prose the operator had typed. The defect predates this release and reached every slash command, but 0.3.8 is the release that ships namespaced extension prompts and the first real consumer of that surface hit it immediately: a 1,906-character invocation arrived as 1,904, the two missing bytes being the quote characters around a title. `$ARGUMENTS` now carries the exact payload and is substituted after the parsed placeholders, so placeholder-like operator text such as a literal `$1` stays literal rather than expanding a second time. `$1` through `$9`, `$@`, `${@:N}` and `${@:N:L}` keep the shell-tokenized semantics their names describe: quotes still group, and `$@` still joins parsed arguments with single spaces. The first whitespace character after the command name is the delimiter, counting a CRLF pair as one, and every byte after it belongs to the payload.
20
+ - A live fleet is no longer marked failed by an unrelated Clio process starting up (#235). `assignments.json` is machine-wide, so a row still marked `running` does not prove its opener crashed; it usually means another process holds it. Startup reconciliation read `status === "running"` as proof of an orphan and settled every claimed row `failed`, so a second `clio-coder` anywhere on the machine — a CLI command beside an open TUI, a second fleet, an ACP client — declared every fleet in flight a failure while it kept running. The release test caught it on a four-step fleet whose row went terminal 83 seconds early and named a step whose own result was `succeeded: true`; it reproduces in under thirty seconds with two code-only contracts and no model call. This was a regression against #225, which closed the case where the same row lied optimistically. Every live row now persists the orchestrator pid, a process birth token, and an acquisition time, and reconciliation applies the liveness check the checkout writer lease already uses rather than trusting status alone; the owner is cleared only on a true terminal transition. Legacy ownerless rows and genuinely dead owners still reconcile, so `wait` and `collect` can never hang on a real orphan, and an abandoned claimed fleet now settles against its own fleet root instead of filing a successful child attempt as the failed terminal run.
21
+ - The `vote` ballot directive reaches each council member once (#239). `renderCouncilVoteMemberTask` appends the directive to whatever task it is handed, and both plan admission and the runner called it in sequence with the runner receiving admission's output, so every member's integrity-sealed task carried two verbatim copies of the whole block. The vote still tallied correctly, but the directive is specified as bounded and one of its lines is the precedence instruction that stops a small local model answering in its recipe's shape instead of the ballot's — the exact conflict #230 was resolving — and stating a precedence rule twice works against it. The runner now reuses the per-position task admission already pinned into the resolved plan, composing only for a contract with no resolved artifact, so the task the approval artifact binds and the task the receipt seals are byte-identical. Composition is reused rather than made idempotent on purpose: the plan artifact is authoritative, and detecting an already-present suffix could mistake operator-authored text for system composition. The seat, persona, `shadow` audience, read-only autonomy, `council-read-only` profile, ballot contract, and tally are unchanged.
22
+ - A receipt sealed under a retired integrity version is reported as retired, not as corrupt (#238). Receipt integrity moved from v19 to v20 in this release and 0.3.7 receipts are deliberately not migrated, but an intact, correctly sealed 0.3.7 receipt reported `verify fail … integrity invalid` in the TUI and `error: … receipt integrity: integrity invalid` from `evidence build`, which is exactly what a tampered receipt reports; on the release-test machine 99 of 107 receipts were at a retired version, so the release's first impression for anyone with history was an evidence store full of corruption. The verifier's shape check collapsed a wrong version into the same "invalid" as a malformed block, and nothing named either version. There is now a version-mismatch outcome distinct from a digest mismatch, diagnosed ahead of the verifier and carrying both versions: `receipt integrity v19 is retired; this build verifies v20; the receipt is not read as evidence`. The canonical projection distinguishes the two as well, so a retired-format run does not read like a tampered one anywhere: artifact integrity is `unknown` through a compatibility source that names the retired version, the trust line reads `seal v19 retired (this build verifies v20)` where a tampered receipt reads `seal broken`, the receipt-owned axes are absent as `historical_format` rather than `not_observed`, and the verdict is `unknown` rather than `compromised`. `evidence build` records a `receipt-retired` info finding, prints it as a note, and exits 0, since the receipt is set aside unread exactly as a missing one is; `/view verify` and the receipt view report `verify retired` with both versions in the warning color. The receipt is still not migrated and still not read as evidence; the file's digest is unchanged by every one of these reads. Only the reporting changed.
23
+ - The canonical trust projection is the only renderer of a trust axis, on `evidence inspect` and on dispatch (#233). #162 set out to make one trust verdict render the same way everywhere and named this symptom in its own problem statement, and it was still there: `evidence inspect` printed the projection and then unconditionally appended the legacy provenance transcript, which read the receipt directly and never consulted the projection. On a current receipt one axis rendered three times in two vocabularies, `mediated`, `enforced`, and `autonomy enforcement: mediated autonomy=full-auto`; on a receipt whose seal failed, the projection correctly reported `autonomy not recorded` and the block two lines below published `autonomy enforcement: mediated autonomy=read-only` read from that same unverified receipt. Dispatch output carried the same third rendering as an `enforcement=mediated:auto-edit` suffix that `monitor` on the same run did not print. The provenance renderers now take the canonical status and print only what it admits: pipeline, persona-override, and escalation detail behind a verified seal, and the autonomy detail (`autonomy: full-auto mode=… dangerousBypass=…`) only when the projection reports that axis in a recorded state, without the axis word, which the trust summary alone prints. A bundle whose seal was rejected or retired prints no provenance block, `transcript.md` adds no provenance sentence, and `trace.cleaned.jsonl` carries no provenance fields, for the same reason. Without a projection at hand no axis detail is admitted at all, so the dispatch line stops rendering the axis a third time and agrees with `monitor`. A regression test builds a bundle from a receipt at the previous integrity version, and another from a tampered one, and pins that neither rendered output contains an autonomy value.
24
+ - One trust verdict, worded the same way on every surface (#162). #154 defined the algebra and #157 derived receipts and bundles from it, but nothing projected either: two hand-rolled formatters dumped the same six raw axis states with different separators and different completeness, and neither answered who claims this, what was observed, what was independently checked, and what remains unknown without reading receipt internals. A single `evidence inspect` printed the same autonomy fact twice in two vocabularies two lines apart, and it shipped in four spellings across the codebase. Dispatch and monitor collapsed `failed`, `ungrounded` and `absent` validation grounding into one string while the bundle for the same run distinguished them. Evidence findings read two of the six axes, so twelve local runs finished with incomplete completion evidence and nothing said so. The Alt+W board rendered no canonical trust at all, only `host_verification`, which reads as independently verified beside a run whose canonical `independentReview` is `absent`. There are now one compact human projection and one bounded, versioned machine projection carrying references to the detailed artifacts, and dispatch, monitor, the evidence CLI and its reports, findings, the TUI board, the receipt view, and the eval metrics all render the same verdict for the same input. A trust-status glossary is in the docs.
25
+ - The canonical trust status stops reporting valid context provenance as invalid (#162). A `none`-tier run that received the workspace root records real characters, a content hash, and a section, and the adapter refused exactly that shape, so 58 of 91 local receipts and every evidence bundle on this machine read `contextProvenance: invalid`. The axis was invisible on every surface, so nothing surfaced it until the projection above was built. The adapter's rule was written eight days after the producer's behavior shipped and encoded a docblock that was already stale rather than a deliberate stricter model, so the adapter is widened, the docblock is corrected, and the shape a real workspace-root run produces is pinned by a test taken from an actual receipt.
26
+ - The five standing npm audit advisories are cleared, and the release gate now refuses a shipped high (#199). All five reached the published tarball through `@anthropic-ai/claude-agent-sdk` and its MCP dependency chain rather than stopping at the development surface, contrary to the assumption that had let them stand: `package-lock.json` marked every one `"dev": false`. The remaining high was self-inflicted, since this repository's own `overrides` pinned `ip-address` at exactly `10.2.0`, which sat inside an advisory range that had moved past it while the pin held. Dropping that pin and updating four packages within their already-declared semver ranges takes `npm audit` to zero, and the lockfile diff adds and removes nothing: `ip-address` 10.2.0 to 10.5.0, `fast-uri` 3.1.2 to 3.1.6, `hono` 4.12.25 to 4.13.5, `@hono/node-server` 1.19.14 to 1.19.17. Nothing had ever run `npm audit`: CI installs with `--no-audit`, and `scripts/check-release.mjs` audited package contents without asking whether those contents were vulnerable. It now runs `npm audit --omit=dev`, fails the release on a high or critical in a shipped dependency, and prints moderate and low without blocking. There is no environment-variable escape, so shipping a known high takes a reviewable edit.
27
+ - `/council --synthesis vote` asks its members for the verdict it tallies, and produces a real tally (#230). The vote is a strict majority over the final round's structured `verdict` fields, and nothing ever asked a member for one. A council that names no agent seats the builtin `researcher`, whose `research-report` contract accepts `source` and `findings` and nothing else, so a member that emitted a verdict failed its own postcondition and a member that obeyed it emitted no verdict. Every unnamed council's vote resolved to `no_verdict_field` with an empty tally, on every input; the 0.3.7 release test observed exactly this and read it as the specified deterministic behaviour. A vote council now carries a bounded ballot directive on each member's task and seals a new `council-ballot` postcondition, `{"verdict":"...","text":"..."}`, as a per-request override in place of the seated recipe's contract, the same way `reviewer`, the compete `judge`, and the council synthesis already answer the gate that dispatched them rather than their recipe. The seat, the persona, the `shadow` audience, the read-only autonomy, and the `council-read-only` tool profile are all unchanged, and no agent recipe may declare the kind, so a council still runs the agent the operator seated and any recipe can now be voted with. The verdict is bounded to a single line of 64 bytes and lower-cased at the one place a verdict is read, because a tally groups by the exact string and a verdict that is a sentence can only ever tie with itself. A member that seals no conforming ballot spends its ordinary repair rounds and then fails its own run, so a missing verdict is reported as a failed member instead of vanishing from the count. Plan admission composes the same task suffix as the runner, so the approval artifact the plan hash binds shows the ask the member receives. Two things on the override path had to be corrected for it to work at all. A `resultContractOverride` now reaches the worker whether or not the seated recipe declares a contract of its own, matching the resolution the seal has always used; previously the override was sealed but never sent, so the worker spent no repair round on a shape it was never told about. And the worker re-parses its own `WorkerSpec.resultContract` before its first model call through what was the agent-recipe frontmatter parser, which refuses any kind a recipe may not declare, so the first live vote council died with `[worker] fatal: agent recipe: WorkerSpec.resultContract: resultContract.kind is unsupported`; the wire parser is now its own entry point that admits the recipe kinds plus the ones the coordinator authors, and the frontmatter parser stays exactly as strict as it was.
28
+ - A fleet's `assignments.json` row reports the fleet's own verdict instead of whichever step settled last (#225). Every step of a fleet dispatches under the same `lineage.rootRunId`, so all of them share one durable assignment row, and `settleStoredAssignment` had no once-only guard where the in-memory registry has one. Each agent step overwrote the status in turn, so a run that aborted at step 2 of 7 and a run whose final code step exited 1 were both recorded `succeeded`. The receipt was not lying: a write-boundary verdict is applied by the scheduler after the receipt seals, so the assignment path never saw it. A fleet run now claims its row at open, files every settled step as an attempt including code steps, and settles the row once from its own whole-run verdict on both the normal and the throwing path; an attempt-path settle against a claimed row records its attempt and cannot write the status. Orphan reconciliation no longer resolves a claimed record to `succeeded` on the strength of one green attempt, which would have turned a crashed fleet into a successful one on the next startup.
29
+ - The test harness refuses a `.git` at the system temp root and names whoever tried to make one (#205). A stray empty `/tmp/.git` makes `isInsideGitRepo` report every `mkdtemp` scratch as sitting inside a git repository, which drops `--no-require-git` and fails the ignore-policy contracts from whichever lane happens to run them. The creating test was not identified across 28 full suite runs, live `node:fs` and `node:child_process` instrumentation, and a static sweep, so the guard is the fix instead: an in-process write to `<systemTmp>/.git` or `<runRoot>/.git` throws before the entry exists with the test file and line in the stack, a synchronous spawn that creates one throws with its argv and cwd, an asynchronous one is reported at process exit, and `scripts/shard-tests.mjs` backstops the whole run for a creator outside every lane. The guard never deletes, because a `.git` under the system temp root can belong to somebody else. The run root is guarded alongside the system temp root because the same parent walk passes through it.
30
+ - `/council --synthesis judge` runs, seals, and shares as a council (#221). Three defects sat on the default path. Admission refused the whole council before its first member ran, because the persona-override guard counted any non-empty system prompt and the judge carries the coordinator's own `COUNCIL_JUDGE_PROMPT`, while every unnamed council seats the builtin `researcher`, a `shadow` recipe; the ACP delegation path already exempted a bounded gate-role prompt and the two ordinary paths had drifted from it, so all three now share one predicate that stays pinned to one exact prompt text under one gate role and read-only autonomy. The synthesis slot then kept the seated recipe's result contract, so a correct judge answer of `{verdict, text}` sealed a contract failure against `research-report` and burned the configured retries reproducing it; `synthesis` now joins `reviewer` and `judge` as a gate role that answers the coordinator rather than its recipe. And the whole-council-report seal was guarded to vote and none, so `/share <judge synthesis runId>` rendered the bare judge payload with no member answers or roster labels, the exact state the 0.3.7 release test called unusable; judge now seals on the same terms, and the shared block carries every final member's labelled answer plus `[synthesis judge] verdict … · judge run …`.
31
+ - The write boundary no longer rolls back a file the step never wrote, and no longer certifies a window it could not observe (#219). Enforcement derived violations from the working-tree diff over a step's window alone, so a file an operator edited in their own editor while a fleet ran was attributed to the step and restored from the baseline commit. A change is now blamed on a window only when it intersects what that window's runs recorded writing, drawn from the same tool-call fold that grounds a sealed mutation report; anything else is reported as an unattributed concurrent change and left exactly as it is. The record is treated as closed only when it can be: a run that made a successful call to a tool whose arguments cannot name what it writes (`bash`, `verify`, `dispatch`, `steer`, or any unregistered or MCP name, derived from the action classifier rather than a hand-written list) files no usable record, and its window keeps the previous behavior of blaming the whole diff. A blocked or failed call leaves the record closed, because it never reached the filesystem. The verdict gains `unattributed` and `attributionComplete` so it says which of the two it did. Separately, a declared write path that git ignores is now refused at `fleet validate`, at `fleet run` preflight, in the `/fleet run` preview, and when a delegation plan splices a step in, naming the path and the ignoring rule: `git status` cannot report an ignored path, so such a boundary could only ever certify an unobserved window as clean. The existing refusal to touch a path that was already dirty when the window opened is unchanged.
32
+ - `configure` refuses a model the target does not advertise, and health distinguishes reachable from serving (#220). The command already fetched the server's model list to populate `wireModels`, but validated `--model` against the static provider catalog, which is empty for `lmstudio` and every runtime like it, so `src/cli/validate-model.ts` passed any string and the target saved as `ok`. It now checks the live list where there is one, refuses an unadvertised id while naming the ids the server does list, and takes `--force` to save one anyway. A runtime with neither a catalog nor a live list warns that the id could not be verified rather than implying it was. A loaded LM Studio model is accepted under either its instance id or its model key, since the request path resolves both. `targets --probe` gains a `degraded` health state for a target that answers but cannot serve its own `defaultModel`, judged only from a live list on a runtime with no static catalog so a cloud target can never be misread, and the row prints the reason beside the model. `doctor` reports a configured `defaultModel`, `orchestrator.model`, or `workers.default.model` that the target does not advertise. ACP treats `degraded` as reachable, because a client naming its own model can still use the target. The `README.md` quickstart and the two docs copies stop instructing readers to pass `your-model-id`, which produced a target that saved cleanly and failed on its first turn.
33
+ - A version 5 `kind: gate` step that also declares `writes` is refused by name (#217). The gate derives its whole write boundary from `path`, and the refusal now reads `gate step '<id>' must not declare 'writes'; its write boundary is derived from 'path'` instead of `/steps/0: must have required properties scope`, which named a property the author never touched. The check runs before schema validation, alongside the existing version-gate assertions, so `fleet validate`, `fleet run`, and the `/fleet run` approval preview all print it.
34
+ - Settings Center number editors report a refused value instead of dropping it (#218). Every number row now resolves its bound from one shared rule table (`budget.sessionCeilingUsd`, `watchdog.cadenceToolCalls`, and the three `delegation.defaults.*Ms` rows), and the editor and the apply path read the same rule, so a value the editor forwards is never dropped later. A refused submission keeps the editor open and prints the reason under the input in the words the config validator would use for the same key (`Not applied: expected an integer >= 1, got 0.`); Esc still leaves without applying, and a corrected value clears the reason and continues to the scope prompt. Three previously silent drops on that path become named refusals: a blank on the three timeout rows used to parse as zero and be discarded, a blank on `budget.sessionCeilingUsd` used to set the ceiling to zero, and a fractional `watchdog.cadenceToolCalls` used to be floored. A contract test pins the row set, so a sixth number row added without a rule fails it.
35
+
36
+ ## 0.3.7 - 2026-08-24
37
+
38
+ ### Added
39
+ - Typed dispatch intent and host-run verification (#155). The singular request and every `tasks[]` item accept one `intent` object (`read_roots`, `write_roots`, `relevant_paths`, `expected_outputs`, `verification: [{check, timeout_ms?}]`); `gate: "<check>"` is the one shorthand for a single verification entry. Paths are normalized to sorted, duplicate-free repository-relative POSIX paths with entry and byte caps, and absolute, escaping, or malformed entries fail before approval. A `check` is a declared id resolved through the verify tool's `DeclaredCheck` projection (package scripts and `.clio-coder/verifiers.yaml`) at admission, so model text never becomes argv; the resolved argv, cwd, and timeout are frozen into the execution snapshot and the plan hash, and the approval artifact renders them. After a successful worker attempt the orchestrator runs each check through the code-step runner with no shell and the closed environment allowlist, memoizes successful evidence on the workspace fingerprint plus argv, cwd, and allowlisted environment values, and seals `hostVerification` (`verified`, `rejected`, or `skipped` with per-check argv, exit code, duration, bounded output tail, memo provenance, and artifact path) into the receipt. A rejected check turns the run into `host_verification_rejected`, which suppresses automatic retry. Review and compete accept the intent paths but refuse verification entries, as does the Claude Code subprocess runtime, each with a named reason. The receipt seals `intent` on the native worker path and the Claude Code and ACP delegation paths alike. Receipt integrity moves to v16 and covers `intent` and `hostVerification`; the existing `verification` evidence object keeps its name. Dispatch output, `monitor`, and the Fleet Runs card render `host_verification=<status>` beside `evidence_verification`.
40
+ - `/btw <question>` asks one side question beside the session (refs #41). The round sends the compiled message history as read-only input under a short fixed instruction with no tools, streams the answer into an overlay, and appends nothing to the session JSONL, the transcript, the context ledger, or the task board, so a fleet run's workers are never briefed from it. Esc cancels a streaming round; a `/btw` during an in-flight turn is refused rather than queued. The round's usage is counted in `/cost` under a `side questions` row and is excluded from the turn count.
41
+ - Opt-in desktop notifications (#204). `terminal.notify: true` emits one content-free terminal notification when a turn ends, when a detached batch settles, and when a worker permission or `ask_user` request parks. The title is fixed, the body comes from a closed vocabulary, control characters are stripped, and the body is bounded to 128 bytes. OSC 777 is the default and OSC 9 is used on iTerm2, Windows Terminal, and ConEmu, never both for one event. Headless, ACP, and non-TTY runs never emit one.
42
+ - Single-writer token, checkout writer lease, and worktree-per-task (#207). `writers: 1` on a parallel dispatch or an ExecutionPlan admits at most one write-scope step at a time in declared order while read-scope steps stay concurrent; the agent ledger's claims remain advisory. The first checkout writer takes a lease under the state dir keyed by the canonical checkout path and carrying pid, process birth token, and acquisition time; a live sibling process is refused with `checkout_writer_lease_held` naming the holder pid, and a dead owner is reclaimed. `worktree: true` with `apply: "merge"` (default) or `"preserve"` runs a writer task on `clio/task/<runId>` under `.clio-coder/worktrees/<runId>/`, maps the worker cwd, write roots, and protected artifacts into it, and runs declared host verification there before merging; a conflict fails closed as `worktree_merge_conflict` and preserves the branch, and a protected-path change fails closed. The receipt gains `worktree: {path, branch, diffHash, apply, applied, reason?}`, receipt integrity moves to v17, and the approval artifact renders worktree, apply, and the frozen merge destination. Non-git checkouts, read-only agents, compete mode, and a cwd outside the checkout are refused with named reasons.
43
+ - Fleet authoring CLI (#209). `clio-coder fleet new <name> --from <builtin>` copies `build-review`, `build-test`, or `sdlc` into `.clio-coder/fleets/` and refuses an existing destination, an unsafe stem, or an unknown builtin. `fleet validate <name> [--json]` runs the same preflight `fleet run` performs (parse, graph, command bindings, agent resolution, plan compile, write-boundary preflight) with no state-dir write, ledger row, reservation, or worker. `fleet graph <name> [--json]` prints the compiled waves with each step's kind, agent or command, scope, dependencies, and write boundary, and expands loop check and repair nodes. `fleet commands init` discovers package scripts, justfile recipes, Makefile targets, and pyproject script and tool entries through the verifier discovery and writes a fully commented `commands.yaml` draft; uncommenting confirms an entry and an existing registry is never replaced. `fleet run <name> --resume <runId>` replays the successful, integrity-valid prefix recorded in a durable fleet-run record under the state dir, reports replayed steps with their original receipt references, refuses a changed plan hash with a per-step diff, and refuses differing `--var` values. The existing `fleet resume` admission-control subcommand is unchanged.
44
+ - `/fleet run <name> [--var k=v ...]` previews a fleet contract before anything dispatches (#208). The route preflight sends each step's compiled task, so a contract that validates from the CLI previews from the TUI, and a `--var` value may be quoted to carry spaces (`--var task="add a pow function"`). The approval overlay lists the steps by wave with kind, agent and resolved target (or command id and the exact argv from `commands.yaml`), scope, and declared write boundary, then the budget ceiling the run is admitted under; a contract that fails preflight opens the same overlay with its diagnostics and no accept key. Enter dispatches through one shared fleet-run path in the dispatch domain (`executeFleetRun`) so admission, autonomy, receipts, gate decisions, write-boundary enforcement, and the durable ledger are identical to `clio-coder fleet run`; Esc dispatches nothing and writes nothing. `clio-coder fleet run` runs through that same path and both surfaces write the durable fleet-run record, so a run started from the TUI can be resumed with `fleet run --resume`. The Fleet Runs board gains a phase column (`w<n> <stepId>`) on rows a fleet plan dispatched, empty on every other row; the compact island keeps its fixed width and shows the column only when the agent label still fits. `/fleet` alone still opens Settings → Fleet, and `/fleet run` during an in-flight turn is refused rather than queued.
45
+ - `/handoff <goal>` carries a session's working state into a fresh session (#206). The goal is required and gated: under 12 characters, or a non-goal such as "continue" or "resume", is refused with the rule named. One out-of-turn model round with no tools extracts decisions, facts, files, commands, and open questions as JSON against a fixed schema; every list and string is bounded, and over-bound output is truncated with a visible marker rather than refused. Every file path is checked against the session's own read ledger (folded through the active `/tree` path) and never against the filesystem, so a path the session never touched is dropped and listed under `dropped (not in this session's read ledger)`. Extracted decisions merge with the settled decision board, which wins. The document opens for review with `e` for `$EDITOR`; Esc cancels with nothing written. On accept Clio mints a session, seeds it with the reviewed document as data labelled by its origin session, replays the old session's skill activations, and leaves the old session untouched apart from one terminal note naming the target. A handoff never writes a memory promotion candidate and never calls the task-memory bank. Its usage is counted in `/cost` under a `handoffs` row and excluded from the turn count.
46
+ - `/oracle <question>` and the `oracle` shadow advisor (#210). The recipe is read-only, unreachable from `/run`, and never receives a forked transcript: `/oracle` packs a bounded digest as dispatch briefing data (settled decisions from the decision board, open tasks from the task board, the last compaction summary when one exists, and the question), capped at 12 KiB with per-section caps and a truncation marker and filtered to the active `/tree` branch. The run is a singular read-only internal dispatch through the ordinary path, so admission, receipts, and the Fleet Runs island apply; its `oracle-report` contract carries a verdict, the strongest challenge, what would change its mind, and the decisions it cited, and the rendered answer reaches the main agent as an operator note the way `/share` does. `/oracle` during an in-flight turn is refused rather than queued.
47
+ - Opt-in turn-end watchdog (#210). `watchdog: {enabled: false, target?, cadenceToolCalls?}` is hot reloaded. With `enabled: true`, a turn that changed the tree is reviewed by one read-only `verifier` dispatch briefed with the turn's coalesced diff (per-path last-write-wins, bounded to 12 KiB) and the task board's current scope; its failed checks become one transcript notice naming the count and the first three, a passing report emits nothing, and a turn with no file mutations never fires. `watchdog.target` routes the run at a cheap local model; `cadenceToolCalls: N` also fires it every N tool calls inside a turn. At most one watchdog run is in flight at a time and an overlapping trigger is dropped and counted. It never auto-follows, never queues a turn, and never mutates. Headless and ACP runs never fire it.
48
+ - Durable out-of-turn usage and Settings Center rows for notifications and the watchdog (#211, refs #41, #204, #206, #210). A `/btw` side question or a `/handoff` extraction round appends nothing to the session JSONL by contract, so the spend now goes to its own store at `<stateDir>/usage/out-of-turn.jsonl`: one JSON line per priced call carrying the label, session id, the repo identity the session ledger is filed under, timestamp, target, attributed model id, and provider usage, written with one append per row and kept as a bounded ring of 1000 rows rewritten atomically under the state-file lock. `clio-coder usage report` folds that store beside the session ledgers into the window's tokens, cost, and per-model totals, and prints `turns`, `side questions`, and `handoffs` counts on both the text and `--json` surfaces, subtracting labelled calls from the turn count exactly as `/cost` does; an archive with no labelled call renders byte-identical to before. `terminal.notify` gains a boolean row under EXPERIENCE › Terminal, and `watchdog.enabled`, `watchdog.target`, and `watchdog.cadenceToolCalls` gain rows under a new EXPERIENCE › Watchdog section. The two optional keys render their absence as `(session target)` and `(turn end only)` while their editors open on the stored value or empty, never on that prose; submitting an empty value removes the key from `settings.yaml` rather than storing a blank, and a cadence below one is refused with the bound named, matching the config validator. Settings Center wording is pinned word for word to the settings template where it overlaps.
49
+ - `mode: "council"`, the read-only sibling of compete (#212). Two to five members run the same singular task concurrently on local and HTTP targets with no mutation. Members come from a configured `workers.rosters.<name>.members[]` roster (`{label, target, model?, thinking?, color?}`, validated at config load for two to five members, unique labels matching `[a-z][a-z0-9_-]{0,31}`, theme color tokens or six-digit hex, no unknown keys, hot reloaded) or from inline `members`; exactly one of `roster` or `members` is accepted. `synthesis: none | judge | vote` (default `none`), `rounds: 1..3` (default `1`), and `judge` only with judge synthesis. Refusals are typed: `council_roster_unknown`, `council_members_out_of_range`, `council_member_label_duplicate`, `council_member_target_unknown`, `council_member_remote_node` (a route that resolves to an SSH fleet node is refused before approval), `council_synthesis_requires_judge_settings`, and `council_verification_unsupported`. A council request that names no `agent` seats the builtin `researcher` rather than the dispatch default `coder`, whose write requirement the council profile cannot satisfy. Admission pins every member and the judge to `read-only` autonomy and an internal `council-read-only` tool profile holding exactly `read`, `grep`, `find`, `ls`, `code_nav`, and `context`, enforced through ordinary worker admission rather than prompt text. The resolved plan expands every member in every round plus the judge, so the approval artifact lists each member's label, target, model, thinking, node, color, round, and synthesis, and the plan hash binds all of it. Round one gives every member the same task and briefing; each later round gives a member the other members' prior answers as labelled untrusted briefing data (never its own), bounded to 8 KiB with a truncation marker, with a failed peer marked rather than quoted. `vote` computes a deterministic strict majority over the final round's structured `verdict` fields with no model call and reports `no_verdict_field` or `no_majority` when it cannot; `judge` runs one read-only judge under a fixed prompt with every final answer as labelled briefing. The dispatch result carries one section per member and one synthesis section, `details.council` holds the typed `council-report` (`{members: [{label, runId, round, answer, verdict?, failed?}], synthesis: {kind, text?, verdict?, tally?, judgeRunId?}}`), and the result is an error only when a final-round member or the judge failed. Every member run seals its own receipt; `none` and `vote` seal one coordinator-only zero-token synthesis receipt that carries no member provenance and publish its enqueued and completed lifecycle events so the Fleet Runs board and `/share` see it, and the judge receipt is the synthesis receipt in judge mode, each pointing backward at every final member run through gate provenance. `monitor` reports the council role and group, the Fleet Runs board projection carries `council: {group, label, color?, round}` for a later grid, and receipt integrity moves to v18 with the `council` field. The grid and `/council` are a separate change.
50
+ - Council rendering and `/council` (#213). The `Alt+W` Fleet Runs board folds a council group into one card in the position of its first row: a side-by-side grid with one column per member while every column keeps at least 34 cells, otherwise the whole group stacks, because a grid where only some columns are readable is worse than none. Each column shows the member label in its roster color (a theme token paints as that token, `#rrggbb` paints literally through the xterm cube without truecolor, anything else takes the accent), the target and model, the round and status, and up to four rows of the run's bounded answer tail; a council that ran several rounds keeps one column per member at its newest round, and the synthesis run renders full width under the members. The compact island shows one card per council naming the group, member count, and round. `/council [--roster <name>] [--rounds <n>] [--synthesis judge|vote|none] <task>` owns no dispatch path of its own: it builds dispatch-tool arguments spelled exactly as the tool declares them and admits them through the tool registry, so supervised autonomy parks the same approval overlay a model-asked council would. `--roster` falls back to `workers.rosters.default`; with neither the command refuses and names the setting rather than guessing from the only roster present. Rounds and synthesis bounds are enforced where the operator typed them, and a `/council` during an in-flight turn is refused rather than queued. `/share <synthesis runId>` brings every final-round member's labelled answer and the synthesis line (mode, verdict, tally, judge run) into the main context as one bounded prose block, never the raw payload; `/share <member runId>` labels that member's answer with its roster label; a synthesis whose sealed text does not parse is shared verbatim.
51
+ - Fleet contract v5: `kind: plan`, `kind: gate`, per-step target or profile, and top-level `writers` (#214). Version literal `5` joins the contract; readers of 1 to 4 refuse `plan`, `gate`, `target`, `profile`, and `writers` by name, exactly as they refuse `writes` below 4, and ExecutionPlan versioning is unchanged. An agent step, a loop check agent, or a loop repair agent may declare `target: <targetId>` or `profile: <workers.profiles key>` (never both); resolution shares the `/run --target` and `/run --agent-profile` request fields, and an unknown id refuses at preflight naming it, in `fleet validate`, `fleet run`, and the `/fleet run` preview, which now reports a route the process cannot resolve as a named diagnostic instead of rendering `route unresolved`. A `kind: gate` step names a validator agent, one repository-relative `path` that becomes its whole derived write boundary (a separate `writes` is refused), and a `run` command whose argv carries the gate path as the single whole-token `{{path}}` substitution; after the author settles, the coordinator runs the command with no shell against the untouched tree and requires red, a green baseline fails the step as `gate_not_discriminating`, the receipt seals `fleetGate: {path, pathHash}`, and a loop may use `check: {kind: gate, gate: <id>}`, in which case only verbatim `FAIL` lines from the check reach the repair agent. A `kind: plan` step (agent defaults to the builtin `architect`) declares `roster`, `maxTasks: 1..16`, optional `proposals: true`, its own scope and `writes`, and an optional route default; the architect returns a `delegation-plan` result contract (`{tasks: [{id, agent, description, depends_on, writes, mode?}]}`) that a pure validator checks for roster membership, task count, unique ids, resolvable acyclic dependencies, and writes inside the plan step's boundary, each failure a named `delegation_plan_*` reason that fails the step and splices nothing. `delegation-plan` is an admitted worker result contract, so the architect step reaches the model. On success the coordinator records the deterministic plan hash on the durable fleet run record and the scheduler splices the tasks into the live plan after the wave settles: every spliced task passes the same preflight, reservation, admission group, writer-token grouping, post-step write-boundary enforcement, and durable settlement record as a static step, depends on the plan step plus its declared dependencies, inherits the plan step's target or profile, and seals lineage to the plan step's run. `proposals: true` first runs every roster member read-only with the same task and hands the architect their `PROPOSAL <agent>` sections as briefing bounded to 12,000 bytes. `fleet graph` names a gate or plan step by its contract kind with the gate path and run command or the roster and `maxTasks`, and a step whose receipt succeeded but whose gate baseline or delegation plan failed settles as failed with `reason=<name>` in `fleet run` output and the `/fleet run` notice. The approval artifact renders target or profile, gate path, run command, and baseline command, and plan roster, maxTasks, and proposals; `fleet run --resume` replays the static prefix up to the first plan step and reruns it rather than reconstructing prior dynamic tasks. Receipt integrity moves to v19 with the `fleetGate` field.
52
+ - Resource library (#215). The marketplace index machinery that carries skills now carries agent recipes, prompt templates, and fleet contracts. Every index entry accepts `kind: skill | agent | prompt | fleet` (default `skill`, so every existing index parses unchanged) and optional typed `requires: [skill:x, agent:y, prompt:p, fleet:z]`, resolved recursively across the selected catalog and the private catalog; a missing, malformed, or cyclic requirement refuses the entry with `library_requirement_missing`, `library_requirement_malformed`, or `library_requirement_cycle` naming the chain. `clio-coder library list|search [--kind k] [--json]`, `library add <ref> [--from <catalog|path>] [--with-requirements] [--yes]`, `library use <kind> <name>`, `library sync`, `library push`, and `library remote confirm <url>` land as one literal dynamic import. `add` resolves requirements against the pin store and the destination path, lists satisfied ones separately, refuses on unsatisfied ones unless `--with-requirements` installs them first in dependency order, prints every destination and SHA-256 before writing, and writes nothing without `--yes`. An agent installs to `<configDir>/agents/<name>.md` after the recipe schema and policy checks, a prompt to `<configDir>/prompts/<name>.md` after the prompt loader, a fleet to a new user fleet root `<configDir>/fleets/<name>.md` after `parseFleetContract` (precedence is builtin, then user, then project), and a skill through the existing installer; every install is pinned by typed ref and hash in `<configDir>/library-pins.yaml` through the safe resource write. A private catalog at `library.catalog` (default `<configDir>/library.yaml`) overlays same-ref marketplace entries and resolves relative sources beside itself. Git-backed sync is opt-in: `library.sync: false` (the default) refuses `sync` and `push` with `library_sync_disabled` before any process spawns; with it on, the repository's remote must be named `library` and match a confirmed URL (`library remote confirm`, which refuses `library_remote_mismatch` when it differs from `library.remote`), `sync` runs `git fetch library` then `git merge --ff-only FETCH_HEAD`, and `push` runs `git push library`, each an argv vector with no shell. Share archives gain `agent` and `fleet` entry types (`share export --agents --fleets`, included in `--all`), imported into the user roots after the same validation. The Skills Hub keeps rendering skills only; its kind tabs are a separate change.
53
+ - Skills Hub kind tabs and `/library` (#216). The hub carries one tab per resource library kind (Skills, Agents, Prompts, Fleets), switched with `←`/`→`, the key vocabulary the Settings Center already uses to move between sections; the frame title names the active tab and the footer states its row count. The Skills tab is unchanged. The other three list their kind from the same `discoverLibrary()` the CLI's `library list --kind` reads, with origin, version, installed or available, the short pin hash, and the names of any unresolved requirements in the warning token; a catalog entry the library refuses appears as a diagnostic row rather than being omitted. `i` installs through the same classify, plan, and write sequence `library add` runs, behind a framed confirmation that states every destination and SHA-256 and writes nothing on Esc; an entry with unresolved requirements is refused by name on the first `i`, and a second `i` opens the install-with-requirements confirmation naming every entry it would write in dependency order. `Enter` on an installed row inserts `/run <agent> ` for an agent, the `/<id> ` invocation for a prompt, `/skill <name> ` for a skill, and for a fleet closes the hub and opens the `/fleet run` approval preview; a row that is not installed says so and points at `i`. `/library [kind]` opens the hub on that tab and `/library` alone on Skills, where `/skill` still opens. Tab support lives in the shared list overlay, so untabbed overlays are unchanged.
54
+ ### Changed
55
+ - `clio-coder fleet run` now executes through the same `executeFleetRun` path as `/fleet run`, so admission, autonomy, receipts, gate decisions, write-boundary enforcement, and the durable fleet-run record under `<stateDir>/fleet-runs/<runId>.json` are identical from both surfaces, and a run started from either can be resumed with `fleet run --resume` (#208, #209). The `fleet resume` admission-control subcommand is unchanged.
56
+ - Fleet contracts resolve from three roots with fixed precedence: builtin, then the new user root `<configDir>/fleets/`, then the project's `.clio-coder/fleets/` (#215). A project contract still shadows a user one of the same name.
57
+ - `share export --all` now includes agent recipes and fleet contracts beside the existing entry types, and `share import` validates them through the recipe schema and `parseFleetContract` before writing (#215). Archives without those entry types import unchanged.
58
+ - The `/fleet run` approval preview reports a step route the process cannot resolve as a named preflight diagnostic instead of rendering `route unresolved` (#214).
59
+ - `clio-coder usage report` prints `turns`, `side questions`, and `handoffs` counts on the text and `--json` surfaces (#211). An archive with no labelled out-of-turn call reports zero side questions and handoffs and the same tokens, cost, and per-model totals as before.
60
+ - Receipt integrity moves from v15 to v19 across this release: v16 adds `intent` and `hostVerification` (#155), v17 adds `worktree` (#207), v18 adds `council` (#212), and v19 adds `fleetGate` (#214). Receipts sealed by 0.3.6 fail verification under 0.3.7 and are never read as evidence; they are not migrated.
61
+ - `clio-coder --help` lists `library` beside `skills`.
62
+ - The `/fleet run` approval, `/handoff` review, and Skills Hub install confirmation overlays match Enter, Esc, and the arrows by key name rather than raw bytes, so they answer under the kitty keyboard protocol, where Esc arrives as `CSI 27 u`, and ignore key-release events.
63
+
5
64
  ## 0.3.6 - 2026-08-23
6
65
 
7
66
  0.3.5 was published by mistake and withdrawn; its content ships here.
package/README.md CHANGED
@@ -127,7 +127,7 @@ Scripting the same setup the wizard performs:
127
127
 
128
128
  ```bash
129
129
  clio-coder configure --id local-lmstudio --runtime lmstudio \
130
- --url http://localhost:1234 --model your-model-id \
130
+ --url http://localhost:1234 --model qwen3.8-27b \
131
131
  --set-orchestrator --set-fleet-default
132
132
  clio-coder targets --probe
133
133
 
@@ -135,6 +135,11 @@ clio-coder auth login anthropic-max # or: openai-codex
135
135
  clio-coder configure --id claude-sub --runtime anthropic-max --model claude-sonnet-5 --set-orchestrator
136
136
  ```
137
137
 
138
+ `--model` must name an id the server advertises; `configure` asks the server
139
+ and refuses one it does not list, naming the ids it does. `qwen3.8-27b` is the
140
+ id LM Studio gives the recommended model above; substitute whatever `lms ls`
141
+ shows for yours.
142
+
138
143
  > [!NOTE]
139
144
  > Connecting a Claude Pro/Max subscription over OAuth uses the same path as
140
145
  > Claude Code. Using subscription credentials outside a vendor's first-party
@@ -160,6 +165,11 @@ numbered diffs, and `!` runs a shell command in the same transcript.
160
165
  | Branch, revisit, or pick up a session | `/tree`, `/fork`, `/resume`, `/new` |
161
166
  | Delegate to a fleet agent and watch it work | `/run coder "..."`, `/tasks`, `Alt+W` |
162
167
  | Load a skill or bootstrap project context | `/skill <name>`, `/context init` |
168
+ | Ask a side question without touching the session, or get a read-only second opinion | `/btw <question>`, `/oracle <question>` |
169
+ | Put the same question to several models at once and read one synthesis | `/council --synthesis vote "..."` |
170
+ | Preview and run a multi-step fleet contract, resumable from the CLI | `/fleet run <name>` |
171
+ | Install agents, prompts, fleets, and skills from a catalog | `/library`, `/library agents` |
172
+ | Carry the working state into a fresh session | `/handoff <goal>` |
163
173
  | Save a self-contained HTML transcript | `/export` (an explicit `.md` path keeps Markdown) |
164
174
  | Everything else | `/help` |
165
175
 
@@ -215,9 +225,15 @@ fleet:
215
225
  maxWorkers: 1
216
226
  ```
217
227
 
218
- `clio-coder doctor` preflights every node, `clio-coder fleet list|run|status`
219
- drives and observes work, and `clio-coder fleet drain|resume` closes or reopens
220
- admission without interrupting running work. Nodes share the project
228
+ `clio-coder doctor` preflights every node. `clio-coder fleet list` names the
229
+ builtin and discovered contracts, `clio-coder fleet new|validate|graph`
230
+ authors a fleet contract from a builtin and checks it without dispatching
231
+ anything, `clio-coder fleet run|status` drives and observes work (`fleet run
232
+ --resume <runId>` replays a settled prefix), and `clio-coder fleet
233
+ drain|resume` closes or reopens admission without interrupting running work.
234
+ Contracts may declare a single writer, a gate step that must go red before the
235
+ author is trusted, and a plan step whose architect delegates bounded tasks to
236
+ a roster at run time. Nodes share the project
221
237
  filesystem at the same absolute path, and a target URL resolves on the node the
222
238
  worker runs on, so `localhost` means that node's own inference server. The
223
239
  end-to-end walkthrough, including a recorded multi-node demo, is in
@@ -263,7 +279,7 @@ dist-tag instead.
263
279
  From source, pinned to this release:
264
280
 
265
281
  ```bash
266
- git clone --branch v0.3.6 https://github.com/iowarp/clio-coder.git
282
+ git clone --branch v0.3.8 https://github.com/iowarp/clio-coder.git
267
283
  cd clio-coder
268
284
  npm run install:local
269
285
  export PATH="$HOME/.local/bin:$PATH"
@@ -289,7 +305,7 @@ Full lifecycle details, including `reset` and the upgrade path, are in
289
305
 
290
306
  ## Status
291
307
 
292
- The current release is **v0.3.6**, installable from npm as
308
+ The current release is **v0.3.7**, installable from npm as
293
309
  [`@iowarp/clio-coder`](https://www.npmjs.com/package/@iowarp/clio-coder) or
294
310
  from source. Clio Coder is still experimental: we ship quickly, interfaces may
295
311
  change between minor versions, and model-specific behavior varies by target, so
@@ -6,31 +6,31 @@ import {
6
6
  } from "./chunk-2VTFPG5O.js";
7
7
  import {
8
8
  runClioCommand
9
- } from "./chunk-XYDYPRZI.js";
10
- import "./chunk-E25LMLRW.js";
9
+ } from "./chunk-VWZOAB7K.js";
10
+ import "./chunk-26LEYJZH.js";
11
11
  import "./chunk-HKIYEGME.js";
12
- import "./chunk-KOHPCX4K.js";
13
- import "./chunk-24I7BN55.js";
12
+ import "./chunk-IFBNV6H6.js";
13
+ import "./chunk-XWSF374K.js";
14
14
  import {
15
15
  printError
16
- } from "./chunk-PPAMZ32Z.js";
16
+ } from "./chunk-XK56QHLX.js";
17
17
  import "./chunk-5TSRNF4G.js";
18
- import "./chunk-AD2SYQYC.js";
19
- import "./chunk-4OC57DA6.js";
20
- import "./chunk-LL4KHSZI.js";
21
- import "./chunk-4VP4KH3K.js";
18
+ import "./chunk-IJ7RPIYJ.js";
22
19
  import {
23
20
  MAX_TIMER_DELAY_MS
24
21
  } from "./chunk-FQ4SKYE4.js";
22
+ import "./chunk-IWHMRKLL.js";
23
+ import "./chunk-4DGYLA73.js";
24
+ import "./chunk-LL4KHSZI.js";
25
+ import "./chunk-4ZG3XFUR.js";
26
+ import "./chunk-EQ63NRB7.js";
27
+ import "./chunk-SST6Z5JA.js";
25
28
  import "./chunk-IKCO5N3L.js";
26
29
  import "./chunk-3I7MS7N2.js";
27
- import "./chunk-SST6Z5JA.js";
28
- import "./chunk-4ZG3XFUR.js";
29
30
  import "./chunk-APJ265NV.js";
30
- import "./chunk-YXLYO42X.js";
31
31
  import "./chunk-BNAZZHFG.js";
32
32
  import "./chunk-WEPFGWHJ.js";
33
- import "./chunk-IWHMRKLL.js";
33
+ import "./chunk-YXLYO42X.js";
34
34
  import {
35
35
  init_esm_shims
36
36
  } from "./chunk-3R73A4XB.js";
@@ -126,4 +126,4 @@ export {
126
126
  resolveAcpCwd,
127
127
  runAcpCommand
128
128
  };
129
- //# sourceMappingURL=acp-2BEHC4DL.js.map
129
+ //# sourceMappingURL=acp-U67UHUK2.js.map
@@ -1,64 +1,71 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
- AgentsDomainModule,
4
3
  SafetyDomainModule
5
- } from "./chunk-LYF7OHWH.js";
6
- import "./chunk-6XXKFVSN.js";
4
+ } from "./chunk-EMYUUSFG.js";
5
+ import "./chunk-5Q2VVUKB.js";
7
6
  import {
8
7
  ensureClioState
9
- } from "./chunk-KHSFENX2.js";
8
+ } from "./chunk-WWCZ5F23.js";
10
9
  import {
11
10
  ConfigDomainModule,
12
11
  loadDomains
13
- } from "./chunk-R46L2BIR.js";
14
- import "./chunk-E25LMLRW.js";
15
- import "./chunk-QKMUKYO7.js";
16
- import "./chunk-4BPJXDWC.js";
17
- import "./chunk-2SFS6XQE.js";
18
- import "./chunk-ZWLZP4ZT.js";
19
- import "./chunk-IR4CFBFN.js";
12
+ } from "./chunk-FHJEP5SW.js";
13
+ import {
14
+ AgentsDomainModule
15
+ } from "./chunk-FBVTI2TJ.js";
16
+ import "./chunk-DR52UMZW.js";
17
+ import "./chunk-TANS5ZJS.js";
18
+ import "./chunk-DGSYXYMX.js";
19
+ import "./chunk-26LEYJZH.js";
20
+ import "./chunk-WXY7KU3G.js";
21
+ import "./chunk-RVG5JXAL.js";
22
+ import "./chunk-E77JEWSD.js";
23
+ import "./chunk-DYIM5TJT.js";
24
+ import "./chunk-VCBR6CU7.js";
20
25
  import "./chunk-UOV2BYIW.js";
21
- import "./chunk-EKY57CSP.js";
26
+ import "./chunk-5H3GB5BO.js";
27
+ import "./chunk-A2NJGIB3.js";
28
+ import "./chunk-HWUFFB6L.js";
29
+ import "./chunk-TTHACPOM.js";
22
30
  import {
23
31
  isUserVisibleAgent
24
32
  } from "./chunk-AOCYTWAV.js";
25
33
  import "./chunk-MV3K5QF2.js";
26
- import "./chunk-FYYLNIL5.js";
27
34
  import "./chunk-UL3WSD3F.js";
28
35
  import "./chunk-ECH6PKUQ.js";
29
- import "./chunk-HWUFFB6L.js";
30
36
  import "./chunk-5B2AEOW5.js";
31
37
  import "./chunk-CGKSTWHD.js";
32
38
  import "./chunk-XPLRXC72.js";
33
- import "./chunk-RD5U66HV.js";
34
- import "./chunk-KOHPCX4K.js";
35
- import "./chunk-24I7BN55.js";
39
+ import "./chunk-IFBNV6H6.js";
40
+ import "./chunk-GPIEI3LY.js";
41
+ import "./chunk-XWSF374K.js";
36
42
  import {
37
43
  printError
38
- } from "./chunk-PPAMZ32Z.js";
44
+ } from "./chunk-XK56QHLX.js";
39
45
  import "./chunk-5TSRNF4G.js";
40
- import "./chunk-AD2SYQYC.js";
41
- import "./chunk-4OC57DA6.js";
42
- import "./chunk-LL4KHSZI.js";
43
- import "./chunk-4VP4KH3K.js";
44
- import "./chunk-VEZEGCGW.js";
45
- import "./chunk-FQ4SKYE4.js";
46
- import "./chunk-IKCO5N3L.js";
47
- import "./chunk-3I7MS7N2.js";
46
+ import "./chunk-LU7P4LHA.js";
48
47
  import "./chunk-IHXBNWMM.js";
49
- import "./chunk-SST6Z5JA.js";
50
- import "./chunk-FO5ZOVUY.js";
48
+ import "./chunk-B5CSFE7B.js";
49
+ import "./chunk-IJ7RPIYJ.js";
50
+ import "./chunk-FQ4SKYE4.js";
51
+ import "./chunk-ZGVHUX3M.js";
52
+ import "./chunk-TT36MB5S.js";
53
+ import "./chunk-3BINW3FP.js";
51
54
  import "./chunk-R346GLFC.js";
55
+ import "./chunk-6EJMN2Y3.js";
56
+ import "./chunk-IWHMRKLL.js";
57
+ import "./chunk-4DGYLA73.js";
58
+ import "./chunk-LL4KHSZI.js";
52
59
  import "./chunk-4ZG3XFUR.js";
60
+ import "./chunk-EQ63NRB7.js";
61
+ import "./chunk-SST6Z5JA.js";
62
+ import "./chunk-IKCO5N3L.js";
63
+ import "./chunk-3I7MS7N2.js";
53
64
  import "./chunk-APJ265NV.js";
54
- import "./chunk-YXLYO42X.js";
55
65
  import "./chunk-BNAZZHFG.js";
56
- import "./chunk-6EJMN2Y3.js";
57
66
  import "./chunk-WEPFGWHJ.js";
58
- import "./chunk-XE2VEJHX.js";
59
- import "./chunk-ZGVHUX3M.js";
60
- import "./chunk-G7MUEIGA.js";
61
- import "./chunk-IWHMRKLL.js";
67
+ import "./chunk-NUGM5KR6.js";
68
+ import "./chunk-YXLYO42X.js";
62
69
  import {
63
70
  init_esm_shims
64
71
  } from "./chunk-3R73A4XB.js";
@@ -118,4 +125,4 @@ function renderLine(spec) {
118
125
  export {
119
126
  runAgentsCommand
120
127
  };
121
- //# sourceMappingURL=agents-LNNFTM53.js.map
128
+ //# sourceMappingURL=agents-YU6SGALZ.js.map