@cleocode/cleo 2026.10.3 → 2026.10.5-rc.ci.672

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 (352) hide show
  1. package/README.md +7 -0
  2. package/bin/cleo.js +11 -1
  3. package/dist/cli/adapter-OUQRSFZL.js +159 -0
  4. package/dist/cli/add-4SRRJL4U.js +443 -0
  5. package/dist/cli/add-batch-TSWICA5J.js +164 -0
  6. package/dist/cli/admin-L3F6CDYH.js +1428 -0
  7. package/dist/cli/admin-YMU55YCU.js +341 -0
  8. package/dist/cli/adr-XESRMFMP.js +172 -0
  9. package/dist/cli/agent-TAFPIYUU.js +2404 -0
  10. package/dist/cli/agent-outputs-HVJJIPS4.js +84 -0
  11. package/dist/cli/analyze-YQ22QVGW.js +49 -0
  12. package/dist/cli/archive-W5XX6AH7.js +65 -0
  13. package/dist/cli/archive-stats-HP2KPAJU.js +101 -0
  14. package/dist/cli/attention-7JBDCRZX.js +124 -0
  15. package/dist/cli/attention-ZXZANHKC.js +168 -0
  16. package/dist/cli/audit-ICA2SEFN.js +122 -0
  17. package/dist/cli/auth-DXIG5OG7.js +491 -0
  18. package/dist/cli/backfill-LBSYBWLR.js +156 -0
  19. package/dist/cli/backup-NUGBZ7NA.js +588 -0
  20. package/dist/cli/backup-inspect-PDRXI45A.js +26 -0
  21. package/dist/cli/backup-recover-TVKAPERB.js +29 -0
  22. package/dist/cli/blockers-ZOPCGHDW.js +55 -0
  23. package/dist/cli/brain-EJOBKL4A.js +397 -0
  24. package/dist/cli/briefing-RDQJ6WHS.js +213 -0
  25. package/dist/cli/caamp-Z3XPKEHB.js +181 -0
  26. package/dist/cli/cancel-S7EHLCJN.js +85 -0
  27. package/dist/cli/canon-NPF5RODM.js +142 -0
  28. package/dist/cli/canon-docs-2GTOLF7Y.js +26 -0
  29. package/dist/cli/cant-CHNN6O57.js +239 -0
  30. package/dist/cli/changeset-RYPHPN2B.js +246 -0
  31. package/dist/cli/check-C67YAU7W.js +759 -0
  32. package/dist/cli/check-DHMURGHC.js +924 -0
  33. package/dist/cli/checkpoint-UWDFOGYQ.js +128 -0
  34. package/dist/cli/chunk-22YPFZYB.js +91 -0
  35. package/dist/cli/chunk-2MGFDMDF.js +272 -0
  36. package/dist/cli/chunk-47JYZAMS.js +30 -0
  37. package/dist/cli/chunk-4JYHPP4C.js +76 -0
  38. package/dist/cli/chunk-4PEODTHY.js +278 -0
  39. package/dist/cli/chunk-4RGSNUUP.js +950 -0
  40. package/dist/cli/chunk-4VASFLUW.js +35 -0
  41. package/dist/cli/chunk-5PNI276X.js +124 -0
  42. package/dist/cli/chunk-6JSJNYH2.js +114 -0
  43. package/dist/cli/chunk-6N6WGLXE.js +63 -0
  44. package/dist/cli/chunk-75UH3BLS.js +210 -0
  45. package/dist/cli/chunk-7ACK4EIN.js +92 -0
  46. package/dist/cli/chunk-7NMKLVMI.js +107 -0
  47. package/dist/cli/chunk-7SINJXB6.js +110 -0
  48. package/dist/cli/chunk-7UARFJYS.js +46 -0
  49. package/dist/cli/chunk-7ZYPQV4N.js +90 -0
  50. package/dist/cli/chunk-AQCYT3L4.js +72 -0
  51. package/dist/cli/chunk-BQK6XTOH.js +57 -0
  52. package/dist/cli/chunk-C3B7C43W.js +16 -0
  53. package/dist/cli/chunk-CAPAGD5E.js +98 -0
  54. package/dist/cli/chunk-CHGEDCKG.js +77 -0
  55. package/dist/cli/chunk-COXFJ3PT.js +74 -0
  56. package/dist/cli/chunk-D7BAQNV2.js +55 -0
  57. package/dist/cli/chunk-EIUXVHNF.js +258 -0
  58. package/dist/cli/chunk-EUGB6P5V.js +173 -0
  59. package/dist/cli/chunk-EW2CKNNZ.js +304 -0
  60. package/dist/cli/chunk-FSKN4DWC.js +108 -0
  61. package/dist/cli/chunk-FVKLULL7.js +48 -0
  62. package/dist/cli/chunk-GAGUBU4Z.js +280 -0
  63. package/dist/cli/chunk-GKRFH2YG.js +171 -0
  64. package/dist/cli/chunk-GRU74UE4.js +270 -0
  65. package/dist/cli/chunk-GZFVDR44.js +320 -0
  66. package/dist/cli/chunk-HFLLZE6A.js +83 -0
  67. package/dist/cli/chunk-HXRXT3XU.js +78 -0
  68. package/dist/cli/chunk-IIOGUY3B.js +258 -0
  69. package/dist/cli/chunk-ILWWL462.js +60 -0
  70. package/dist/cli/chunk-J5USPJKZ.js +48 -0
  71. package/dist/cli/chunk-KEQS36GD.js +88 -0
  72. package/dist/cli/chunk-L7ONYSV6.js +2497 -0
  73. package/dist/cli/chunk-LVGIFMCV.js +163 -0
  74. package/dist/cli/chunk-NEFMQYLE.js +656 -0
  75. package/dist/cli/chunk-NU6CQQVB.js +4501 -0
  76. package/dist/cli/chunk-OILHT47L.js +252 -0
  77. package/dist/cli/chunk-PKKZPOOP.js +352 -0
  78. package/dist/cli/chunk-PN4WW5VX.js +66 -0
  79. package/dist/cli/chunk-PSJ33WVO.js +56 -0
  80. package/dist/cli/chunk-QA6T2LQ5.js +71 -0
  81. package/dist/cli/chunk-QJJWWCIC.js +288 -0
  82. package/dist/cli/chunk-QKMBWYAS.js +93 -0
  83. package/dist/cli/chunk-QWNKLLLG.js +84 -0
  84. package/dist/cli/chunk-QWUFFDL3.js +85 -0
  85. package/dist/cli/chunk-QY76BRUZ.js +35 -0
  86. package/dist/cli/chunk-R45KVF5Y.js +117 -0
  87. package/dist/cli/chunk-RRKP7HLU.js +66 -0
  88. package/dist/cli/chunk-SXXOC6KZ.js +209 -0
  89. package/dist/cli/chunk-T6GZJYL3.js +108 -0
  90. package/dist/cli/chunk-TLQ37HRE.js +67 -0
  91. package/dist/cli/chunk-TPTNEJZJ.js +52 -0
  92. package/dist/cli/chunk-TYC7G5LF.js +100 -0
  93. package/dist/cli/chunk-UWCZY52R.js +766 -0
  94. package/dist/cli/chunk-VB3LDPL5.js +46 -0
  95. package/dist/cli/chunk-VLEYOOPH.js +31 -0
  96. package/dist/cli/chunk-W3JLYKKY.js +140 -0
  97. package/dist/cli/chunk-WWCYZYSN.js +56 -0
  98. package/dist/cli/chunk-XA5WISNV.js +52 -0
  99. package/dist/cli/chunk-XHRZ7OYZ.js +132 -0
  100. package/dist/cli/chunk-XLPMIGJJ.js +148 -0
  101. package/dist/cli/chunk-YY66LFZF.js +29 -0
  102. package/dist/cli/chunk-ZMGDZMSJ.js +210 -0
  103. package/dist/cli/claim-IGOG2QOC.js +97 -0
  104. package/dist/cli/classify-MG4N7GMQ.js +117 -0
  105. package/dist/cli/cli-A23Q335V.js +51 -0
  106. package/dist/cli/cloud-SILYJVKO.js +731 -0
  107. package/dist/cli/cockpit-RZKLGYPN.js +790 -0
  108. package/dist/cli/code-H2FQCVMW.js +178 -0
  109. package/dist/cli/complete-JLX7NBI4.js +35 -0
  110. package/dist/cli/complexity-OKV7PVZH.js +57 -0
  111. package/dist/cli/compliance-QMGZHJNQ.js +277 -0
  112. package/dist/cli/conduit-4H32UYEA.js +308 -0
  113. package/dist/cli/conduit-EY54WTZA.js +535 -0
  114. package/dist/cli/config-TDYOC7XO.js +519 -0
  115. package/dist/cli/consensus-4XCOFPPT.js +122 -0
  116. package/dist/cli/context-FN4YTGHD.js +142 -0
  117. package/dist/cli/contribution-7RWFBJLC.js +112 -0
  118. package/dist/cli/curator-HKZJCVRL.js +139 -0
  119. package/dist/cli/current-B2NU7V3G.js +43 -0
  120. package/dist/cli/daemon-GBD4TVCD.js +452 -0
  121. package/dist/cli/dash-IGDANIE5.js +71 -0
  122. package/dist/cli/decide-26SXC2V6.js +416 -0
  123. package/dist/cli/decompose-LQ76TEZG.js +78 -0
  124. package/dist/cli/decomposition-WFRWNUSJ.js +122 -0
  125. package/dist/cli/delete-T5DUQHOX.js +69 -0
  126. package/dist/cli/deps-UTPZJBXL.js +462 -0
  127. package/dist/cli/detect-FFZSMVDT.js +46 -0
  128. package/dist/cli/detect-drift-TVCJOFYJ.js +408 -0
  129. package/dist/cli/diagnostics-GN5CVD3N.js +93 -0
  130. package/dist/cli/diagnostics-ZNBKH6GX.js +133 -0
  131. package/dist/cli/docs-CLQKEEUK.js +1710 -0
  132. package/dist/cli/docs-DPPDFTWR.js +3098 -0
  133. package/dist/cli/doctor-GPENOP4N.js +1270 -0
  134. package/dist/cli/doctor-ac-bindings-S3IOEFP4.js +26 -0
  135. package/dist/cli/doctor-acceptance-drift-VNFKPBSQ.js +26 -0
  136. package/dist/cli/doctor-credentials-A5H4JMTF.js +26 -0
  137. package/dist/cli/doctor-db-substrate-FGCISE4Z.js +27 -0
  138. package/dist/cli/doctor-dep-cycles-BKKKHHYG.js +26 -0
  139. package/dist/cli/doctor-exodus-ND2DH2KP.js +26 -0
  140. package/dist/cli/doctor-exodus-residue-4EMRYMEQ.js +26 -0
  141. package/dist/cli/doctor-fk-check-VY3RIQV3.js +26 -0
  142. package/dist/cli/doctor-global-delivery-JN6IGHUL.js +26 -0
  143. package/dist/cli/doctor-heavy-command-hook-XSN44WXU.js +26 -0
  144. package/dist/cli/doctor-legacy-backups-QAG5NHYP.js +26 -0
  145. package/dist/cli/doctor-legacy-reaper-CIRGFE6R.js +26 -0
  146. package/dist/cli/doctor-malformed-ids-WL7HT4TB.js +26 -0
  147. package/dist/cli/doctor-manifest-rows-SMQCKJ2T.js +26 -0
  148. package/dist/cli/doctor-memory-guard-LJDOJG76.js +26 -0
  149. package/dist/cli/doctor-migrations-ETQPFNUP.js +26 -0
  150. package/dist/cli/doctor-nexus-residency-A4JMKBEJ.js +26 -0
  151. package/dist/cli/doctor-project-identity-FFQJ5LNX.js +26 -0
  152. package/dist/cli/doctor-projects-MFUTKRHP.js +30 -0
  153. package/dist/cli/doctor-projects-registry-76X6VTGM.js +26 -0
  154. package/dist/cli/doctor-release-readiness-QJCOPFTK.js +26 -0
  155. package/dist/cli/doctor-repair-AU76FIKY.js +26 -0
  156. package/dist/cli/doctor-row-identity-KW6JYZQE.js +26 -0
  157. package/dist/cli/doctor-skill-fixtures-G3T7JUHS.js +26 -0
  158. package/dist/cli/doctor-split-brain-FUW6L7FS.js +26 -0
  159. package/dist/cli/doctor-superseded-store-DUHGSBLC.js +26 -0
  160. package/dist/cli/doctor-sync-journal-SXMUIKF7.js +26 -0
  161. package/dist/cli/doctor-sync-triggers-6WNJZFRM.js +26 -0
  162. package/dist/cli/doctor-tool-locks-66LSLUBN.js +26 -0
  163. package/dist/cli/doctor-twin-collapse-AYBYBFC4.js +26 -0
  164. package/dist/cli/doctor-worktree-stores-C5XEH5OG.js +26 -0
  165. package/dist/cli/done-R64XRZ32.js +196 -0
  166. package/dist/cli/dynamic-RR4HB7BB.js +29 -0
  167. package/dist/cli/entities-3JIHDIOK.js +361 -0
  168. package/dist/cli/event-45KEWV5H.js +372 -0
  169. package/dist/cli/exists-BEDZS5RI.js +65 -0
  170. package/dist/cli/exodus-DUX62344.js +401 -0
  171. package/dist/cli/export-C5PQIQ5O.js +93 -0
  172. package/dist/cli/export-tasks-CUXDZPJB.js +97 -0
  173. package/dist/cli/federation-ESM35EGG.js +145 -0
  174. package/dist/cli/find-5EUZHHQJ.js +178 -0
  175. package/dist/cli/focus-6AH4KLRO.js +368 -0
  176. package/dist/cli/focus-ANKAIRO5.js +56 -0
  177. package/dist/cli/gateway-2GW2KTK3.js +77 -0
  178. package/dist/cli/gateway-auto-start-EDK7XI6E.js +36 -0
  179. package/dist/cli/gc-CTOQLUSA.js +291 -0
  180. package/dist/cli/go-YJPNHHYT.js +206 -0
  181. package/dist/cli/goal-4GW4G77D.js +213 -0
  182. package/dist/cli/grade-25WSZH4X.js +57 -0
  183. package/dist/cli/graph-JUO3TMF3.js +879 -0
  184. package/dist/cli/history-NACNUQTC.js +138 -0
  185. package/dist/cli/hook-UF7J7R6D.js +57 -0
  186. package/dist/cli/hook-entry.js +244 -19
  187. package/dist/cli/hygiene-3QZ2NI7P.js +55 -0
  188. package/dist/cli/import-7ESGL5SS.js +89 -0
  189. package/dist/cli/import-tasks-FLE2RPBR.js +109 -0
  190. package/dist/cli/index.js +601 -94637
  191. package/dist/cli/init-AN4DZ2XO.js +40 -0
  192. package/dist/cli/inject-HQWA5GWY.js +83 -0
  193. package/dist/cli/install-global-YQV4W5OG.js +95 -0
  194. package/dist/cli/intelligence-OFFNQGHE.js +238 -0
  195. package/dist/cli/intelligence-QIC4SN4X.js +182 -0
  196. package/dist/cli/issue-P5RNMRDG.js +159 -0
  197. package/dist/cli/janitor-ZNCFQ7E3.js +111 -0
  198. package/dist/cli/labels-ORBM3T57.js +88 -0
  199. package/dist/cli/lifecycle-MHR22TVI.js +273 -0
  200. package/dist/cli/list-LB6GCYYU.js +109 -0
  201. package/dist/cli/llm-H7LZWQKX.js +130 -0
  202. package/dist/cli/llm-OTJWPMGI.js +704 -0
  203. package/dist/cli/llm-cost-MLMXEAR4.js +25 -0
  204. package/dist/cli/llm-stream-AAEUNKRP.js +27 -0
  205. package/dist/cli/log-W2A5M2NA.js +76 -0
  206. package/dist/cli/login-SIXFFZSP.js +45 -0
  207. package/dist/cli/logout-G3KVLQQM.js +74 -0
  208. package/dist/cli/manifest-G4T6EBSI.js +354 -0
  209. package/dist/cli/map-VU5M72TK.js +53 -0
  210. package/dist/cli/memory-2E27G2G5.js +1952 -0
  211. package/dist/cli/memory-IAEYKXG6.js +1895 -0
  212. package/dist/cli/migrate-agents-v2-A52QIYNJ.js +33 -0
  213. package/dist/cli/migrate-claude-mem-TPDW3R4Z.js +206 -0
  214. package/dist/cli/next-SVH4LIDY.js +57 -0
  215. package/dist/cli/nexus-FPQV2EAF.js +1059 -0
  216. package/dist/cli/nexus-XSFXN5E6.js +2924 -0
  217. package/dist/cli/ops-K6LHY5J6.js +52 -0
  218. package/dist/cli/orchestrate-CZ2J6W3L.js +1650 -0
  219. package/dist/cli/orchestrate-HURUCQFT.js +950 -0
  220. package/dist/cli/otel-JCNPVJLZ.js +188 -0
  221. package/dist/cli/phase-VDFRASSO.js +221 -0
  222. package/dist/cli/pipeline-TCZPOEDR.js +697 -0
  223. package/dist/cli/pivot-V5MSQZ7L.js +88 -0
  224. package/dist/cli/plan-SQUGCKSM.js +49 -0
  225. package/dist/cli/playbook-L47GLDQD.js +230 -0
  226. package/dist/cli/playbook-NJVO4R6P.js +33 -0
  227. package/dist/cli/project-YZEC7GYF.js +331 -0
  228. package/dist/cli/promote-FINF4HVK.js +53 -0
  229. package/dist/cli/provenance-3TUWVBFR.js +141 -0
  230. package/dist/cli/provenance-YZG33JGM.js +129 -0
  231. package/dist/cli/provider-23JVLLG3.js +213 -0
  232. package/dist/cli/reason-FHN54O7O.js +138 -0
  233. package/dist/cli/reconcile-MOM5T4AX.js +128 -0
  234. package/dist/cli/refresh-memory-3OSTRAVK.js +45 -0
  235. package/dist/cli/relates-6FWUFUS2.js +260 -0
  236. package/dist/cli/release-G2DPSG5M.js +347 -0
  237. package/dist/cli/release-URX6JHZ2.js +525 -0
  238. package/dist/cli/remote-VIULU2T5.js +279 -0
  239. package/dist/cli/renderers-TGSW77J4.js +37 -0
  240. package/dist/cli/reorder-UIPN6TQY.js +87 -0
  241. package/dist/cli/reparent-ALOWWUIU.js +59 -0
  242. package/dist/cli/req-RH2Y3H7A.js +130 -0
  243. package/dist/cli/research-G2Y72HRC.js +366 -0
  244. package/dist/cli/restore-VBR5XNML.js +470 -0
  245. package/dist/cli/revert-32LDNSGP.js +240 -0
  246. package/dist/cli/roadmap-LFU3AG7D.js +62 -0
  247. package/dist/cli/run-HXRILSR7.js +245 -0
  248. package/dist/cli/safestop-Z5UC7NGQ.js +89 -0
  249. package/dist/cli/saga-Y6FZS6AM.js +286 -0
  250. package/dist/cli/schema-OOOKLWUE.js +195 -0
  251. package/dist/cli/self-update-26SOTJMH.js +504 -0
  252. package/dist/cli/selfimprove-4SMOCLUV.js +89 -0
  253. package/dist/cli/selfimprove-EB4RQLP4.js +139 -0
  254. package/dist/cli/sentient-QPETVE53.js +254 -0
  255. package/dist/cli/sentient-RGMWR4XJ.js +1088 -0
  256. package/dist/cli/sequence-H7DSAJPF.js +94 -0
  257. package/dist/cli/service-EK5MGB2D.js +156 -0
  258. package/dist/cli/service-GLOMZWPQ.js +437 -0
  259. package/dist/cli/session-HYUXAQGC.js +708 -0
  260. package/dist/cli/session-N5ISU56W.js +568 -0
  261. package/dist/cli/setup-L3YYV53D.js +323 -0
  262. package/dist/cli/show-364V3KY2.js +123 -0
  263. package/dist/cli/skill-F2KR6HW5.js +84 -0
  264. package/dist/cli/skills-FS3DCP6E.js +929 -0
  265. package/dist/cli/smoke-provider-SKUFMZXU.js +218 -0
  266. package/dist/cli/snapshot-EGXEQ5PR.js +120 -0
  267. package/dist/cli/src-LYLXHXHH.js +80 -0
  268. package/dist/cli/start-6DXOCCKL.js +68 -0
  269. package/dist/cli/stats-UVUQEGYC.js +96 -0
  270. package/dist/cli/status-XLKYLN42.js +157 -0
  271. package/dist/cli/sticky-VSTQ2I2O.js +264 -0
  272. package/dist/cli/sticky-XZXZDCFW.js +339 -0
  273. package/dist/cli/stop-VNOAFWNB.js +43 -0
  274. package/dist/cli/sync-YYPARW3A.js +155 -0
  275. package/dist/cli/tasks-C24KHTFF.js +1118 -0
  276. package/dist/cli/tasks-LBJC7CZV.js +175 -0
  277. package/dist/cli/telemetry-CU7W5WAY.js +120 -0
  278. package/dist/cli/templates-G42JBUY4.js +609 -0
  279. package/dist/cli/testing-HSRITHEY.js +147 -0
  280. package/dist/cli/token-J74E7TSU.js +221 -0
  281. package/dist/cli/tools-BI74W7VE.js +652 -0
  282. package/dist/cli/transcript-RGK7RSGQ.js +440 -0
  283. package/dist/cli/tui-BPUFHYKK.js +51 -0
  284. package/dist/cli/update-2KQWA27S.js +478 -0
  285. package/dist/cli/update-check-entry.js +124 -0
  286. package/dist/cli/update-notice-6SQ6WPQG.js +68 -0
  287. package/dist/cli/upgrade-E2MJAPC7.js +136 -0
  288. package/dist/cli/upgrade-XRSQ4RWH.js +243 -0
  289. package/dist/cli/verify-WASRGDBA.js +191 -0
  290. package/dist/cli/web-NJ3P67EU.js +275 -0
  291. package/dist/cli/workgraph-OHJ2VKJD.js +232 -0
  292. package/dist/cli/worktree-FVQLORFY.js +371 -0
  293. package/dist/cli/worktree-ZJ6JTQNG.js +287 -0
  294. package/package.json +13 -13
  295. package/studio-dist/client/_app/immutable/chunks/{DMj27Pxj.js → AH7dIemv.js} +1 -1
  296. package/studio-dist/client/_app/immutable/chunks/{Dc2owyvE.js → BDgH40i3.js} +1 -1
  297. package/studio-dist/client/_app/immutable/chunks/BXDCSJ7U.js +1 -0
  298. package/studio-dist/client/_app/immutable/chunks/{qq3pe1aT.js → Gg4iYl59.js} +1 -1
  299. package/studio-dist/client/_app/immutable/entry/{app.CHWXLeE9.js → app.DUDNK-37.js} +2 -2
  300. package/studio-dist/client/_app/immutable/entry/start.DNmZ0pA4.js +1 -0
  301. package/studio-dist/client/_app/immutable/nodes/{0.DmKQGvFh.js → 0.DWqP3ail.js} +1 -1
  302. package/studio-dist/client/_app/immutable/nodes/{1.DqJk_REO.js → 1.CZGVUP5B.js} +1 -1
  303. package/studio-dist/client/_app/immutable/nodes/{15.GUy6kdW1.js → 15.DGaflZRS.js} +1 -1
  304. package/studio-dist/client/_app/immutable/nodes/{16.CcnKZ8f9.js → 16.uYlarGXl.js} +1 -1
  305. package/studio-dist/client/_app/immutable/nodes/{17.DAlQF3lQ.js → 17.CZMR0E47.js} +1 -1
  306. package/studio-dist/client/_app/immutable/nodes/{18.vQFr-vFj.js → 18.CBC-AKH_.js} +1 -1
  307. package/studio-dist/client/_app/immutable/nodes/{20.GVOj5j_r.js → 20.BGi43MvQ.js} +1 -1
  308. package/studio-dist/client/_app/immutable/nodes/{24.2-wC6DOh.js → 24.Dv8ftCyR.js} +1 -1
  309. package/studio-dist/client/_app/immutable/nodes/25.DQPVlTDQ.js +39 -0
  310. package/studio-dist/client/_app/immutable/nodes/{26.C3rNqzZF.js → 26.Cl800304.js} +1 -1
  311. package/studio-dist/client/_app/immutable/nodes/{3.b-7pzc3M.js → 3.D_fQKj9f.js} +1 -1
  312. package/studio-dist/client/_app/version.json +1 -1
  313. package/studio-dist/server/chunks/{0-BaCce-O1.js → 0-BpOagOst.js} +3 -3
  314. package/studio-dist/server/chunks/1-D0oRGR-C.js +9 -0
  315. package/studio-dist/server/chunks/{15-DRMOSIC9.js → 15-BcjHz7Tv.js} +3 -3
  316. package/studio-dist/server/chunks/{16-BulXhoZZ.js → 16-CXm8TUk7.js} +3 -3
  317. package/studio-dist/server/chunks/{17-DUEOCM0H.js → 17-mSgUK-cp.js} +3 -3
  318. package/studio-dist/server/chunks/{18-DP7Q8zPs.js → 18-BtfnIw1d.js} +3 -3
  319. package/studio-dist/server/chunks/{20-9ta6MI7q.js → 20-By1e4QDS.js} +3 -3
  320. package/studio-dist/server/chunks/{24-DysdL1ab.js → 24-0i2YLVxG.js} +3 -3
  321. package/studio-dist/server/chunks/{dist-CdoCt9zT.js → 25-DPsrqbrh.js} +797 -10736
  322. package/studio-dist/server/chunks/{26-Df4YXgg0.js → 26-P0XkOibm.js} +3 -3
  323. package/studio-dist/server/chunks/{3-BEhOhYpL.js → 3-WudjUK7e.js} +3 -3
  324. package/studio-dist/server/chunks/{_layout.svelte-CnLcXYG-.js → _layout.svelte-D9m81Rle.js} +4 -4
  325. package/studio-dist/server/chunks/{_page.svelte-DGhXqeRc.js → _page.svelte-2PDLOF83.js} +3 -3
  326. package/studio-dist/server/chunks/{_page.svelte-Dv8tmDEC.js → _page.svelte-BjE3jm2K.js} +3 -3
  327. package/studio-dist/server/chunks/{_page.svelte-C0qgUvzA.js → _page.svelte-Clc0vmiZ.js} +4 -4
  328. package/studio-dist/server/chunks/{_page.svelte-ui7LnWkL.js → _page.svelte-DABdRT3h.js} +3 -3
  329. package/studio-dist/server/chunks/{_page.svelte-HUqTICJR.js → _page.svelte-DG3PjiHj.js} +3 -3
  330. package/studio-dist/server/chunks/{_page.svelte-DzcZljiy.js → _page.svelte-Edy9CaE8.js} +20 -7
  331. package/studio-dist/server/chunks/{_page.svelte-DOl0DGOO.js → _page.svelte-Hrf3-ZR8.js} +3 -3
  332. package/studio-dist/server/chunks/{_page.svelte-Da4q5l93.js → _page.svelte-VB4O4Nl5.js} +3 -3
  333. package/studio-dist/server/chunks/{_page.svelte-CbyEPj2j.js → _page.svelte-d3jEgjsI.js} +3 -3
  334. package/studio-dist/server/chunks/{_server.ts-P4wVVksg.js → _server.ts-BcRFsyo3.js} +4 -5
  335. package/studio-dist/server/chunks/{_server.ts-Cr57EKWf.js → _server.ts-CEWpIFrj.js} +6 -5
  336. package/studio-dist/server/chunks/{_server.ts-CnKVmf_s.js → _server.ts-CLVdVIF9.js} +2 -2
  337. package/studio-dist/server/chunks/{_server.ts-C0evMKCk.js → _server.ts-D_j7aSy5.js} +6 -5
  338. package/studio-dist/server/chunks/{_server.ts-2BazvYRP.js → _server.ts-QEZF8h2q.js} +4 -5
  339. package/studio-dist/server/chunks/{client-CPM4LrO2.js → client-Kp1dP1od.js} +2 -2
  340. package/studio-dist/server/chunks/{error.svelte-ShcZo43D.js → error.svelte-WOCioJVX.js} +3 -3
  341. package/studio-dist/server/chunks/{hooks.server-D2qbf3Zp.js → hooks.server-DH9zkIrJ.js} +3 -1
  342. package/studio-dist/server/chunks/{http-BiQjEmVU.js → http-DT5kxaWk.js} +5 -4
  343. package/studio-dist/server/chunks/{internal-Cgsrya1j.js → internal-z0vqd5_u.js} +3 -3
  344. package/studio-dist/server/chunks/operations-registry-DdzmYzqX.js +10584 -0
  345. package/studio-dist/server/chunks/{stores-BGrpEDMK.js → stores-s2kaL315.js} +2 -2
  346. package/studio-dist/server/index.js +1 -1
  347. package/studio-dist/server/manifest.js +17 -17
  348. package/studio-dist/client/_app/immutable/chunks/Bw6J8NDM.js +0 -1
  349. package/studio-dist/client/_app/immutable/entry/start.C9bwPpvc.js +0 -1
  350. package/studio-dist/client/_app/immutable/nodes/25.D1vYaH8g.js +0 -39
  351. package/studio-dist/server/chunks/1-CVo7Nk6d.js +0 -9
  352. package/studio-dist/server/chunks/25-CYsps38R.js +0 -366
@@ -0,0 +1,260 @@
1
+ (() => {
2
+ const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
3
+ if (globalThis[_installed]) return;
4
+ globalThis[_installed] = true;
5
+ const _origEmitWarning = process.emitWarning;
6
+ process.emitWarning = function(warning, type, code, ctor) {
7
+ if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
8
+ return;
9
+ }
10
+ if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
11
+ return;
12
+ }
13
+ return _origEmitWarning.call(process, warning, type, code, ctor);
14
+ };
15
+ })();
16
+ import {
17
+ negatedFlag
18
+ } from "./chunk-47JYZAMS.js";
19
+ import {
20
+ dispatchFromCli
21
+ } from "./chunk-L7ONYSV6.js";
22
+ import "./chunk-6N6WGLXE.js";
23
+ import "./chunk-4VASFLUW.js";
24
+ import {
25
+ defineCommand,
26
+ showUsage
27
+ } from "./chunk-PKKZPOOP.js";
28
+ import "./chunk-QKMBWYAS.js";
29
+ import "./chunk-4RGSNUUP.js";
30
+ import "./chunk-6JSJNYH2.js";
31
+ import "./chunk-D7BAQNV2.js";
32
+ import "./chunk-TYC7G5LF.js";
33
+
34
+ // packages/cleo/src/cli/commands/relates.ts
35
+ import { readFile } from "node:fs/promises";
36
+ var suggestCommand = defineCommand({
37
+ meta: { name: "suggest", description: "Suggest related tasks based on shared attributes" },
38
+ args: {
39
+ taskId: {
40
+ type: "positional",
41
+ description: "Task ID to find suggestions for",
42
+ required: true
43
+ },
44
+ threshold: {
45
+ type: "string",
46
+ description: "Minimum similarity threshold (0-100)",
47
+ default: "50"
48
+ }
49
+ },
50
+ async run({ args }) {
51
+ await dispatchFromCli(
52
+ "query",
53
+ "tasks",
54
+ "relates",
55
+ {
56
+ taskId: args.taskId,
57
+ mode: "suggest",
58
+ threshold: Number(args.threshold)
59
+ },
60
+ { command: "relates" }
61
+ );
62
+ }
63
+ });
64
+ var addCommand = defineCommand({
65
+ meta: {
66
+ name: "add",
67
+ description: "Add a relates entry to a task. Valid types: blocks|related|duplicates|absorbs|fixes|extends|supersedes"
68
+ },
69
+ args: {
70
+ from: {
71
+ type: "positional",
72
+ description: "Source task ID",
73
+ required: true
74
+ },
75
+ to: {
76
+ type: "positional",
77
+ description: "Target task ID",
78
+ required: true
79
+ },
80
+ type: {
81
+ type: "positional",
82
+ description: "Relationship type (blocks|related|duplicates|absorbs|fixes|extends|supersedes)",
83
+ required: true
84
+ },
85
+ reason: {
86
+ type: "positional",
87
+ description: "Reason for the relationship",
88
+ required: true
89
+ }
90
+ },
91
+ async run({ args }) {
92
+ await dispatchFromCli(
93
+ "mutate",
94
+ "tasks",
95
+ "relates.add",
96
+ { taskId: args.from, relatedId: args.to, type: args.type, reason: args.reason },
97
+ { command: "relates" }
98
+ );
99
+ }
100
+ });
101
+ var addBatchCommand = defineCommand({
102
+ meta: {
103
+ name: "add-batch",
104
+ description: "Add multiple advisory relation edges from JSON. Accepts {relations:[...]} or {edges:[...]}; use --dry-run to preview."
105
+ },
106
+ args: {
107
+ file: {
108
+ type: "string",
109
+ description: "JSON file path, or - for stdin",
110
+ required: true
111
+ },
112
+ dryRun: {
113
+ type: "boolean",
114
+ description: "Validate and print what would be created without writing",
115
+ required: false
116
+ },
117
+ reasonWaiver: {
118
+ type: "string",
119
+ description: "Explicit audit waiver text for edges without per-edge reasons",
120
+ required: false
121
+ }
122
+ },
123
+ async run({ args }) {
124
+ const input = args.file === "-" ? await new Promise((resolve, reject) => {
125
+ let data = "";
126
+ process.stdin.setEncoding("utf8");
127
+ process.stdin.on("data", (chunk) => {
128
+ data += chunk;
129
+ });
130
+ process.stdin.on("end", () => resolve(data));
131
+ process.stdin.on("error", reject);
132
+ }) : await readFile(args.file, "utf8");
133
+ const parsed = JSON.parse(input);
134
+ const payload = Array.isArray(parsed) ? { relations: parsed } : parsed;
135
+ await dispatchFromCli(
136
+ "mutate",
137
+ "tasks",
138
+ "relates.add-batch",
139
+ { ...payload, dryRun: args.dryRun, reasonWaiver: args.reasonWaiver },
140
+ { command: "relates" }
141
+ );
142
+ }
143
+ });
144
+ var discoverCommand = defineCommand({
145
+ meta: { name: "discover", description: "Discover related tasks using various methods" },
146
+ args: {
147
+ taskId: {
148
+ type: "positional",
149
+ description: "Task ID to discover relations for",
150
+ required: true
151
+ }
152
+ },
153
+ async run({ args }) {
154
+ await dispatchFromCli(
155
+ "query",
156
+ "tasks",
157
+ "relates",
158
+ {
159
+ taskId: args.taskId,
160
+ mode: "discover"
161
+ },
162
+ { command: "relates" }
163
+ );
164
+ }
165
+ });
166
+ var removeCommand = defineCommand({
167
+ meta: {
168
+ name: "remove",
169
+ description: "Remove a relates entry between two tasks"
170
+ },
171
+ args: {
172
+ from: {
173
+ type: "positional",
174
+ description: "Source task ID",
175
+ required: true
176
+ },
177
+ to: {
178
+ type: "positional",
179
+ description: "Target task ID",
180
+ required: true
181
+ },
182
+ type: {
183
+ type: "string",
184
+ description: "Relation type to remove (omit to remove any type)",
185
+ required: false
186
+ }
187
+ },
188
+ async run({ args }) {
189
+ await dispatchFromCli(
190
+ "mutate",
191
+ "tasks",
192
+ "relates.remove",
193
+ { taskId: args.from, relatedId: args.to, type: args.type },
194
+ { command: "relates" }
195
+ );
196
+ }
197
+ });
198
+ var listCommand = defineCommand({
199
+ meta: { name: "list", description: "Show existing relates entries for a task" },
200
+ args: {
201
+ taskId: {
202
+ type: "positional",
203
+ description: "Task ID to list relations for",
204
+ required: true
205
+ },
206
+ type: {
207
+ type: "string",
208
+ description: "Filter by relation type (or depends/depends_on)",
209
+ required: false
210
+ },
211
+ direction: {
212
+ type: "string",
213
+ description: "Filter direction: out|in|both (default: both)",
214
+ default: "both",
215
+ required: false
216
+ },
217
+ noDepends: {
218
+ type: "boolean",
219
+ description: "Hide scheduler dependency edges from relation list output",
220
+ required: false
221
+ }
222
+ },
223
+ async run({ args }) {
224
+ await dispatchFromCli(
225
+ "query",
226
+ "tasks",
227
+ "relates",
228
+ {
229
+ taskId: args.taskId,
230
+ type: args.type,
231
+ direction: args.direction,
232
+ includeDependencies: !negatedFlag(args, "depends")
233
+ },
234
+ { command: "relates" }
235
+ );
236
+ }
237
+ });
238
+ var relatesCommand = defineCommand({
239
+ meta: {
240
+ name: "relates",
241
+ description: "Semantic relationship discovery and management between tasks"
242
+ },
243
+ subCommands: {
244
+ suggest: suggestCommand,
245
+ add: addCommand,
246
+ "add-batch": addBatchCommand,
247
+ remove: removeCommand,
248
+ discover: discoverCommand,
249
+ list: listCommand
250
+ },
251
+ async run({ cmd, rawArgs }) {
252
+ const firstArg = rawArgs?.find((a) => !a.startsWith("-"));
253
+ if (firstArg && cmd.subCommands && firstArg in cmd.subCommands) return;
254
+ await showUsage(cmd);
255
+ }
256
+ });
257
+ export {
258
+ relatesCommand
259
+ };
260
+ //# sourceMappingURL=relates-6FWUFUS2.js.map
@@ -0,0 +1,347 @@
1
+ (() => {
2
+ const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
3
+ if (globalThis[_installed]) return;
4
+ globalThis[_installed] = true;
5
+ const _origEmitWarning = process.emitWarning;
6
+ process.emitWarning = function(warning, type, code, ctor) {
7
+ if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
8
+ return;
9
+ }
10
+ if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
11
+ return;
12
+ }
13
+ return _origEmitWarning.call(process, warning, type, code, ctor);
14
+ };
15
+ })();
16
+ import {
17
+ errorResult,
18
+ handleErrorResult,
19
+ unsupportedOp,
20
+ wrapResult
21
+ } from "./chunk-XHRZ7OYZ.js";
22
+
23
+ // packages/cleo/src/dispatch/domains/release.ts
24
+ import { getLogger, getProjectRoot, resolveWorktreeRouting } from "@cleocode/core/internal";
25
+ import {
26
+ releaseGateCheck,
27
+ releaseIvtrAutoSuggest,
28
+ releaseOpen,
29
+ releasePlan,
30
+ releaseReconcileV2,
31
+ validateChangelog
32
+ } from "@cleocode/runtime/gateway";
33
+ var log = getLogger("domain:release");
34
+ async function releaseGateOp(params) {
35
+ return releaseGateCheck(params.epicId, params.force ?? false, getProjectRoot());
36
+ }
37
+ async function releaseIvtrSuggestOp(params) {
38
+ return releaseIvtrAutoSuggest(params.taskId, getProjectRoot());
39
+ }
40
+ var coreOps = {
41
+ gate: releaseGateOp,
42
+ "ivtr-suggest": releaseIvtrSuggestOp
43
+ };
44
+ var ReleaseHandler = class {
45
+ // -----------------------------------------------------------------------
46
+ // query — read-only
47
+ // -----------------------------------------------------------------------
48
+ /**
49
+ * Handle read-only release queries.
50
+ *
51
+ * Supported operations:
52
+ * - `gate` — check IVTR phase state for all tasks in a release epic
53
+ * - `ivtr-suggest` — check if all epic tasks are released and suggest `cleo release plan` + `cleo release open`
54
+ *
55
+ * The legacy `verify` query (run gates + audit child tasks) was removed
56
+ * in T9540 — use `cleo verify <task> --gate X --evidence …` per
57
+ * SPEC-T9345 §12 R-422 / ADR-051.
58
+ */
59
+ async query(operation, params) {
60
+ const startTime = Date.now();
61
+ try {
62
+ switch (operation) {
63
+ // release.gate — IVTR gate check (RELEASE-03)
64
+ case "gate": {
65
+ const epicId = typeof params?.epicId === "string" ? params.epicId : void 0;
66
+ if (!epicId)
67
+ return errorResult(
68
+ "query",
69
+ "release",
70
+ operation,
71
+ "E_INVALID_INPUT",
72
+ "epicId is required",
73
+ startTime
74
+ );
75
+ const force = typeof params?.force === "boolean" ? params.force : false;
76
+ const typed = { epicId, force };
77
+ return wrapResult(await coreOps.gate(typed), "query", "release", operation, startTime);
78
+ }
79
+ // release.ivtr-suggest — IVTR auto-suggest (RELEASE-07)
80
+ case "ivtr-suggest": {
81
+ const taskId = typeof params?.taskId === "string" ? params.taskId : void 0;
82
+ if (!taskId)
83
+ return errorResult(
84
+ "query",
85
+ "release",
86
+ operation,
87
+ "E_INVALID_INPUT",
88
+ "taskId is required",
89
+ startTime
90
+ );
91
+ const typed = { taskId };
92
+ return wrapResult(
93
+ await coreOps["ivtr-suggest"](typed),
94
+ "query",
95
+ "release",
96
+ operation,
97
+ startTime
98
+ );
99
+ }
100
+ // release.validate-changelog — canonical CHANGELOG.md header validator
101
+ // (T9937 / Saga T9862). Replaces the brittle `grep -qF "## [VERSION]"`
102
+ // step in .github/workflows/release.yml. Read-only.
103
+ //
104
+ // The core verb returns a plain `ValidateChangelogResult` envelope
105
+ // (NOT an EngineResult discriminated union) so direct SDK consumers
106
+ // can branch on `result.valid`. At the dispatch boundary we translate
107
+ // `valid=false` into `E_CHANGELOG_MISSING_SECTION` so the CLI emits a
108
+ // non-zero exit code — exactly the behaviour CI workflows depend on
109
+ // (the legacy `grep -qF "## [VERSION]" || exit 1` had the same
110
+ // contract).
111
+ case "validate-changelog": {
112
+ const version = typeof params?.version === "string" ? params.version : void 0;
113
+ if (!version)
114
+ return errorResult(
115
+ "query",
116
+ "release",
117
+ operation,
118
+ "E_INVALID_INPUT",
119
+ "version is required",
120
+ startTime
121
+ );
122
+ const typed = {
123
+ version,
124
+ projectRoot: getProjectRoot(),
125
+ ...typeof params?.changelogPath === "string" ? { changelogPath: params.changelogPath } : {}
126
+ };
127
+ const validation = await validateChangelog(typed);
128
+ if (validation.valid) {
129
+ return wrapResult(
130
+ { success: true, data: validation },
131
+ "query",
132
+ "release",
133
+ operation,
134
+ startTime
135
+ );
136
+ }
137
+ return wrapResult(
138
+ {
139
+ success: false,
140
+ error: {
141
+ code: "E_CHANGELOG_MISSING_SECTION",
142
+ message: validation.reason ?? `CHANGELOG.md missing canonical header for v${validation.normalizedVersion}`,
143
+ details: {
144
+ version: validation.version,
145
+ normalizedVersion: validation.normalizedVersion,
146
+ changelogPath: validation.changelogPath,
147
+ headerFound: validation.headerFound
148
+ },
149
+ fix: `Run \`cleo release plan v${validation.normalizedVersion}\` locally to write the section, then re-push.`,
150
+ exitCode: 1
151
+ }
152
+ },
153
+ "query",
154
+ "release",
155
+ operation,
156
+ startTime
157
+ );
158
+ }
159
+ default:
160
+ return unsupportedOp("query", "release", operation, startTime);
161
+ }
162
+ } catch (err) {
163
+ log.error({ err, operation }, "ReleaseHandler query error");
164
+ return handleErrorResult("query", "release", operation, err, startTime);
165
+ }
166
+ }
167
+ // -----------------------------------------------------------------------
168
+ // mutate — state-modifying
169
+ // -----------------------------------------------------------------------
170
+ /**
171
+ * Handle state-modifying release mutations.
172
+ *
173
+ * Note: `release.gate` and `release.ivtr-suggest` do not write any state.
174
+ * They are exposed in the `mutate` gateway to allow automated pipelines
175
+ * (e.g. playbook action blocks) to call them without changing gateway.
176
+ *
177
+ * Supported operations:
178
+ * - `gate` — same IVTR gate check as query.gate (no DB writes)
179
+ * - `ivtr-suggest` — same auto-suggest as query.ivtr-suggest (no DB writes)
180
+ * - `plan` — SPEC-T9345 §4.2 (T9525): build canonical Release Plan envelope
181
+ * - `open` — SPEC-T9345 §4.3 (T9530): dispatch release-prepare workflow
182
+ * - `reconcile` — SPEC-T9345 §4.4 (T9526 v2): backfill 11 provenance tables
183
+ *
184
+ * The legacy `start` / `publish` mutations (and the legacy v1
185
+ * `reconcile`) were removed in T9540 — their backing functions in
186
+ * `packages/core/src/release/pipeline.ts` were deleted as part of
187
+ * Phase 6 of T9499.
188
+ */
189
+ async mutate(operation, params) {
190
+ const startTime = Date.now();
191
+ try {
192
+ switch (operation) {
193
+ // release.gate — IVTR gate check (RELEASE-03, no DB writes)
194
+ case "gate": {
195
+ const epicId = typeof params?.epicId === "string" ? params.epicId : void 0;
196
+ if (!epicId)
197
+ return errorResult(
198
+ "mutate",
199
+ "release",
200
+ operation,
201
+ "E_INVALID_INPUT",
202
+ "epicId is required",
203
+ startTime
204
+ );
205
+ const force = typeof params?.force === "boolean" ? params.force : false;
206
+ const typed = { epicId, force };
207
+ return wrapResult(await coreOps.gate(typed), "mutate", "release", operation, startTime);
208
+ }
209
+ // release.ivtr-suggest — IVTR auto-suggest (RELEASE-07, no DB writes)
210
+ case "ivtr-suggest": {
211
+ const taskId = typeof params?.taskId === "string" ? params.taskId : void 0;
212
+ if (!taskId)
213
+ return errorResult(
214
+ "mutate",
215
+ "release",
216
+ operation,
217
+ "E_INVALID_INPUT",
218
+ "taskId is required",
219
+ startTime
220
+ );
221
+ const typed = { taskId };
222
+ return wrapResult(
223
+ await coreOps["ivtr-suggest"](typed),
224
+ "mutate",
225
+ "release",
226
+ operation,
227
+ startTime
228
+ );
229
+ }
230
+ // release.plan — SPEC-T9345 §4.2 (T9525): build canonical Release Plan envelope
231
+ // T9838/T10088: --saga/--tasks and --no-changelog flags forwarded; epicId no longer
232
+ // required at the dispatch layer — the core verb validates that
233
+ // exactly one scope selector is set.
234
+ case "plan": {
235
+ const version = typeof params?.version === "string" ? params.version : void 0;
236
+ const epicId = typeof params?.epicId === "string" ? params.epicId : void 0;
237
+ const sagaId = typeof params?.sagaId === "string" ? params.sagaId : void 0;
238
+ const taskIds = Array.isArray(params?.taskIds) ? params.taskIds.filter((id) => typeof id === "string" && id.length > 0) : void 0;
239
+ if (!version) {
240
+ return errorResult(
241
+ "mutate",
242
+ "release",
243
+ operation,
244
+ "E_INVALID_INPUT",
245
+ "version is required",
246
+ startTime
247
+ );
248
+ }
249
+ if (!epicId && !sagaId && !taskIds?.length) {
250
+ return errorResult(
251
+ "mutate",
252
+ "release",
253
+ operation,
254
+ "E_INVALID_INPUT",
255
+ "--saga, --epic, or --tasks is required",
256
+ startTime
257
+ );
258
+ }
259
+ const typed = {
260
+ version,
261
+ ...epicId ? { epicId } : {},
262
+ ...sagaId ? { sagaId } : {},
263
+ ...taskIds?.length ? { taskIds } : {},
264
+ scheme: typeof params?.scheme === "string" ? params.scheme : void 0,
265
+ channel: typeof params?.channel === "string" ? params.channel : void 0,
266
+ hotfix: typeof params?.hotfix === "boolean" ? params.hotfix : false,
267
+ dryRun: typeof params?.dryRun === "boolean" ? params.dryRun : false,
268
+ writeChangelog: typeof params?.writeChangelog === "boolean" ? params.writeChangelog : true,
269
+ // T10079: release plan side effects are project-level. When invoked
270
+ // from an XDG secondary worktree/subdir, route .changeset/,
271
+ // CHANGELOG.md, and plan.json writes to the primary worktree.
272
+ projectRoot: resolveWorktreeRouting().canonicalRoot
273
+ };
274
+ return wrapResult(await releasePlan(typed), "mutate", "release", operation, startTime);
275
+ }
276
+ // release.open — SPEC-T9345 §4.3 (T9530): dispatch release-prepare workflow
277
+ case "open": {
278
+ const version = typeof params?.version === "string" ? params.version : void 0;
279
+ if (!version) {
280
+ return errorResult(
281
+ "mutate",
282
+ "release",
283
+ operation,
284
+ "E_INVALID_INPUT",
285
+ "version is required",
286
+ startTime
287
+ );
288
+ }
289
+ const typed = {
290
+ version,
291
+ workflow: typeof params?.workflow === "string" ? params.workflow : void 0,
292
+ watch: typeof params?.watch === "boolean" ? params.watch : false,
293
+ commitPlan: typeof params?.commitPlan === "boolean" ? params.commitPlan : false,
294
+ // T12089: forward the plan scope. This mapping is explicit, so a
295
+ // param the CLI accepts but this block omits is silently dropped —
296
+ // `--tasks` reached the CLI, never reached `releaseOpen`, and the
297
+ // dispatched workflow then had no scope to plan with. Adding an
298
+ // option in core + the CLI is not enough; the dispatch layer is a
299
+ // second chokepoint that must carry it too.
300
+ epic: typeof params?.epic === "string" ? params.epic : void 0,
301
+ tasks: typeof params?.tasks === "string" ? params.tasks : void 0,
302
+ projectRoot: getProjectRoot()
303
+ };
304
+ return wrapResult(await releaseOpen(typed), "mutate", "release", operation, startTime);
305
+ }
306
+ // release.reconcile — v2 reconcile verb (T9526 / SPEC-T9345 §4.4)
307
+ case "reconcile": {
308
+ const version = typeof params?.version === "string" ? params.version : void 0;
309
+ if (!version)
310
+ return errorResult(
311
+ "mutate",
312
+ "release",
313
+ operation,
314
+ "E_INVALID_INPUT",
315
+ "version is required",
316
+ startTime
317
+ );
318
+ const result = await releaseReconcileV2(version, {
319
+ projectRoot: getProjectRoot(),
320
+ fromWorkflow: typeof params?.fromWorkflow === "boolean" ? params.fromWorkflow : false,
321
+ rollback: typeof params?.rollback === "boolean" ? params.rollback : false
322
+ });
323
+ return wrapResult(result, "mutate", "release", operation, startTime);
324
+ }
325
+ default:
326
+ return unsupportedOp("mutate", "release", operation, startTime);
327
+ }
328
+ } catch (err) {
329
+ log.error({ err, operation }, "ReleaseHandler mutate error");
330
+ return handleErrorResult("mutate", "release", operation, err, startTime);
331
+ }
332
+ }
333
+ // -----------------------------------------------------------------------
334
+ // getSupportedOperations
335
+ // -----------------------------------------------------------------------
336
+ /** Return declared operations for introspection and registry validation. */
337
+ getSupportedOperations() {
338
+ return {
339
+ query: ["gate", "ivtr-suggest", "validate-changelog"],
340
+ mutate: ["gate", "ivtr-suggest", "reconcile", "plan", "open"]
341
+ };
342
+ }
343
+ };
344
+ export {
345
+ ReleaseHandler
346
+ };
347
+ //# sourceMappingURL=release-G2DPSG5M.js.map