@cleocode/cleo 2026.10.3 → 2026.10.4

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 (307) hide show
  1. package/bin/cleo.js +11 -1
  2. package/dist/cli/adapter-LVXHFBC4.js +158 -0
  3. package/dist/cli/add-WUAV7LDT.js +443 -0
  4. package/dist/cli/add-batch-U2DLKAQC.js +163 -0
  5. package/dist/cli/admin-I7BQYVZD.js +340 -0
  6. package/dist/cli/adr-K2THMQBS.js +171 -0
  7. package/dist/cli/agent-WQ6XY2DW.js +2366 -0
  8. package/dist/cli/agent-outputs-BJIYLVTU.js +84 -0
  9. package/dist/cli/analyze-PGQZWGOC.js +48 -0
  10. package/dist/cli/archive-5LZPF7C3.js +64 -0
  11. package/dist/cli/archive-stats-U6CYC6JM.js +100 -0
  12. package/dist/cli/attention-SOURWCNI.js +167 -0
  13. package/dist/cli/audit-FO2Y4LH2.js +122 -0
  14. package/dist/cli/auth-ED7TAIXI.js +491 -0
  15. package/dist/cli/backfill-32TRAYRD.js +156 -0
  16. package/dist/cli/backup-LEJMZJKL.js +587 -0
  17. package/dist/cli/backup-inspect-6HPLUEI2.js +26 -0
  18. package/dist/cli/backup-recover-2BTYBZU2.js +29 -0
  19. package/dist/cli/blockers-5JULUJTV.js +54 -0
  20. package/dist/cli/brain-273N3FW4.js +400 -0
  21. package/dist/cli/briefing-7H6OLECX.js +212 -0
  22. package/dist/cli/caamp-MFQVN6VU.js +181 -0
  23. package/dist/cli/cancel-SCMJTXZB.js +84 -0
  24. package/dist/cli/canon-NPF5RODM.js +142 -0
  25. package/dist/cli/canon-docs-2GTOLF7Y.js +26 -0
  26. package/dist/cli/cant-46XCUP4P.js +239 -0
  27. package/dist/cli/changeset-32NMBGG2.js +248 -0
  28. package/dist/cli/check-RWJLBCI2.js +907 -0
  29. package/dist/cli/checkpoint-37HMMKD7.js +128 -0
  30. package/dist/cli/chunk-2JIJD2I7.js +108 -0
  31. package/dist/cli/chunk-37NU2XDP.js +171 -0
  32. package/dist/cli/chunk-3IOQVUO7.js +17308 -0
  33. package/dist/cli/chunk-3PGH67MT.js +175 -0
  34. package/dist/cli/chunk-3ZO3M37V.js +1002 -0
  35. package/dist/cli/chunk-47JYZAMS.js +30 -0
  36. package/dist/cli/chunk-5J2VH3BC.js +66 -0
  37. package/dist/cli/chunk-5ZFFUFH7.js +92 -0
  38. package/dist/cli/chunk-6JSJNYH2.js +114 -0
  39. package/dist/cli/chunk-7INMKEAD.js +85 -0
  40. package/dist/cli/chunk-A2IUEIM5.js +278 -0
  41. package/dist/cli/chunk-AWCQH2W5.js +35 -0
  42. package/dist/cli/chunk-AYA6F4ZT.js +56 -0
  43. package/dist/cli/chunk-BCEXRFA2.js +76 -0
  44. package/dist/cli/chunk-BPEVD37G.js +124 -0
  45. package/dist/cli/chunk-C3B7C43W.js +16 -0
  46. package/dist/cli/chunk-DVTPIZJM.js +72 -0
  47. package/dist/cli/chunk-DYABOIHB.js +96 -0
  48. package/dist/cli/chunk-EBRZ76HS.js +51 -0
  49. package/dist/cli/chunk-EGOTK2HA.js +57 -0
  50. package/dist/cli/chunk-EOPQFCSR.js +148 -0
  51. package/dist/cli/chunk-FORFDPP5.js +288 -0
  52. package/dist/cli/chunk-GFGLLDXX.js +110 -0
  53. package/dist/cli/chunk-GH37QXW5.js +280 -0
  54. package/dist/cli/chunk-GZFVDR44.js +320 -0
  55. package/dist/cli/chunk-I3CRQQAD.js +225 -0
  56. package/dist/cli/chunk-J3ZFM3UQ.js +754 -0
  57. package/dist/cli/chunk-JNZJPIPJ.js +90 -0
  58. package/dist/cli/chunk-KHB52JNB.js +209 -0
  59. package/dist/cli/chunk-KJDWWQFY.js +46 -0
  60. package/dist/cli/chunk-LKNUA3SB.js +83 -0
  61. package/dist/cli/chunk-LVGIFMCV.js +163 -0
  62. package/dist/cli/chunk-LWQBJQSE.js +67 -0
  63. package/dist/cli/chunk-MNJRLSEQ.js +107 -0
  64. package/dist/cli/chunk-NRKWJLMS.js +91 -0
  65. package/dist/cli/chunk-NSHV2JNM.js +48 -0
  66. package/dist/cli/chunk-NWTATTEQ.js +210 -0
  67. package/dist/cli/chunk-OAPN46TC.js +89 -0
  68. package/dist/cli/chunk-OGV57L4J.js +59 -0
  69. package/dist/cli/chunk-OILHT47L.js +252 -0
  70. package/dist/cli/chunk-OPTEQKBB.js +258 -0
  71. package/dist/cli/chunk-PKKZPOOP.js +352 -0
  72. package/dist/cli/chunk-QA6T2LQ5.js +71 -0
  73. package/dist/cli/chunk-QFFQSKRC.js +4497 -0
  74. package/dist/cli/chunk-QPUY2HQZ.js +74 -0
  75. package/dist/cli/chunk-REUTEW3O.js +258 -0
  76. package/dist/cli/chunk-S24YI723.js +88 -0
  77. package/dist/cli/chunk-SXXOC6KZ.js +209 -0
  78. package/dist/cli/chunk-ULN4OKQQ.js +259 -0
  79. package/dist/cli/chunk-V5GBGOGM.js +46 -0
  80. package/dist/cli/chunk-VLEYOOPH.js +31 -0
  81. package/dist/cli/chunk-W33Q3FBH.js +66 -0
  82. package/dist/cli/chunk-W3JLYKKY.js +140 -0
  83. package/dist/cli/chunk-XRAX6XFP.js +48 -0
  84. package/dist/cli/chunk-YGKEECTI.js +78 -0
  85. package/dist/cli/chunk-YUZJI67I.js +108 -0
  86. package/dist/cli/chunk-YY66LFZF.js +29 -0
  87. package/dist/cli/chunk-ZBISIPCK.js +78 -0
  88. package/dist/cli/chunk-ZZTHTMQP.js +77 -0
  89. package/dist/cli/claim-KPENYHIQ.js +96 -0
  90. package/dist/cli/classify-DRVMCFQU.js +117 -0
  91. package/dist/cli/cli-T3CR7J57.js +48 -0
  92. package/dist/cli/cloud-PPQ4O5TX.js +565 -0
  93. package/dist/cli/cockpit-RZKLGYPN.js +790 -0
  94. package/dist/cli/code-Z5CTMVTD.js +178 -0
  95. package/dist/cli/complete-UBOCOBRB.js +34 -0
  96. package/dist/cli/complexity-BV2AGQRZ.js +56 -0
  97. package/dist/cli/compliance-32PD5Y47.js +276 -0
  98. package/dist/cli/conduit-VDKCH33F.js +307 -0
  99. package/dist/cli/config-I72JAXK4.js +516 -0
  100. package/dist/cli/consensus-LFILLSTK.js +121 -0
  101. package/dist/cli/context-XUUVFVTP.js +141 -0
  102. package/dist/cli/contribution-37NQ4N5R.js +111 -0
  103. package/dist/cli/curator-TFDXU2EX.js +139 -0
  104. package/dist/cli/current-C4SN5BWV.js +42 -0
  105. package/dist/cli/daemon-DV25JQ62.js +451 -0
  106. package/dist/cli/dash-TFU4RLQW.js +70 -0
  107. package/dist/cli/decide-5VPMNTSI.js +419 -0
  108. package/dist/cli/decompose-KOYEZNJL.js +77 -0
  109. package/dist/cli/decomposition-7OHUFIQN.js +121 -0
  110. package/dist/cli/delete-Q7YCAFY5.js +68 -0
  111. package/dist/cli/deps-6UZKLDGJ.js +463 -0
  112. package/dist/cli/detect-FERY35UL.js +45 -0
  113. package/dist/cli/detect-drift-UL2JTPUK.js +408 -0
  114. package/dist/cli/diagnostics-TI5QAZXR.js +132 -0
  115. package/dist/cli/docs-QI2PRN3T.js +3095 -0
  116. package/dist/cli/doctor-AX5TICQO.js +1253 -0
  117. package/dist/cli/doctor-ac-bindings-YPMYHU2G.js +26 -0
  118. package/dist/cli/doctor-acceptance-drift-PYNFGMKB.js +26 -0
  119. package/dist/cli/doctor-credentials-UZRIADKM.js +26 -0
  120. package/dist/cli/doctor-db-substrate-Q2TOYM2S.js +27 -0
  121. package/dist/cli/doctor-dep-cycles-GCVYZY6F.js +26 -0
  122. package/dist/cli/doctor-exodus-RO5SUTC2.js +26 -0
  123. package/dist/cli/doctor-exodus-residue-EM2AWQXP.js +26 -0
  124. package/dist/cli/doctor-fk-check-Q3FOLECE.js +26 -0
  125. package/dist/cli/doctor-global-delivery-TNOAQ3NP.js +26 -0
  126. package/dist/cli/doctor-heavy-command-hook-IO3QAQLG.js +26 -0
  127. package/dist/cli/doctor-legacy-backups-O2YH5VLS.js +26 -0
  128. package/dist/cli/doctor-legacy-reaper-VSEJEIFA.js +26 -0
  129. package/dist/cli/doctor-malformed-ids-LQ766V5K.js +26 -0
  130. package/dist/cli/doctor-manifest-rows-6FQDNHLH.js +26 -0
  131. package/dist/cli/doctor-memory-guard-J4PSEKB5.js +26 -0
  132. package/dist/cli/doctor-migrations-ONOH56YM.js +26 -0
  133. package/dist/cli/doctor-nexus-residency-FUQAX7PV.js +26 -0
  134. package/dist/cli/doctor-project-identity-GUDK3HYX.js +26 -0
  135. package/dist/cli/doctor-projects-7L3BNL4O.js +30 -0
  136. package/dist/cli/doctor-projects-registry-TEAVHFQU.js +26 -0
  137. package/dist/cli/doctor-release-readiness-IEGHX6SL.js +26 -0
  138. package/dist/cli/doctor-repair-NBONOSZU.js +26 -0
  139. package/dist/cli/doctor-skill-fixtures-7Y6L34A3.js +26 -0
  140. package/dist/cli/doctor-split-brain-TUKIGVHF.js +26 -0
  141. package/dist/cli/doctor-superseded-store-BHZY2B2L.js +26 -0
  142. package/dist/cli/doctor-tool-locks-REQMIVYK.js +26 -0
  143. package/dist/cli/doctor-twin-collapse-222GOSPE.js +26 -0
  144. package/dist/cli/doctor-worktree-stores-J7TCRVJ3.js +26 -0
  145. package/dist/cli/done-V3AOO65B.js +195 -0
  146. package/dist/cli/dynamic-RR4HB7BB.js +29 -0
  147. package/dist/cli/event-EGNPGE5A.js +372 -0
  148. package/dist/cli/exists-H4SDCBPL.js +65 -0
  149. package/dist/cli/exodus-KALO3B3X.js +401 -0
  150. package/dist/cli/export-ROFOCG4M.js +92 -0
  151. package/dist/cli/export-tasks-US3WBIEQ.js +96 -0
  152. package/dist/cli/federation-SUIB5QWT.js +145 -0
  153. package/dist/cli/find-YICG4BG6.js +177 -0
  154. package/dist/cli/focus-TKCZPKOM.js +55 -0
  155. package/dist/cli/gateway-H4HFDC3E.js +77 -0
  156. package/dist/cli/gateway-auto-start-EDK7XI6E.js +36 -0
  157. package/dist/cli/gc-5R2TUY5T.js +291 -0
  158. package/dist/cli/go-PRQFK5YG.js +206 -0
  159. package/dist/cli/goal-7CZRMLHC.js +212 -0
  160. package/dist/cli/grade-PY2YRPUS.js +56 -0
  161. package/dist/cli/graph-XIXMCFKG.js +878 -0
  162. package/dist/cli/history-EIXADPAD.js +137 -0
  163. package/dist/cli/hook-UF7J7R6D.js +57 -0
  164. package/dist/cli/hook-entry.js +244 -19
  165. package/dist/cli/hygiene-3QZ2NI7P.js +55 -0
  166. package/dist/cli/import-R73SO444.js +88 -0
  167. package/dist/cli/import-tasks-O22FZJ4U.js +108 -0
  168. package/dist/cli/index.js +419 -94612
  169. package/dist/cli/init-IHEJDQWU.js +40 -0
  170. package/dist/cli/inject-LSRVWNCP.js +82 -0
  171. package/dist/cli/install-global-4AZUCH6U.js +95 -0
  172. package/dist/cli/intelligence-2OSFOGD2.js +181 -0
  173. package/dist/cli/issue-IIWEDNFC.js +158 -0
  174. package/dist/cli/janitor-GPMC7VOR.js +111 -0
  175. package/dist/cli/labels-5NPOIQXN.js +87 -0
  176. package/dist/cli/lifecycle-4FFS2K2T.js +272 -0
  177. package/dist/cli/list-47KEUGPQ.js +108 -0
  178. package/dist/cli/llm-G5B3I6GD.js +703 -0
  179. package/dist/cli/llm-cost-S7RS6BVA.js +25 -0
  180. package/dist/cli/llm-stream-24A45NTS.js +27 -0
  181. package/dist/cli/log-XF6H2XSD.js +75 -0
  182. package/dist/cli/login-LBPLGHYG.js +43 -0
  183. package/dist/cli/logout-SX4JSJIV.js +74 -0
  184. package/dist/cli/manifest-NMCW4PIW.js +353 -0
  185. package/dist/cli/map-BU72KMGF.js +52 -0
  186. package/dist/cli/memory-UHYIVGVM.js +1956 -0
  187. package/dist/cli/migrate-agents-v2-OO7OILZK.js +33 -0
  188. package/dist/cli/migrate-claude-mem-EDNYUY3K.js +201 -0
  189. package/dist/cli/next-RZFRG5X7.js +56 -0
  190. package/dist/cli/nexus-4S4Z5EVU.js +2923 -0
  191. package/dist/cli/ops-KR7AWCG3.js +51 -0
  192. package/dist/cli/orchestrate-HOYZY3VX.js +948 -0
  193. package/dist/cli/otel-U7IIRBCT.js +188 -0
  194. package/dist/cli/phase-NYZFHUE5.js +220 -0
  195. package/dist/cli/pivot-FF2CVUZL.js +87 -0
  196. package/dist/cli/plan-3SL2NTRV.js +48 -0
  197. package/dist/cli/playbook-2FCBV7N3.js +229 -0
  198. package/dist/cli/project-WDX2TGMC.js +330 -0
  199. package/dist/cli/promote-YINYFBZY.js +52 -0
  200. package/dist/cli/provenance-C7AYD7WG.js +128 -0
  201. package/dist/cli/provider-QLJEDQBR.js +212 -0
  202. package/dist/cli/reason-JF5BHBM5.js +137 -0
  203. package/dist/cli/reconcile-NMISHDGX.js +127 -0
  204. package/dist/cli/refresh-memory-EY5YNICV.js +45 -0
  205. package/dist/cli/relates-R3ZPICAY.js +259 -0
  206. package/dist/cli/release-4ZJTMUUT.js +524 -0
  207. package/dist/cli/remote-QSONJDIK.js +279 -0
  208. package/dist/cli/renderers-64OR3IWX.js +37 -0
  209. package/dist/cli/reorder-J3DOE7ST.js +86 -0
  210. package/dist/cli/reparent-2OUMKEZX.js +58 -0
  211. package/dist/cli/req-TZB7OFKO.js +129 -0
  212. package/dist/cli/research-MTD7EX45.js +365 -0
  213. package/dist/cli/restore-VEUOX7NF.js +423 -0
  214. package/dist/cli/revert-3YF2IL5G.js +240 -0
  215. package/dist/cli/roadmap-7OOQLXKG.js +61 -0
  216. package/dist/cli/run-2U5NZV5Z.js +211 -0
  217. package/dist/cli/safestop-VR4VK56D.js +88 -0
  218. package/dist/cli/saga-SEWPIOX2.js +285 -0
  219. package/dist/cli/schema-C52WZ35V.js +195 -0
  220. package/dist/cli/self-update-GQIGUDPS.js +504 -0
  221. package/dist/cli/selfimprove-3Y5L4ECT.js +88 -0
  222. package/dist/cli/sentient-M4YMAVGV.js +1088 -0
  223. package/dist/cli/sequence-6UBMA4IF.js +93 -0
  224. package/dist/cli/service-5R7SILZ7.js +155 -0
  225. package/dist/cli/session-3C6AAC4Y.js +707 -0
  226. package/dist/cli/setup-BTUBW5PU.js +323 -0
  227. package/dist/cli/show-MXT2V7TF.js +122 -0
  228. package/dist/cli/skill-GFUZOU2C.js +84 -0
  229. package/dist/cli/skills-EDWLKAF3.js +928 -0
  230. package/dist/cli/smoke-provider-SKUFMZXU.js +218 -0
  231. package/dist/cli/snapshot-GUWMURCM.js +119 -0
  232. package/dist/cli/src-66GAKPXR.js +80 -0
  233. package/dist/cli/start-QFG56RGN.js +67 -0
  234. package/dist/cli/stats-GW55P7RR.js +95 -0
  235. package/dist/cli/status-46HTKNRR.js +157 -0
  236. package/dist/cli/sticky-2DUZOUGI.js +338 -0
  237. package/dist/cli/stop-J2QEUKHX.js +42 -0
  238. package/dist/cli/sync-GJP2QYT5.js +154 -0
  239. package/dist/cli/tasks-BNXTM7PB.js +174 -0
  240. package/dist/cli/telemetry-55Z2XJWL.js +120 -0
  241. package/dist/cli/templates-7O77TKPV.js +611 -0
  242. package/dist/cli/testing-37YTBNKP.js +146 -0
  243. package/dist/cli/token-UAVJMNUI.js +220 -0
  244. package/dist/cli/transcript-LORQTV5Z.js +440 -0
  245. package/dist/cli/tui-BPUFHYKK.js +51 -0
  246. package/dist/cli/update-NVCYV2FT.js +476 -0
  247. package/dist/cli/upgrade-OXJXOGEF.js +243 -0
  248. package/dist/cli/verify-LYLDHPT2.js +190 -0
  249. package/dist/cli/web-QP2RP266.js +275 -0
  250. package/dist/cli/workgraph-FXBSZDQE.js +232 -0
  251. package/dist/cli/worktree-6RXAJIST.js +370 -0
  252. package/package.json +13 -13
  253. package/studio-dist/client/_app/immutable/chunks/{DMj27Pxj.js → Btgeq_wq.js} +1 -1
  254. package/studio-dist/client/_app/immutable/chunks/{qq3pe1aT.js → CgBjxmu6.js} +1 -1
  255. package/studio-dist/client/_app/immutable/chunks/{Dc2owyvE.js → DgEKqO6r.js} +1 -1
  256. package/studio-dist/client/_app/immutable/chunks/t81h7afa.js +1 -0
  257. package/studio-dist/client/_app/immutable/entry/{app.CHWXLeE9.js → app.a02HWaRB.js} +2 -2
  258. package/studio-dist/client/_app/immutable/entry/start.BreMSngo.js +1 -0
  259. package/studio-dist/client/_app/immutable/nodes/{0.DmKQGvFh.js → 0.nTXyRfc-.js} +1 -1
  260. package/studio-dist/client/_app/immutable/nodes/{1.DqJk_REO.js → 1.4zrWeHtl.js} +1 -1
  261. package/studio-dist/client/_app/immutable/nodes/{15.GUy6kdW1.js → 15.D9mk4JyY.js} +1 -1
  262. package/studio-dist/client/_app/immutable/nodes/{16.CcnKZ8f9.js → 16._-wt-sQf.js} +1 -1
  263. package/studio-dist/client/_app/immutable/nodes/{17.DAlQF3lQ.js → 17.CUu6LQDj.js} +1 -1
  264. package/studio-dist/client/_app/immutable/nodes/{18.vQFr-vFj.js → 18.Dz4QRTkX.js} +1 -1
  265. package/studio-dist/client/_app/immutable/nodes/{20.GVOj5j_r.js → 20.CJ2_EB0U.js} +1 -1
  266. package/studio-dist/client/_app/immutable/nodes/{24.2-wC6DOh.js → 24.Igj2FS7k.js} +1 -1
  267. package/studio-dist/client/_app/immutable/nodes/{25.D1vYaH8g.js → 25.BnATjVGN.js} +2 -2
  268. package/studio-dist/client/_app/immutable/nodes/{26.C3rNqzZF.js → 26.6iPyjT44.js} +1 -1
  269. package/studio-dist/client/_app/immutable/nodes/{3.b-7pzc3M.js → 3.AA5GwNgP.js} +1 -1
  270. package/studio-dist/client/_app/version.json +1 -1
  271. package/studio-dist/server/chunks/{0-BaCce-O1.js → 0-DGmsoBYm.js} +3 -3
  272. package/studio-dist/server/chunks/1-8PfxPvlK.js +9 -0
  273. package/studio-dist/server/chunks/{15-DRMOSIC9.js → 15-Bg6YTndh.js} +3 -3
  274. package/studio-dist/server/chunks/{16-BulXhoZZ.js → 16-BObLwgyD.js} +3 -3
  275. package/studio-dist/server/chunks/{17-DUEOCM0H.js → 17-BNXGyAHX.js} +3 -3
  276. package/studio-dist/server/chunks/{18-DP7Q8zPs.js → 18-UqQFRIID.js} +3 -3
  277. package/studio-dist/server/chunks/{20-9ta6MI7q.js → 20-CMn8a_yP.js} +3 -3
  278. package/studio-dist/server/chunks/{24-DysdL1ab.js → 24-BuOTDzib.js} +3 -3
  279. package/studio-dist/server/chunks/{25-CYsps38R.js → 25-CIMSmjVx.js} +4 -4
  280. package/studio-dist/server/chunks/{26-Df4YXgg0.js → 26-DWGObn2T.js} +3 -3
  281. package/studio-dist/server/chunks/{3-BEhOhYpL.js → 3-CyiffdJZ.js} +3 -3
  282. package/studio-dist/server/chunks/{_layout.svelte-CnLcXYG-.js → _layout.svelte-DYtClaIk.js} +4 -4
  283. package/studio-dist/server/chunks/{_page.svelte-HUqTICJR.js → _page.svelte-1h9E6s_f.js} +3 -3
  284. package/studio-dist/server/chunks/{_page.svelte-DOl0DGOO.js → _page.svelte-BNNF62Nm.js} +3 -3
  285. package/studio-dist/server/chunks/{_page.svelte-DzcZljiy.js → _page.svelte-BT1EUadj.js} +5 -5
  286. package/studio-dist/server/chunks/{_page.svelte-Dv8tmDEC.js → _page.svelte-Bip079LT.js} +3 -3
  287. package/studio-dist/server/chunks/{_page.svelte-DGhXqeRc.js → _page.svelte-CEATWp_5.js} +3 -3
  288. package/studio-dist/server/chunks/{_page.svelte-C0qgUvzA.js → _page.svelte-CV3xiD1y.js} +4 -4
  289. package/studio-dist/server/chunks/{_page.svelte-CbyEPj2j.js → _page.svelte-Cv_KVJDV.js} +3 -3
  290. package/studio-dist/server/chunks/{_page.svelte-ui7LnWkL.js → _page.svelte-DSSy6LuK.js} +3 -3
  291. package/studio-dist/server/chunks/{_page.svelte-Da4q5l93.js → _page.svelte-TF795TAS.js} +3 -3
  292. package/studio-dist/server/chunks/{_server.ts-CnKVmf_s.js → _server.ts-BlhRFLY3.js} +2 -2
  293. package/studio-dist/server/chunks/{_server.ts-Cr57EKWf.js → _server.ts-C4w6UdU0.js} +3 -3
  294. package/studio-dist/server/chunks/{_server.ts-P4wVVksg.js → _server.ts-CzrwbhkQ.js} +3 -3
  295. package/studio-dist/server/chunks/{_server.ts-2BazvYRP.js → _server.ts-DWt8Dziu.js} +3 -3
  296. package/studio-dist/server/chunks/{_server.ts-C0evMKCk.js → _server.ts-Db6mEile.js} +3 -3
  297. package/studio-dist/server/chunks/{client-CPM4LrO2.js → client-D8f2k-H_.js} +2 -2
  298. package/studio-dist/server/chunks/{dist-CdoCt9zT.js → dist-B8xbIrdB.js} +3 -1
  299. package/studio-dist/server/chunks/{error.svelte-ShcZo43D.js → error.svelte-DbbOwIme.js} +3 -3
  300. package/studio-dist/server/chunks/{http-BiQjEmVU.js → http-1ftNGTs5.js} +2 -2
  301. package/studio-dist/server/chunks/{internal-Cgsrya1j.js → internal-CTULuLPB.js} +2 -2
  302. package/studio-dist/server/chunks/{stores-BGrpEDMK.js → stores-CS5XOReX.js} +2 -2
  303. package/studio-dist/server/index.js +1 -1
  304. package/studio-dist/server/manifest.js +17 -17
  305. package/studio-dist/client/_app/immutable/chunks/Bw6J8NDM.js +0 -1
  306. package/studio-dist/client/_app/immutable/entry/start.C9bwPpvc.js +0 -1
  307. package/studio-dist/server/chunks/1-CVo7Nk6d.js +0 -9
@@ -0,0 +1,30 @@
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
+
17
+ // packages/cleo/src/cli/lib/negated-flag.ts
18
+ function negatedFlag(args, name) {
19
+ if (name.startsWith("no-")) {
20
+ throw new Error(
21
+ `negatedFlag: pass the positive flag name ('${name.slice(3)}'), not '${name}'.`
22
+ );
23
+ }
24
+ return args[name] === false || args[`no-${name}`] === true;
25
+ }
26
+
27
+ export {
28
+ negatedFlag
29
+ };
30
+ //# sourceMappingURL=chunk-47JYZAMS.js.map
@@ -0,0 +1,66 @@
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
+ defineCommand
18
+ } from "./chunk-PKKZPOOP.js";
19
+ import {
20
+ cliOutput
21
+ } from "./chunk-3ZO3M37V.js";
22
+
23
+ // packages/cleo/src/cli/commands/doctor-project-identity.ts
24
+ import { getProjectRoot } from "@cleocode/core";
25
+ import {
26
+ inspectProjectIdentity,
27
+ inspectProjectNameDrift,
28
+ resolveProjectIdentity
29
+ } from "@cleocode/core/doctor/project-identity.js";
30
+ var doctorProjectIdentityCommand = defineCommand({
31
+ meta: {
32
+ name: "project-identity",
33
+ description: "Check .cleo/project.json, its legacy .cleo/project-id mirror and the project-info.json cache (legacy / missing / conflict / invalid / untracked) plus registry-name drift, and print the exact remedy. --resolve applies it: it migrates a legacy project to .cleo/project.json (no id changes) and re-keys a conflict to the tracked id through the alias table, losing no registry rows; add --dry-run to see the plan first."
34
+ },
35
+ args: {
36
+ resolve: { type: "boolean", description: "Apply the remedy for the reported state" },
37
+ "dry-run": { type: "boolean", description: "With --resolve: print the plan, write nothing" },
38
+ json: { type: "boolean", description: "Output as JSON" },
39
+ human: { type: "boolean", description: "Force human-readable output" },
40
+ quiet: { type: "boolean", description: "Suppress non-essential output" }
41
+ },
42
+ async run({ args }) {
43
+ const projectRoot = getProjectRoot();
44
+ if (!args.resolve) {
45
+ const report = inspectProjectIdentity(projectRoot);
46
+ const nameDrift = await inspectProjectNameDrift(projectRoot);
47
+ cliOutput(
48
+ { ...report, nameDrift },
49
+ { command: "doctor", operation: "doctor.project-identity.inspect" }
50
+ );
51
+ const drifted = nameDrift.state === "drift" || nameDrift.state === "taken";
52
+ if ((report.state !== "ok" || drifted) && (process.exitCode === void 0 || process.exitCode === 0))
53
+ process.exitCode = 1;
54
+ return;
55
+ }
56
+ const result = await resolveProjectIdentity(projectRoot, { dryRun: !!args["dry-run"] });
57
+ cliOutput(result, { command: "doctor", operation: "doctor.project-identity.resolve" });
58
+ if (result.refused && result.before.state !== "ok" && (process.exitCode ?? 0) === 0)
59
+ process.exitCode = 1;
60
+ }
61
+ });
62
+
63
+ export {
64
+ doctorProjectIdentityCommand
65
+ };
66
+ //# sourceMappingURL=chunk-5J2VH3BC.js.map
@@ -0,0 +1,92 @@
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
+ defineCommand
18
+ } from "./chunk-PKKZPOOP.js";
19
+ import {
20
+ cliOutput
21
+ } from "./chunk-3ZO3M37V.js";
22
+
23
+ // packages/cleo/src/cli/commands/doctor-split-brain.ts
24
+ import { writeFileSync } from "node:fs";
25
+ import {
26
+ importSplitBrain,
27
+ verifyPreexistingRows
28
+ } from "@cleocode/core/store/split-brain-import.js";
29
+ var doctorSplitBrainCommand = defineCommand({
30
+ meta: {
31
+ name: "split-brain",
32
+ description: "Import rows that exist only in a diverged copy of a store (--source) into another (--target) under new task ids, with provenance. Dry-run unless --apply; --verify-before <snapshot> proves no pre-existing target row changed."
33
+ },
34
+ args: {
35
+ source: {
36
+ type: "string",
37
+ description: "Store with the extra rows (opened read-only)",
38
+ required: true
39
+ },
40
+ target: { type: "string", description: "Store that receives them", required: true },
41
+ apply: { type: "boolean", description: "Write the target (default: dry run)" },
42
+ label: { type: "string", description: "Provenance label for the source (default: its path)" },
43
+ "diverged-after": {
44
+ type: "string",
45
+ description: "Override the detected divergence point (ISO 8601)"
46
+ },
47
+ receipt: { type: "string", description: "Also write the receipt JSON to this file" },
48
+ task: {
49
+ type: "string",
50
+ description: "Task that records provenance of imported non-task rows (required with --apply when there are any)"
51
+ },
52
+ "verify-before": {
53
+ type: "string",
54
+ description: "Pre-import snapshot of the target; verify every one of its rows is unchanged"
55
+ },
56
+ json: { type: "boolean", description: "Output as JSON" },
57
+ human: { type: "boolean", description: "Force human-readable output" },
58
+ quiet: { type: "boolean", description: "Suppress non-essential output" }
59
+ },
60
+ async run({ args }) {
61
+ const report = importSplitBrain({
62
+ sourcePath: String(args.source),
63
+ targetPath: String(args.target),
64
+ dryRun: !args.apply,
65
+ sourceLabel: args.label ? String(args.label) : void 0,
66
+ divergedAfter: args["diverged-after"] ? String(args["diverged-after"]) : void 0,
67
+ provenanceTaskId: args.task ? String(args.task) : void 0
68
+ });
69
+ const verification = args["verify-before"] ? verifyPreexistingRows(String(args["verify-before"]), String(args.target)) : void 0;
70
+ const changed = verification?.filter((check) => check.missingOrChanged > 0) ?? [];
71
+ const result = {
72
+ ...report,
73
+ ...verification && {
74
+ verification: {
75
+ tablesChecked: verification.length,
76
+ rowsBefore: verification.reduce((sum, check) => sum + check.before, 0),
77
+ rowsAfter: verification.reduce((sum, check) => sum + check.after, 0),
78
+ missingOrChanged: changed
79
+ }
80
+ }
81
+ };
82
+ if (args.receipt) writeFileSync(String(args.receipt), `${JSON.stringify(result, null, 2)}
83
+ `);
84
+ cliOutput(result, { command: "doctor", operation: "doctor.split-brain.run" });
85
+ if (changed.length > 0 && (process.exitCode ?? 0) === 0) process.exitCode = 1;
86
+ }
87
+ });
88
+
89
+ export {
90
+ doctorSplitBrainCommand
91
+ };
92
+ //# sourceMappingURL=chunk-5ZFFUFH7.js.map
@@ -0,0 +1,114 @@
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
+
17
+ // packages/cleo/src/cli/field-context.ts
18
+ import {
19
+ resolveFieldExtraction
20
+ } from "@cleocode/lafs";
21
+ var currentContext = {
22
+ mvi: "minimal",
23
+ mviSource: "default",
24
+ expectsCustomMvi: false
25
+ };
26
+ function setFieldContext(ctx) {
27
+ currentContext = ctx;
28
+ }
29
+ function getFieldContext() {
30
+ return currentContext;
31
+ }
32
+ function resolveFieldContext(opts) {
33
+ const input = {
34
+ fieldFlag: typeof opts["field"] === "string" ? opts["field"] : void 0,
35
+ fieldsFlag: typeof opts["fields"] === "string" ? opts["fields"] : void 0,
36
+ mviFlag: typeof opts["mvi"] === "string" ? opts["mvi"] : void 0
37
+ };
38
+ return resolveFieldExtraction(input);
39
+ }
40
+ async function withoutOutputPointer(step) {
41
+ const saved = currentContext;
42
+ const { field: _field, ...rest } = saved;
43
+ currentContext = rest;
44
+ try {
45
+ return await step();
46
+ } finally {
47
+ currentContext = saved;
48
+ }
49
+ }
50
+
51
+ // packages/cleo/src/cli/format-context.ts
52
+ var currentResolution = {
53
+ format: "json",
54
+ source: "default",
55
+ quiet: false
56
+ };
57
+ function setFormatContext(resolution) {
58
+ currentResolution = resolution;
59
+ }
60
+ function getFormatContext() {
61
+ return currentResolution;
62
+ }
63
+ function isJsonFormat() {
64
+ return currentResolution.format === "json";
65
+ }
66
+ function isQuiet() {
67
+ return currentResolution.quiet;
68
+ }
69
+
70
+ // packages/cleo/src/cli/output-context.ts
71
+ var OUTPUT_MODES = ["envelope", "id", "table", "count", "silent"];
72
+ var OUTPUT_MODE_ALIASES = {
73
+ json: "envelope"
74
+ };
75
+ function resolveOutputMode(value) {
76
+ if (isOutputMode(value)) return value;
77
+ return OUTPUT_MODE_ALIASES[value];
78
+ }
79
+ var currentMode = "envelope";
80
+ function setOutputMode(mode) {
81
+ currentMode = mode;
82
+ }
83
+ function getOutputMode() {
84
+ return currentMode;
85
+ }
86
+ function isOutputMode(value) {
87
+ return OUTPUT_MODES.includes(value);
88
+ }
89
+
90
+ // packages/cleo/src/cli/summary-context.ts
91
+ var currentSummary = false;
92
+ function setSummaryMode(on) {
93
+ currentSummary = on;
94
+ }
95
+ function getSummaryMode() {
96
+ return currentSummary;
97
+ }
98
+
99
+ export {
100
+ setFieldContext,
101
+ getFieldContext,
102
+ resolveFieldContext,
103
+ withoutOutputPointer,
104
+ setFormatContext,
105
+ getFormatContext,
106
+ isJsonFormat,
107
+ isQuiet,
108
+ resolveOutputMode,
109
+ setOutputMode,
110
+ getOutputMode,
111
+ setSummaryMode,
112
+ getSummaryMode
113
+ };
114
+ //# sourceMappingURL=chunk-6JSJNYH2.js.map
@@ -0,0 +1,85 @@
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
+ defineCommand
18
+ } from "./chunk-PKKZPOOP.js";
19
+ import {
20
+ cliError,
21
+ cliOutput
22
+ } from "./chunk-3ZO3M37V.js";
23
+
24
+ // packages/cleo/src/cli/commands/auth/remove.ts
25
+ function emitLlmCredentialRemoval(outcome, command, operation) {
26
+ if (!outcome.ok) {
27
+ cliError(outcome.message, outcome.exitCode, { name: outcome.code, fix: outcome.fix });
28
+ process.exit(outcome.exitCode);
29
+ }
30
+ for (const path of outcome.result.cleaned) process.stderr.write(`cleaned: ${path}
31
+ `);
32
+ for (const hint of outcome.result.hints) process.stderr.write(`hint: ${hint}
33
+ `);
34
+ cliOutput(outcome.result, { command, operation });
35
+ }
36
+ var authRemoveCommand = defineCommand({
37
+ meta: {
38
+ name: "remove",
39
+ description: "Remove a credential by (provider, label) and suppress its source from future re-seeding. Dispatches to the per-source RemovalStep so claude-code (et al.) entries are handled correctly without deleting external files."
40
+ },
41
+ args: {
42
+ provider: {
43
+ type: "positional",
44
+ description: "Provider id (e.g. anthropic, openai, gemini)",
45
+ required: true
46
+ },
47
+ label: {
48
+ type: "positional",
49
+ description: "Label of the credential to remove (unique within provider)",
50
+ required: true
51
+ },
52
+ json: {
53
+ type: "boolean",
54
+ description: "Output as JSON envelope"
55
+ }
56
+ },
57
+ async run({ args }) {
58
+ const a = args;
59
+ const provider = String(a["provider"] ?? "");
60
+ const label = String(a["label"] ?? "");
61
+ if (!provider) {
62
+ cliError("provider is required", 6, { name: "E_INVALID_INPUT" });
63
+ process.exit(6);
64
+ }
65
+ if (!label) {
66
+ cliError("label is required", 6, { name: "E_INVALID_INPUT" });
67
+ process.exit(6);
68
+ }
69
+ const { removeLlmCredential } = await import(
70
+ /* webpackIgnore: true */
71
+ "@cleocode/core/llm/credential-remove-entry.js"
72
+ );
73
+ emitLlmCredentialRemoval(
74
+ await removeLlmCredential(provider, label),
75
+ "auth-remove",
76
+ "auth.remove"
77
+ );
78
+ }
79
+ });
80
+
81
+ export {
82
+ emitLlmCredentialRemoval,
83
+ authRemoveCommand
84
+ };
85
+ //# sourceMappingURL=chunk-7INMKEAD.js.map
@@ -0,0 +1,278 @@
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
+ defineCommand
18
+ } from "./chunk-PKKZPOOP.js";
19
+ import {
20
+ cliOutput,
21
+ humanLine
22
+ } from "./chunk-3ZO3M37V.js";
23
+
24
+ // packages/cleo/src/cli/commands/doctor-release-readiness.ts
25
+ import { existsSync } from "node:fs";
26
+ import { join, resolve } from "node:path";
27
+ async function runCheck(name, cmd, args, cwd) {
28
+ const { spawnSync } = await import("node:child_process");
29
+ const start = Date.now();
30
+ const result = spawnSync(cmd, args, {
31
+ encoding: "utf8",
32
+ stdio: ["ignore", "pipe", "pipe"],
33
+ cwd
34
+ });
35
+ const durationMs = Date.now() - start;
36
+ const passed = result.status === 0;
37
+ return {
38
+ name,
39
+ status: passed ? "pass" : "fail",
40
+ exitCode: result.status,
41
+ durationMs,
42
+ stdout: (result.stdout ?? "").trim(),
43
+ stderr: (result.stderr ?? "").trim()
44
+ };
45
+ }
46
+ var doctorReleaseReadinessCommand = defineCommand({
47
+ meta: {
48
+ name: "release-readiness",
49
+ description: "Pre-flight release readiness check \u2014 lint matrix + changelog + changeset + npm OIDC + tag-trigger sanity (T10458)"
50
+ },
51
+ args: {
52
+ json: { type: "boolean", description: "Output as JSON" },
53
+ human: { type: "boolean", description: "Force human-readable output" },
54
+ quiet: { type: "boolean", description: "Suppress non-essential output" }
55
+ },
56
+ async run({ args }) {
57
+ const isHuman = args.human === true || !!process.stdout.isTTY && args.json !== true;
58
+ const repoRoot = resolve(process.cwd());
59
+ const startTotal = Date.now();
60
+ const checks = [];
61
+ const biomePath = join(repoRoot, "node_modules", ".bin", "biome");
62
+ const biomeAvailable = existsSync(biomePath);
63
+ if (biomeAvailable) {
64
+ checks.push(await runCheck("biome-lint", biomePath, ["ci", "."], repoRoot));
65
+ } else {
66
+ checks.push({
67
+ name: "biome-lint",
68
+ status: "skip",
69
+ exitCode: null,
70
+ durationMs: 0,
71
+ stdout: "",
72
+ stderr: "biome not found in node_modules/.bin \u2014 skipping"
73
+ });
74
+ }
75
+ const changesetLintScript = join(repoRoot, "scripts", "lint-changesets.mjs");
76
+ if (existsSync(changesetLintScript)) {
77
+ checks.push(await runCheck("changeset-lint", "node", [changesetLintScript], repoRoot));
78
+ } else {
79
+ checks.push({
80
+ name: "changeset-lint",
81
+ status: "skip",
82
+ exitCode: null,
83
+ durationMs: 0,
84
+ stdout: "",
85
+ stderr: "scripts/lint-changesets.mjs not found \u2014 skipping"
86
+ });
87
+ }
88
+ const changelogPath = join(repoRoot, "CHANGELOG.md");
89
+ const changelogExists = existsSync(changelogPath);
90
+ const changelogCheck = {
91
+ name: "changelog-exists",
92
+ status: changelogExists ? "pass" : "fail",
93
+ exitCode: changelogExists ? 0 : 1,
94
+ durationMs: 0,
95
+ stdout: changelogExists ? `Found ${changelogPath}` : "",
96
+ stderr: changelogExists ? "" : `CHANGELOG.md not found at ${changelogPath}`
97
+ };
98
+ checks.push(changelogCheck);
99
+ const packageJsonPath = join(repoRoot, "package.json");
100
+ let oidcCheck;
101
+ if (existsSync(packageJsonPath)) {
102
+ try {
103
+ const pkg = JSON.parse(
104
+ await import("node:fs").then((m) => m.readFileSync(packageJsonPath, "utf8"))
105
+ );
106
+ if (pkg.private === true) {
107
+ oidcCheck = {
108
+ name: "npm-oidc-sanity",
109
+ status: "pass",
110
+ exitCode: 0,
111
+ durationMs: 0,
112
+ stdout: "root package.json is private \u2014 skipping (per-package check applies at publish time)",
113
+ stderr: ""
114
+ };
115
+ } else {
116
+ const hasPublishConfig = typeof pkg.publishConfig === "object" && pkg.publishConfig !== null;
117
+ const accessPublic = hasPublishConfig && pkg.publishConfig.access === "public";
118
+ oidcCheck = {
119
+ name: "npm-oidc-sanity",
120
+ status: accessPublic ? "pass" : "fail",
121
+ exitCode: accessPublic ? 0 : 1,
122
+ durationMs: 0,
123
+ stdout: accessPublic ? "package.json has publishConfig.access=public" : "",
124
+ stderr: accessPublic ? "" : "package.json missing publishConfig.access=public \u2014 required for npm OIDC Trusted Publishing"
125
+ };
126
+ }
127
+ } catch {
128
+ oidcCheck = {
129
+ name: "npm-oidc-sanity",
130
+ status: "fail",
131
+ exitCode: 1,
132
+ durationMs: 0,
133
+ stdout: "",
134
+ stderr: "Failed to parse package.json"
135
+ };
136
+ }
137
+ } else {
138
+ oidcCheck = {
139
+ name: "npm-oidc-sanity",
140
+ status: "fail",
141
+ exitCode: 1,
142
+ durationMs: 0,
143
+ stdout: "",
144
+ stderr: "package.json not found"
145
+ };
146
+ }
147
+ checks.push(oidcCheck);
148
+ const tagWorkflowPath = join(repoRoot, ".github", "workflows", "auto-tag-on-release-merge.yml");
149
+ const tagWorkflowExists = existsSync(tagWorkflowPath);
150
+ let tagTriggerCheck;
151
+ if (tagWorkflowExists) {
152
+ try {
153
+ const content = await import("node:fs").then(
154
+ (m) => m.readFileSync(tagWorkflowPath, "utf8")
155
+ );
156
+ const hasName = content.includes("name:");
157
+ const hasOnTrigger = content.includes("on:") || content.includes("pull_request:");
158
+ const valid = hasName && hasOnTrigger;
159
+ tagTriggerCheck = {
160
+ name: "tag-trigger-sanity",
161
+ status: valid ? "pass" : "fail",
162
+ exitCode: valid ? 0 : 1,
163
+ durationMs: 0,
164
+ stdout: valid ? `Valid workflow at ${tagWorkflowPath}` : "",
165
+ stderr: valid ? "" : "auto-tag-on-release-merge.yml appears malformed"
166
+ };
167
+ } catch {
168
+ tagTriggerCheck = {
169
+ name: "tag-trigger-sanity",
170
+ status: "fail",
171
+ exitCode: 1,
172
+ durationMs: 0,
173
+ stdout: "",
174
+ stderr: "Failed to read auto-tag-on-release-merge.yml"
175
+ };
176
+ }
177
+ } else {
178
+ tagTriggerCheck = {
179
+ name: "tag-trigger-sanity",
180
+ status: "fail",
181
+ exitCode: 1,
182
+ durationMs: 0,
183
+ stdout: "",
184
+ stderr: `.github/workflows/auto-tag-on-release-merge.yml not found`
185
+ };
186
+ }
187
+ checks.push(tagTriggerCheck);
188
+ const tsconfigPath = join(repoRoot, "tsconfig.json");
189
+ if (existsSync(tsconfigPath)) {
190
+ const tscPath = join(repoRoot, "node_modules", ".bin", "tsc");
191
+ if (existsSync(tscPath)) {
192
+ checks.push(await runCheck("typecheck", tscPath, ["--noEmit"], repoRoot));
193
+ } else {
194
+ checks.push({
195
+ name: "typecheck",
196
+ status: "skip",
197
+ exitCode: null,
198
+ durationMs: 0,
199
+ stdout: "",
200
+ stderr: "tsc not found in node_modules/.bin \u2014 skipping"
201
+ });
202
+ }
203
+ } else {
204
+ checks.push({
205
+ name: "typecheck",
206
+ status: "skip",
207
+ exitCode: null,
208
+ durationMs: 0,
209
+ stdout: "",
210
+ stderr: "tsconfig.json not found \u2014 skipping"
211
+ });
212
+ }
213
+ const fastLintScripts = [
214
+ { name: "contracts-dep-lint", script: "scripts/lint-contracts-dep.mjs" },
215
+ { name: "format-error-lint", script: "scripts/lint-format-error-misuse.mjs" },
216
+ { name: "json-stream-lint", script: "scripts/lint-json-stream-hygiene.mjs" }
217
+ ];
218
+ for (const lint of fastLintScripts) {
219
+ const scriptPath = join(repoRoot, lint.script);
220
+ if (existsSync(scriptPath)) {
221
+ checks.push(await runCheck(lint.name, "node", [scriptPath], repoRoot));
222
+ } else {
223
+ checks.push({
224
+ name: lint.name,
225
+ status: "skip",
226
+ exitCode: null,
227
+ durationMs: 0,
228
+ stdout: "",
229
+ stderr: `${lint.script} not found \u2014 skipping`
230
+ });
231
+ }
232
+ }
233
+ const passCount = checks.filter((c) => c.status === "pass").length;
234
+ const failCount = checks.filter((c) => c.status === "fail").length;
235
+ const skipCount = checks.filter((c) => c.status === "skip").length;
236
+ const totalDurationMs = Date.now() - startTotal;
237
+ const ready = failCount === 0;
238
+ const result = {
239
+ ready,
240
+ checks,
241
+ summary: {
242
+ pass: passCount,
243
+ fail: failCount,
244
+ skip: skipCount,
245
+ total: checks.length,
246
+ durationMs: totalDurationMs
247
+ }
248
+ };
249
+ if (isHuman && args.json !== true) {
250
+ humanLine("\nRelease Readiness Check (T10458)\n");
251
+ humanLine(`${"\u2500".repeat(60)}`);
252
+ for (const c of checks) {
253
+ const icon = c.status === "pass" ? "PASS" : c.status === "fail" ? "FAIL" : "SKIP";
254
+ humanLine(` [${icon}] ${c.name} (${c.durationMs}ms)`);
255
+ if (c.status === "fail" && c.stderr) {
256
+ const lines = c.stderr.split("\n").slice(0, 3);
257
+ for (const line of lines) {
258
+ humanLine(` ${line}`);
259
+ }
260
+ }
261
+ }
262
+ humanLine(`${"\u2500".repeat(60)}`);
263
+ humanLine(` Result: ${passCount} passed, ${failCount} failed, ${skipCount} skipped`);
264
+ humanLine(` Total time: ${totalDurationMs}ms`);
265
+ humanLine(` Ready: ${ready ? "YES" : "NO"}
266
+ `);
267
+ }
268
+ cliOutput(result, { command: "doctor", operation: "doctor.release-readiness" });
269
+ if (!ready) {
270
+ process.exitCode = 1;
271
+ }
272
+ }
273
+ });
274
+
275
+ export {
276
+ doctorReleaseReadinessCommand
277
+ };
278
+ //# sourceMappingURL=chunk-A2IUEIM5.js.map