@vercel/cli-support 65.3.1 → 65.4.0

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 (257) hide show
  1. package/README.md +1 -1
  2. package/dist/chunks/add-7NS6HIWC.js +8 -0
  3. package/dist/chunks/add-NMYFDVXW.js +8 -0
  4. package/dist/chunks/add-PMJ5BECU.js +8 -0
  5. package/dist/chunks/build-BCY6HQJG.js +7 -0
  6. package/dist/chunks/{chunk-SKYDLHEZ.js → chunk-2K3ISCQ6.js} +1 -1
  7. package/dist/chunks/{chunk-BL3HBRF6.js → chunk-2TUVL6WE.js} +1 -1
  8. package/dist/chunks/{chunk-22FDWPWY.js → chunk-363SJ4TN.js} +1 -1
  9. package/dist/chunks/chunk-462YCCJZ.js +7 -0
  10. package/dist/chunks/{chunk-KNLGWGUE.js → chunk-4N6LMERQ.js} +6 -6
  11. package/dist/chunks/chunk-527GBU3K.js +7 -0
  12. package/dist/chunks/chunk-5IWFRZQT.js +10 -0
  13. package/dist/chunks/chunk-5KUUMQ3M.js +7 -0
  14. package/dist/chunks/{chunk-IVSC7ZFJ.js → chunk-5V53NA6C.js} +1 -1
  15. package/dist/chunks/chunk-6I6QJHCY.js +7 -0
  16. package/dist/chunks/chunk-6TXEVQA4.js +7 -0
  17. package/dist/chunks/{chunk-2PKEEQ5W.js → chunk-6YXIWZ3X.js} +1 -1
  18. package/dist/chunks/{chunk-7HV7O6DM.js → chunk-7E3WREH5.js} +1 -1
  19. package/dist/chunks/{chunk-Y6AGOERS.js → chunk-7L5QUDUR.js} +1 -1
  20. package/dist/chunks/{chunk-X4762EE4.js → chunk-7QAGSRCU.js} +1 -1
  21. package/dist/chunks/{chunk-NTZ5WWYV.js → chunk-7R6TRRG5.js} +1 -1
  22. package/dist/chunks/{chunk-WCWP4GBR.js → chunk-AYUUSAB7.js} +1 -1
  23. package/dist/chunks/chunk-BVGGTBYE.js +7 -0
  24. package/dist/chunks/{chunk-YN3C5BL5.js → chunk-C7FQMC6D.js} +1 -1
  25. package/dist/chunks/{chunk-2U7DJZSQ.js → chunk-CBVKB3DT.js} +1 -1
  26. package/dist/chunks/{chunk-FDNYYENK.js → chunk-CC6FLKIP.js} +1 -1
  27. package/dist/chunks/chunk-CR3NBTHV.js +7 -0
  28. package/dist/chunks/{chunk-BBKEP7RO.js → chunk-CWM2F235.js} +1 -1
  29. package/dist/chunks/{chunk-IUXSJWL3.js → chunk-DKJL2KV7.js} +1 -1
  30. package/dist/chunks/{chunk-2ACMWVTB.js → chunk-DQ2SVW4R.js} +1 -1
  31. package/dist/chunks/{chunk-SLI2O5X7.js → chunk-EAXMWCOL.js} +2 -2
  32. package/dist/chunks/{chunk-LRYGNQ6C.js → chunk-ECEDD646.js} +1 -1
  33. package/dist/chunks/{chunk-IGDG5CWT.js → chunk-EEUJLJEJ.js} +1 -1
  34. package/dist/chunks/{chunk-VQSLPYAF.js → chunk-EGNR2DEI.js} +1 -1
  35. package/dist/chunks/chunk-EISD3RG7.js +11 -0
  36. package/dist/chunks/{chunk-GVTXA6HG.js → chunk-EKZTFGDX.js} +1 -1
  37. package/dist/chunks/{chunk-CEMPU323.js → chunk-EU2GBIPC.js} +1 -1
  38. package/dist/chunks/{chunk-3ADDGPEN.js → chunk-F6EBOT64.js} +1 -1
  39. package/dist/chunks/chunk-FHU2O7ZJ.js +8 -0
  40. package/dist/chunks/{chunk-KH6565YH.js → chunk-FLHO75XC.js} +1 -1
  41. package/dist/chunks/chunk-FSPPKNKN.js +7 -0
  42. package/dist/chunks/{chunk-43GBAKL2.js → chunk-GCZVIDNG.js} +1 -1
  43. package/dist/chunks/{chunk-G4T7VBGN.js → chunk-HSFKISDH.js} +1 -1
  44. package/dist/chunks/{chunk-OQCMRU3J.js → chunk-HTXDC7E2.js} +2 -2
  45. package/dist/chunks/{chunk-76SVVWPH.js → chunk-IOZ3I765.js} +1 -1
  46. package/dist/chunks/{chunk-UKQMYTWW.js → chunk-JLE7K4SY.js} +1 -1
  47. package/dist/chunks/{chunk-3JGBBS6V.js → chunk-JP33AIDQ.js} +1 -1
  48. package/dist/chunks/{chunk-ULHNMQ7C.js → chunk-JRPNHWA3.js} +1 -1
  49. package/dist/chunks/{chunk-D2BZMGHP.js → chunk-JUSR7V2L.js} +1 -1
  50. package/dist/chunks/{chunk-XB4SKARZ.js → chunk-JWCEHQQF.js} +1 -1
  51. package/dist/chunks/chunk-K5U47EVH.js +7 -0
  52. package/dist/chunks/{chunk-VOCZ34ON.js → chunk-KCKYPLIH.js} +1 -1
  53. package/dist/chunks/{chunk-2WYYGGEO.js → chunk-KGBIRIFF.js} +1 -1
  54. package/dist/chunks/{chunk-RRREFECI.js → chunk-KJA2GKPT.js} +1 -1
  55. package/dist/chunks/{chunk-S5IWVPYT.js → chunk-KPQLUGFI.js} +1 -1
  56. package/dist/chunks/{chunk-S4SJ7GIZ.js → chunk-KQCFC2JL.js} +1 -1
  57. package/dist/chunks/{chunk-XXXRTHTP.js → chunk-KQCROPL3.js} +1 -1
  58. package/dist/chunks/{chunk-3KKFLKQG.js → chunk-KY335KWI.js} +1 -1
  59. package/dist/chunks/{chunk-OWOWPOIE.js → chunk-L3JYCXVB.js} +1 -1
  60. package/dist/chunks/chunk-LFOWP74R.js +7 -0
  61. package/dist/chunks/{chunk-PFNYWWLI.js → chunk-LOBA3E72.js} +1 -1
  62. package/dist/chunks/{chunk-XZV4BFM5.js → chunk-LQVSU5HR.js} +1 -1
  63. package/dist/chunks/{chunk-2H3SB5RP.js → chunk-LW4N3CW6.js} +1 -1
  64. package/dist/chunks/{chunk-6ISAISGD.js → chunk-M2NXKZKX.js} +1 -1
  65. package/dist/chunks/{chunk-F2SWJEYV.js → chunk-MBEKRUTQ.js} +1 -1
  66. package/dist/chunks/{chunk-UJSW56GS.js → chunk-N2FLYCCO.js} +1 -1
  67. package/dist/chunks/{chunk-ZH6KHD55.js → chunk-N6JBQMOF.js} +2 -2
  68. package/dist/chunks/{chunk-OCQPXOTX.js → chunk-NAX6IARA.js} +1 -1
  69. package/dist/chunks/{chunk-4UGHFESV.js → chunk-NGKO2OOU.js} +1 -1
  70. package/dist/chunks/chunk-NW7WWUCQ.js +9 -0
  71. package/dist/chunks/chunk-O4WNSKQR.js +15 -0
  72. package/dist/chunks/{chunk-7Z3WUAO5.js → chunk-O72YDZKD.js} +1 -1
  73. package/dist/chunks/{chunk-LKLH6DZP.js → chunk-OHEOYFBU.js} +1 -1
  74. package/dist/chunks/{chunk-LJBUJ23M.js → chunk-OZCQTXI4.js} +1 -1
  75. package/dist/chunks/{chunk-LCHECISY.js → chunk-Q4KTAQB3.js} +1 -1
  76. package/dist/chunks/{chunk-TZFDVQ72.js → chunk-QIVX6SCR.js} +1 -1
  77. package/dist/chunks/{chunk-7Y46LB43.js → chunk-QVHXFHBV.js} +1 -1
  78. package/dist/chunks/chunk-QVXS234E.js +7 -0
  79. package/dist/chunks/{chunk-SXOSF4O6.js → chunk-QVZAAMGQ.js} +1 -1
  80. package/dist/chunks/chunk-R2BUF6Z7.js +7 -0
  81. package/dist/chunks/{chunk-OGPENBY2.js → chunk-R2XHJDAP.js} +1 -1
  82. package/dist/chunks/{chunk-E6CO6TUM.js → chunk-RMZTB2IU.js} +1 -1
  83. package/dist/chunks/{chunk-LT3UK4K6.js → chunk-SLGUYM42.js} +1 -1
  84. package/dist/chunks/{chunk-7BGKE3JW.js → chunk-SYFG2RM6.js} +1 -1
  85. package/dist/chunks/chunk-T6243EDS.js +7 -0
  86. package/dist/chunks/chunk-TAISZMA2.js +7 -0
  87. package/dist/chunks/{chunk-TO5PJDEN.js → chunk-TEYREL44.js} +1 -1
  88. package/dist/chunks/{chunk-6KVHNQW4.js → chunk-TIPQQ4TG.js} +1 -1
  89. package/dist/chunks/{chunk-DUT4U5YY.js → chunk-U2OBPULW.js} +1 -1
  90. package/dist/chunks/{chunk-OQPXJCMK.js → chunk-UGNIIDHR.js} +1 -1
  91. package/dist/chunks/{chunk-NQWGRKF4.js → chunk-UHBMX3OK.js} +1 -1
  92. package/dist/chunks/{chunk-QMCHGGDX.js → chunk-VNIKIQVE.js} +1 -1
  93. package/dist/chunks/{chunk-DGYHWXD2.js → chunk-WDXW6A4H.js} +2 -2
  94. package/dist/chunks/{chunk-L4NSF346.js → chunk-WEH6XC4Y.js} +1 -1
  95. package/dist/chunks/{chunk-TKBORMUF.js → chunk-WKZ6JSGZ.js} +1 -1
  96. package/dist/chunks/{chunk-WGXKX24Q.js → chunk-WVHCBDTB.js} +1 -1
  97. package/dist/chunks/{chunk-COM5YCHF.js → chunk-XC46OAAT.js} +1 -1
  98. package/dist/chunks/{chunk-WBF36MYT.js → chunk-XVDRGWXM.js} +1 -1
  99. package/dist/chunks/{chunk-IKQTP764.js → chunk-Y5ZMKL7E.js} +1 -1
  100. package/dist/chunks/{chunk-NEFDNROD.js → chunk-YEZJNXQX.js} +1 -1
  101. package/dist/chunks/{chunk-VMMMBWD3.js → chunk-YHULP2KK.js} +1 -1
  102. package/dist/chunks/{chunk-OMCGXRSA.js → chunk-YMZ6WBKB.js} +2 -2
  103. package/dist/chunks/{chunk-URPEIX6M.js → chunk-ZN6CQWVP.js} +1 -1
  104. package/dist/chunks/{chunk-YK7XLFU2.js → chunk-ZQBSAMFL.js} +1 -1
  105. package/dist/chunks/clear-FKVWDCVA.js +8 -0
  106. package/dist/chunks/{compile-vercel-config-3IYM2CHC.js → compile-vercel-config-GWAJE44R.js} +1 -1
  107. package/dist/chunks/config-5WVLG5SE.js +8 -0
  108. package/dist/chunks/{config-ZFIC7N4D.js → config-RMOHN5YT.js} +1 -1
  109. package/dist/chunks/config-validator.mjs +1 -1
  110. package/dist/chunks/{constants-ICJL2EO5.js → constants-JAB7MRSK.js} +1 -1
  111. package/dist/chunks/delete-5WMB4WFR.js +9 -0
  112. package/dist/chunks/delete-EM4JZPFA.js +10 -0
  113. package/dist/chunks/{detect-services-MOXTX5XG.js → detect-services-BSJGB4RM.js} +1 -1
  114. package/dist/chunks/disable-QOM7UHQC.js +7 -0
  115. package/dist/chunks/discard-L5ZH7P5B.js +14 -0
  116. package/dist/chunks/edit-F3VJGCG2.js +9 -0
  117. package/dist/chunks/edit-TM7YCWBU.js +8 -0
  118. package/dist/chunks/enable-72C3QX34.js +7 -0
  119. package/dist/chunks/{export-MHSH7QCX.js → export-EPLYZF2Q.js} +1 -1
  120. package/dist/chunks/{future-FFOGTKMF.js → future-V77DRMQG.js} +1 -1
  121. package/dist/chunks/generate-cert-for-deploy-Y3YHBMPU.js +7 -0
  122. package/dist/chunks/{image-7METSS6F.js → image-CVXEXU5R.js} +1 -1
  123. package/dist/chunks/{import-builders-GM2SERWV.js → import-builders-PGRKJOOE.js} +1 -1
  124. package/dist/chunks/inspect-BTRNXRJT.js +9 -0
  125. package/dist/chunks/{inspect-IAWVHJXQ.js → inspect-CZ7WXYE5.js} +1 -1
  126. package/dist/chunks/inspect-FGDVWAQP.js +13 -0
  127. package/dist/chunks/{inspect-A7WJQQZO.js → inspect-HFDGZNWC.js} +1 -1
  128. package/dist/chunks/{inspect-DI434TAM.js → inspect-T2AIREYK.js} +1 -1
  129. package/dist/chunks/list-CKRRHAOE.js +12 -0
  130. package/dist/chunks/{list-WWU734RK.js → list-FLREMGJR.js} +1 -1
  131. package/dist/chunks/{list-INRPH25K.js → list-ON4YTQRN.js} +1 -1
  132. package/dist/chunks/login-55LJ5ZA6.js +9 -0
  133. package/dist/chunks/{login-R5NQRPQC.js → login-DQRZSD4Z.js} +1 -1
  134. package/dist/chunks/logs-2HQXWOHM.js +7 -0
  135. package/dist/chunks/{ls-S5E2NQMI.js → ls-2HUJHVLA.js} +1 -1
  136. package/dist/chunks/{ls-V2ZSIVO3.js → ls-3DVM5HLK.js} +1 -1
  137. package/dist/chunks/ls-4B3QYHCI.js +8 -0
  138. package/dist/chunks/{ls-MCQ2NS65.js → ls-A7K4XDQB.js} +1 -1
  139. package/dist/chunks/{ls-LIGIBVAT.js → ls-FK5XEJEU.js} +1 -1
  140. package/dist/chunks/{ls-VXH4QYF5.js → ls-QGUKJJY5.js} +1 -1
  141. package/dist/chunks/ls-VTKHPDWS.js +11 -0
  142. package/dist/chunks/mutate-7ADZBCZM.js +9 -0
  143. package/dist/chunks/{notifications-KFZ333V5.js → notifications-XZJXE2K4.js} +1 -1
  144. package/dist/chunks/open-EE5IZQD7.js +7 -0
  145. package/dist/chunks/{openapi-JGYEFJJV.js → openapi-QBX62ZXC.js} +1 -1
  146. package/dist/chunks/{permissions-ZSHKMXBZ.js → permissions-VYJ4LL5R.js} +1 -1
  147. package/dist/chunks/{plugin-offer-Z6FCPQFD.js → plugin-offer-TEGYA3TA.js} +1 -1
  148. package/dist/chunks/{prompt-missing-credentials-KOA7C4QC.js → prompt-missing-credentials-VP6OVCFM.js} +1 -1
  149. package/dist/chunks/publish-2HEK5UMJ.js +15 -0
  150. package/dist/chunks/pull-WRTTSY7J.js +7 -0
  151. package/dist/chunks/purchase-domain-if-available-6S3NLTUI.js +7 -0
  152. package/dist/chunks/push-L3QRGGLC.js +7 -0
  153. package/dist/chunks/{query-JGPO7TNY.js → query-FXXLX6UB.js} +3 -3
  154. package/dist/chunks/{reauthenticate-OZRQFR66.js → reauthenticate-IXQDC4UZ.js} +1 -1
  155. package/dist/chunks/reorder-B4OXSYCI.js +10 -0
  156. package/dist/chunks/reply-F637K6XH.js +9 -0
  157. package/dist/chunks/resolve-E3F6NYQZ.js +12 -0
  158. package/dist/chunks/{resolve-agent-team-KX77HEAF.js → resolve-agent-team-EIPCH766.js} +1 -1
  159. package/dist/chunks/restore-Q25KRZPH.js +16 -0
  160. package/dist/chunks/rm-FWD2NUGX.js +8 -0
  161. package/dist/chunks/rm-JMQ4QKCC.js +8 -0
  162. package/dist/chunks/rm-PPG7P3GN.js +8 -0
  163. package/dist/chunks/rm-SH3DYKNS.js +8 -0
  164. package/dist/chunks/rm-UEBLKFVC.js +8 -0
  165. package/dist/chunks/{routes-P6LKQCWH.js → routes-PKTWMDWQ.js} +1 -1
  166. package/dist/chunks/rule-inspect-LKQA5I4V.js +8 -0
  167. package/dist/chunks/{schema-YOEAK4VX.js → schema-FBV42W7N.js} +1 -1
  168. package/dist/chunks/{schema-BEUO7G52.js → schema-ZWE5MNMG.js} +1 -1
  169. package/dist/chunks/{select-org-OMLGQEKK.js → select-org-WMB752Z6.js} +1 -1
  170. package/dist/chunks/set-UTYIPOLC.js +7 -0
  171. package/dist/chunks/setup-and-link-ZLY5XQW5.js +7 -0
  172. package/dist/chunks/{skills-4J2NC2QI.js → skills-RKIGVVNM.js} +2 -2
  173. package/dist/chunks/{tags-ZXZQEXOV.js → tags-UCLZ5UMX.js} +1 -1
  174. package/dist/chunks/{types-SK6J2HFE.js → types-YM7TMHXW.js} +1 -1
  175. package/dist/chunks/{update-25CKNOY5.js → update-BGDQ5TXO.js} +1 -1
  176. package/dist/commands/build/index.js +1 -1
  177. package/dist/commands/deploy/index.js +4 -4
  178. package/dist/commands/dev/index.js +4 -4
  179. package/dist/commands/env/index.js +1 -1
  180. package/dist/commands/link/index.js +1 -1
  181. package/dist/commands/list/index.js +1 -1
  182. package/dist/commands/project/index.js +8 -8
  183. package/dist/commands-account.js +8 -8
  184. package/dist/commands-ai.js +12 -12
  185. package/dist/commands-blob.js +8 -8
  186. package/dist/commands-core.js +11 -11
  187. package/dist/commands-deployments.js +1 -1
  188. package/dist/commands-flags.js +6 -6
  189. package/dist/commands-integrations.js +16 -16
  190. package/dist/commands-observability.js +5 -5
  191. package/dist/commands-routing.js +18 -18
  192. package/dist/help.js +1 -1
  193. package/dist/index.js +5 -3
  194. package/dist/internal-build.js +1 -1
  195. package/dist/package.json +60 -61
  196. package/dist/root-help-commands.mjs +1 -1
  197. package/dist/vc.js +148 -137
  198. package/dist/version.mjs +1 -1
  199. package/package.json +54 -54
  200. package/dist/chunks/add-5YZQTIQM.js +0 -8
  201. package/dist/chunks/add-A524QQ2H.js +0 -8
  202. package/dist/chunks/add-V4JMUHKO.js +0 -8
  203. package/dist/chunks/build-K2PVDJZ4.js +0 -7
  204. package/dist/chunks/chunk-3AYYFYZG.js +0 -7
  205. package/dist/chunks/chunk-5IASAERQ.js +0 -7
  206. package/dist/chunks/chunk-76KGQU2G.js +0 -7
  207. package/dist/chunks/chunk-ABZEMNDR.js +0 -7
  208. package/dist/chunks/chunk-APZULWJC.js +0 -8
  209. package/dist/chunks/chunk-AWMQGOS2.js +0 -7
  210. package/dist/chunks/chunk-B4UE4LVE.js +0 -7
  211. package/dist/chunks/chunk-B4YYOSPY.js +0 -7
  212. package/dist/chunks/chunk-E2SADN6I.js +0 -7
  213. package/dist/chunks/chunk-IA3MXJRC.js +0 -8
  214. package/dist/chunks/chunk-IEPW2YRH.js +0 -7
  215. package/dist/chunks/chunk-LUBUI5GF.js +0 -7
  216. package/dist/chunks/chunk-OKEBIUKZ.js +0 -7
  217. package/dist/chunks/chunk-QZX7VG2V.js +0 -9
  218. package/dist/chunks/chunk-RUXO73ON.js +0 -7
  219. package/dist/chunks/chunk-TPNOSQZ3.js +0 -15
  220. package/dist/chunks/chunk-UNEGQPD3.js +0 -7
  221. package/dist/chunks/chunk-V7BEC3E4.js +0 -10
  222. package/dist/chunks/chunk-YHQ7PPXP.js +0 -7
  223. package/dist/chunks/clear-ZS4KQ7OT.js +0 -8
  224. package/dist/chunks/config-N2SBVW4T.js +0 -8
  225. package/dist/chunks/delete-2ZE2NVHI.js +0 -10
  226. package/dist/chunks/delete-AL57HZDQ.js +0 -9
  227. package/dist/chunks/disable-MKI3BKNH.js +0 -7
  228. package/dist/chunks/discard-SI4H7ST3.js +0 -14
  229. package/dist/chunks/edit-DNWH6SPE.js +0 -8
  230. package/dist/chunks/edit-WYNWDFUJ.js +0 -9
  231. package/dist/chunks/enable-J6MMYPYF.js +0 -7
  232. package/dist/chunks/generate-cert-for-deploy-YZKNGAEQ.js +0 -7
  233. package/dist/chunks/inspect-H2Q7XOWN.js +0 -13
  234. package/dist/chunks/inspect-H5JC2XKI.js +0 -9
  235. package/dist/chunks/list-ELEUTZWJ.js +0 -12
  236. package/dist/chunks/login-ZF2TLCQB.js +0 -9
  237. package/dist/chunks/logs-UD7FEXZ7.js +0 -7
  238. package/dist/chunks/ls-5ZEAKKPQ.js +0 -8
  239. package/dist/chunks/ls-IXRLAJ4L.js +0 -11
  240. package/dist/chunks/mutate-OQWOKLIW.js +0 -9
  241. package/dist/chunks/open-HH6K7ZRC.js +0 -7
  242. package/dist/chunks/publish-FPNQ2US4.js +0 -15
  243. package/dist/chunks/pull-7OGOIKB3.js +0 -7
  244. package/dist/chunks/purchase-domain-if-available-F4LKHVBD.js +0 -7
  245. package/dist/chunks/push-NY3SIK2C.js +0 -7
  246. package/dist/chunks/reorder-4J2STFUS.js +0 -10
  247. package/dist/chunks/reply-EO4NTTPW.js +0 -9
  248. package/dist/chunks/resolve-RPHHRPNM.js +0 -12
  249. package/dist/chunks/restore-TEA6TSVK.js +0 -16
  250. package/dist/chunks/rm-BPILSPUI.js +0 -8
  251. package/dist/chunks/rm-F6XVUDBM.js +0 -8
  252. package/dist/chunks/rm-JCPXV2FN.js +0 -8
  253. package/dist/chunks/rm-LPQRGX7N.js +0 -8
  254. package/dist/chunks/rm-WHUGT6TE.js +0 -8
  255. package/dist/chunks/rule-inspect-BOETGPFO.js +0 -8
  256. package/dist/chunks/set-5XY27S7R.js +0 -7
  257. package/dist/chunks/setup-and-link-A7M3QT52.js +0 -7
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{RoutesAddTelemetryClient,RoutesTelemetryClient}from"./chunks/chunk-TO5PJDEN.js";import{ALL_ACTION_CHOICES,MAX_CONDITIONS,MAX_DESCRIPTION_LENGTH,MAX_NAME_LENGTH,REDIRECT_STATUS_CODES,VALID_SYNTAXES,collectActionDetails,collectHeadersAndTransforms,collectInteractiveConditions,convertRouteToCurrentRoute,extractTransformFlags,generateRoute,generatedRouteToAddInput,parseConditions,populateRouteEnv,printGeneratedRoutePreview,runInteractiveEditLoop,stripQuotes,validateActionFlags}from"./chunks/chunk-43GBAKL2.js";import{getRouteVersions}from"./chunks/chunk-BVH2AEFE.js";import{TRANSFORM_TYPE_LABELS,findVersionById,formatCondition,formatTransform,getRouteTypeLabel,getRoutes,getSrcSyntaxLabel,isTargetTransform,offerAutoPromote,parsePosition,parseSubcommandArgs,withGlobalFlags as withGlobalFlags2}from"./chunks/chunk-6ISAISGD.js";import{LOCAL_SCHEDULES_SESSION_HEADER,isLocalSchedulesOrigin,readLocalSchedulesSessions}from"./chunks/chunk-SF4E3AQ3.js";import{getLinkedFlagsProject,getProjectNameFromFlags}from"./chunks/chunk-ULHNMQ7C.js";import{parseSubcommandArguments,requireProjectContext,validateRequiredArguments}from"./chunks/chunk-NEFDNROD.js";import{formatMetricValue,generateSparkline}from"./chunks/chunk-WBF36MYT.js";import{OBSERVABILITY_METRICS_PATH}from"./chunks/chunk-FDNYYENK.js";import"./chunks/chunk-IVSSTHB6.js";import{writeJsonError}from"./chunks/chunk-7Z3WUAO5.js";import{Now,printDeploymentStatus}from"./chunks/chunk-OMCGXRSA.js";import"./chunks/chunk-VT6RIZJH.js";import{require_dist as require_dist2}from"./chunks/chunk-ZH6KHD55.js";import"./chunks/chunk-ZFRNVIHI.js";import"./chunks/chunk-UJSW56GS.js";import{getCustomEnvironments,pickCustomEnvironment}from"./chunks/chunk-F7AVGV4Y.js";import"./chunks/chunk-ANMDN3EG.js";import{readJSONFile}from"./chunks/chunk-OGPENBY2.js";import"./chunks/chunk-F2SWJEYV.js";import"./chunks/chunk-U56NHYAH.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{handleValidationError,normalizeRepeatableStringFilters,resolveTimeRange,validateIntegerRangeWithDefault,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-RW3X523R.js";import"./chunks/chunk-ID663OJ7.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import"./chunks/chunk-D6REP5QQ.js";import{printUnknownCommand}from"./chunks/chunk-V7BEC3E4.js";import"./chunks/chunk-2EYYB6YN.js";import{getAliases}from"./chunks/chunk-SKYDLHEZ.js";import{INVALID_NEXT_MESSAGE,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import{formatTable,strlen}from"./chunks/chunk-LSQREJXO.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{elapsed}from"./chunks/chunk-Q7D7RGXM.js";import"./chunks/chunk-FBYA6LLM.js";import"./chunks/chunk-GZNDA6SV.js";import"./chunks/chunk-OCR5CRTH.js";import{applyDeprecatedTargetFlag}from"./chunks/chunk-X4762EE4.js";import"./chunks/chunk-25565AGS.js";import{resolveProjectContext}from"./chunks/chunk-3JGBBS6V.js";import{getRenamedOption,reportRenamedOptionError}from"./chunks/chunk-IEPW2YRH.js";import{formatProject}from"./chunks/chunk-6OVX3PWM.js";import{ensureLink}from"./chunks/chunk-OQCMRU3J.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-BL3HBRF6.js";import{getDeployment}from"./chunks/chunk-R6BEOVTU.js";import"./chunks/chunk-HCRD3JFL.js";import"./chunks/chunk-7EJQLVWX.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{getNextPageCommand,printNextPageCommand}from"./chunks/chunk-QMCHGGDX.js";import{require_format}from"./chunks/chunk-PFD7LETF.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{getSubcommand as getSubcommand2}from"./chunks/chunk-ETV3C2CV.js";import{validateLsArgs}from"./chunks/chunk-KW6GSQXV.js";import"./chunks/chunk-SCV7XEEO.js";import{KMS_ALGORITHMS,PROJECT_GRANT_POLICY_KIND,activateKeySubcommand,addGrantSubcommand,addKeySubcommand,addSubcommand7 as addSubcommand,addSubcommand9 as addSubcommand2,addToGroupSubcommand,analyzeSubcommand,createGroupSubcommand,createSubcommand5 as createSubcommand,createSubcommand8 as createSubcommand2,decideSubcommand,deleteGroupSubcommand,deleteSubcommand2 as deleteSubcommand,deleteSubcommand3,diagnoseSubcommand,disableSubcommand3 as disableSubcommand2,enableSubcommand4 as enableSubcommand2,executionsListSubcommand,executionsSubcommand,experimentsCommand,getCommandAliases,getSubcommand2 as getSubcommand,importKeySubcommand,importSubcommand2 as importSubcommand,inspectGroupSubcommand,inspectSubcommand11 as inspectSubcommand3,inspectSubcommand5 as inspectSubcommand,inspectSubcommand8 as inspectSubcommand2,instancesInspectSubcommand,instancesListSubcommand,instancesRestartSubcommand,instancesSubcommand,invokeSubcommand,isProjectGrant,issuerJwksUrl,issuerUrl,kmsCommand,listSubcommand13 as listSubcommand2,listSubcommand17 as listSubcommand3,listSubcommand20 as listSubcommand4,listSubcommand21 as listSubcommand6,listSubcommand9 as listSubcommand,listVersionsSubcommand,microfrontendsCommand,openSubcommand2 as openSubcommand,promoteSubcommand,pullSubcommand,redeployCommand,redirectsCommand,removeCommand,removeFromGroupSubcommand,removeGrantSubcommand,removeSubcommand12 as removeSubcommand,removeSubcommand14 as removeSubcommand2,reseedEnrollmentSubcommand,restartAnalysisSubcommand,restoreSubcommand,returnToDraftSubcommand,revokeKeySubcommand,scaleSubcommand,schedulesCommand,setRampSubcommand,startSubcommand,updateGrantSubcommand,updateSubcommand11 as updateSubcommand3,updateSubcommand4 as updateSubcommand,updateSubcommand8 as updateSubcommand2,uploadSubcommand}from"./chunks/chunk-TPNOSQZ3.js";import"./chunks/chunk-LUBUI5GF.js";import"./chunks/chunk-GVTXA6HG.js";import{addSubcommand as addSubcommand3,deleteSubcommand as deleteSubcommand2,disableSubcommand,discardSubcommand,editSubcommand,enableSubcommand,exportSubcommand,inspectSubcommand as inspectSubcommand4,listSubcommand as listSubcommand5,listVersionsSubcommand as listVersionsSubcommand2,publishSubcommand,reorderSubcommand,restoreSubcommand as restoreSubcommand2,routesCommand}from"./chunks/chunk-5IASAERQ.js";import"./chunks/chunk-WGXKX24Q.js";import"./chunks/chunk-E2SADN6I.js";import"./chunks/chunk-ABZEMNDR.js";import"./chunks/chunk-3AYYFYZG.js";import"./chunks/chunk-76KGQU2G.js";import"./chunks/chunk-UNEGQPD3.js";import"./chunks/chunk-YHQ7PPXP.js";import"./chunks/chunk-NQWGRKF4.js";import"./chunks/chunk-IGDG5CWT.js";import"./chunks/chunk-QZX7VG2V.js";import"./chunks/chunk-3ADDGPEN.js";import"./chunks/chunk-B4YYOSPY.js";import"./chunks/chunk-PFNYWWLI.js";import{DEV_RESOURCE_TOKEN}from"./chunks/chunk-NTZ5WWYV.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-LJBUJ23M.js";import"./chunks/chunk-OKEBIUKZ.js";import{help}from"./chunks/chunk-KH6565YH.js";import{table}from"./chunks/chunk-773GOZIR.js";import{printError}from"./chunks/chunk-G4T7VBGN.js";import"./chunks/chunk-67GZ5REA.js";import"./chunks/chunk-BS32OUOC.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"./chunks/chunk-2PKEEQ5W.js";import"./chunks/chunk-PUKYAALC.js";import{getContextName,getScope}from"./chunks/chunk-B4UE4LVE.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-NWGBDBZI.js";import"./chunks/chunk-FGFLTLEA.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,buildCommandWithGlobalFlags,buildCommandWithYes,getErrorRecovery,getExitCodeForReason,openUrlInBrowserCommand,outputActionRequired,outputAgentError,withGlobalFlags}from"./chunks/chunk-DGYHWXD2.js";import"./chunks/chunk-IUXSJWL3.js";import{getLinkedProject,getProjectByNameOrId,humanizePath,require_lib,require_pluralize,responseError,ua_default}from"./chunks/chunk-KNLGWGUE.js";import{ALIGNED_LABEL_WIDTH,formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-ADLBLGT3.js";import"./chunks/chunk-BBKEP7RO.js";import"./chunks/chunk-4NTBYNFR.js";import{isArgumentError,parseArguments,takeCommand}from"./chunks/chunk-VOCZ34ON.js";import{getTeamByIdOrSlug,quoteArg}from"./chunks/chunk-F53OKXYI.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,getProjectOptionFromArgs,getSameSubcommandSuggestionFlags,validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedInput,warnDeprecatedOption,warnDeprecatedSubcommand}from"./chunks/chunk-AWMQGOS2.js";import{directFetch,getFetchDispatcher}from"./chunks/chunk-FUX6LKNP.js";import"./chunks/chunk-OPORM35X.js";import"./chunks/chunk-4SAVH3H7.js";import{NowError,ProjectNotFound,isAPIError}from"./chunks/chunk-6VH56CX2.js";import{cmd,getCommandName,getCommandNamePlain}from"./chunks/chunk-JESNVRVR.js";import{emoji,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-XP3FT56R.js";import"./chunks/chunk-BLUPZPAS.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-OO572JUC.js";import"./chunks/chunk-D3AHZ5LI.js";import"./chunks/chunk-2GHZGOWT.js";import"./chunks/chunk-YHPPP3SF.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BRQUZ5NC.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var DaemonsTelemetryClient=class extends TelemetryClient{constructor(){super(...arguments);this.sub=subcommand=>value=>this.trackSubcommand(subcommand,value);this.arg=arg=>value=>this.trackCliArgument({arg,value:value&&this.redactedValue});this.option=option=>value=>this.trackRedactedCliOption(option,value);this.flag=flag=>value=>{value&&this.trackCliFlag(flag)};this.trackCliSubcommandList=this.sub("list");this.trackCliSubcommandScale=this.sub("scale");this.trackCliSubcommandInstances=this.sub("instances");this.trackCliSubcommandInspect=this.sub("inspect");this.trackCliSubcommandRestart=this.sub("restart");this.trackCliArgumentDaemon=this.arg("daemon");this.trackCliArgumentInstance=this.arg("instance");this.trackCliOptionNext=this.option("next");this.trackCliOptionSince=this.option("since");this.trackCliOptionUntil=this.option("until");this.trackCliFlagReset=this.flag("reset");this.trackCliFlagJson=this.flag("json")}trackSubcommand(subcommand,value){this.trackCliSubcommand({subcommand,value})}trackCliArgumentOverrides(value){let count=value.length?String(value.length):void 0;this.trackCliArgument({arg:"overrides",value:count})}trackCliOptionLimit(value){value!==void 0&&this.trackCliOption({option:"limit",value:String(value)})}trackOptions(flags){this.trackCliOptionProject(flags["--project"]),this.trackCliOptionLimit(flags["--limit"]),this.trackCliOptionNext(flags["--next"]),this.trackCliOptionSince(flags["--since"]),this.trackCliOptionUntil(flags["--until"]),this.trackCliFlagReset(flags["--reset"]),this.trackCliOptionFormat(flags["--format"]),this.trackCliFlagJson(flags["--json"])}};var import_chalk2=__toESM(require_source(),1);var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);function isJsonOutput(client){return wantsMachineReadableOutput("daemons",client.argv)||client.nonInteractive}function reportError(client,err,exitCode=1){if(!isJsonOutput(client))return printError(err,client),exitCode;let apiError=isAPIError(err)?err:void 0,reason=exitCode===2?AGENT_REASON.INVALID_ARGUMENTS:AGENT_REASON.API_ERROR,message=exitCode===2&&err instanceof Error?err.message:"Couldn't complete the daemon command.";return writeJsonError(client,{status:AGENT_STATUS.ERROR,reason,message,...apiError&&{...getErrorRecovery(apiError,client),data:{httpStatus:apiError.status}}},exitCode)}function toDaemon(daemon){if(!("replicas"in daemon))return daemon;let{replicas:instances,config,...rest}=daemon;if(!config)return{...rest,instances};let{replicas,configuredReplicas,...restConfig}=config;return{...rest,config:{...restConfig,instances:replicas,configuredInstances:configuredReplicas},instances}}var DAEMON_NAME_PATTERN=/^[a-zA-Z0-9_-]+$/;function instanceIdArg(client,args,usage){return args.length===0?failure(client,AGENT_REASON.INVALID_ARGUMENTS,"An instance ID is required.",{command:"instances list",when:"List available instances"},2):args.length===1&&/^dmni_[0-9a-hjkmnp-tv-z]{26}$/.test(args[0])?args[0]:usageError(client,"Expected one instance ID, like dmni_01k7d0q5w3x8y9z0a1b2c3d4e5.",usage)}function parse(client,argv,options,usage){let parsed;try{let spec=getFlagsSpecification(options);parsed=parseArguments(argv,spec)}catch(err){return reportError(client,err,2)}let telemetry=new DaemonsTelemetryClient({opts:{store:client.telemetryEventStore}});telemetry.trackOptions(parsed.flags);let format2=validateJsonOutput(parsed.flags);if(!format2.valid)return usageError(client,format2.error,usage);let asJson=format2.jsonOutput||client.nonInteractive;return{...parsed,asJson,telemetry}}async function resolveProject(client,project){let link=isJsonOutput(client)?await resolveProjectContext({client,projectNameOrId:project,projectNotFoundHandling:"return",quiet:!0}):await requireProjectContext(client,"daemons",project);return typeof link=="number"?link:link.status==="error"?reportError(client,new Error("Could not resolve project context."),link.exitCode):link.status!=="linked"?failure(client,project?AGENT_REASON.PROJECT_NOT_FOUND:AGENT_REASON.NOT_LINKED,project?`Couldn't find project ${project}.`:"No linked project found.",{command:"list --project <PROJECT>",when:"Select an existing project"}):(client.config.currentTeam=link.org.type==="team"?link.org.id:void 0,{...link,target:`${link.org.slug}/${link.project.name}`})}function daemonsCommand(client,command2){return withGlobalFlags(client,`daemons ${command2}`,{preserveProject:!0})}function failure(client,reason,message,next,exitCode=1){let command2=daemonsCommand(client,next.command);return output_manager_default.stopSpinner(),isJsonOutput(client)?writeJsonError(client,{status:AGENT_STATUS.ERROR,reason,message,next:[{...next,command:command2}]},exitCode):(output_manager_default.fatal(message),output_manager_default.print(`
7
+ import{RoutesAddTelemetryClient,RoutesTelemetryClient}from"./chunks/chunk-TEYREL44.js";import{ALL_ACTION_CHOICES,MAX_CONDITIONS,MAX_DESCRIPTION_LENGTH,MAX_NAME_LENGTH,REDIRECT_STATUS_CODES,VALID_SYNTAXES,collectActionDetails,collectHeadersAndTransforms,collectInteractiveConditions,convertRouteToCurrentRoute,extractTransformFlags,generateRoute,generatedRouteToAddInput,parseConditions,populateRouteEnv,printGeneratedRoutePreview,runInteractiveEditLoop,stripQuotes,validateActionFlags}from"./chunks/chunk-GCZVIDNG.js";import{getRouteVersions}from"./chunks/chunk-BVH2AEFE.js";import{TRANSFORM_TYPE_LABELS,findVersionById,formatCondition,formatTransform,getRouteTypeLabel,getRoutes,getSrcSyntaxLabel,isTargetTransform,offerAutoPromote,parsePosition,parseSubcommandArgs,withGlobalFlags as withGlobalFlags2}from"./chunks/chunk-M2NXKZKX.js";import{LOCAL_SCHEDULES_SESSION_HEADER,isLocalSchedulesOrigin,readLocalSchedulesSessions}from"./chunks/chunk-SF4E3AQ3.js";import{getLinkedFlagsProject,getProjectNameFromFlags}from"./chunks/chunk-JRPNHWA3.js";import{parseSubcommandArguments,requireProjectContext,validateRequiredArguments}from"./chunks/chunk-YEZJNXQX.js";import{formatMetricValue,generateSparkline}from"./chunks/chunk-XVDRGWXM.js";import{OBSERVABILITY_METRICS_PATH}from"./chunks/chunk-CC6FLKIP.js";import"./chunks/chunk-IVSSTHB6.js";import{writeJsonError}from"./chunks/chunk-O72YDZKD.js";import{Now,printDeploymentStatus}from"./chunks/chunk-YMZ6WBKB.js";import"./chunks/chunk-VT6RIZJH.js";import{require_dist as require_dist2}from"./chunks/chunk-N6JBQMOF.js";import"./chunks/chunk-ZFRNVIHI.js";import"./chunks/chunk-N2FLYCCO.js";import{getCustomEnvironments,pickCustomEnvironment}from"./chunks/chunk-F7AVGV4Y.js";import"./chunks/chunk-ANMDN3EG.js";import{readJSONFile}from"./chunks/chunk-R2XHJDAP.js";import"./chunks/chunk-MBEKRUTQ.js";import"./chunks/chunk-U56NHYAH.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{handleValidationError,normalizeRepeatableStringFilters,resolveTimeRange,validateIntegerRangeWithDefault,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-RW3X523R.js";import"./chunks/chunk-ID663OJ7.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import"./chunks/chunk-D6REP5QQ.js";import{printUnknownCommand}from"./chunks/chunk-5IWFRZQT.js";import"./chunks/chunk-2EYYB6YN.js";import{getAliases}from"./chunks/chunk-2K3ISCQ6.js";import{INVALID_NEXT_MESSAGE,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import{formatTable,strlen}from"./chunks/chunk-LSQREJXO.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{elapsed}from"./chunks/chunk-Q7D7RGXM.js";import"./chunks/chunk-FBYA6LLM.js";import"./chunks/chunk-GZNDA6SV.js";import"./chunks/chunk-OCR5CRTH.js";import{applyDeprecatedTargetFlag}from"./chunks/chunk-7QAGSRCU.js";import"./chunks/chunk-25565AGS.js";import{resolveProjectContext}from"./chunks/chunk-JP33AIDQ.js";import{formatProject}from"./chunks/chunk-6OVX3PWM.js";import{ensureLink}from"./chunks/chunk-HTXDC7E2.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-2TUVL6WE.js";import{getDeployment}from"./chunks/chunk-R6BEOVTU.js";import"./chunks/chunk-HCRD3JFL.js";import"./chunks/chunk-7EJQLVWX.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{getNextPageCommand,printNextPageCommand}from"./chunks/chunk-VNIKIQVE.js";import{require_format}from"./chunks/chunk-PFD7LETF.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-T6243EDS.js";import{getSubcommand as getSubcommand2}from"./chunks/chunk-ETV3C2CV.js";import{validateLsArgs}from"./chunks/chunk-KW6GSQXV.js";import"./chunks/chunk-SCV7XEEO.js";import{KMS_ALGORITHMS,PROJECT_GRANT_POLICY_KIND,activateKeySubcommand,addGrantSubcommand,addKeySubcommand,addSubcommand7 as addSubcommand,addSubcommand9 as addSubcommand2,addToGroupSubcommand,analyzeSubcommand,createGroupSubcommand,createSubcommand5 as createSubcommand,createSubcommand8 as createSubcommand2,decideSubcommand,deleteGroupSubcommand,deleteSubcommand2 as deleteSubcommand,deleteSubcommand3,diagnoseSubcommand,disableSubcommand3 as disableSubcommand2,enableSubcommand4 as enableSubcommand2,executionsListSubcommand,executionsSubcommand,experimentsCommand,getCommandAliases,getSubcommand2 as getSubcommand,importKeySubcommand,importSubcommand2 as importSubcommand,inspectGroupSubcommand,inspectSubcommand11 as inspectSubcommand3,inspectSubcommand5 as inspectSubcommand,inspectSubcommand8 as inspectSubcommand2,instancesInspectSubcommand,instancesListSubcommand,instancesRestartSubcommand,instancesSubcommand,invokeSubcommand,isProjectGrant,issuerJwksUrl,issuerUrl,kmsCommand,listSubcommand13 as listSubcommand2,listSubcommand17 as listSubcommand3,listSubcommand20 as listSubcommand4,listSubcommand21 as listSubcommand6,listSubcommand9 as listSubcommand,listVersionsSubcommand,microfrontendsCommand,openSubcommand2 as openSubcommand,promoteSubcommand,pullSubcommand,redeployCommand,redirectsCommand,removeCommand,removeFromGroupSubcommand,removeGrantSubcommand,removeSubcommand12 as removeSubcommand,removeSubcommand14 as removeSubcommand2,reseedEnrollmentSubcommand,restartAnalysisSubcommand,restoreSubcommand,returnToDraftSubcommand,revokeKeySubcommand,scaleSubcommand,schedulesCommand,setRampSubcommand,startSubcommand,updateGrantSubcommand,updateSubcommand11 as updateSubcommand3,updateSubcommand4 as updateSubcommand,updateSubcommand8 as updateSubcommand2,uploadSubcommand}from"./chunks/chunk-O4WNSKQR.js";import"./chunks/chunk-6I6QJHCY.js";import"./chunks/chunk-EKZTFGDX.js";import{addSubcommand as addSubcommand3,deleteSubcommand as deleteSubcommand2,disableSubcommand,discardSubcommand,editSubcommand,enableSubcommand,exportSubcommand,inspectSubcommand as inspectSubcommand4,listSubcommand as listSubcommand5,listVersionsSubcommand as listVersionsSubcommand2,publishSubcommand,reorderSubcommand,restoreSubcommand as restoreSubcommand2,routesCommand}from"./chunks/chunk-462YCCJZ.js";import"./chunks/chunk-WVHCBDTB.js";import"./chunks/chunk-TAISZMA2.js";import"./chunks/chunk-527GBU3K.js";import"./chunks/chunk-CR3NBTHV.js";import"./chunks/chunk-BVGGTBYE.js";import"./chunks/chunk-6TXEVQA4.js";import"./chunks/chunk-5KUUMQ3M.js";import"./chunks/chunk-UHBMX3OK.js";import"./chunks/chunk-EEUJLJEJ.js";import"./chunks/chunk-NW7WWUCQ.js";import"./chunks/chunk-F6EBOT64.js";import"./chunks/chunk-LFOWP74R.js";import"./chunks/chunk-LOBA3E72.js";import{DEV_RESOURCE_TOKEN}from"./chunks/chunk-7R6TRRG5.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-OZCQTXI4.js";import"./chunks/chunk-FSPPKNKN.js";import{help}from"./chunks/chunk-FLHO75XC.js";import{table}from"./chunks/chunk-773GOZIR.js";import{printError}from"./chunks/chunk-HSFKISDH.js";import"./chunks/chunk-67GZ5REA.js";import"./chunks/chunk-BS32OUOC.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"./chunks/chunk-6YXIWZ3X.js";import"./chunks/chunk-PUKYAALC.js";import{getContextName,getScope}from"./chunks/chunk-K5U47EVH.js";import{require_ms}from"./chunks/chunk-MXTC4ZAQ.js";import"./chunks/chunk-NWGBDBZI.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,buildCommandWithGlobalFlags,buildCommandWithYes,getErrorRecovery,getExitCodeForReason,openUrlInBrowserCommand,outputActionRequired,outputAgentError,withGlobalFlags}from"./chunks/chunk-WDXW6A4H.js";import"./chunks/chunk-DKJL2KV7.js";import{getLinkedProject,getProjectByNameOrId,humanizePath,require_lib,require_pluralize,responseError,ua_default}from"./chunks/chunk-4N6LMERQ.js";import{ALIGNED_LABEL_WIDTH,formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-ADLBLGT3.js";import"./chunks/chunk-CWM2F235.js";import"./chunks/chunk-4NTBYNFR.js";import{getTypedOptionName,isArgumentError,parseArguments,takeCommand}from"./chunks/chunk-KCKYPLIH.js";import{getTeamByIdOrSlug,quoteArg}from"./chunks/chunk-F53OKXYI.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,getProjectOptionFromArgs,getSameSubcommandSuggestionFlags,validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedInput,warnDeprecatedOption,warnDeprecatedSubcommand}from"./chunks/chunk-QVXS234E.js";import{directFetch,getFetchDispatcher}from"./chunks/chunk-FUX6LKNP.js";import"./chunks/chunk-OPORM35X.js";import"./chunks/chunk-4SAVH3H7.js";import{NowError,ProjectNotFound,isAPIError}from"./chunks/chunk-6VH56CX2.js";import{cmd,getCommandName,getCommandNamePlain}from"./chunks/chunk-JESNVRVR.js";import{emoji,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-XP3FT56R.js";import"./chunks/chunk-BLUPZPAS.js";import{require_dist}from"./chunks/chunk-RM3ZDRYE.js";import"./chunks/chunk-OO572JUC.js";import"./chunks/chunk-D3AHZ5LI.js";import"./chunks/chunk-2GHZGOWT.js";import"./chunks/chunk-YHPPP3SF.js";import{require_source}from"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BRQUZ5NC.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var DaemonsTelemetryClient=class extends TelemetryClient{constructor(){super(...arguments);this.sub=subcommand=>value=>this.trackSubcommand(subcommand,value);this.arg=arg=>value=>this.trackCliArgument({arg,value:value&&this.redactedValue});this.option=option=>value=>this.trackRedactedCliOption(option,value);this.flag=flag=>value=>{value&&this.trackCliFlag(flag)};this.trackCliSubcommandList=this.sub("list");this.trackCliSubcommandScale=this.sub("scale");this.trackCliSubcommandInstances=this.sub("instances");this.trackCliSubcommandInspect=this.sub("inspect");this.trackCliSubcommandRestart=this.sub("restart");this.trackCliArgumentDaemon=this.arg("daemon");this.trackCliArgumentInstance=this.arg("instance");this.trackCliOptionNext=this.option("next");this.trackCliOptionSince=this.option("since");this.trackCliOptionUntil=this.option("until");this.trackCliFlagReset=this.flag("reset");this.trackCliFlagJson=this.flag("json")}trackSubcommand(subcommand,value){this.trackCliSubcommand({subcommand,value})}trackCliArgumentOverrides(value){let count=value.length?String(value.length):void 0;this.trackCliArgument({arg:"overrides",value:count})}trackCliOptionLimit(value){value!==void 0&&this.trackCliOption({option:"limit",value:String(value)})}trackOptions(flags){this.trackCliOptionProject(flags["--project"]),this.trackCliOptionLimit(flags["--limit"]),this.trackCliOptionNext(flags["--next"]),this.trackCliOptionSince(flags["--since"]),this.trackCliOptionUntil(flags["--until"]),this.trackCliFlagReset(flags["--reset"]),this.trackCliOptionFormat(flags["--format"]),this.trackCliFlagJson(flags["--json"])}};var import_chalk2=__toESM(require_source(),1);var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);function isJsonOutput(client){return wantsMachineReadableOutput("daemons",client.argv)||client.nonInteractive}function reportError(client,err,exitCode=1){if(!isJsonOutput(client))return printError(err,client),exitCode;let apiError=isAPIError(err)?err:void 0,reason=exitCode===2?AGENT_REASON.INVALID_ARGUMENTS:AGENT_REASON.API_ERROR,message=exitCode===2&&err instanceof Error?err.message:"Couldn't complete the daemon command.";return writeJsonError(client,{status:AGENT_STATUS.ERROR,reason,message,...apiError&&{...getErrorRecovery(apiError,client),data:{httpStatus:apiError.status}}},exitCode)}function toDaemon(daemon){if(!("replicas"in daemon))return daemon;let{replicas:instances,config,...rest}=daemon;if(!config)return{...rest,instances};let{replicas,configuredReplicas,...restConfig}=config;return{...rest,config:{...restConfig,instances:replicas,configuredInstances:configuredReplicas},instances}}var DAEMON_NAME_PATTERN=/^[a-zA-Z0-9_-]+$/;function instanceIdArg(client,args,usage){return args.length===0?failure(client,AGENT_REASON.INVALID_ARGUMENTS,"An instance ID is required.",{command:"instances list",when:"List available instances"},2):args.length===1&&/^dmni_[0-9a-hjkmnp-tv-z]{26}$/.test(args[0])?args[0]:usageError(client,"Expected one instance ID, like dmni_01k7d0q5w3x8y9z0a1b2c3d4e5.",usage)}function parse(client,argv,options,usage){let parsed;try{let spec=getFlagsSpecification(options);parsed=parseArguments(argv,spec)}catch(err){return reportError(client,err,2)}let telemetry=new DaemonsTelemetryClient({opts:{store:client.telemetryEventStore}});telemetry.trackOptions(parsed.flags);let format2=validateJsonOutput(parsed.flags);if(!format2.valid)return usageError(client,format2.error,usage);let asJson=format2.jsonOutput||client.nonInteractive;return{...parsed,asJson,telemetry}}async function resolveProject(client,project){let link=isJsonOutput(client)?await resolveProjectContext({client,projectNameOrId:project,projectNotFoundHandling:"return",quiet:!0}):await requireProjectContext(client,"daemons",project);return typeof link=="number"?link:link.status==="error"?reportError(client,new Error("Could not resolve project context."),link.exitCode):link.status!=="linked"?failure(client,project?AGENT_REASON.PROJECT_NOT_FOUND:AGENT_REASON.NOT_LINKED,project?`Couldn't find project ${project}.`:"No linked project found.",{command:"list --project <PROJECT>",when:"Select an existing project"}):(client.config.currentTeam=link.org.type==="team"?link.org.id:void 0,{...link,target:`${link.org.slug}/${link.project.name}`})}function daemonsCommand(client,command2){return withGlobalFlags(client,`daemons ${command2}`,{preserveProject:!0})}function failure(client,reason,message,next,exitCode=1){let command2=daemonsCommand(client,next.command);return output_manager_default.stopSpinner(),isJsonOutput(client)?writeJsonError(client,{status:AGENT_STATUS.ERROR,reason,message,next:[{...next,command:command2}]},exitCode):(output_manager_default.fatal(message),output_manager_default.print(`
8
8
  ${next.when}:
9
9
  ${cmd(command2)}
10
10
  `),exitCode)}function usageError(client,message,usage){let next={command:usage,when:"Usage"};return failure(client,AGENT_REASON.INVALID_ARGUMENTS,message,next,2)}function printJson(client,value){return client.stdout.write(`${JSON.stringify(value,null,2)}
@@ -98,7 +98,7 @@ ${import_chalk3.default.yellow("!")} No exposures or metric events in this windo
98
98
  `),0}return printAlignedLabel("Granted",grant.projectId,{gutter:"\u2713"}),printAlignedLabel("Issuer",issuerId),printAlignedLabel("Environments",grant.environments.join(", ")),printAlignedLabel("Token Claims",grant.tokenClaims?"set":import_chalk13.default.gray("none")),output_manager_default.print(`
99
99
  `),output_manager_default.log(`Deployments in ${grant.environments.join(" and ")} can now sign with this issuer. Inspect it: ${getCommandName(`kms inspect ${issuerId}`)}`),0}var import_chalk14=__toESM(require_source(),1);var KmsUpdateGrantTelemetryClient=class extends TelemetryClient{trackCliArgumentIssuerId(issuerId){issuerId&&this.trackCliArgument({arg:"issuerId",value:this.redactedValue})}trackCliArgumentProjectId(projectId){projectId&&this.trackCliArgument({arg:"projectId",value:this.redactedValue})}trackCliOptionEnvironment(environments){environments&&environments.length>0&&this.trackCliOption({option:"environment",value:String(environments.length)})}trackCliOptionTokenClaims(tokenClaims){tokenClaims&&this.trackCliOption({option:"token-claims",value:this.redactedValue})}trackCliFlagRemoveTokenClaims(removeTokenClaims){removeTokenClaims&&this.trackCliFlag("remove-token-claims")}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE12="kms update-grant <issuerId> <projectId>";async function updateGrant(client,argv){let telemetry=new KmsUpdateGrantTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(updateGrantSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags:opts}=parsedArgs,[issuerId,projectId]=args;if(telemetry.trackCliArgumentIssuerId(issuerId),telemetry.trackCliArgumentProjectId(projectId),telemetry.trackCliOptionEnvironment(opts["--environment"]),telemetry.trackCliOptionTokenClaims(opts["--token-claims"]),telemetry.trackCliFlagRemoveTokenClaims(opts["--remove-token-claims"]),telemetry.trackCliOptionFormat(opts["--format"]),telemetry.trackCliFlagJson(opts["--json"]),!issuerId)return missingArgument(client,{reason:AGENT_REASON.MISSING_ISSUER_ID,message:"An issuer ID is required.",usage:USAGE12});if(!projectId)return missingArgument(client,{reason:AGENT_REASON.MISSING_PROJECT,message:`A project ID is required. Run ${getCommandNamePlain(`kms inspect ${issuerId}`)} to list the issuer's grants.`,usage:USAGE12});if(args.length>2)return invalidArgumentCount(client,USAGE12);let formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput||client.nonInteractive,tokenClaimsFlag=opts["--token-claims"],removeTokenClaims=opts["--remove-token-claims"],environments=opts["--environment"]?Array.from(new Set(opts["--environment"])):void 0;if(tokenClaimsFlag&&removeTokenClaims)return invalidInput(client,"--token-claims and --remove-token-claims conflict. Pass one or the other.");if(!environments&&!tokenClaimsFlag&&!removeTokenClaims)return invalidInput(client,"Nothing to update. Pass --environment, --token-claims, or --remove-token-claims.");if(environments){let invalidEnvironments=findInvalidEnvironments(environments);if(invalidEnvironments.length>0)return invalidInput(client,invalidEnvironmentsMessage(invalidEnvironments))}let tokenClaims;if(tokenClaimsFlag)try{tokenClaims=await parseJsonObjectFlag(client,"--token-claims",tokenClaimsFlag)}catch(err){return invalidInput(client,err.message)}let payload={...environments&&{environments},...tokenClaims&&{tokenClaims},...removeTokenClaims&&{tokenClaims:null}},contextName=await getContextName(client);client.nonInteractive||output_manager_default.spinner(`Updating grant for ${projectId} on ${issuerId}`);let grant;try{grant=await updateProjectGrant(client,issuerId,projectId,payload)}catch(err){output_manager_default.stopSpinner();let handled=handleKmsApiError(client,err,{notFound:`Couldn't find a grant for project ${projectId} on issuer ${issuerId}.`,attempted:"Updating a project grant",contextName,next:[{command:kmsSuggestion(`kms inspect ${issuerId}`,client.argv),when:"List the issuer's grants"}]});if(handled!==void 0)return handled;throw err}if(output_manager_default.stopSpinner(),asJson){let jsonOutput=client.nonInteractive?{status:AGENT_STATUS.OK,grant,message:`Grant for project ${grant.projectId} updated.`,next:[{command:getCommandNamePlain(`kms inspect ${issuerId}`),when:"Show the issuer's grants"}]}:grant;return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
100
100
  `),0}return printAlignedLabel("Updated",grant.projectId,{gutter:"\u2713"}),printAlignedLabel("Issuer",issuerId),printAlignedLabel("Environments",grant.environments.join(", ")),printAlignedLabel("Token Claims",grant.tokenClaims?"set":import_chalk14.default.gray("none")),output_manager_default.print(`
101
- `),output_manager_default.log(`Inspect the issuer: ${getCommandName(`kms inspect ${issuerId}`)}`),0}var KmsRmGrantTelemetryClient=class extends TelemetryClient{trackCliArgumentIssuerId(issuerId){issuerId&&this.trackCliArgument({arg:"issuerId",value:this.redactedValue})}trackCliArgumentProjectId(projectId){projectId&&this.trackCliArgument({arg:"projectId",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};var USAGE13="kms rm-grant <issuerId> <projectId>";async function rmGrant(client,argv){let telemetry=new KmsRmGrantTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(removeGrantSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags:opts}=parsedArgs,[issuerId,projectId]=args;if(telemetry.trackCliArgumentIssuerId(issuerId),telemetry.trackCliArgumentProjectId(projectId),telemetry.trackCliFlagYes(opts["--yes"]),!issuerId)return missingArgument(client,{reason:AGENT_REASON.MISSING_ISSUER_ID,message:"An issuer ID is required.",usage:`${USAGE13} --yes`});if(!projectId)return missingArgument(client,{reason:AGENT_REASON.MISSING_PROJECT,message:`A project ID is required. Run ${getCommandNamePlain(`kms inspect ${issuerId}`)} to list the issuer's grants.`,usage:`${USAGE13} --yes`});if(args.length>2)return invalidArgumentCount(client,USAGE13);let skipConfirmation=opts["--yes"]||!1;client.nonInteractive&&!skipConfirmation&&outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:"Removing a grant stops the project from signing new tokens with this issuer. Re-run with --yes to confirm.",next:[{command:buildCommandWithYes(client.argv)}]},1);let contextName=await getContextName(client),grant;if(!skipConfirmation){output_manager_default.spinner(`Fetching issuer ${issuerId}`);let issuer;try{issuer=await getIssuer(client,issuerId)}catch(err){output_manager_default.stopSpinner();let handled=handleKmsApiError(client,err,{notFound:`Issuer not found: ${issuerId}.`,attempted:"Removing a project grant",contextName,next:[{command:kmsSuggestion("kms ls",client.argv),when:"List issuers in this team"}]});if(handled!==void 0)return handled;throw err}if(output_manager_default.stopSpinner(),grant=issuer.policies.filter(isProjectGrant).find(policy=>policy.projectId===projectId),!grant){let message=`No grant for project ${projectId} on issuer ${issuerId}.`;return output_manager_default.error(message),output_manager_default.log(`Run ${getCommandName(`kms inspect ${issuerId}`)} to list its grants.`),1}if(printAlignedLabel("Issuer",issuer.id),printAlignedLabel("Project",grant.projectId),printAlignedLabel("Environments",grant.environments.join(", ")),output_manager_default.print(`
101
+ `),output_manager_default.log(`Inspect the issuer: ${getCommandName(`kms inspect ${issuerId}`)}`),0}var KmsRmGrantTelemetryClient=class extends TelemetryClient{trackCliArgumentIssuerId(issuerId){issuerId&&this.trackCliArgument({arg:"issuerId",value:this.redactedValue})}trackCliArgumentProjectId(projectId){projectId&&this.trackCliArgument({arg:"projectId",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};var USAGE13="kms remove-grant <issuerId> <projectId>";async function rmGrant(client,argv){let telemetry=new KmsRmGrantTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(removeGrantSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags:opts}=parsedArgs,[issuerId,projectId]=args;if(telemetry.trackCliArgumentIssuerId(issuerId),telemetry.trackCliArgumentProjectId(projectId),telemetry.trackCliFlagYes(opts["--yes"]),!issuerId)return missingArgument(client,{reason:AGENT_REASON.MISSING_ISSUER_ID,message:"An issuer ID is required.",usage:`${USAGE13} --yes`});if(!projectId)return missingArgument(client,{reason:AGENT_REASON.MISSING_PROJECT,message:`A project ID is required. Run ${getCommandNamePlain(`kms inspect ${issuerId}`)} to list the issuer's grants.`,usage:`${USAGE13} --yes`});if(args.length>2)return invalidArgumentCount(client,USAGE13);let skipConfirmation=opts["--yes"]||!1;client.nonInteractive&&!skipConfirmation&&outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:"Removing a grant stops the project from signing new tokens with this issuer. Re-run with --yes to confirm.",next:[{command:buildCommandWithYes(client.argv)}]},1);let contextName=await getContextName(client),grant;if(!skipConfirmation){output_manager_default.spinner(`Fetching issuer ${issuerId}`);let issuer;try{issuer=await getIssuer(client,issuerId)}catch(err){output_manager_default.stopSpinner();let handled=handleKmsApiError(client,err,{notFound:`Issuer not found: ${issuerId}.`,attempted:"Removing a project grant",contextName,next:[{command:kmsSuggestion("kms ls",client.argv),when:"List issuers in this team"}]});if(handled!==void 0)return handled;throw err}if(output_manager_default.stopSpinner(),grant=issuer.policies.filter(isProjectGrant).find(policy=>policy.projectId===projectId),!grant){let message=`No grant for project ${projectId} on issuer ${issuerId}.`;return output_manager_default.error(message),output_manager_default.log(`Run ${getCommandName(`kms inspect ${issuerId}`)} to list its grants.`),1}if(printAlignedLabel("Issuer",issuer.id),printAlignedLabel("Project",grant.projectId),printAlignedLabel("Environments",grant.environments.join(", ")),output_manager_default.print(`
102
102
  `),!await client.input.confirm(`Remove ${param(grant.projectId)}'s access to this issuer?`,!1))return output_manager_default.log("Canceled"),0}client.nonInteractive||output_manager_default.spinner(`Removing grant for ${projectId}`);try{await deleteProjectGrant(client,issuerId,projectId)}catch(err){output_manager_default.stopSpinner();let handled=handleKmsApiError(client,err,{notFound:`No grant for project ${projectId} on issuer ${issuerId}.`,attempted:"Removing a project grant",contextName,next:[{command:kmsSuggestion(`kms inspect ${issuerId}`,client.argv),when:"List the issuer's grants"}]});if(handled!==void 0)return handled;throw err}return output_manager_default.stopSpinner(),client.nonInteractive?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.OK,grant:{issuerId,projectId},message:`Grant for project ${projectId} removed.`,next:[{command:getCommandNamePlain(`kms inspect ${issuerId}`),when:"Show the issuer's remaining grants"}]},null,2)}
103
103
  `),0):(printAlignedLabel("Removed",projectId,{gutter:"\u2713"}),printAlignedLabel("Issuer",issuerId),printAlignedLabel("Team",contextName),0)}var COMMAND_CONFIG2={list:getCommandAliases(listSubcommand3),inspect:getCommandAliases(inspectSubcommand3),add:getCommandAliases(addSubcommand),import:getCommandAliases(importSubcommand),update:getCommandAliases(updateSubcommand2),delete:getCommandAliases(removeSubcommand),"add-key":getCommandAliases(addKeySubcommand),"import-key":getCommandAliases(importKeySubcommand),"activate-key":getCommandAliases(activateKeySubcommand),"revoke-key":getCommandAliases(revokeKeySubcommand),"add-grant":getCommandAliases(addGrantSubcommand),"update-grant":getCommandAliases(updateGrantSubcommand),"remove-grant":getCommandAliases(removeGrantSubcommand)};async function main(client){let parsedArgs,flagsSpecification=getFlagsSpecification(kmsCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error),2}let telemetry=new KmsTelemetryClient({opts:{store:client.telemetryEventStore}}),{subcommand,args,subcommandOriginal}=getSubcommand2(parsedArgs.args.slice(1),COMMAND_CONFIG2),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("kms"),output_manager_default.print(help(kmsCommand,{columns:client.stderr.columns})),0;function printHelp(command2){return output_manager_default.print(help(command2,{parent:kmsCommand,columns:client.stderr.columns})),0}switch(subcommand){case"list":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(listSubcommand3)):(telemetry.trackCliSubcommandList(subcommandOriginal),ls(client,args));case"inspect":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(inspectSubcommand3)):(telemetry.trackCliSubcommandInspect(subcommandOriginal),subcommandOriginal==="get"&&warnDeprecatedSubcommand(client,"kms get","kms inspect"),inspect2(client,args));case"add":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(addSubcommand)):(telemetry.trackCliSubcommandCreate(subcommandOriginal),subcommandOriginal==="add"&&warnDeprecatedSubcommand(client,"kms add","kms create"),add(client,args));case"import":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(importSubcommand)):(telemetry.trackCliSubcommandImport(subcommandOriginal),importIssuer(client,args));case"update":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(updateSubcommand2)):(telemetry.trackCliSubcommandUpdate(subcommandOriginal),update(client,args));case"delete":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(removeSubcommand)):(telemetry.trackCliSubcommandDelete(subcommandOriginal),subcommandOriginal==="remove"&&warnDeprecatedSubcommand(client,"kms remove","kms delete"),rm(client,args));case"add-key":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(addKeySubcommand)):(telemetry.trackCliSubcommandAddKey(subcommandOriginal),addKey(client,args));case"import-key":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(importKeySubcommand)):(telemetry.trackCliSubcommandImportKey(subcommandOriginal),importKey(client,args));case"activate-key":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(activateKeySubcommand)):(telemetry.trackCliSubcommandActivateKey(subcommandOriginal),activateKey(client,args));case"revoke-key":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(revokeKeySubcommand)):(telemetry.trackCliSubcommandRevokeKey(subcommandOriginal),revokeKey(client,args));case"add-grant":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(addGrantSubcommand)):(telemetry.trackCliSubcommandAddGrant(subcommandOriginal),addGrant(client,args));case"update-grant":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(updateGrantSubcommand)):(telemetry.trackCliSubcommandUpdateGrant(subcommandOriginal),updateGrant(client,args));case"remove-grant":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(removeGrantSubcommand)):(telemetry.trackCliSubcommandRemoveGrant(subcommandOriginal),subcommandOriginal!=="remove-grant"&&warnDeprecatedSubcommand(client,`kms ${subcommandOriginal}`,"kms remove-grant"),rmGrant(client,args));default:return args.length>0?(output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG2)),output_manager_default.print(help(kmsCommand,{columns:client.stderr.columns})),2):(telemetry.trackCliSubcommandList(subcommandOriginal),ls(client,args))}}var import_chalk15=__toESM(require_source(),1);import{join}from"node:path";var import_fs_extra=__toESM(require_lib(),1);var MicrofrontendsPullTelemetryClient=class extends TelemetryClient{trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliOptionDeployment(value){value&&this.trackCliOption({option:"deployment",value:this.redactedValue})}trackCliOptionDpl(value){value&&this.trackCliOption({option:"dpl",value:this.redactedValue})}};var VERCEL_DIR=".vercel",VERCEL_DIR_MICROFRONTENDS="microfrontends.json";async function pull(client){let parsedArgs,flagsSpecification=getFlagsSpecification(pullSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let telemetry=new MicrofrontendsPullTelemetryClient({opts:{store:client.telemetryEventStore}});telemetry.trackCliOptionDeployment(parsedArgs.flags["--deployment"]),telemetry.trackCliOptionDpl(parsedArgs.flags["--dpl"]);let deployment=getRenamedOption(parsedArgs.flags,"--deployment","--dpl");if("error"in deployment)return reportRenamedOptionError(client,deployment.error);let autoConfirm=!!parsedArgs.flags["--yes"],link=await ensureLink("microfrontends",client,client.cwd,{autoConfirm});if(typeof link=="number")return link;let{project,org,repoRoot}=link,currentDirectory;repoRoot?currentDirectory=join(repoRoot,project.rootDirectory||""):currentDirectory=client.cwd,client.config.currentTeam=org.type==="team"?org.id:void 0;let contextName=await getContextName(client);output_manager_default.spinner(`Fetching microfrontends configuration in ${import_chalk15.default.bold(contextName)}`);let rawConfig,deploymentId=deployment.value;try{if(deploymentId){let{config}=await client.fetch(`/v1/microfrontends/${deploymentId}/config`,{method:"GET"});rawConfig=config}else{let projectId=project.id,{config}=await client.fetch(`/v1/microfrontends/projects/${projectId}/production-mfe-config`,{method:"GET"});rawConfig=config}let sanitizedConfig={...rawConfig,applications:Object.fromEntries(Object.entries(rawConfig.applications).map(([name,app])=>[name,{...app,projectId:void 0}]))};output_manager_default.stopSpinner();let path=join(currentDirectory,VERCEL_DIR,VERCEL_DIR_MICROFRONTENDS);await(0,import_fs_extra.outputJSON)(path,sanitizedConfig,{spaces:2});let microfrontendsStamp=stamp_default();return output_manager_default.print(`${prependEmoji(`Downloaded microfrontends configuration to ${import_chalk15.default.bold(humanizePath(join(currentDirectory,VERCEL_DIR,VERCEL_DIR_MICROFRONTENDS)))} ${import_chalk15.default.gray(microfrontendsStamp())}`,emoji("success"))}
104
104
  `),0}catch(error){return output_manager_default.stopSpinner(),printError(error),1}}var import_chalk16=__toESM(require_source(),1);import{writeFile}from"fs/promises";import{existsSync}from"fs";import{join as join2}from"path";async function ensureMicrofrontendsContext(client,options){let link=await ensureLink("microfrontends",client,client.cwd,{autoConfirm:options?.autoConfirm});if(typeof link=="number")return link;let{project,org,repoRoot}=link;if(org.type!=="team")return output_manager_default.error("Microfrontends are only available for teams."),1;client.config.currentTeam=org.id;let{team}=await getScope(client);return team?{project,org,team,repoRoot}:(output_manager_default.error("Microfrontends are only available for teams."),1)}async function fetchMicrofrontendsGroups(client,teamId){output_manager_default.spinner("Fetching microfrontends groups\u2026");let response=await client.fetch(`/v1/microfrontends/groups?teamId=${teamId}`,{method:"GET"});return output_manager_default.stopSpinner(),response}function validateDefaultRoute(path){if(!path||!path.startsWith("/"))return"Route must start with /";if(/\s/.test(path))return"Route must not contain spaces";if(path.includes("?")||path.includes("#"))return"Route must not contain query strings or fragments";try{new URL(path,"http://n")}catch{return"Route is not a valid URL path"}return!0}function validateRoutingPath(path){return!path||!path.startsWith("/")?"Path must start with /. See https://vercel.com/docs/microfrontends/path-routing for supported syntax.":/\s/.test(path)?"Path must not contain spaces. See https://vercel.com/docs/microfrontends/path-routing for supported syntax.":!0}var MAX_GROUP_NAME_LENGTH=48;async function createGroup(client){let parsedArgs,flagsSpecification=getFlagsSpecification(createGroupSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let{team}=await getScope(client);if(!team)return output_manager_default.error("Microfrontends are only available for teams."),1;let teamSlug=team.slug;output_manager_default.log("A microfrontends group allows multiple projects to be composed into one application with a seamless user experience."),output_manager_default.log(`Creating a new microfrontends group for team ${import_chalk16.default.bold(teamSlug)}.`),output_manager_default.log("");let groupsResponse=await fetchMicrofrontendsGroups(client,team.id),{groups,maxMicrofrontendsGroupsPerTeam,maxMicrofrontendsPerGroup}=groupsResponse,plan=team.billing.plan,isProTrialPlan=team.billing.plan==="pro"&&team.billing.status==="trialing",isLimitedPlan=isProTrialPlan||plan==="hobby";if(groups.length>=maxMicrofrontendsGroupsPerTeam){if(isLimitedPlan){let planName=isProTrialPlan?"Pro Trial":"Hobby",url=getTeamBillingUrl(teamSlug);return output_manager_default.log(`You've reached the microfrontends group limit for ${planName}. Upgrade to Pro to create more groups.`),output_manager_default.log(`Upgrade: ${output_manager_default.link(url,url,{fallback:!1})}`),1}return output_manager_default.error(`Maximum number of microfrontends groups (${maxMicrofrontendsGroupsPerTeam}) reached.`),1}let existingMfeProjectCount=groups.reduce((count,g)=>count+g.projects.length,0),freeProjects=2;if(isLimitedPlan&&existingMfeProjectCount+1>freeProjects){let planName=isProTrialPlan?"Pro Trial":"Hobby",url=`https://vercel.com/${teamSlug}/~/settings/billing`;return output_manager_default.log(`You've reached the microfrontends project limit for ${planName}. Upgrade to Pro to add more projects.`),output_manager_default.log(`Upgrade: ${output_manager_default.link(url,url,{fallback:!1})}`),1}let nameFlag=parsedArgs.flags["--name"],projectFlags=parsedArgs.flags["--project"],defaultAppFlag=parsedArgs.flags["--default-app"],defaultRouteFlag=parsedArgs.flags["--default-route"],projectDefaultRouteFlags=parsedArgs.flags["--project-default-route"],autoConfirm=!!parsedArgs.flags["--yes"],isNonInteractive=client.nonInteractive||client.argv.includes("--non-interactive");if(isNonInteractive){if(!nameFlag)return output_manager_default.error("Missing required flag --name. Use --name in non-interactive mode."),2;if(!projectFlags||projectFlags.length===0)return output_manager_default.error("Missing required flag --project. Use --project in non-interactive mode."),2;if(projectFlags.length>1&&!defaultAppFlag)return output_manager_default.error("Missing required flag --default-app when using multiple --project values in non-interactive mode."),2}let projectsToAddCount=projectFlags?.length??1;if(existingMfeProjectCount+projectsToAddCount>freeProjects){if(isNonInteractive){let flags=getGlobalFlagsFromArgs(client.argv.slice(2)),interactiveCmd=getCommandNamePlain(`microfrontends create-group ${flags.filter(f=>f!=="--non-interactive").join(" ")}`.trim());return outputAgentError(client,{status:"error",reason:"purchase_requires_user",message:"Creating a microfrontends group affects billing and cannot be performed non-interactively. Agents must not make billing changes on behalf of a user. The user must run this command interactively in a terminal to review billing details and confirm, or complete the action in the Vercel dashboard.",next:[{command:interactiveCmd,when:"user runs this command interactively (remove --non-interactive)"}]},1),1}if(!client.stdin.isTTY)return output_manager_default.error("This command must be run interactively because it affects billing."),1}let groupName;if(nameFlag){let validation=validateGroupName(nameFlag,groups);if(validation!==!0)return output_manager_default.error(validation),1;groupName=nameFlag}else groupName=await client.input.text({message:"Group name:",validate:val=>validateGroupName(val,groups)});let selectedProjects;if(projectFlags){selectedProjects=[];for(let name of projectFlags)try{let project=await getProjectByNameOrId(client,name,team.id);if(project instanceof ProjectNotFound)return output_manager_default.error(`Project "${name}" not found.`),1;selectedProjects.push(project)}catch{return output_manager_default.error(`Project "${name}" not found.`),1}}else{output_manager_default.spinner("Fetching projects\u2026");let firstPage=await client.fetch(`/v9/projects?limit=100&teamId=${team.id}`,{method:"GET"});output_manager_default.stopSpinner();let allProjects=firstPage.projects,hasMoreProjects=firstPage.pagination.next!==null,availableProjects=allProjects.filter(p=>!isProjectInMicrofrontendsGroup(p,groups));selectedProjects=[];let addMore=!0;for(;addMore;){let project;if(hasMoreProjects)await client.input.text({message:selectedProjects.length===0?"Type a project name to add:":"Type another project name to add:",validate:async val=>{if(!val)return"Project name cannot be empty";let result=await getProjectByNameOrId(client,val,team.id);return result instanceof ProjectNotFound?"Project not found":isProjectInMicrofrontendsGroup(result,groups)?`Project "${val}" is already in a microfrontends group`:selectedProjects.some(s=>s.id===result.id)?`Project "${val}" is already selected`:(project=result,!0)}});else{if(availableProjects.length===0){if(selectedProjects.length===0)return output_manager_default.error("No available projects. All projects are already in a microfrontends group."),1;break}let remaining=availableProjects.filter(p=>!selectedProjects.some(s=>s.id===p.id));if(remaining.length===0)break;let projectId=await client.input.select({message:selectedProjects.length===0?"Select a project to add:":"Select another project to add:",choices:remaining.map(p=>({name:p.name,value:p.id}))});project=availableProjects.find(p=>p.id===projectId)}project&&selectedProjects.push(project),addMore=await client.input.confirm("Add another project?",!1)}if(selectedProjects.length===0)return output_manager_default.error("At least one project must be selected."),1}if(selectedProjects.length>maxMicrofrontendsPerGroup)return output_manager_default.error(`Cannot add more than ${maxMicrofrontendsPerGroup} projects to a group.`),1;let defaultApp;if(defaultAppFlag){let found=selectedProjects.find(p=>p.name===defaultAppFlag);if(!found)return output_manager_default.error(`Default app "${defaultAppFlag}" must be one of the selected projects.`),2;defaultApp=found}else if(selectedProjects.length===1)defaultApp=selectedProjects[0];else{let defaultAppId=await client.input.select({message:"Select the default application:",choices:selectedProjects.map(p=>({name:p.name,value:p.id}))});defaultApp=selectedProjects.find(p=>p.id===defaultAppId)}let defaultRoute;if(defaultRouteFlag){let validation=validateDefaultRoute(defaultRouteFlag);if(validation!==!0)return output_manager_default.error(validation),1;defaultRoute=defaultRouteFlag}else defaultRoute="/";let otherProjects=selectedProjects.filter(p=>p.id!==defaultApp.id),parsedProjectDefaultRoutes=parseProjectDefaultRouteFlags(projectDefaultRouteFlags,selectedProjects,defaultApp);if(typeof parsedProjectDefaultRoutes=="string")return output_manager_default.error(parsedProjectDefaultRoutes),1;let otherApplications=[];for(let project of otherProjects){let routeFromFlag=parsedProjectDefaultRoutes.get(project.id),route2;if(routeFromFlag)route2=routeFromFlag;else{if(isNonInteractive)return output_manager_default.error(`Missing required flag --project-default-route for "${project.name}". Use --project-default-route=${project.name}=/<path> in non-interactive mode.`),2;route2=await client.input.text({message:`Default route for "${project.name}":`,validate:validateDefaultRoute})}otherApplications.push({projectId:project.id,defaultRoute:route2})}let newProjectCount=selectedProjects.length,totalAfter=existingMfeProjectCount+newProjectCount;output_manager_default.log(""),output_manager_default.log(import_chalk16.default.bold("Billing")),output_manager_default.log(` ${import_chalk16.default.bold("Team:")} ${teamSlug}`),output_manager_default.log(` ${import_chalk16.default.bold("Adding:")} ${newProjectCount} microfrontends project${newProjectCount>1?"s":""}`);let projectFee;if(totalAfter<=freeProjects)projectFee=import_chalk16.default.green("Free")+` (first ${freeProjects} included)`;else if(existingMfeProjectCount>=freeProjects)projectFee=import_chalk16.default.yellow(`$250.00/month x ${newProjectCount}`)+` project${newProjectCount>1?"s":""}`;else{let freeRemaining=freeProjects-existingMfeProjectCount,paidProjects=newProjectCount-freeRemaining;projectFee=import_chalk16.default.green(`${freeRemaining} free`)+", "+import_chalk16.default.yellow(`$250.00/month x ${paidProjects}`)}if(output_manager_default.log(` ${import_chalk16.default.bold("Project fee:")} ${projectFee}`),output_manager_default.log(` ${import_chalk16.default.bold("Request fee:")} ${import_chalk16.default.yellow("$2.00")} per million microfrontends routed requests`),output_manager_default.log(""),totalAfter<=freeProjects)output_manager_default.log(`This group is within the free tier, so no project fee will be charged to ${import_chalk16.default.bold(teamSlug)}'s bill. Request fees still apply for microfrontends routed requests.`);else{let newPaidProjects=Math.min(newProjectCount,totalAfter-freeProjects);output_manager_default.log(`By proceeding, ${import_chalk16.default.bold(teamSlug)} will be charged for ${newPaidProjects} additional paid project${newPaidProjects>1?"s":""} on the team's monthly bill.`)}if(output_manager_default.log(""),!autoConfirm&&!client.stdin.isTTY)return output_manager_default.error("Confirmation required. Use --yes to confirm group creation in non-interactive mode."),1;if(!(autoConfirm||await client.input.confirm("Create microfrontends group?",!0)))return output_manager_default.log("Aborted."),0;let createStamp=stamp_default();output_manager_default.spinner("Creating microfrontends group\u2026");try{await client.fetch(`/v1/microfrontends/group?teamId=${team.id}`,{method:"POST",body:{groupName,defaultApp:{projectId:defaultApp.id,defaultRoute},otherApplications}})}catch(error){return output_manager_default.stopSpinner(),isAPIError(error)&&error.status===403?(output_manager_default.error("You must be an Owner to create or modify microfrontends groups."),1):(printError(error),1)}output_manager_default.stopSpinner();let settingsUrl=`https://vercel.com/${teamSlug}/${defaultApp.name}/settings/microfrontends`;output_manager_default.success(`Microfrontends group "${groupName}" created ${import_chalk16.default.gray(createStamp())}`),output_manager_default.log(`View microfrontends group: ${output_manager_default.link(settingsUrl,settingsUrl,{fallback:!1})}`);let link=await getLinkedProject(client,{cwd:client.cwd}),linkedProject=link.status==="linked"?link.project:void 0;if(linkedProject&&linkedProject.id===defaultApp.id){let repoRoot=link.status==="linked"?link.repoRoot:void 0,projectDir=repoRoot?join2(repoRoot,linkedProject.rootDirectory||""):client.cwd,configPath=join2(projectDir,"microfrontends.json");if(!existsSync(configPath)&&(output_manager_default.log(""),output_manager_default.log(`No changes to production traffic will take effect until a ${import_chalk16.default.bold("microfrontends.json")} is added to the default app. This configuration file specifies the path routing for the microfrontends group.`),client.stdin.isTTY&&!isNonInteractive&&await client.input.confirm("Create a microfrontends.json now?",!0))){let routingPaths={};for(let project of otherProjects){output_manager_default.log(`Enter routing paths for ${import_chalk16.default.bold(project.name)} (comma-separated, e.g. /docs, /docs/*)`);let pathsInput=await client.input.text({message:`Paths for ${project.name}:`,validate:val=>{if(!val.trim())return"At least one path is required";let paths=val.split(",").map(p=>p.trim());for(let p of paths){let result=validateRoutingPath(p);if(result!==!0)return`Invalid path "${p}": ${result}`}return!0}});routingPaths[project.name]=pathsInput.split(",").map(p=>p.trim())}let productionAlias=defaultApp.targets?.production?.alias?.[0],config=generateMicrofrontendsConfig(defaultApp.name,routingPaths,productionAlias);await writeFile(configPath,config+`
@@ -106,7 +106,7 @@ ${import_chalk3.default.yellow("!")} No exposures or metric events in this windo
106
106
  `),0;let groupTable=table([["Group",json.group.name],["ID",json.group.id],["Slug",json.group.slug],["Projects",String(json.projectCount)],["Default app",json.defaultApp??"(none)"],["Fallback environment",json.group.fallbackEnvironment??"(none)"],["Local config file",json.configFile??"(not found)"],["Config applications",json.config.applications.length>0?json.config.applications.join(", "):"(none)"]]);output_manager_default.log(""),output_manager_default.log(groupTable),output_manager_default.log(""),output_manager_default.log("Projects"),output_manager_default.log("");for(let project of projects){let rows=[["Project",project.isDefaultApp?`${project.name} (default app)`:project.name],["Default route",project.defaultRoute??"(none)"],["Production domain",project.productionDomain??"(none)"],["Framework",project.framework??"(unknown)"],["Git org/repo",`${project.git.org??"(unknown)"}/${project.git.repo??"(unknown)"}`],["Root directory",project.git.rootDirectory??"(unknown)"]];project.packageName&&rows.push(["Package name",project.packageName]),project.inGroupConfig||rows.push(["In config",(0,import_chalk20.red)("no")]);let projectTable=table(rows);output_manager_default.log(projectTable),output_manager_default.log("")}for(let project of projects)project.projectFetchStatus!=="ok"&&output_manager_default.warn(`Project metadata for "${project.id}" is incomplete (status: ${project.projectFetchStatus}).`);return 0}async function enrichGroupProject(client,teamId,group,groupProject,localRepoContext){let fullProject,projectFetchStatus="ok";try{let maybeProject=await getProjectByNameOrId(client,groupProject.id,teamId);maybeProject instanceof ProjectNotFound?projectFetchStatus="not_found":fullProject=maybeProject}catch{projectFetchStatus="error"}let name=groupProject.name??fullProject?.name??groupProject.id,inGroupConfig=Object.prototype.hasOwnProperty.call(group.config?.applications??{},name),rootDirectory=fullProject?.rootDirectory??null,gitRepo=fullProject?.link?.repo??null,gitOrg=fullProject?.link?.org??null,productionDomain=fullProject?.targets?.production?.alias?.[0]??fullProject?.targets?.production?.url??null,framework=fullProject?.framework??null,packageName=await resolvePackageNameFromLocalRepo(localRepoContext,gitOrg,gitRepo,rootDirectory);return{id:groupProject.id,name,isDefaultApp:!!groupProject.microfrontends?.isDefaultApp,enabled:!!groupProject.microfrontends?.enabled,defaultRoute:groupProject.microfrontends?.defaultRoute??null,productionDomain,framework,git:{org:gitOrg,repo:gitRepo,rootDirectory},packageName,inGroupConfig,projectFetchStatus}}async function getLocalRepoContext(client){try{let link=await getLinkedProject(client,{cwd:client.cwd});return link.status!=="linked"?{repoRoot:null,linkedProjectId:null,linkedRepoOrg:null,linkedRepoName:null}:{repoRoot:link.repoRoot??null,linkedProjectId:link.project.id,linkedRepoOrg:link.project.link?.org??null,linkedRepoName:link.project.link?.repo??null}}catch{return{repoRoot:null,linkedProjectId:null,linkedRepoOrg:null,linkedRepoName:null}}}function isProjectInLocalRepo(localRepoContext,gitOrg,gitRepo){return!localRepoContext.repoRoot||!localRepoContext.linkedRepoOrg||!localRepoContext.linkedRepoName?!1:localRepoContext.linkedRepoOrg===gitOrg&&localRepoContext.linkedRepoName===gitRepo}async function resolvePackageNameFromLocalRepo(localRepoContext,gitOrg,gitRepo,rootDirectory){if(!isProjectInLocalRepo(localRepoContext,gitOrg,gitRepo))return null;let projectDir=join3(localRepoContext.repoRoot,rootDirectory||""),packageJsonPath=join3(projectDir,"package.json"),pkg=await readJSONFile(packageJsonPath);return!pkg||pkg instanceof Error?null:typeof pkg.name=="string"?pkg.name:null}function resolveLocalConfigFilePath(projects,localRepoContext,configuredConfigFileName){let defaultProject=projects.find(project=>project.isDefaultApp);if(!defaultProject||!isProjectInLocalRepo(localRepoContext,defaultProject.git.org,defaultProject.git.repo))return null;let projectDir=join3(localRepoContext.repoRoot,defaultProject.git.rootDirectory||""),configuredName=configuredConfigFileName??null;if(configuredName){let configuredPath=join3(projectDir,configuredName);if(existsSync2(configuredPath))return configuredPath}let jsonPath=join3(projectDir,"microfrontends.json"),jsoncPath=join3(projectDir,"microfrontends.jsonc");return existsSync2(jsonPath)?jsonPath:existsSync2(jsoncPath)?jsoncPath:null}function resolveConfiguredMicrofrontendsConfigFileName(configured){if(!configured)return null;let normalized=configured.trim();return!normalized.endsWith(".json")&&!normalized.endsWith(".jsonc")?null:normalized.replace(/^\/+/,"")}var MicrofrontendsTelemetryClient=class extends TelemetryClient{trackCliSubcommandPull(actual){this.trackCliSubcommand({subcommand:"pull",value:actual})}trackCliSubcommandCreateGroup(actual){this.trackCliSubcommand({subcommand:"create-group",value:actual})}trackCliSubcommandAddToGroup(actual){this.trackCliSubcommand({subcommand:"add-to-group",value:actual})}trackCliSubcommandRemoveFromGroup(actual){this.trackCliSubcommand({subcommand:"remove-from-group",value:actual})}trackCliSubcommandDeleteGroup(actual){this.trackCliSubcommand({subcommand:"delete-group",value:actual})}trackCliSubcommandInspectGroup(actual){this.trackCliSubcommand({subcommand:"inspect-group",value:actual})}};var COMMAND_CONFIG3={"create-group":getCommandAliases(createGroupSubcommand),"add-to-group":getCommandAliases(addToGroupSubcommand),"remove-from-group":getCommandAliases(removeFromGroupSubcommand),"delete-group":getCommandAliases(deleteGroupSubcommand),"inspect-group":getCommandAliases(inspectGroupSubcommand),pull:getCommandAliases(pullSubcommand)};async function main2(client){let telemetry=new MicrofrontendsTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(microfrontendsCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error),2}parsedArgs.args[0]==="mf"&&warnDeprecatedSubcommand(client,"mf","microfrontends");let{subcommand,subcommandOriginal}=getSubcommand2(parsedArgs.args.slice(1),COMMAND_CONFIG3),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("microfrontends"),output_manager_default.print(help(microfrontendsCommand,{columns:client.stderr.columns})),0;function printHelp(command2){return output_manager_default.print(help(command2,{parent:microfrontendsCommand,columns:client.stderr.columns})),0}switch(subcommand){case"create-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(createGroupSubcommand)):(telemetry.trackCliSubcommandCreateGroup(subcommandOriginal),createGroup(client));case"add-to-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(addToGroupSubcommand)):(telemetry.trackCliSubcommandAddToGroup(subcommandOriginal),addToGroup(client));case"remove-from-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(removeFromGroupSubcommand)):(telemetry.trackCliSubcommandRemoveFromGroup(subcommandOriginal),removeFromGroup(client));case"delete-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(deleteGroupSubcommand)):(telemetry.trackCliSubcommandDeleteGroup(subcommandOriginal),deleteGroup(client));case"inspect-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(inspectGroupSubcommand)):(telemetry.trackCliSubcommandInspectGroup(subcommandOriginal),inspectGroup(client));case"pull":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(pullSubcommand)):(telemetry.trackCliSubcommandPull(subcommandOriginal),pull(client));default:return output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG3)),output_manager_default.print(help(microfrontendsCommand,{columns:client.stderr.columns})),2}}var import_chalk22=__toESM(require_source(),1),import_client=__toESM(require_dist2(),1);var import_chalk21=__toESM(require_source(),1);async function getDeploymentByIdOrURL({client,contextName,deployIdOrUrl}){let{config}=client;if(!isValidName(deployIdOrUrl))throw new Error(`The provided argument "${deployIdOrUrl}" is not a valid deployment ID or URL`);let deployment,team;try{output_manager_default.spinner(`Fetching deployment "${deployIdOrUrl}" in ${import_chalk21.default.bold(contextName)}\u2026`);let[teamResult,deploymentResult]=await Promise.allSettled([config.currentTeam?getTeamByIdOrSlug(client,config.currentTeam):void 0,getDeployment(client,contextName,deployIdOrUrl)]);if(teamResult.status==="rejected")throw new Error(`Failed to retrieve team information: ${teamResult.reason}`);if(deploymentResult.status==="rejected")throw new Error(deploymentResult.reason.message);team=teamResult.value,deployment=deploymentResult.value,output_manager_default.log(`Fetching deployment "${deployIdOrUrl}" in ${import_chalk21.default.bold(contextName)}\u2026`)}finally{output_manager_default.stopSpinner()}if(deployment.team?.id){if(!team||deployment.team.id!==team.id){let err=new Error(team?`Deployment doesn't belong to current team ${import_chalk21.default.bold(contextName)}`:"Deployment belongs to a different team");throw err.code="ERR_INVALID_TEAM",err}}else if(team){let err=new Error(`Deployment doesn't belong to current team ${import_chalk21.default.bold(contextName)}`);throw err.code="ERR_INVALID_TEAM",err}return deployment}var import_error_utils=__toESM(require_dist(),1);var RedeployTelemetryClient=class extends TelemetryClient{trackCliArgumentDeployment(value){value&&this.trackCliArgument({arg:"urlOrDeploymentId",value:this.redactedValue})}trackCliFlagNoWait(noWait){noWait&&this.trackCliFlag("no-wait")}trackCliOptionTarget(target){target&&this.trackCliArgument({arg:"target",value:this.redactedTargetName(target)})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedTargetName(environment)})}};async function redeploy(client){let parsedArgs=null,flagsSpecification=getFlagsSpecification(redeployCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let telemetry=new RedeployTelemetryClient({opts:{store:client.telemetryEventStore}});if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("redeploy"),output_manager_default.print(help(redeployCommand,{columns:client.stderr.columns})),0;let deployIdOrUrl=parsedArgs.args[1];if(!deployIdOrUrl)return output_manager_default.error(`Missing required deployment id or url: ${getCommandName("redeploy <deployment>")}`),1;if(telemetry.trackCliArgumentDeployment(deployIdOrUrl),telemetry.trackCliFlagNoWait(parsedArgs.flags["--no-wait"]),telemetry.trackCliOptionTarget(parsedArgs.flags["--target"]),telemetry.trackCliOptionEnvironment(parsedArgs.flags["--environment"]),!applyDeprecatedTargetFlag(client,parsedArgs.flags))return 2;let contextName=await getContextName(client),noWait=!!parsedArgs.flags["--no-wait"],targetArgument=parsedArgs.flags["--environment"];try{let fromDeployment=await getDeploymentByIdOrURL({client,contextName,deployIdOrUrl}),target,customEnvironmentSlugOrId;targetArgument?targetArgument==="staging"||targetArgument==="production"?target=targetArgument:targetArgument==="preview"?target=void 0:targetArgument?(customEnvironmentSlugOrId=targetArgument,target=void 0):target=fromDeployment.target:(target=fromDeployment.target??void 0,customEnvironmentSlugOrId=fromDeployment.customEnvironment?.id);let customEnvironment;if(fromDeployment?.projectId&&customEnvironmentSlugOrId){let customEnvironments=await getCustomEnvironments(client,fromDeployment.projectId);customEnvironment=pickCustomEnvironment(customEnvironments,customEnvironmentSlugOrId)}if(customEnvironmentSlugOrId&&!customEnvironment)return output_manager_default.error(`The provided argument "${targetArgument}" is not a valid target environment.`),2;fromDeployment.prebuilt&&fromDeployment.manualProvisioning===void 0&&output_manager_default.warning([`Deployment ${fromDeployment.id} is a prebuilt deployment. Redeploying reuses its prebuilt output, so it is not rebuilt from source and will not use the latest environment variables or project settings.`,`To use the latest settings, create a new deployment instead: run ${getCommandName("pull")}, ${getCommandName("build")}, and ${getCommandName("deploy --prebuilt")} with the same ${import_chalk22.default.bold("--environment")} flag (for example ${import_chalk22.default.bold("--environment production")}).`,`Learn More: ${link_default("https://vercel.com/docs/cli/deploy#prebuilt")}`].join(`
107
107
  `));let deployStamp=stamp_default();output_manager_default.spinner(`Redeploying project ${fromDeployment.id}`,0);let deployment=await client.fetch("/v13/deployments?forceNew=1",{body:{deploymentId:fromDeployment.id,meta:{action:"redeploy"},name:fromDeployment.name,target,customEnvironmentSlugOrId},method:"POST"});output_manager_default.stopSpinner();let previewUrl=`https://${deployment.url}`,isProdDeployment=target==="production";if(customEnvironmentSlugOrId&&customEnvironment&&(isProdDeployment=customEnvironment.type==="production"),printAlignedLabel("Inspect",import_chalk22.default.cyan(deployment.inspectorUrl)),printAlignedLabel(isProdDeployment?"Production":"Preview",import_chalk22.default.cyan(previewUrl),isProdDeployment&&noWait?{gutter:"\u25B2"}:{}),client.stdout.isTTY||client.stdout.write(`https://${deployment.url}`),!noWait){output_manager_default.spinner(deployment.readyState==="QUEUED"?"Queued\u2026":"Building\u2026",0);let project,rollingRelease;if(deployment.projectId&&deployment.projectId!=""&&(project=await getProjectByNameOrId(client,deployment.projectId),rollingRelease=project?.rollingRelease),deployment.readyState==="READY"&&deployment.aliasAssigned&&!rollingRelease){if(output_manager_default.spinner("Completing\u2026",0),deployment.target==="production"&&deployment.alias&&deployment.alias.length>0){output_manager_default.stopSpinner();let prodUrl=`https://${deployment.alias[0]}`;printAlignedLabel("Aliased",import_chalk22.default.cyan(prodUrl),{gutter:"\u25B2"})}}else try{let clientOptions={dispatcher:getFetchDispatcher(),apiUrl:client.apiUrl,debug:output_manager_default.debugEnabled,path:"",teamId:fromDeployment.team?.id,token:client.authConfig.token,userAgent:ua_default};for await(let event of(0,import_client.checkDeploymentStatus)(deployment,clientOptions))if(event.type==="building")output_manager_default.spinner("Building\u2026",0);else if(event.type==="ready"&&rollingRelease){output_manager_default.spinner("Releasing\u2026",0),output_manager_default.stopSpinner(),deployment=event.payload;break}else if(event.type==="ready"&&(!event.payload.checksState||event.payload.checksState==="completed"))output_manager_default.spinner("Completing\u2026",0);else if(event.type==="checks-running")output_manager_default.spinner("Running Checks\u2026",0);else if(event.type==="alias-assigned"||event.type==="checks-conclusion-failed"){if(output_manager_default.stopSpinner(),event.type==="alias-assigned"&&!Array.isArray(event.payload)&&event.payload.target==="production"&&event.payload.alias&&event.payload.alias.length>0){let prodUrl=`https://${event.payload.alias[0]}`;printAlignedLabel("Aliased",import_chalk22.default.cyan(prodUrl),{gutter:"\u25B2"})}deployment=event.payload;break}else{if(event.type==="canceled")return output_manager_default.stopSpinner(),output_manager_default.print(`The deployment has been canceled.
108
108
  `),1;if(event.type==="error")throw output_manager_default.stopSpinner(),await new Now({client,currentTeam:fromDeployment.team?.id}).handleDeploymentError(event.payload,{env:{}})}}catch(err){output_manager_default.prettyError(err),process.exit(1)}}return printDeploymentStatus(client,deployment,deployStamp,noWait,!1)}catch(err){return output_manager_default.prettyError(err),(0,import_error_utils.isErrnoException)(err)&&err.code==="ERR_INVALID_TEAM"&&output_manager_default.error(`Use ${import_chalk22.default.bold("vc switch")} to change your current team`),1}}var import_chalk23=__toESM(require_source(),1),import_pluralize3=__toESM(require_pluralize(),1);function withGlobalFlags3(client,commandTemplate){return withGlobalFlags(client,commandTemplate,{preserveProject:!0})}async function parseSubcommandArgs2(argv,command2){let parsedArgs;try{parsedArgs=parseSubcommandArguments(argv,command2)}catch(err){return printError(err),2}return parsedArgs}async function confirmAction(client,skipConfirmation,message,details){return skipConfirmation?!0:(details&&output_manager_default.print(` ${details}
109
- `),await client.input.confirm(message,!1))}function isValidUrl(url){if(url.startsWith("/"))return!0;try{let parsed=new URL(url);return parsed.protocol==="http:"||parsed.protocol==="https:"}catch{return!1}}function getArgsAfterRedirectsSubcommand(fullArgs,subcommand){let idx=fullArgs.indexOf(subcommand);return idx>=0?fullArgs.slice(idx+1):[]}function getRedirectGlobalFlagsOnly(afterSubcommandArgs){return getGlobalFlagsFromArgs(afterSubcommandArgs,{preserveProject:!0})}function getRedirectPromoteSuggestionFlags(afterSubcommandArgs){let parts=getRedirectGlobalFlagsOnly(afterSubcommandArgs);return parts.some(p=>p==="--yes"||p==="-y")||parts.push("--yes"),parts}function buildRedirectsSuggestionFlags(fullArgs,subcommand,options={}){let after=getArgsAfterRedirectsSubcommand(fullArgs,subcommand),flagParts=getSameSubcommandSuggestionFlags(after);return options.ensureYes!==!1&&!flagParts.some(a=>a==="--yes"||a==="-y")&&flagParts.push("--yes"),flagParts}async function getRedirects(client,projectId,options={}){let{teamId,search,page,perPage=50,versionId,diff}=options,params=new URLSearchParams;params.set("projectId",projectId),teamId&&params.set("teamId",teamId),versionId&&params.set("versionId",versionId),diff?params.set("diff",diff===!0?"true":diff):(params.set("per_page",perPage.toString()),search&&params.set("q",search),page&&params.set("page",page.toString()));let url=`/v1/bulk-redirects?${params}`;return await client.fetch(url)}async function getRedirectVersions(client,projectId,teamId){let params=new URLSearchParams;params.set("projectId",projectId),teamId&&params.set("teamId",teamId);let url=`/v1/bulk-redirects/versions?${params}`;return await client.fetch(url)}async function list2(client,argv){let parsed=await parseSubcommandArgs2(argv,listSubcommand4);if(typeof parsed=="number")return parsed;let nextPage=parseNumericCursor(parsed.flags["--next"]);if(Number.isNaN(nextPage))return output_manager_default.error(INVALID_NEXT_MESSAGE),2;let link=await requireProjectContext(client,"redirects",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,{flags}=parsed,teamId=org.type==="team"?org.id:void 0,search=flags["--search"],page=nextPage??flags["--page"];flags["--page"]!==void 0&&warnDeprecatedOption(client.argv,"--page","--next");let perPage=flags["--limit"]??flags["--per-page"],staging=flags["--staging"],versionIdFlag=flags["--version"],asJson=!!flags["--json"],versionId,versionName,useDiff=!1;if(staging){asJson||output_manager_default.spinner("Fetching staging version");let{versions}=await getRedirectVersions(client,project.id,teamId),stagingVersion=versions.find(v=>v.isStaging);if(!stagingVersion)return output_manager_default.error(`No staging version found for ${import_chalk23.default.bold(project.name)}. Run ${import_chalk23.default.cyan(withGlobalFlags3(client,"redirects list-versions"))} to see available versions.`),1;versionId=stagingVersion.id,versionName=stagingVersion.name||stagingVersion.id,!search&&!page&&(useDiff=!0)}if(versionIdFlag){if(staging)return output_manager_default.error("Cannot use both --staging and --version flags together"),2;asJson||output_manager_default.spinner("Fetching version");let{versions}=await getRedirectVersions(client,project.id,teamId),version=versions.find(v=>v.id===versionIdFlag||v.name===versionIdFlag);if(!version)return output_manager_default.error(`Version "${versionIdFlag}" not found. Run ${import_chalk23.default.cyan(withGlobalFlags3(client,"redirects list-versions"))} to see available versions.`),1;versionId=version.id,versionName=version.name||version.id}let lsStamp=stamp_default(),spinnerMessage=`Fetching redirects for ${import_chalk23.default.bold(project.name)}`;versionName&&(spinnerMessage+=` (version: ${versionName})`),search&&(spinnerMessage+=` matching "${search}"`),asJson||output_manager_default.spinner(spinnerMessage);let{redirects,pagination}=await getRedirects(client,project.id,{teamId,search,page,perPage,versionId,diff:useDiff});if(asJson){let next=pagination&&pagination.page<pagination.numPages?pagination.page+1:null;return client.stdout.write(`${JSON.stringify({redirects,pagination:{next}},null,2)}
109
+ `),await client.input.confirm(message,!1))}function isValidUrl(url){if(url.startsWith("/"))return!0;try{let parsed=new URL(url);return parsed.protocol==="http:"||parsed.protocol==="https:"}catch{return!1}}function getArgsAfterRedirectsSubcommand(fullArgs,subcommand){let idx=fullArgs.indexOf(subcommand);return idx>=0?fullArgs.slice(idx+1):[]}function getRedirectGlobalFlagsOnly(afterSubcommandArgs){return getGlobalFlagsFromArgs(afterSubcommandArgs,{preserveProject:!0})}function getRedirectPromoteSuggestionFlags(afterSubcommandArgs){let parts=getRedirectGlobalFlagsOnly(afterSubcommandArgs);return parts.some(p=>p==="--yes"||p==="-y")||parts.push("--yes"),parts}function buildRedirectsSuggestionFlags(fullArgs,subcommand,options={}){let after=getArgsAfterRedirectsSubcommand(fullArgs,subcommand),flagParts=getSameSubcommandSuggestionFlags(after);return options.ensureYes!==!1&&!flagParts.some(a=>a==="--yes"||a==="-y")&&flagParts.push("--yes"),flagParts}async function getRedirects(client,projectId,options={}){let{teamId,search,page,perPage=50,versionId,diff}=options,params=new URLSearchParams;params.set("projectId",projectId),teamId&&params.set("teamId",teamId),versionId&&params.set("versionId",versionId),diff?params.set("diff",diff===!0?"true":diff):(params.set("per_page",perPage.toString()),search&&params.set("q",search),page&&params.set("page",page.toString()));let url=`/v1/bulk-redirects?${params}`;return await client.fetch(url)}async function getRedirectVersions(client,projectId,teamId){let params=new URLSearchParams;params.set("projectId",projectId),teamId&&params.set("teamId",teamId);let url=`/v1/bulk-redirects/versions?${params}`;return await client.fetch(url)}async function list2(client,argv){let parsed=await parseSubcommandArgs2(argv,listSubcommand4);if(typeof parsed=="number")return parsed;let asJson=!!parsed.flags["--json"],query=getRenamedOption(parsed.flags,"--query","--search",{json:asJson,typedName:getTypedOptionName(argv,getFlagsSpecification(listSubcommand4.options),"--search")});if("error"in query)return reportRenamedOptionError(client,query.error,{json:asJson});let nextPage=parseNumericCursor(parsed.flags["--next"]);if(Number.isNaN(nextPage))return output_manager_default.error(INVALID_NEXT_MESSAGE),2;let link=await requireProjectContext(client,"redirects",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,{flags}=parsed,teamId=org.type==="team"?org.id:void 0,search=query.value,page=nextPage??flags["--page"];flags["--page"]!==void 0&&warnDeprecatedOption(client.argv,"--page","--next");let perPage=flags["--limit"]??flags["--per-page"],staging=flags["--staging"],versionIdFlag=flags["--redirects-version"],versionId,versionName,useDiff=!1;if(staging){asJson||output_manager_default.spinner("Fetching staging version");let{versions}=await getRedirectVersions(client,project.id,teamId),stagingVersion=versions.find(v=>v.isStaging);if(!stagingVersion)return output_manager_default.error(`No staging version found for ${import_chalk23.default.bold(project.name)}. Run ${import_chalk23.default.cyan(withGlobalFlags3(client,"redirects list-versions"))} to see available versions.`),1;versionId=stagingVersion.id,versionName=stagingVersion.name||stagingVersion.id,!search&&!page&&(useDiff=!0)}if(versionIdFlag){if(staging)return output_manager_default.error("Cannot use both --staging and --redirects-version flags together"),2;asJson||output_manager_default.spinner("Fetching version");let{versions}=await getRedirectVersions(client,project.id,teamId),version=versions.find(v=>v.id===versionIdFlag||v.name===versionIdFlag);if(!version)return output_manager_default.error(`Version "${versionIdFlag}" not found. Run ${import_chalk23.default.cyan(withGlobalFlags3(client,"redirects list-versions"))} to see available versions.`),1;versionId=version.id,versionName=version.name||version.id}let lsStamp=stamp_default(),spinnerMessage=`Fetching redirects for ${import_chalk23.default.bold(project.name)}`;versionName&&(spinnerMessage+=` (version: ${versionName})`),search&&(spinnerMessage+=` matching "${search}"`),asJson||output_manager_default.spinner(spinnerMessage);let{redirects,pagination}=await getRedirects(client,project.id,{teamId,search,page,perPage,versionId,diff:useDiff});if(asJson){let next=pagination&&pagination.page<pagination.numPages?pagination.page+1:null;return client.stdout.write(`${JSON.stringify(withWarnings({redirects,pagination:{next}},[query.warning]),null,2)}
110
110
  `),0}if(useDiff){let added=redirects.filter(r=>r.action==="+"),removed=redirects.filter(r=>r.action==="-"),unchanged=redirects.filter(r=>!r.action);output_manager_default.log(`Changes in staging version ${import_chalk23.default.bold(versionName||"")} ${import_chalk23.default.gray(lsStamp())}`),added.length===0&&removed.length===0?output_manager_default.log(`
111
111
  No changes from production version
112
112
  `):(added.length>0&&(output_manager_default.print(`
@@ -117,7 +117,7 @@ ${import_chalk3.default.yellow("!")} No exposures or metric events in this windo
117
117
  ${import_chalk23.default.gray(`${unchanged.length} redirect${unchanged.length===1?"":"s"} unchanged`)}
118
118
  `),output_manager_default.print(`
119
119
  `))}else{let resultMessage=`${(0,import_pluralize3.default)("Redirect",redirects.length,!0)} found for ${import_chalk23.default.bold(project.name)}`;versionName&&(resultMessage+=` ${import_chalk23.default.gray(`(version: ${versionName})`)}`),search&&(resultMessage+=` matching "${search}"`),pagination&&(resultMessage+=` ${import_chalk23.default.gray(`(page ${pagination.page} of ${pagination.numPages})`)}`),resultMessage+=` ${import_chalk23.default.gray(lsStamp())}`,output_manager_default.log(resultMessage),client.nonInteractive&&redirects.length===0&&!staging&&!versionIdFlag&&output_manager_default.log(` ${withGlobalFlags3(client,"redirects list")} shows production redirects only. If you added redirects but do not see them here, they may still be staged only\u2014run ${withGlobalFlags3(client,"redirects list --staging")} to view staged changes.`),redirects.length>0&&(output_manager_default.print(formatRedirectsTable(redirects)),output_manager_default.print(`
120
- `))}return pagination&&pagination.page<pagination.numPages&&printNextPageCommand(getNextPageCommand(client.argv,String(pagination.page+1),["--page"])),0}function formatRedirectsTable(redirects,actionSymbol){let rows=redirects.map(redirect=>{let status=redirect.statusCode||(redirect.permanent?308:307),prefix=actionSymbol||"",colorFn=actionSymbol==="+"?import_chalk23.default.green:actionSymbol==="-"?import_chalk23.default.red:s=>s;return[colorFn(`${prefix} ${redirect.source}`),colorFn(`${redirect.destination}`),colorFn(status.toString())]});return formatTable(["Source","Destination","Status"],["l","l","l"],[{rows}])}var import_chalk24=__toESM(require_source(),1),import_ms4=__toESM(require_ms(),1),import_pluralize4=__toESM(require_pluralize(),1);async function listVersions(client,argv){let parsed=await parseSubcommandArgs2(argv,listVersionsSubcommand);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"redirects",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,lsStamp=stamp_default(),asJson=!!parsed.flags["--json"];asJson||output_manager_default.spinner(`Fetching redirect versions for ${import_chalk24.default.bold(project.name)}`);let{versions}=await getRedirectVersions(client,project.id,teamId);if(asJson)return client.stdout.write(`${JSON.stringify({versions},null,2)}
120
+ `))}return pagination&&pagination.page<pagination.numPages&&printNextPageCommand(getNextPageCommand(renameOptionInArgs(client.argv,"--search","--query"),String(pagination.page+1),["--page"])),0}function formatRedirectsTable(redirects,actionSymbol){let rows=redirects.map(redirect=>{let status=redirect.statusCode||(redirect.permanent?308:307),prefix=actionSymbol||"",colorFn=actionSymbol==="+"?import_chalk23.default.green:actionSymbol==="-"?import_chalk23.default.red:s=>s;return[colorFn(`${prefix} ${redirect.source}`),colorFn(`${redirect.destination}`),colorFn(status.toString())]});return formatTable(["Source","Destination","Status"],["l","l","l"],[{rows}])}var import_chalk24=__toESM(require_source(),1),import_ms4=__toESM(require_ms(),1),import_pluralize4=__toESM(require_pluralize(),1);async function listVersions(client,argv){let parsed=await parseSubcommandArgs2(argv,listVersionsSubcommand);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"redirects",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,lsStamp=stamp_default(),asJson=!!parsed.flags["--json"];asJson||output_manager_default.spinner(`Fetching redirect versions for ${import_chalk24.default.bold(project.name)}`);let{versions}=await getRedirectVersions(client,project.id,teamId);if(asJson)return client.stdout.write(`${JSON.stringify({versions},null,2)}
121
121
  `),0;let sortedVersions=sortVersions(versions).slice(0,20);return output_manager_default.log(`${(0,import_pluralize4.default)("Version",sortedVersions.length,!0)} found for ${import_chalk24.default.bold(project.name)} ${import_chalk24.default.gray(lsStamp())}`),sortedVersions.length>0&&(output_manager_default.print(formatVersionsTable(sortedVersions)),output_manager_default.print(`
122
122
  `)),0}function sortVersions(versions){return versions.slice().sort((a,b)=>a.isStaging&&!b.isStaging?-1:!a.isStaging&&b.isStaging?1:a.isLive&&!b.isLive?-1:!a.isLive&&b.isLive?1:b.lastModified-a.lastModified)}function formatVersionsTable(versions){let now=Date.now(),rows=versions.map(version=>{let age=(0,import_ms4.default)(now-version.lastModified),status="";version.isStaging?status=import_chalk24.default.yellow("Staging"):version.isLive?status=import_chalk24.default.green("Live"):status=import_chalk24.default.gray("Previous");let name=version.name||import_chalk24.default.gray("(unnamed)"),redirectCountStr=version.redirectCount!==void 0&&version.redirectCount!==null?version.redirectCount.toString():import_chalk24.default.gray("-");return[status,name,version.id,redirectCountStr,version.createdBy||import_chalk24.default.gray("(unknown)"),import_chalk24.default.gray(age+" ago")]});return formatTable(["Status","Name","ID","Redirects","Created By","Age"],["l","l","l","r","l","l"],[{rows}])}var import_chalk25=__toESM(require_source(),1);async function putRedirects(client,projectId,redirects,teamId,name){let url="/v1/bulk-redirects",body={projectId,redirects};return teamId&&(body.teamId=teamId),name&&(body.name=name),await client.fetch(url,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(body)})}async function updateRedirectVersion(client,projectId,versionId,action,teamId){let params=new URLSearchParams;params.set("projectId",projectId),teamId&&params.set("teamId",teamId);let url=`/v1/bulk-redirects/versions?${params}`;return await client.fetch(url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:versionId,action})})}async function add2(client,argv){let parsed=await parseSubcommandArgs2(argv,addSubcommand2);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"redirects",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,{versions}=await getRedirectVersions(client,project.id,teamId),existingStagingVersion=versions.find(v=>v.isStaging),{args,flags}=parsed,skipPrompts=flags["--yes"]||client.nonInteractive;if(client.nonInteractive&&(!args[0]||!args[1])){let sourcePart=args[0]||"<source>",destPart=args[1]!==void 0&&args[1]!==""?args[1]:"<destination>",flagParts=buildRedirectsSuggestionFlags(client.argv.slice(2),"add"),cmd2=getCommandNamePlain(`redirects add ${sourcePart} ${destPart} ${flagParts.join(" ")}`.trim());return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.MISSING_ARGUMENTS,action:AGENT_ACTION.MISSING_ARGUMENTS,message:`In non-interactive mode source and destination are required. Run: ${cmd2}`,next:[{command:cmd2,when:"to add a redirect"}]},2),2}let source;if(args[0]){if(source=args[0],!isValidUrl(source))return output_manager_default.error("Source must be a relative path (starting with /) or an absolute URL"),2}else{if(skipPrompts)return output_manager_default.error("Source and destination are required when using --yes. Use: vercel redirects add <source> <destination> --yes"),2;output_manager_default.log(`Add a new redirect
123
123
  `),source=await client.input.text({message:"What is the source URL?",validate:val=>val?isValidUrl(val)?!0:"Must be a relative path (starting with /) or an absolute URL":"Source URL cannot be empty"})}let destination;if(args[1]){if(destination=args[1],!isValidUrl(destination))return output_manager_default.error("Destination must be a relative path (starting with /) or an absolute URL"),2}else{if(skipPrompts)return output_manager_default.error("Source and destination are required when using --yes. Use: vercel redirects add <source> <destination> --yes"),2;args[0]||output_manager_default.log(`Add a new redirect
@@ -133,7 +133,7 @@ ${import_chalk3.default.yellow("!")} No exposures or metric events in this windo
133
133
  `)}let newVersionName=version.name||version.id;if(output_manager_default.print(` ${import_chalk25.default.bold("New staging version:")} ${newVersionName}
134
134
 
135
135
  `),existingStagingVersion)output_manager_default.warn(`There are other staged changes. Please review all changes with ${import_chalk25.default.cyan("vercel redirects list --staging")} before promoting to production.`);else if(await client.input.confirm("This is the only staged change. Do you want to promote it to production now?",!1)){let promoteStamp=stamp_default();output_manager_default.spinner("Promoting to production"),await updateRedirectVersion(client,project.id,version.id,"promote",teamId),output_manager_default.log(`${import_chalk25.default.cyan("\u2713")} Version promoted to production ${import_chalk25.default.gray(promoteStamp())}`)}return 0}var import_chalk26=__toESM(require_source(),1);import{readFileSync}from"fs";import{basename}from"path";import{statSync}from"fs";var MAX_FILE_SIZE=50*1024*1024,ALLOWED_EXTENSIONS=[".csv",".json"],MAX_REDIRECTS=1e6,MAX_URL_LENGTH=2048,VALID_STATUS_CODES=[301,302,303,307,308];function validateUploadFile(filePath,options={}){let maxSize=options.maxFileSize??MAX_FILE_SIZE,allowedExts=options.allowedExtensions??ALLOWED_EXTENSIONS;try{let stats=statSync(filePath);return stats.isFile()?stats.size>maxSize?{valid:!1,error:`File must be below ${Math.round(maxSize/1048576)}MB`}:allowedExts.some(ext=>filePath.toLowerCase().endsWith(ext))?{valid:!0}:{valid:!1,error:"File must be a .csv or .json file"}:{valid:!1,error:`Path "${filePath}" is not a file`}}catch(err){return err.code==="ENOENT"?{valid:!1,error:`File "${filePath}" not found`}:{valid:!1,error:`Error accessing file: ${err.message}`}}}function validateRedirect(redirect){if(!redirect.source)return{valid:!1,error:"Redirect source is required"};if(redirect.source.length>MAX_URL_LENGTH)return{valid:!1,error:"Source URL is too long"};if(!isValidUrl(redirect.source))return{valid:!1,error:"Source must be a relative path or a valid URL"};if(!redirect.destination)return{valid:!1,error:"Redirect destination is required"};if(redirect.destination.length>MAX_URL_LENGTH)return{valid:!1,error:"Destination URL is too long"};try{new URL(redirect.destination,"https://vercel.com")}catch{return{valid:!1,error:"Destination must be a valid URL"}}return redirect.statusCode&&!VALID_STATUS_CODES.includes(redirect.statusCode)?{valid:!1,error:`Invalid status code. Must be one of: ${VALID_STATUS_CODES.join(", ")}`}:{valid:!0}}function validateRedirectsArray(redirects){if(!Array.isArray(redirects))return{valid:!1,error:"JSON file must contain an array of redirects"};if(redirects.length===0)return{valid:!1,error:"No redirects provided"};if(redirects.length>MAX_REDIRECTS)return{valid:!1,error:`Too many redirects. Maximum allowed: ${MAX_REDIRECTS}`};for(let i=0;i<redirects.length;i++){let result=validateRedirect(redirects[i]);if(!result.valid)return{valid:!1,error:`Redirect ${i+1}: ${result.error}`}}return{valid:!0}}function validateCSVStructure(content){let lines=content.trim().split(`
136
- `);if(lines.length<2)return{valid:!1,error:"CSV must have a header and at least one redirect"};let header=lines[0].toLowerCase(),hasSource=header.includes("source"),hasDestination=header.includes("destination");return!hasSource||!hasDestination?{valid:!1,error:'CSV must have "source" and "destination" columns'}:{valid:!0}}function validateVersionName(name){return name?name.length>256?{valid:!1,error:"Name must be 256 characters or less"}:{valid:!0}:{valid:!1,error:"Name is required"}}async function upload(client,argv,subcommandName){let parsed=await parseSubcommandArgs2(argv,uploadSubcommand);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"redirects",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,{args,flags}=parsed,skipPrompts=flags["--yes"]||!1,filePath=args[0];if(!filePath){if(client.nonInteractive){let flagParts=buildRedirectsSuggestionFlags(client.argv.slice(2),subcommandName),cmd2=getCommandNamePlain(`redirects import <file> ${flagParts.join(" ")}`.trim());outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.MISSING_ARGUMENTS,action:AGENT_ACTION.MISSING_ARGUMENTS,message:`File path is required. Run: ${cmd2}`,next:[{command:cmd2,when:"to import redirects from a CSV or JSON file"}]},2)}return output_manager_default.error("File path is required. Use: vercel redirects import <file>"),2}if(client.nonInteractive&&!skipPrompts){let cmd2=buildCommandWithYes(client.argv);return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:`In non-interactive mode use --yes to confirm import. Run: ${cmd2}`,next:[{command:cmd2,when:"to confirm import"}]},1),1}let overwrite=flags["--overwrite"]||!1,fileValidation=validateUploadFile(filePath);if(!fileValidation.valid)return output_manager_default.error(fileValidation.error),1;let{versions}=await getRedirectVersions(client,project.id,teamId),existingStagingVersion=versions.find(v=>v.isStaging);if(!skipPrompts){let fileName=basename(filePath),fileType=filePath.endsWith(".csv")?"CSV":"JSON",message=overwrite?`Import ${fileType} file "${fileName}" and replace all existing redirects?`:`Import ${fileType} file "${fileName}"?`;if(!await client.input.confirm(message,!0))return output_manager_default.log("Import cancelled"),0}let versionName;if(!skipPrompts&&await client.input.confirm("Do you want to provide a name for this version?",!1)){versionName=await client.input.text({message:"Version name (max 256 characters):",validate:val=>val&&val.length>256?"Name must be 256 characters or less":!0});let{valid,error}=validateVersionName(versionName);if(!valid)return output_manager_default.error(error),1}let uploadStamp=stamp_default();output_manager_default.spinner("Importing redirects");try{let result,url="/v1/bulk-redirects";if(filePath.endsWith(".csv")){let csvContent=readFileSync(filePath),fileName=basename(filePath),csvValidation=validateCSVStructure(csvContent.toString());if(!csvValidation.valid)return output_manager_default.error(`Invalid CSV: ${csvValidation.error}`),1;let form=new FormData;form.append("teamId",teamId||org.id),form.append("projectId",project.id),form.append("overwrite",String(overwrite)),versionName&&form.append("name",versionName),form.append("bulkRedirectsFile",new Blob([new Uint8Array(csvContent)],{type:"text/csv"}),fileName),result=await client.fetch(url,{method:"PUT",body:form})}else{let content=readFileSync(filePath,"utf8"),redirects2;try{redirects2=JSON.parse(content)}catch{return output_manager_default.error("Invalid JSON file format"),1}let redirectsValidation=validateRedirectsArray(redirects2);if(!redirectsValidation.valid)return output_manager_default.error(redirectsValidation.error),1;let body={projectId:project.id,redirects:redirects2,overwrite};teamId&&(body.teamId=teamId),versionName&&(body.versionName=versionName),result=await client.fetch(url,{method:"PUT",body})}if(client.nonInteractive){output_manager_default.stopSpinner();let afterUpload=getArgsAfterRedirectsSubcommand(client.argv.slice(2),subcommandName),promoteFlagParts=getRedirectPromoteSuggestionFlags(afterUpload),promoteCmd=getCommandNamePlain(`redirects promote ${result.version.id} ${promoteFlagParts.join(" ")}`.trim()),jsonOutput={status:AGENT_STATUS.OK,version:{id:result.version.id,name:result.version.name||result.version.id,...result.version.redirectCount!==void 0&&{redirectCount:result.version.redirectCount}},...result.alias&&{alias:result.alias,testUrl:`https://${result.alias}`},...!existingStagingVersion&&{next:[{command:promoteCmd,when:"To promote this staging version to production"}]},...existingStagingVersion&&{hint:`Review staged changes with ${withGlobalFlags3(client,"redirects list --staging")} before promoting.`}};return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
136
+ `);if(lines.length<2)return{valid:!1,error:"CSV must have a header and at least one redirect"};let header=lines[0].toLowerCase(),hasSource=header.includes("source"),hasDestination=header.includes("destination");return!hasSource||!hasDestination?{valid:!1,error:'CSV must have "source" and "destination" columns'}:{valid:!0}}function validateVersionName(name){return name?name.length>256?{valid:!1,error:"Name must be 256 characters or less"}:{valid:!0}:{valid:!1,error:"Name is required"}}async function upload(client,argv,subcommandName){let parsed=await parseSubcommandArgs2(argv,uploadSubcommand);if(typeof parsed=="number")return parsed;let force=getRenamedOption(parsed.flags,"--force","--overwrite");if("error"in force)return reportRenamedOptionError(client,force.error);let suggestionArgv=renameOptionInArgs(client.argv,"--overwrite","--force"),link=await requireProjectContext(client,"redirects",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,{args,flags}=parsed,skipPrompts=flags["--yes"]||!1,filePath=args[0];if(!filePath){if(client.nonInteractive){let flagParts=buildRedirectsSuggestionFlags(suggestionArgv.slice(2),subcommandName),cmd2=getCommandNamePlain(`redirects import <file> ${flagParts.join(" ")}`.trim());outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.MISSING_ARGUMENTS,action:AGENT_ACTION.MISSING_ARGUMENTS,message:`File path is required. Run: ${cmd2}`,next:[{command:cmd2,when:"to import redirects from a CSV or JSON file"}]},2)}return output_manager_default.error("File path is required. Use: vercel redirects import <file>"),2}if(client.nonInteractive&&!skipPrompts){let cmd2=buildCommandWithYes(suggestionArgv);return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:`In non-interactive mode use --yes to confirm import. Run: ${cmd2}`,next:[{command:cmd2,when:"to confirm import"}]},1),1}let overwrite=force.value||!1,fileValidation=validateUploadFile(filePath);if(!fileValidation.valid)return output_manager_default.error(fileValidation.error),1;let{versions}=await getRedirectVersions(client,project.id,teamId),existingStagingVersion=versions.find(v=>v.isStaging);if(!skipPrompts){let fileName=basename(filePath),fileType=filePath.endsWith(".csv")?"CSV":"JSON",message=overwrite?`Import ${fileType} file "${fileName}" and replace all existing redirects?`:`Import ${fileType} file "${fileName}"?`;if(!await client.input.confirm(message,!0))return output_manager_default.log("Import cancelled"),0}let versionName;if(!skipPrompts&&await client.input.confirm("Do you want to provide a name for this version?",!1)){versionName=await client.input.text({message:"Version name (max 256 characters):",validate:val=>val&&val.length>256?"Name must be 256 characters or less":!0});let{valid,error}=validateVersionName(versionName);if(!valid)return output_manager_default.error(error),1}let uploadStamp=stamp_default();output_manager_default.spinner("Importing redirects");try{let result,url="/v1/bulk-redirects";if(filePath.endsWith(".csv")){let csvContent=readFileSync(filePath),fileName=basename(filePath),csvValidation=validateCSVStructure(csvContent.toString());if(!csvValidation.valid)return output_manager_default.error(`Invalid CSV: ${csvValidation.error}`),1;let form=new FormData;form.append("teamId",teamId||org.id),form.append("projectId",project.id),form.append("overwrite",String(overwrite)),versionName&&form.append("name",versionName),form.append("bulkRedirectsFile",new Blob([new Uint8Array(csvContent)],{type:"text/csv"}),fileName),result=await client.fetch(url,{method:"PUT",body:form})}else{let content=readFileSync(filePath,"utf8"),redirects2;try{redirects2=JSON.parse(content)}catch{return output_manager_default.error("Invalid JSON file format"),1}let redirectsValidation=validateRedirectsArray(redirects2);if(!redirectsValidation.valid)return output_manager_default.error(redirectsValidation.error),1;let body={projectId:project.id,redirects:redirects2,overwrite};teamId&&(body.teamId=teamId),versionName&&(body.versionName=versionName),result=await client.fetch(url,{method:"PUT",body})}if(client.nonInteractive){output_manager_default.stopSpinner();let afterUpload=getArgsAfterRedirectsSubcommand(client.argv.slice(2),subcommandName),promoteFlagParts=getRedirectPromoteSuggestionFlags(afterUpload),promoteCmd=getCommandNamePlain(`redirects promote ${result.version.id} ${promoteFlagParts.join(" ")}`.trim()),jsonOutput={status:AGENT_STATUS.OK,version:{id:result.version.id,name:result.version.name||result.version.id,...result.version.redirectCount!==void 0&&{redirectCount:result.version.redirectCount}},...result.alias&&{alias:result.alias,testUrl:`https://${result.alias}`},...!existingStagingVersion&&{next:[{command:promoteCmd,when:"To promote this staging version to production"}]},...existingStagingVersion&&{hint:`Review staged changes with ${withGlobalFlags3(client,"redirects list --staging")} before promoting.`}};return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
137
137
  `),0}output_manager_default.log(`${import_chalk26.default.cyan("\u2713")} Redirects imported ${import_chalk26.default.gray(uploadStamp())}`),output_manager_default.spinner("Fetching diff");let{redirects}=await getRedirects(client,project.id,{teamId,versionId:result.version.id,diff:"only"}),redirectCount=redirects.length;if(output_manager_default.print(`
138
138
  ${import_chalk26.default.bold("Summary:")}
139
139
  `),output_manager_default.print(` Imported ${redirectCount} redirect${redirectCount===1?"":"s"}
@@ -190,7 +190,7 @@ ${import_chalk29.default.gray("No changes detected from current production versi
190
190
  `)}),0}function readConfirmation(deployments,projects){return new Promise(resolve3=>{if(deployments.length>0){output_manager_default.log(`The following ${(0,import_pluralize5.default)("deployment",deployments.length,deployments.length>1)} will be permanently removed:`);let deploymentTable=table(deployments.map(depl=>{let time=import_chalk30.default.gray(`${(0,import_ms5.default)(Date.now()-depl.createdAt)} ago`),url=depl.url?import_chalk30.default.underline(`https://${depl.url}`):"";return[` ${depl.id}`,url,time]}),{align:["l","r","l"],hsep:6});output_manager_default.print(`${deploymentTable}
191
191
  `)}for(let depl of deployments)for(let{alias}of depl.aliases)output_manager_default.warn(`${import_chalk30.default.underline(`https://${alias}`)} is an alias for ${import_chalk30.default.bold(depl.url)} and will be removed`);if(projects.length>0){output_manager_default.print(`The following ${(0,import_pluralize5.default)("project",projects.length,projects.length>1)} will be permanently removed, including all ${projects.length>1?"their":"its"} deployments and aliases:
192
192
  `);for(let project of projects)output_manager_default.print(`${import_chalk30.default.gray("-")} ${import_chalk30.default.bold(project.name)}
193
- `)}output_manager_default.print(`${import_chalk30.default.bold.red("> Are you sure?")} ${import_chalk30.default.gray("(y/N) ")}`),process.stdin.on("data",d=>{process.stdin.pause(),resolve3(d.toString().trim())}).resume()})}function deploymentsAndProjects(deployments,projects,conjunction="and"){return!projects||projects.length===0?`${(0,import_pluralize5.default)("deployment",deployments.length,!0)}`:!deployments||deployments.length===0?`${(0,import_pluralize5.default)("project",projects.length,!0)}`:`${(0,import_pluralize5.default)("deployment",deployments.length,!0)} ${conjunction} ${(0,import_pluralize5.default)("project",projects.length,!0)}`}var import_chalk31=__toESM(require_source(),1),import_pluralize6=__toESM(require_pluralize(),1);async function list3(client,argv){let parsed=await parseSubcommandArgs(argv,listSubcommand5,client);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,{flags}=parsed,teamId=org.type==="team"?org.id:void 0,search=flags["--search"],filter=flags["--filter"],production=flags["--production"],versionIdFlag=flags["--version-id"],diffFlag=flags["--diff"],expand=flags["--expand"],asJson=!!flags["--json"];if(filter){let validFilters=["rewrite","redirect","set_status","transform"];if(!validFilters.includes(filter)){let msg=`Invalid filter type "${filter}". Valid types: ${validFilters.join(", ")}`;return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:msg,next:[{command:withGlobalFlags2(client,"routes list")}]}),process.exit(1)),output_manager_default.error(msg),2}}if(production&&versionIdFlag){let msg="Cannot use both --production and --version-id flags together";return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:msg,next:[{command:withGlobalFlags2(client,"routes list")}]}),process.exit(1)),output_manager_default.error(msg),2}if(production&&diffFlag){let msg="Cannot use both --production and --diff flags together. --diff compares staged changes against production.";return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:msg,next:[{command:withGlobalFlags2(client,"routes list --diff")}]}),process.exit(1)),output_manager_default.error(msg),2}let versionId,versionName,useDiff=!1;if(production){asJson||output_manager_default.spinner("Fetching production version");let{versions}=await getRouteVersions(client,project.id,{teamId}),productionVersion=versions.find(v=>!v.isStaging);if(!productionVersion){let msg=`No production version found for ${project.name}.`;return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"not_found",message:msg,next:[{command:withGlobalFlags2(client,"routes list")}]}),process.exit(1)),output_manager_default.error(`No production version found for ${import_chalk31.default.bold(project.name)}.`),1}versionId=productionVersion.id,versionName=productionVersion.id}if(diffFlag&&!versionIdFlag){asJson||output_manager_default.spinner("Fetching staging version");let{versions}=await getRouteVersions(client,project.id,{teamId}),stagingVersion=versions.find(v=>v.isStaging);if(!stagingVersion){let msg=`No staged changes to diff. Run ${withGlobalFlags2(client,"routes add")} or ${withGlobalFlags2(client,"routes update")} to make changes.`;return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"not_found",message:msg,next:[{command:withGlobalFlags2(client,"routes list")},{command:withGlobalFlags2(client,"routes add")}]}),process.exit(1)),output_manager_default.error(`No staged changes to diff. Run ${import_chalk31.default.cyan(withGlobalFlags2(client,"routes add"))} or ${import_chalk31.default.cyan(withGlobalFlags2(client,"routes update"))} to make changes.`),1}versionId=stagingVersion.id,versionName=stagingVersion.id,useDiff=!0}if(versionIdFlag){asJson||output_manager_default.spinner("Fetching version");let{versions}=await getRouteVersions(client,project.id,{teamId}),result=findVersionById(client,versions,versionIdFlag);if(result.error||!result.version){let msg=result.error??"Version not found";return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"not_found",message:msg,next:[{command:withGlobalFlags2(client,"routes list-versions")}]}),process.exit(1)),output_manager_default.error(msg),1}versionId=result.version.id,versionName=result.version.id,diffFlag&&(useDiff=!0)}let lsStamp=stamp_default(),spinnerMessage=`Fetching routes for ${import_chalk31.default.bold(project.name)}`;versionName&&(spinnerMessage+=` (version: ${versionName})`),search&&(spinnerMessage+=` matching "${search}"`),filter&&(spinnerMessage+=` filtered by ${filter}`),asJson||output_manager_default.spinner(spinnerMessage);let{routes,version,limit}=await getRoutes(client,project.id,{teamId,search,filter,versionId,diff:useDiff});if(asJson)return client.stdout.write(`${JSON.stringify({routes,version,limit:limit??null},null,2)}
193
+ `)}output_manager_default.print(`${import_chalk30.default.bold.red("> Are you sure?")} ${import_chalk30.default.gray("(y/N) ")}`),process.stdin.on("data",d=>{process.stdin.pause(),resolve3(d.toString().trim())}).resume()})}function deploymentsAndProjects(deployments,projects,conjunction="and"){return!projects||projects.length===0?`${(0,import_pluralize5.default)("deployment",deployments.length,!0)}`:!deployments||deployments.length===0?`${(0,import_pluralize5.default)("project",projects.length,!0)}`:`${(0,import_pluralize5.default)("deployment",deployments.length,!0)} ${conjunction} ${(0,import_pluralize5.default)("project",projects.length,!0)}`}var import_chalk31=__toESM(require_source(),1),import_pluralize6=__toESM(require_pluralize(),1);async function list3(client,argv){let parsed=await parseSubcommandArgs(argv,listSubcommand5,client);if(typeof parsed=="number")return parsed;let asJson=!!parsed.flags["--json"],spec=getFlagsSpecification(listSubcommand5.options),query=getRenamedOption(parsed.flags,"--query","--search",{json:asJson,typedName:getTypedOptionName(argv,spec,"--search")});if("error"in query)return reportRenamedOptionError(client,query.error,{json:asJson});let type=getRenamedOption(parsed.flags,"--type","--filter",{json:asJson,typedName:getTypedOptionName(argv,spec,"--filter")});if("error"in type)return reportRenamedOptionError(client,type.error,{json:asJson});let routesVersion=getRenamedOption(parsed.flags,"--routes-version","--version-id",{json:asJson});if("error"in routesVersion)return reportRenamedOptionError(client,routesVersion.error,{json:asJson});let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,{flags}=parsed,teamId=org.type==="team"?org.id:void 0,search=query.value,filter=type.value,production=flags["--production"],versionIdFlag=routesVersion.value,diffFlag=flags["--diff"],expand=flags["--expand"];if(filter){let validFilters=["rewrite","redirect","set_status","transform"];if(!validFilters.includes(filter)){let msg=`Invalid filter type "${filter}". Valid types: ${validFilters.join(", ")}`;return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:msg,next:[{command:withGlobalFlags2(client,"routes list")}]}),process.exit(1)),output_manager_default.error(msg),2}}if(production&&versionIdFlag){let msg="Cannot use both --production and --routes-version flags together";return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:msg,next:[{command:withGlobalFlags2(client,"routes list")}]}),process.exit(1)),output_manager_default.error(msg),2}if(production&&diffFlag){let msg="Cannot use both --production and --diff flags together. --diff compares staged changes against production.";return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:msg,next:[{command:withGlobalFlags2(client,"routes list --diff")}]}),process.exit(1)),output_manager_default.error(msg),2}let versionId,versionName,useDiff=!1;if(production){asJson||output_manager_default.spinner("Fetching production version");let{versions}=await getRouteVersions(client,project.id,{teamId}),productionVersion=versions.find(v=>!v.isStaging);if(!productionVersion){let msg=`No production version found for ${project.name}.`;return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"not_found",message:msg,next:[{command:withGlobalFlags2(client,"routes list")}]}),process.exit(1)),output_manager_default.error(`No production version found for ${import_chalk31.default.bold(project.name)}.`),1}versionId=productionVersion.id,versionName=productionVersion.id}if(diffFlag&&!versionIdFlag){asJson||output_manager_default.spinner("Fetching staging version");let{versions}=await getRouteVersions(client,project.id,{teamId}),stagingVersion=versions.find(v=>v.isStaging);if(!stagingVersion){let msg=`No staged changes to diff. Run ${withGlobalFlags2(client,"routes add")} or ${withGlobalFlags2(client,"routes update")} to make changes.`;return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"not_found",message:msg,next:[{command:withGlobalFlags2(client,"routes list")},{command:withGlobalFlags2(client,"routes add")}]}),process.exit(1)),output_manager_default.error(`No staged changes to diff. Run ${import_chalk31.default.cyan(withGlobalFlags2(client,"routes add"))} or ${import_chalk31.default.cyan(withGlobalFlags2(client,"routes update"))} to make changes.`),1}versionId=stagingVersion.id,versionName=stagingVersion.id,useDiff=!0}if(versionIdFlag){asJson||output_manager_default.spinner("Fetching version");let{versions}=await getRouteVersions(client,project.id,{teamId}),result=findVersionById(client,versions,versionIdFlag);if(result.error||!result.version){let msg=result.error??"Version not found";return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"not_found",message:msg,next:[{command:withGlobalFlags2(client,"routes list-versions")}]}),process.exit(1)),output_manager_default.error(msg),1}versionId=result.version.id,versionName=result.version.id,diffFlag&&(useDiff=!0)}let lsStamp=stamp_default(),spinnerMessage=`Fetching routes for ${import_chalk31.default.bold(project.name)}`;versionName&&(spinnerMessage+=` (version: ${versionName})`),search&&(spinnerMessage+=` matching "${search}"`),filter&&(spinnerMessage+=` filtered by ${filter}`),asJson||output_manager_default.spinner(spinnerMessage);let{routes,version,limit}=await getRoutes(client,project.id,{teamId,search,filter,versionId,diff:useDiff});if(asJson)return client.stdout.write(`${JSON.stringify(withWarnings({routes,version,limit:limit??null},[query.warning,type.warning,routesVersion.warning]),null,2)}
194
194
  `),0;if(useDiff){let added=routes.filter(r=>r.action==="+"),removed=routes.filter(r=>r.action==="-"),modified=routes.filter(r=>r.action==="~"),unchanged=routes.filter(r=>!r.action);output_manager_default.log(`Changes in staging version ${import_chalk31.default.bold(versionName||"")} ${import_chalk31.default.gray(lsStamp())}`),added.length===0&&removed.length===0&&modified.length===0?output_manager_default.log(`
195
195
  No changes from production version
196
196
  `):(added.length>0&&(output_manager_default.print(`
@@ -206,7 +206,7 @@ ${import_chalk29.default.gray("No changes detected from current production versi
206
206
  `)),limit&&limit.maxRoutes>0){let utilization=limit.currentRoutes/limit.maxRoutes;if(utilization>=.8){let usageColor=utilization>=1?import_chalk31.default.red:import_chalk31.default.yellow;output_manager_default.print(` ${usageColor(`Routes Usage: ${limit.currentRoutes}/${limit.maxRoutes}`)}
207
207
 
208
208
  `)}}}return 0}function formatRoutesTable(routes,actionSymbol){let rows=routes.map((rule,index)=>{let typeLabels=getRouteTypeLabel(rule),status=rule.enabled===!1?import_chalk31.default.red("Disabled"):import_chalk31.default.green("Enabled"),prefix=actionSymbol||"",colorFn=actionSymbol==="+"?import_chalk31.default.green:actionSymbol==="-"?import_chalk31.default.red:actionSymbol==="~"?import_chalk31.default.yellow:s=>s,position=actionSymbol?"":`${index+1}`;return[colorFn(`${prefix} ${position}`).trim(),colorFn(truncate(rule.name,30)+(rule.staged?import_chalk31.default.yellow(" (draft)"):"")),colorFn(truncate(rule.route.src,40)),colorFn(typeLabels),status]});return formatTable(["#","Name","Path Pattern","Actions","Status"],["r","l","l","l","l"],[{rows}])}function truncate(str,maxLength){return str.length<=maxLength?str:str.slice(0,maxLength-3)+"..."}function formatExpandedRoutes(routes){let lines=[""];return routes.forEach((rule,index)=>{let typeLabels=getRouteTypeLabel(rule),syntaxLabel=getSrcSyntaxLabel(rule),statusText=rule.enabled===!1?import_chalk31.default.red("Disabled"):import_chalk31.default.green("Enabled"),stagedText=rule.staged?import_chalk31.default.yellow(" (staged)"):"";if(lines.push(` ${import_chalk31.default.bold(`${index+1}. ${rule.name}`)}${stagedText} ${import_chalk31.default.gray(`[${rule.id}]`)}`),lines.push(` ${import_chalk31.default.cyan("Status:")} ${statusText}`),lines.push(` ${import_chalk31.default.cyan("Type:")} ${typeLabels}`),rule.description&&lines.push(` ${import_chalk31.default.cyan("Desc:")} ${rule.description}`),lines.push(` ${import_chalk31.default.cyan("Source:")} ${rule.route.src}`),lines.push(` ${import_chalk31.default.cyan("Syntax:")} ${syntaxLabel}`),rule.route.dest&&lines.push(` ${import_chalk31.default.cyan("Dest:")} ${rule.route.dest}`),rule.route.status&&lines.push(` ${import_chalk31.default.cyan("Code:")} ${rule.route.status}`),rule.route.headers&&Object.keys(rule.route.headers).length>0){lines.push(` ${import_chalk31.default.cyan("Response Headers:")}`);for(let[key,value]of Object.entries(rule.route.headers))lines.push(` ${key}: ${value}`)}if(rule.route.transforms&&rule.route.transforms.length>0){lines.push(` ${import_chalk31.default.cyan("Transforms:")}`);for(let transform of rule.route.transforms)lines.push(` ${formatTransform(transform)}`)}if(rule.route.has&&rule.route.has.length>0){lines.push(` ${import_chalk31.default.cyan("Has conditions:")}`);for(let condition of rule.route.has)lines.push(` ${formatCondition(condition)}`)}if(rule.route.missing&&rule.route.missing.length>0){lines.push(` ${import_chalk31.default.cyan("Does not have conditions:")}`);for(let condition of rule.route.missing)lines.push(` ${formatCondition(condition)}`)}lines.push("")}),lines.join(`
209
- `)}var import_chalk32=__toESM(require_source(),1),import_ms6=__toESM(require_ms(),1);async function listVersions2(client,argv){let parsed=await parseSubcommandArgs(argv,listVersionsSubcommand2,client);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,{flags}=parsed,teamId=org.type==="team"?org.id:void 0,count=flags["--count"];if(count!==void 0&&(count<1||count>100))return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:"Count must be between 1 and 100",next:[{command:withGlobalFlags2(client,"routes list-versions --count 20")}]}),process.exit(1)),output_manager_default.error("Count must be between 1 and 100"),2;let asJson=!!flags["--json"],lsStamp=stamp_default();asJson||output_manager_default.spinner(`Fetching route versions for ${import_chalk32.default.bold(project.name)}`);let{versions}=await getRouteVersions(client,project.id,{teamId,count});return asJson?(client.stdout.write(`${JSON.stringify({versions},null,2)}
209
+ `)}var import_chalk32=__toESM(require_source(),1),import_ms6=__toESM(require_ms(),1);async function listVersions2(client,argv){let parsed=await parseSubcommandArgs(argv,listVersionsSubcommand2,client);if(typeof parsed=="number")return parsed;let asJson=!!parsed.flags["--json"],limit=getRenamedOption(parsed.flags,"--limit","--count",{json:asJson});if("error"in limit)return reportRenamedOptionError(client,limit.error,{json:asJson});let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,count=limit.value;if(count!==void 0&&(count<1||count>100))return client.nonInteractive&&(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:"Count must be between 1 and 100",next:[{command:withGlobalFlags2(client,"routes list-versions --limit 20")}]}),process.exit(1)),output_manager_default.error("Count must be between 1 and 100"),2;let lsStamp=stamp_default();asJson||output_manager_default.spinner(`Fetching route versions for ${import_chalk32.default.bold(project.name)}`);let{versions}=await getRouteVersions(client,project.id,{teamId,count});return asJson?(client.stdout.write(`${JSON.stringify(withWarnings({versions},[limit.warning]),null,2)}
210
210
  `),0):(output_manager_default.log(`Route versions for ${import_chalk32.default.bold(project.name)} ${import_chalk32.default.gray(lsStamp())}`),versions.length===0?(output_manager_default.log(`
211
211
  No versions found
212
212
  `),0):(output_manager_default.print(formatVersionsTable2(versions)),output_manager_default.print(`
@@ -246,13 +246,13 @@ ${import_chalk29.default.gray("No changes detected from current production versi
246
246
  `),output_manager_default.print(` ${import_chalk34.default.gray("ID:")} ${route2.id}
247
247
  `),output_manager_default.print(`
248
248
  ${import_chalk34.default.bold("Staging version:")} ${version.id}
249
- `),await offerAutoPromote(client,projectId,version,!!existingStagingVersion,{teamId,skipPrompts}),0}catch(e){let error=e;return client.nonInteractive&&outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.ROUTE_CREATE_FAILED,message:"Route creation failed for this project. See hint for next steps.",hint:error.message||"Use `vercel routes list --diff` to inspect staged routes, then adjust flags and retry.",next:[{command:withGlobalFlags2(client,"routes list --diff"),when:"to inspect staged state"}]},1),output_manager_default.error(error.message||"Failed to create route"),1}}var COMMAND_CONFIG5={list:getCommandAliases(listSubcommand5),"list-versions":getCommandAliases(listVersionsSubcommand2),inspect:getCommandAliases(inspectSubcommand4),add:getCommandAliases(addSubcommand3),update:getCommandAliases(editSubcommand),remove:getCommandAliases(deleteSubcommand2),enable:getCommandAliases(enableSubcommand),disable:getCommandAliases(disableSubcommand),move:getCommandAliases(reorderSubcommand),export:getCommandAliases(exportSubcommand),publish:getCommandAliases(publishSubcommand),restore:getCommandAliases(restoreSubcommand2),"discard-staging":getCommandAliases(discardSubcommand)};async function main4(client){let telemetry=new RoutesTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(routesCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(err){return printError(err),2}let subArgs=parsedArgs.args.slice(1),{subcommand,args,subcommandOriginal}=getSubcommand2(subArgs,COMMAND_CONFIG5),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("routes"),output_manager_default.print(help(routesCommand,{columns:client.stderr.columns})),0;function printHelp(command2){output_manager_default.print(help(command2,{parent:routesCommand,columns:client.stderr.columns}))}switch(subcommand&&!needHelp&&telemetry.trackCliOptionProject(getProjectOptionFromArgs(args)),subcommand){case"list":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(listSubcommand5),0):(telemetry.trackCliSubcommandList(subcommandOriginal),list3(client,args));case"list-versions":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(listVersionsSubcommand2),0):(telemetry.trackCliSubcommandListVersions(subcommandOriginal),subcommandOriginal==="ls-versions"&&warnDeprecatedSubcommand(client,"routes ls-versions","routes list-versions"),listVersions2(client,args));case"inspect":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(inspectSubcommand4),0):(telemetry.trackCliSubcommandInspect(subcommandOriginal),inspect3(client,args));case"add":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(addSubcommand3),0):(telemetry.trackCliSubcommandAdd(subcommandOriginal),add3(client,args));case"update":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(editSubcommand),0):(telemetry.trackCliSubcommandUpdate(subcommandOriginal),subcommandOriginal==="edit"&&warnDeprecatedSubcommand(client,"routes edit","routes update"),(await import("./chunks/edit-DNWH6SPE.js")).default(client,args));case"remove":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(deleteSubcommand2),0):(telemetry.trackCliSubcommandRemove(subcommandOriginal),subcommandOriginal==="delete"&&warnDeprecatedSubcommand(client,"routes delete","routes remove"),(await import("./chunks/delete-2ZE2NVHI.js")).default(client,args));case"enable":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(enableSubcommand),0):(telemetry.trackCliSubcommandEnable(subcommandOriginal),(await import("./chunks/enable-J6MMYPYF.js")).default(client,args));case"disable":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(disableSubcommand),0):(telemetry.trackCliSubcommandDisable(subcommandOriginal),(await import("./chunks/disable-MKI3BKNH.js")).default(client,args));case"move":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(reorderSubcommand),0):(telemetry.trackCliSubcommandMove(subcommandOriginal),subcommandOriginal==="reorder"&&warnDeprecatedSubcommand(client,"routes reorder","routes move"),(await import("./chunks/reorder-4J2STFUS.js")).default(client,args));case"export":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(exportSubcommand),0):(telemetry.trackCliSubcommandExport(subcommandOriginal),(await import("./chunks/export-MHSH7QCX.js")).default(client,args));case"publish":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(publishSubcommand),0):(telemetry.trackCliSubcommandPublish(subcommandOriginal),(await import("./chunks/publish-FPNQ2US4.js")).default(client,args));case"restore":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(restoreSubcommand2),0):(telemetry.trackCliSubcommandRestore(subcommandOriginal),(await import("./chunks/restore-TEA6TSVK.js")).default(client,args));case"discard-staging":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(discardSubcommand),0):(telemetry.trackCliSubcommandDiscardStaging(subcommandOriginal),(await import("./chunks/discard-SI4H7ST3.js")).default(client,args));default:return output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG5)),output_manager_default.print(help(routesCommand,{columns:client.stderr.columns})),2}}var SchedulesTelemetryClient=class extends TelemetryClient{trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandCreate(actual){this.trackCliSubcommand({subcommand:"create",value:actual})}trackCliSubcommandUpdate(actual){this.trackCliSubcommand({subcommand:"update",value:actual})}trackCliSubcommandEnable(actual){this.trackCliSubcommand({subcommand:"enable",value:actual})}trackCliSubcommandDisable(actual){this.trackCliSubcommand({subcommand:"disable",value:actual})}trackCliSubcommandInvoke(actual){this.trackCliSubcommand({subcommand:"invoke",value:actual})}trackCliSubcommandDelete(actual){this.trackCliSubcommand({subcommand:"delete",value:actual})}trackCliSubcommandExecutions(actual){this.trackCliSubcommand({subcommand:"executions",value:actual})}trackCliSubcommandExecutionsList(actual){this.trackCliSubcommand({subcommand:"executions:list",value:actual})}};var import_ms8=__toESM(require_ms(),1);var SchedulesActionTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionUntil(until){until&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionFor(duration){duration&&this.trackCliOption({option:"for",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};function asSentence(value){let trimmed=value.trim();return/[.!?]$/.test(trimmed)?trimmed:`${trimmed}.`}function apiErrorDetail(error){let message=error.serverMessage?.trim();return message&&message!=="Response Error"?asSentence(message):void 0}function requestDescription(context){return context.action==="list"?`list schedules in namespace ${context.namespace}`:context.action==="list-executions"?`list executions for schedule ${context.namespace}/${context.name}`:`${context.action} schedule ${context.namespace}/${context.name}`}function ambiguousInvokeError(local){return{reason:AGENT_REASON.API_ERROR,message:"The schedule invocation may have been accepted, but the CLI did not receive confirmation. Check whether the schedule ran before invoking it again."+(local?` Inspect the ${getCommandName("dev")} output for local executions.`:""),retryable:!1,userActionRequired:!0}}function getSchedulesError(client,error,context){if(!isAPIError(error))return context.action==="invoke"?ambiguousInvokeError(context.local):context.local?{reason:AGENT_REASON.API_ERROR,message:`${error instanceof Error?asSentence(error.message):"Failed to connect to local Schedules."} Check the local session and restart ${getCommandName("dev")} in this project if needed.`,retryable:!1,userActionRequired:!0}:{reason:AGENT_REASON.API_ERROR,message:"Failed to connect to the Schedules API. Check your connection and try again.",retryable:!0};let serverMessage=error.serverMessage?.trim().toLowerCase();if(context.local&&context.action==="invoke"&&error.status>=500)return ambiguousInvokeError(!0);if(context.local&&(error.status===401||error.status===402||error.status===403||/(?:project|session)_(?:mismatch|not_found|expired)/.test(error.code??"")||/^(?:local )?(?:project|session)\b/.test(serverMessage??"")))return{reason:AGENT_REASON.API_ERROR,message:`${apiErrorDetail(error)??"The local Schedules session is unavailable."} Restart ${getCommandName("dev")} in this project and use its local session.`,retryable:!1,userActionRequired:!0};if(error.code==="schedule_already_exists")return{reason:AGENT_REASON.SCHEDULE_ALREADY_EXISTS,message:context.name?`Schedule ${context.namespace}/${context.name} already exists. Choose a different name or update the existing schedule.`:"The schedule already exists. Choose a different name or update the existing schedule.",retryable:!1};if(error.code==="schedule_single_at_passed")return{reason:AGENT_REASON.SCHEDULE_SINGLE_AT_PASSED,message:context.name?`Schedule ${context.namespace}/${context.name} has passed its scheduled time and can't be modified. Delete it or create a new schedule.`:"The schedule has passed its scheduled time and can't be modified. Delete it or create a new schedule.",retryable:!1};if(error.code==="schedule_already_active"){let schedule=context.name?`${quoteArg(context.name)} --namespace ${quoteArg(context.namespace)}`:void 0;return{reason:AGENT_REASON.SCHEDULE_ALREADY_ACTIVE,message:context.name?`Schedule ${context.namespace}/${context.name} is already enabled without an end time. Disable it first, then enable it with --until or --for.`:"The schedule is already enabled without an end time. Disable it first, then enable it with --until or --for.",retryable:!1,...schedule&&{next:[{command:buildCommandWithGlobalFlags(client.argv,`schedules disable ${schedule}`,void 0,{excludeFlags:["--yes","--until","--for"]}),when:"Disable the schedule before enabling it with an end time"}]}}}if(error.code==="static_schedule"){let schedule=context.name?`${quoteArg(context.name)} --namespace ${quoteArg(context.namespace)}`:void 0;return{reason:AGENT_REASON.STATIC_SCHEDULE,message:context.name?`Static schedule ${context.namespace}/${context.name} can't be updated or deleted. Enable or disable it instead.`:"Static schedules can't be updated or deleted. Enable or disable them instead.",retryable:!1,...schedule&&{next:[{command:buildCommandWithGlobalFlags(client.argv,`schedules enable ${schedule}`,void 0,{excludeFlags:["--yes"]}),when:"Enable the static schedule"},{command:buildCommandWithGlobalFlags(client.argv,`schedules disable ${schedule}`,void 0,{excludeFlags:["--yes"]}),when:"Disable the static schedule"}]}}}if(error.code==="invalid_cron_expression")return{reason:AGENT_REASON.INVALID_CRON_EXPRESSION,message:`${apiErrorDetail(error)??"The cron expression is invalid."} Check \`--cron\` and try again.`,retryable:!1};if(error.code==="invalid_jitter")return{reason:AGENT_REASON.INVALID_JITTER,message:apiErrorDetail(error)??"The schedule jitter setting is invalid.",retryable:!1};if(error.code==="jitter_exceeds_cadence")return{reason:AGENT_REASON.JITTER_EXCEEDS_CADENCE,message:`${apiErrorDetail(error)??"The schedule jitter exceeds the interval between runs."} Increase the interval between runs.`,retryable:!1};if(error.code==="single_at_too_soon")return{reason:AGENT_REASON.SINGLE_AT_TOO_SOON,message:`${apiErrorDetail(error)??"The one-time schedule is too soon."} Choose a later value for \`--at\`.`,retryable:!1};if(error.code==="payload_too_large")return{reason:AGENT_REASON.SCHEDULE_PAYLOAD_TOO_LARGE,message:`${apiErrorDetail(error)??"The schedule payload is too large."} Reduce the value passed to \`--payload\` and try again.`,retryable:!1};if(error.code==="payload_store_failed")return{reason:AGENT_REASON.SCHEDULE_PAYLOAD_STORE_FAILED,message:"Failed to store the schedule payload. Try again later.",retryable:!0};if(error.code==="service_unavailable")return{reason:AGENT_REASON.SCHEDULE_SERVICE_UNAVAILABLE,message:"Schedule execution history is temporarily unavailable. Try again later.",retryable:!0};if(error.code==="service_error")return{reason:AGENT_REASON.SCHEDULE_SERVICE_ERROR,message:error.status>=500?"Failed to load schedule execution history. Try again later.":"Failed to load schedule execution history. Choose a shorter time range and try again.",retryable:error.status>=500};if(error.status===400){let detail2=apiErrorDetail(error);return{reason:AGENT_REASON.INVALID_ARGUMENTS,message:`The Schedules API rejected the request.${detail2?` ${detail2}`:""}`,retryable:!1}}if(error.status===401&&error.code==="missing_team_param")return{reason:AGENT_REASON.MISSING_SCOPE,message:"Schedules requires a team project. Run `vercel link` to link a project owned by a team.",retryable:!1,userActionRequired:!0};if(error.status===401){let tokenSource=client.authConfig.tokenSource;return{reason:AGENT_REASON.LOGIN_REQUIRED,message:tokenSource==="env"?"Schedules API authentication failed. Replace VERCEL_TOKEN, or unset it to use your saved login.":tokenSource==="flag"?"Schedules API authentication failed. Replace the token passed to `--token`.":`Schedules API authentication failed. Run ${getCommandName("login")} and try again.`,retryable:!1,userActionRequired:!0}}if(error.status===402){let detail2=apiErrorDetail(error);return{reason:AGENT_REASON.PLAN_UPGRADE_REQUIRED,message:`Schedules isn't available for this team.${detail2?` ${detail2}`:""} Ask a team owner to review the requirement.`,retryable:!1,userActionRequired:!0}}if(error.status===403&&error.code==="not_enabled"||!context.local&&error.status===404&&(serverMessage==="not found"||serverMessage==="not found."))return{reason:AGENT_REASON.SCHEDULES_NOT_ENABLED,message:"Vercel Schedules is not enabled for this team.",retryable:!1,userActionRequired:!0};if(error.status===403)return{reason:AGENT_REASON.PERMISSION_DENIED,message:"Can't access Schedules with the current credentials and team. Check the token and selected team. If both are correct, ask a team owner for access.",retryable:!1,userActionRequired:!0};if(error.status===404&&(serverMessage==="project not found"||serverMessage==="project not found."))return{reason:AGENT_REASON.PROJECT_NOT_FOUND,message:"The linked project isn't available to this team. Run `vercel link` to update the project link.",retryable:!1,userActionRequired:!0};if(error.status===404&&context.action!=="create"&&context.action!=="list"&&context.name)return{reason:AGENT_REASON.NOT_FOUND,message:`Schedule not found: ${context.namespace}/${context.name}.`,retryable:!1};if(error.status===429){let retryAfterMs=typeof error.retryAfterMs=="number"&&error.retryAfterMs>0?error.retryAfterMs:void 0;return{reason:AGENT_REASON.RATE_LIMITED,message:retryAfterMs===void 0?"The Schedules API request limit was reached. Wait and try again.":`The Schedules API request limit was reached. Try again in ${Math.ceil(retryAfterMs/1e3)} second${retryAfterMs>1e3?"s":""}.`,retryable:!0,...retryAfterMs&&{retryAfterMs}}}if(error.status>=500)return context.action==="invoke"?ambiguousInvokeError(context.local):{reason:AGENT_REASON.API_ERROR,message:context.local?`Local Schedules is unavailable. Check the ${getCommandName("dev")} output and restart the local session if needed.`:"The Schedules API is temporarily unavailable. Try again later.",retryable:!0};let detail=apiErrorDetail(error);return{reason:AGENT_REASON.API_ERROR,message:`Failed to ${requestDescription(context)}.${detail?` ${detail}`:""}`,retryable:!1}}function handleSchedulesApiError(client,error,context){let details=getSchedulesError(client,error,context);return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,...details},1),1):(output_manager_default.fatal(details.message),1)}var DEFAULT_SCHEDULES_BASE_URL="https://vercel-schedules.com",DEFAULT_SCHEDULE_NAMESPACE="default",DEFAULT_SCHEDULES_LIMIT=20,LocalSchedulesError=class extends Error{constructor(message){super(message),this.name="LocalSchedulesError"}};function sanitizeSchedule(schedule){let{trackId:_trackId,...publicSchedule}=schedule;return publicSchedule}var SchedulesClient=class{constructor(client,options){this.client=client;this.options=options;if("local"in options){if(!isLocalSchedulesOrigin(options.local.origin))throw new LocalSchedulesError("Local Schedules requires an HTTP 127.0.0.1 endpoint with a valid port.");this.baseUrl=new URL(options.local.origin);return}this.baseUrl=new URL(options.baseUrl??process.env.VERCEL_SCHEDULE_BASE_URL??DEFAULT_SCHEDULES_BASE_URL)}get localOrigin(){return"local"in this.options?this.baseUrl.origin:void 0}async request(path,options={}){let url=new URL(path,this.baseUrl);if("local"in this.options){let session=this.options.local;url.searchParams.set("projectId",session.projectId);let response;try{response=await directFetch(url.href,{method:options.method??"GET",headers:{authorization:`Bearer ${DEV_RESOURCE_TOKEN}`,[LOCAL_SCHEDULES_SESSION_HEADER]:session.id,...options.body===void 0?{}:{"content-type":"application/json"}},body:options.body===void 0?void 0:JSON.stringify(options.body),redirect:"manual",signal:AbortSignal.timeout(3e4)})}catch{throw new LocalSchedulesError(`Could not reach local Schedules at ${session.origin}. No cloud request was made.`)}if(response.status>=300&&response.status<400||response.headers.get(LOCAL_SCHEDULES_SESSION_HEADER)!==session.id)throw await response.body?.cancel(),new LocalSchedulesError("The local Schedules session changed or returned an unexpected response. Restart vercel dev and try again.");if(!response.ok)throw await responseError(response);if(response.status===204)return;try{return await response.json()}catch{throw new LocalSchedulesError("The local Schedules session returned an invalid JSON response.")}}return url.searchParams.set("projectId",this.options.projectId),this.client.fetch(url.href,{...options,accountId:this.options.ownerId,useCurrentTeam:!1})}schedulePath(name,namespace,suffix=""){return`${`/v1/schedules/${encodeURIComponent(name)}${suffix}`}?${new URLSearchParams({namespace})}`}async create({target,...params}){let schedule=await this.request("/v1/schedules",{method:"POST",bailOn429:!0,body:{...params,target:{type:"queue",topic:target.topic}}});return sanitizeSchedule(schedule)}async get({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){let schedule=await this.request(this.schedulePath(name,namespace),{bailOn429:!0});return sanitizeSchedule(schedule)}async list({namespace=DEFAULT_SCHEDULE_NAMESPACE,cursor,limit=DEFAULT_SCHEDULES_LIMIT}={}){let searchParams=new URLSearchParams({namespace,limit:String(limit)});cursor!==void 0&&searchParams.set("cursor",cursor);let response=await this.request(`/v1/schedules?${searchParams}`,{bailOn429:!0});return{data:response.data.map(sanitizeSchedule),cursor:response.cursor}}async update({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,target,...params}){let schedule=await this.request(this.schedulePath(name,namespace),{method:"PATCH",bailOn429:!0,body:{...params,...target?{target:{type:"queue",topic:target.topic}}:{}}});return sanitizeSchedule(schedule)}async delete({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){return this.request(this.schedulePath(name,namespace),{method:"DELETE",bailOn429:!0})}async enable({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,activeUntil}){return this.changeState(name,namespace,"enable",activeUntil===void 0?void 0:{until:activeUntil})}async disable({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){return this.changeState(name,namespace,"disable")}async changeState(name,namespace,action,body){let schedule=await this.request(this.schedulePath(name,namespace,`/${action}`),{method:"POST",bailOn429:!0,...body&&{body}});return sanitizeSchedule(schedule)}async invoke({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){await this.request(this.schedulePath(name,namespace,"/invoke"),{method:"POST",bailOn429:!0,retry:{retries:0}})}async listExecutions({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,cursor,limit=DEFAULT_SCHEDULES_LIMIT,sort,from,to,executionId}){if("local"in this.options)throw new LocalSchedulesError("Execution history is not supported for local Schedules. Inspect the vercel dev output for local executions.");let searchParams=new URLSearchParams({limit:String(limit)});return cursor!==void 0&&searchParams.set("cursor",cursor),sort!==void 0&&searchParams.set("sort",sort),from!==void 0&&searchParams.set("from",String(from)),to!==void 0&&searchParams.set("to",String(to)),executionId!==void 0&&searchParams.set("executionId",executionId),this.request(`${this.schedulePath(name,namespace,"/executions")}&${searchParams}`,{bailOn429:!0})}};async function createLocalSchedulesClient(client){let sessions=await readLocalSchedulesSessions(client.cwd);if(sessions.length===0)throw new LocalSchedulesError("No running local Schedules session was found in this directory. Start vercel dev here, or use --cwd to select its project directory.");if(sessions.length>1)throw new LocalSchedulesError("Multiple vercel dev sessions are running in this directory. Stop the extra instances before using schedules --local.");let[session]=sessions,response;try{response=await directFetch(`${session.origin}/v1/info`,{headers:{authorization:`Bearer ${DEV_RESOURCE_TOKEN}`,[LOCAL_SCHEDULES_SESSION_HEADER]:session.id},redirect:"manual",signal:AbortSignal.timeout(2e3)})}catch{throw new LocalSchedulesError(`The local Schedules session at ${session.origin} is unavailable. Restart vercel dev in this directory. No cloud request was made.`)}if(!response.ok||response.headers.get(LOCAL_SCHEDULES_SESSION_HEADER)!==session.id)throw await response.body?.cancel(),new LocalSchedulesError("The local Schedules session is stale, not ready, or incompatible. Restart vercel dev in this directory.");let info;try{info=await response.json()}catch{throw new LocalSchedulesError("The local Schedules session returned invalid metadata. Restart vercel dev in this directory.")}if(!info||info.version!==session.version||info.id!==session.id||info.pid!==session.pid||info.cwd!==session.cwd||info.origin!==session.origin||info.projectId!==session.projectId)throw new LocalSchedulesError("The local Schedules session does not match this project instance. Restart vercel dev in this directory.");return new SchedulesClient(client,{local:session})}var import_ms7=__toESM(require_ms(),1),MAX_IDENTIFIER_LENGTH=256,IDENTIFIER_PATTERN=/^[0-9A-Za-z][0-9A-Za-z._-]*$/,MAX_QUEUE_TOPIC_LENGTH=256,QUEUE_TOPIC_PATTERN=/^[A-Za-z0-9_-]+$/,MAX_JITTER_MINUTES=15,LOCAL_MINUTE_DATETIME_PATTERN=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/,LOCAL_SECOND_DATETIME_PATTERN=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/,TIMEZONE_PATTERN=/^[A-Za-z][A-Za-z0-9_+/-]*$/;function validateScheduleIdentifier(value,label){if(value.length>MAX_IDENTIFIER_LENGTH)return`${label} must be at most ${MAX_IDENTIFIER_LENGTH} characters.`;if(!IDENTIFIER_PATTERN.test(value))return`${label} must start with a letter or number and can contain only letters, numbers, periods, underscores, and hyphens.`}function validateScheduleTimezone(value){if(value!==void 0){if(value.length===0||value.length>50||!TIMEZONE_PATTERN.test(value))return"`--timezone` must be a valid IANA timezone.";try{new Intl.DateTimeFormat("en-US",{timeZone:value})}catch{return"`--timezone` must be a valid IANA timezone."}}}function validateScheduleQueueTopic(value){if(value.length>MAX_QUEUE_TOPIC_LENGTH||!QUEUE_TOPIC_PATTERN.test(value))return"`--topic` must be 1\u2013256 characters and contain only letters, numbers, underscores, and hyphens."}function normalizeLocalDatetime(value){let secondMatch=LOCAL_SECOND_DATETIME_PATTERN.exec(value);if(secondMatch){if(secondMatch[6]!=="00")return}else LOCAL_MINUTE_DATETIME_PATTERN.test(value)&&(value=`${value}:00`);let match=LOCAL_SECOND_DATETIME_PATTERN.exec(value);if(!match)return;let[,yearValue,monthValue,dayValue,hourValue,minuteValue]=match,year=Number(yearValue),month=Number(monthValue),day=Number(dayValue),hour=Number(hourValue),minute=Number(minuteValue),daysInMonth=[31,year%4===0&&(year%100!==0||year%400===0)?29:28,31,30,31,30,31,31,30,31,30,31];if(!(month<1||month>12||day<1||day>daysInMonth[month-1]||hour<0||hour>23||minute<0||minute>59))return value}function parseScheduleExpression(cron,at,required){if(cron!==void 0&&at!==void 0)return{valid:!1,error:"Use either `--cron` or `--at`, not both."};if(cron!==void 0)return cron.trim()?{valid:!0,value:{type:"cron",cron}}:{valid:!1,error:"`--cron` cannot be empty."};if(at!==void 0){let normalized=normalizeLocalDatetime(at);return normalized===void 0?{valid:!1,error:"`--at` must use YYYY-MM-DDTHH:mm or YYYY-MM-DDTHH:mm:00 without a timezone suffix. Use `--timezone` to select the timezone."}:{valid:!0,value:{type:"single",at:normalized}}}return required?{valid:!1,error:"A schedule expression is required. Use `--cron` or `--at`."}:{valid:!0,value:void 0}}function validateJitter(value){return!Number.isInteger(value)||value<1||value>MAX_JITTER_MINUTES?{valid:!1,error:"`--jitter` must be an integer between 1 and 15."}:{valid:!0,value}}function parseCreateJitter(value){return value===void 0?{valid:!0,value:void 0}:validateJitter(value)}function parseUpdateJitter(value){return value===void 0?{valid:!0,value:void 0}:value==="none"?{valid:!0,value:null}:validateJitter(Number(value))}function parseSchedulePayload(value){if(value===void 0)return{valid:!0,value:void 0};try{return{valid:!0,value:JSON.parse(value)}}catch{return{valid:!1,error:"`--payload` must be valid JSON."}}}var UNIX_MILLISECONDS_PATTERN=/^\d+$/,ISO_DATE_PATTERN=/^(\d{4})-(\d{2})-(\d{2})/,DURATION_PATTERN=/^\d+(?:\.\d+)?\s*[a-z]+$/i;function parseEnableUntil(until,duration,now=Date.now()){if(until!==void 0&&duration!==void 0)return{valid:!1,error:"`--until` and `--for` cannot be used together."};if(duration!==void 0){let durationMs=DURATION_PATTERN.test(duration.trim())?(0,import_ms7.default)(duration.trim()):void 0;return durationMs===void 0||!(durationMs>0)?{valid:!1,error:"`--for` must be a duration such as 30m, 5h, or 10s."}:{valid:!0,value:now+durationMs}}if(until===void 0)return{valid:!0,value:void 0};let untilMs,isoDate=ISO_DATE_PATTERN.exec(until);if(UNIX_MILLISECONDS_PATTERN.test(until))untilMs=Number(until);else if(isoDate){let[,year,month,day]=isoDate.map(Number),daysInMonth=new Date(Date.UTC(year,month,0)).getUTCDate();untilMs=day>=1&&day<=daysInMonth?Date.parse(until):NaN}else return{valid:!1,error:DURATION_PATTERN.test(until.trim())?`\`--until\` must be a time, not a duration. Use \`--for ${until.trim()}\` instead.`:"`--until` must be an ISO 8601 time or Unix milliseconds."};return Number.isFinite(untilMs)?untilMs<=now?{valid:!1,error:"`--until` must be in the future."}:{valid:!0,value:untilMs}:{valid:!1,error:"`--until` must be an ISO 8601 time or Unix milliseconds."}}var routingFlags2=getFlagsSpecification([...schedulesCommand.subcommands.flatMap(command2=>[...command2.options]),...executionsListSubcommand.options]);function takeScheduleCommand(argv){return takeCommand(argv,routingFlags2)}function scheduleCommandWithGlobalFlags(client,usage){let local=!1;try{local=!!parseArguments(client.argv.slice(2),routingFlags2,{permissive:!0}).flags["--local"]}catch{}return buildCommandWithGlobalFlags(client.argv,`${usage}${local?" --local":""}`,void 0,{excludeFlags:local?["--scope","--team"]:[]})}function validateLocalScheduleFlags(client,flags,usage){if(!flags["--local"])return;let originalFlags;try{originalFlags=parseArguments(client.argv.slice(2),routingFlags2,{permissive:!0}).flags}catch(error){return invalidScheduleArguments(client,usage,error instanceof Error?error.message:String(error))}for(let flag of["--scope","--team","--token"])if(flags[flag]!==void 0||originalFlags[flag]!==void 0)return invalidScheduleArguments(client,usage,`Cannot combine --local with ${flag}. Local Schedules uses the current vercel dev session.`)}function unsupportedLocalExecutions(client){let message="Execution history is not supported for local Schedules. Inspect the vercel dev output for local executions.";return client.nonInteractive?outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message,retryable:!1}):output_manager_default.fatal(message),1}async function resolveSchedulesClient(client,local){if(local)try{let schedules=await createLocalSchedulesClient(client);return output_manager_default.log(`Using local Schedules at ${schedules.localOrigin}`),schedules}catch(error){let message=error instanceof Error?error.message:String(error);return client.nonInteractive?outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message,retryable:!1}):output_manager_default.fatal(message),1}let link=await requireProjectContext(client,"schedules");return typeof link=="number"?link:new SchedulesClient(client,{ownerId:link.org.id,projectId:link.project.id})}function invalidScheduleArguments(client,usage,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:scheduleCommandWithGlobalFlags(client,usage),when:"Provide valid schedule arguments"}]}),2):(output_manager_default.fatal(message),2)}function validateScheduleNameAndNamespace(client,args,namespaceFlag,usage){let[name]=args;if(!name)return{valid:!1,exitCode:invalidScheduleArguments(client,usage,"A schedule name is required")};if(args.length!==1)return{valid:!1,exitCode:invalidScheduleArguments(client,usage,`Expected one schedule name. Usage: ${getCommandName(usage)}`)};let namespace=namespaceFlag??DEFAULT_SCHEDULE_NAMESPACE,nameError=validateScheduleIdentifier(name,"Schedule name"),namespaceError=validateScheduleIdentifier(namespace,"Namespace"),error=nameError??namespaceError;return error?{valid:!1,exitCode:invalidScheduleArguments(client,usage,error)}:{valid:!0,name,namespace}}function parseScheduleOutput(client,usage,flags){let result=validateJsonOutput(flags);return result.valid?{valid:!0,json:result.jsonOutput||client.nonInteractive}:{valid:!1,exitCode:invalidScheduleArguments(client,usage,result.error)}}function writeScheduleMutationResult(client,schedule,message,json){if(json){let value=client.nonInteractive?{status:AGENT_STATUS.OK,schedule,message}:schedule;client.stdout.write(`${JSON.stringify(value,null,2)}
250
- `)}else output_manager_default.success(message);return 0}async function runScheduleAction(client,argv,action){let subcommand=action==="enable"?enableSubcommand2:action==="disable"?disableSubcommand2:invokeSubcommand,usage=`schedules ${action} <name>`,telemetry=new SchedulesActionTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(subcommand.options))}catch(error){return invalidScheduleArguments(client,usage,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs,enableFlags=flags;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,usage);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionUntil(enableFlags["--until"]),telemetry.trackCliOptionFor(enableFlags["--for"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],usage);if(!identifier.valid)return identifier.exitCode;let outputMode=parseScheduleOutput(client,usage,flags);if(!outputMode.valid)return outputMode.exitCode;let activeUntil=parseEnableUntil(enableFlags["--until"],enableFlags["--for"]);if(!activeUntil.valid)return invalidScheduleArguments(client,usage,activeUntil.error);if(flags["--local"]&&activeUntil.value!==void 0)return invalidScheduleArguments(client,usage,"Cannot combine --local with --until or --for. Local Schedules does not support enabling a schedule until a time.");let schedulesClient=await resolveSchedulesClient(client,flags["--local"]);if(typeof schedulesClient=="number")return schedulesClient;let presentParticiple=action==="enable"?"Enabling":action==="disable"?"Disabling":"Invoking";outputMode.json||output_manager_default.spinner(`${presentParticiple} schedule\u2026`);let schedule;try{action==="enable"?schedule=await schedulesClient.enable({...identifier,activeUntil:activeUntil.value}):action==="disable"?schedule=await schedulesClient.disable(identifier):await schedulesClient.invoke(identifier)}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action,local:flags["--local"],name:identifier.name,namespace:identifier.namespace})}output_manager_default.stopSpinner();let pastTense=action==="enable"?"Enabled":action==="disable"?"Disabled":"Invoked",enabledUntil=schedule?.activeUntil??activeUntil.value,message=action==="enable"&&enabledUntil!==void 0?`${pastTense} schedule ${identifier.namespace}/${identifier.name} until ${new Date(enabledUntil).toISOString()} (in ${(0,import_ms8.default)(Math.max(enabledUntil-Date.now(),1e3),{long:!0})}).`:`${pastTense} schedule ${identifier.namespace}/${identifier.name}.`;if(schedule)return writeScheduleMutationResult(client,schedule,message,outputMode.json);if(outputMode.json){let result=client.nonInteractive?{status:AGENT_STATUS.OK,message}:{invoked:!0,name:identifier.name,namespace:identifier.namespace};client.stdout.write(`${JSON.stringify(result,null,2)}
251
- `)}else output_manager_default.success(message);return 0}var SchedulesCreateTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionCron(cron){cron&&this.trackCliOption({option:"cron",value:this.redactedValue})}trackCliOptionAt(at){at&&this.trackCliOption({option:"at",value:this.redactedValue})}trackCliOptionTimezone(timezone){timezone&&this.trackCliOption({option:"timezone",value:timezone})}trackCliOptionJitter(jitter){jitter!==void 0&&this.trackCliOption({option:"jitter",value:String(jitter)})}trackCliOptionTopic(topic){topic&&this.trackCliOption({option:"topic",value:this.redactedValue})}trackCliOptionPayload(payload){payload!==void 0&&this.trackCliOption({option:"payload",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE14="schedules create <name> --cron <expression> --topic <topic>";async function create(client,argv){let telemetry=new SchedulesCreateTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(createSubcommand2.options))}catch(error){return invalidScheduleArguments(client,USAGE14,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE14);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionCron(flags["--cron"]),telemetry.trackCliOptionAt(flags["--at"]),telemetry.trackCliOptionTimezone(flags["--timezone"]),telemetry.trackCliOptionJitter(flags["--jitter"]),telemetry.trackCliOptionTopic(flags["--topic"]),telemetry.trackCliOptionPayload(flags["--payload"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],USAGE14);if(!identifier.valid)return identifier.exitCode;let expression=parseScheduleExpression(flags["--cron"],flags["--at"],!0);if(!expression.valid)return invalidScheduleArguments(client,USAGE14,expression.error);let topic=flags["--topic"];if(!topic?.trim())return invalidScheduleArguments(client,USAGE14,"A target queue topic is required. Use `--topic`.");let topicError=validateScheduleQueueTopic(topic);if(topicError)return invalidScheduleArguments(client,USAGE14,topicError);let jitter=parseCreateJitter(flags["--jitter"]);if(!jitter.valid)return invalidScheduleArguments(client,USAGE14,jitter.error);let timezoneError=validateScheduleTimezone(flags["--timezone"]);if(timezoneError)return invalidScheduleArguments(client,USAGE14,timezoneError);let payload=parseSchedulePayload(flags["--payload"]);if(!payload.valid)return invalidScheduleArguments(client,USAGE14,payload.error);let outputMode=parseScheduleOutput(client,USAGE14,flags);if(!outputMode.valid)return outputMode.exitCode;let schedules=await resolveSchedulesClient(client,flags["--local"]);if(typeof schedules=="number")return schedules;outputMode.json||output_manager_default.spinner("Creating schedule\u2026");let schedule;try{schedule=await schedules.create({name:identifier.name,namespace:identifier.namespace,expression:expression.value,target:{topic},...flags["--timezone"]!==void 0&&{timezone:flags["--timezone"]},...jitter.value!==void 0&&{jitter:jitter.value},...flags["--payload"]!==void 0&&{payload:payload.value}})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"create",local:flags["--local"],name:identifier.name,namespace:identifier.namespace})}return output_manager_default.stopSpinner(),writeScheduleMutationResult(client,schedule,`Created schedule ${identifier.namespace}/${identifier.name}.`,outputMode.json)}var SchedulesDeleteTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE15="schedules delete <name> --yes";async function deleteSchedule(client,argv){let telemetry=new SchedulesDeleteTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(deleteSubcommand3.options))}catch(error){return invalidScheduleArguments(client,USAGE15,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE15);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliFlagYes(flags["--yes"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],USAGE15);if(!identifier.valid)return identifier.exitCode;let outputMode=parseScheduleOutput(client,USAGE15,flags);if(!outputMode.valid)return outputMode.exitCode;let skipConfirmation=flags["--yes"]??!1;if(client.nonInteractive&&!skipConfirmation)return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:flags["--local"]?"Deleting a local schedule requires confirmation. Re-run with `--yes`.":"Deleting a schedule requires confirmation. Re-run with `--yes`.",next:[{command:flags["--local"]?scheduleCommandWithGlobalFlags(client,`schedules delete ${quoteArg(identifier.name)} --namespace ${quoteArg(identifier.namespace)} --yes`):buildCommandWithYes(client.argv)}]},1),1;let schedules=await resolveSchedulesClient(client,flags["--local"]);if(typeof schedules=="number")return schedules;let target=flags["--local"]?"local schedule":"schedule";if(!skipConfirmation&&!await client.input.confirm(`Delete ${target} ${identifier.namespace}/${identifier.name}? This cannot be undone.`,!1))return output_manager_default.log("Canceled"),0;outputMode.json||output_manager_default.spinner("Deleting schedule\u2026");let deletedScheduleId;try{deletedScheduleId=(await schedules.delete(identifier)).scheduleId}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"delete",local:flags["--local"],name:identifier.name,namespace:identifier.namespace})}output_manager_default.stopSpinner();let message=`Deleted ${target} ${identifier.namespace}/${identifier.name}.`;if(outputMode.json){let deleted={name:identifier.name,namespace:identifier.namespace,scheduleId:deletedScheduleId},result=client.nonInteractive?{status:AGENT_STATUS.OK,deleted,message}:{deleted:!0,...deleted};client.stdout.write(`${JSON.stringify(result,null,2)}
252
- `)}else output_manager_default.success(message);return 0}var import_chalk35=__toESM(require_source(),1);var SchedulesListExecutionsTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionLimit(limit){limit!==void 0&&this.trackCliOption({option:"limit",value:String(limit)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionSort(sort){sort&&this.trackCliOption({option:"sort",value:sort})}trackCliOptionSince(since){since&&this.trackCliOption({option:"since",value:this.redactedValue})}trackCliOptionUntil(until){until&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionFrom(from){from!==void 0&&this.trackCliOption({option:"from",value:String(from)})}trackCliOptionTo(to){to!==void 0&&this.trackCliOption({option:"to",value:String(to)})}trackCliOptionExecutionId(executionId){executionId&&this.trackCliOption({option:"execution-id",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE16="schedules executions list <name>",MAX_EXECUTION_RANGE_MS=30*864e5;function invalidArguments(client,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,USAGE16),when:"List schedule executions with valid options"}]}),2):(output_manager_default.fatal(message),2)}function capitalize(value){return`${value.charAt(0).toUpperCase()}${value.slice(1)}`}function formatExecutionStatus(status){return status==="succeeded"?import_chalk35.default.green("Succeeded"):status==="failed"?import_chalk35.default.red("Failed"):import_chalk35.default.gray("Unavailable")}function formatPercentage2(value){return value===null?import_chalk35.default.gray("-"):`${Number((value*100).toFixed(2))}%`}function formatDuration(value){return value===null?import_chalk35.default.gray("-"):value<1e3?`${Math.round(value)}ms`:value<6e4?`${Number((value/1e3).toFixed(1))}s`:`${Number((value/6e4).toFixed(1))}m`}function formatInvocationCount(value){return`${value} invocation${value===1?"":"s"}`}function executionMetrics(metrics){return[formatAlignedLabel("Range",`${formatDate(metrics.from)} \u2013 ${formatDate(metrics.to)}`),formatAlignedLabel("Recorded",formatInvocationCount(metrics.recordedInvocations)),formatAlignedLabel("Failed",formatInvocationCount(metrics.failedInvocations)),formatAlignedLabel("Error Rate",formatPercentage2(metrics.errorRate)),formatAlignedLabel("Avg Duration",formatDuration(metrics.averageDurationMs))].join(`
249
+ `),await offerAutoPromote(client,projectId,version,!!existingStagingVersion,{teamId,skipPrompts}),0}catch(e){let error=e;return client.nonInteractive&&outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.ROUTE_CREATE_FAILED,message:"Route creation failed for this project. See hint for next steps.",hint:error.message||"Use `vercel routes list --diff` to inspect staged routes, then adjust flags and retry.",next:[{command:withGlobalFlags2(client,"routes list --diff"),when:"to inspect staged state"}]},1),output_manager_default.error(error.message||"Failed to create route"),1}}var COMMAND_CONFIG5={list:getCommandAliases(listSubcommand5),"list-versions":getCommandAliases(listVersionsSubcommand2),inspect:getCommandAliases(inspectSubcommand4),add:getCommandAliases(addSubcommand3),update:getCommandAliases(editSubcommand),remove:getCommandAliases(deleteSubcommand2),enable:getCommandAliases(enableSubcommand),disable:getCommandAliases(disableSubcommand),move:getCommandAliases(reorderSubcommand),export:getCommandAliases(exportSubcommand),publish:getCommandAliases(publishSubcommand),restore:getCommandAliases(restoreSubcommand2),"discard-staging":getCommandAliases(discardSubcommand)};async function main4(client){let telemetry=new RoutesTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(routesCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(err){return printError(err),2}let subArgs=parsedArgs.args.slice(1),{subcommand,args,subcommandOriginal}=getSubcommand2(subArgs,COMMAND_CONFIG5),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("routes"),output_manager_default.print(help(routesCommand,{columns:client.stderr.columns})),0;function printHelp(command2){output_manager_default.print(help(command2,{parent:routesCommand,columns:client.stderr.columns}))}switch(subcommand&&!needHelp&&telemetry.trackCliOptionProject(getProjectOptionFromArgs(args)),subcommand){case"list":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(listSubcommand5),0):(telemetry.trackCliSubcommandList(subcommandOriginal),list3(client,args));case"list-versions":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(listVersionsSubcommand2),0):(telemetry.trackCliSubcommandListVersions(subcommandOriginal),subcommandOriginal==="ls-versions"&&warnDeprecatedSubcommand(client,"routes ls-versions","routes list-versions"),listVersions2(client,args));case"inspect":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(inspectSubcommand4),0):(telemetry.trackCliSubcommandInspect(subcommandOriginal),inspect3(client,args));case"add":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(addSubcommand3),0):(telemetry.trackCliSubcommandAdd(subcommandOriginal),add3(client,args));case"update":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(editSubcommand),0):(telemetry.trackCliSubcommandUpdate(subcommandOriginal),subcommandOriginal==="edit"&&warnDeprecatedSubcommand(client,"routes edit","routes update"),(await import("./chunks/edit-TM7YCWBU.js")).default(client,args));case"remove":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(deleteSubcommand2),0):(telemetry.trackCliSubcommandRemove(subcommandOriginal),subcommandOriginal==="delete"&&warnDeprecatedSubcommand(client,"routes delete","routes remove"),(await import("./chunks/delete-EM4JZPFA.js")).default(client,args));case"enable":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(enableSubcommand),0):(telemetry.trackCliSubcommandEnable(subcommandOriginal),(await import("./chunks/enable-72C3QX34.js")).default(client,args));case"disable":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(disableSubcommand),0):(telemetry.trackCliSubcommandDisable(subcommandOriginal),(await import("./chunks/disable-QOM7UHQC.js")).default(client,args));case"move":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(reorderSubcommand),0):(telemetry.trackCliSubcommandMove(subcommandOriginal),subcommandOriginal==="reorder"&&warnDeprecatedSubcommand(client,"routes reorder","routes move"),(await import("./chunks/reorder-B4OXSYCI.js")).default(client,args));case"export":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(exportSubcommand),0):(telemetry.trackCliSubcommandExport(subcommandOriginal),(await import("./chunks/export-EPLYZF2Q.js")).default(client,args));case"publish":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(publishSubcommand),0):(telemetry.trackCliSubcommandPublish(subcommandOriginal),(await import("./chunks/publish-2HEK5UMJ.js")).default(client,args));case"restore":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(restoreSubcommand2),0):(telemetry.trackCliSubcommandRestore(subcommandOriginal),(await import("./chunks/restore-Q25KRZPH.js")).default(client,args));case"discard-staging":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(discardSubcommand),0):(telemetry.trackCliSubcommandDiscardStaging(subcommandOriginal),(await import("./chunks/discard-L5ZH7P5B.js")).default(client,args));default:return output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG5)),output_manager_default.print(help(routesCommand,{columns:client.stderr.columns})),2}}var SchedulesTelemetryClient=class extends TelemetryClient{trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandCreate(actual){this.trackCliSubcommand({subcommand:"create",value:actual})}trackCliSubcommandUpdate(actual){this.trackCliSubcommand({subcommand:"update",value:actual})}trackCliSubcommandEnable(actual){this.trackCliSubcommand({subcommand:"enable",value:actual})}trackCliSubcommandDisable(actual){this.trackCliSubcommand({subcommand:"disable",value:actual})}trackCliSubcommandInvoke(actual){this.trackCliSubcommand({subcommand:"invoke",value:actual})}trackCliSubcommandDelete(actual){this.trackCliSubcommand({subcommand:"delete",value:actual})}trackCliSubcommandExecutions(actual){this.trackCliSubcommand({subcommand:"executions",value:actual})}trackCliSubcommandExecutionsList(actual){this.trackCliSubcommand({subcommand:"executions:list",value:actual})}};var import_ms8=__toESM(require_ms(),1);var SchedulesActionTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionUntil(until){until&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionFor(duration){duration&&this.trackCliOption({option:"for",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};function asSentence(value){let trimmed=value.trim();return/[.!?]$/.test(trimmed)?trimmed:`${trimmed}.`}function apiErrorDetail(error){let message=error.serverMessage?.trim();return message&&message!=="Response Error"?asSentence(message):void 0}function requestDescription(context){return context.action==="list"?`list schedules in namespace ${context.namespace}`:context.action==="list-executions"?`list executions for schedule ${context.namespace}/${context.name}`:`${context.action} schedule ${context.namespace}/${context.name}`}function ambiguousInvokeError(local){return{reason:AGENT_REASON.API_ERROR,message:"The schedule invocation may have been accepted, but the CLI did not receive confirmation. Check whether the schedule ran before invoking it again."+(local?` Inspect the ${getCommandName("dev")} output for local executions.`:""),retryable:!1,userActionRequired:!0}}function getSchedulesError(client,error,context){if(!isAPIError(error))return context.action==="invoke"?ambiguousInvokeError(context.local):context.local?{reason:AGENT_REASON.API_ERROR,message:`${error instanceof Error?asSentence(error.message):"Failed to connect to local Schedules."} Check the local session and restart ${getCommandName("dev")} in this project if needed.`,retryable:!1,userActionRequired:!0}:{reason:AGENT_REASON.API_ERROR,message:"Failed to connect to the Schedules API. Check your connection and try again.",retryable:!0};let serverMessage=error.serverMessage?.trim().toLowerCase();if(context.local&&context.action==="invoke"&&error.status>=500)return ambiguousInvokeError(!0);if(context.local&&(error.status===401||error.status===402||error.status===403||/(?:project|session)_(?:mismatch|not_found|expired)/.test(error.code??"")||/^(?:local )?(?:project|session)\b/.test(serverMessage??"")))return{reason:AGENT_REASON.API_ERROR,message:`${apiErrorDetail(error)??"The local Schedules session is unavailable."} Restart ${getCommandName("dev")} in this project and use its local session.`,retryable:!1,userActionRequired:!0};if(error.code==="schedule_already_exists")return{reason:AGENT_REASON.SCHEDULE_ALREADY_EXISTS,message:context.name?`Schedule ${context.namespace}/${context.name} already exists. Choose a different name or update the existing schedule.`:"The schedule already exists. Choose a different name or update the existing schedule.",retryable:!1};if(error.code==="schedule_single_at_passed")return{reason:AGENT_REASON.SCHEDULE_SINGLE_AT_PASSED,message:context.name?`Schedule ${context.namespace}/${context.name} has passed its scheduled time and can't be modified. Delete it or create a new schedule.`:"The schedule has passed its scheduled time and can't be modified. Delete it or create a new schedule.",retryable:!1};if(error.code==="schedule_already_active"){let schedule=context.name?[quoteArg(context.name),`--namespace ${quoteArg(context.namespace)}`,...context.trackArgs??[]].join(" "):void 0;return{reason:AGENT_REASON.SCHEDULE_ALREADY_ACTIVE,message:context.name?`Schedule ${context.namespace}/${context.name} is already enabled without an end time. Disable it first, then enable it with --until or --for.`:"The schedule is already enabled without an end time. Disable it first, then enable it with --until or --for.",retryable:!1,...schedule&&{next:[{command:buildCommandWithGlobalFlags(client.argv,`schedules disable ${schedule}`,void 0,{excludeFlags:["--yes","--until","--for"]}),when:"Disable the schedule before enabling it with an end time"}]}}}if(error.code==="static_schedule"){let schedule=context.name?[quoteArg(context.name),`--namespace ${quoteArg(context.namespace)}`,...context.trackArgs??[]].join(" "):void 0;return{reason:AGENT_REASON.STATIC_SCHEDULE,message:context.name?`Static schedule ${context.namespace}/${context.name} can't be updated or deleted. Enable or disable it instead.`:"Static schedules can't be updated or deleted. Enable or disable them instead.",retryable:!1,...schedule&&{next:[{command:buildCommandWithGlobalFlags(client.argv,`schedules enable ${schedule}`,void 0,{excludeFlags:["--yes"]}),when:"Enable the static schedule"},{command:buildCommandWithGlobalFlags(client.argv,`schedules disable ${schedule}`,void 0,{excludeFlags:["--yes"]}),when:"Disable the static schedule"}]}}}if(error.code==="invalid_cron_expression")return{reason:AGENT_REASON.INVALID_CRON_EXPRESSION,message:`${apiErrorDetail(error)??"The cron expression is invalid."} Check \`--cron\` and try again.`,retryable:!1};if(error.code==="invalid_jitter")return{reason:AGENT_REASON.INVALID_JITTER,message:apiErrorDetail(error)??"The schedule jitter setting is invalid.",retryable:!1};if(error.code==="jitter_exceeds_cadence")return{reason:AGENT_REASON.JITTER_EXCEEDS_CADENCE,message:`${apiErrorDetail(error)??"The schedule jitter exceeds the interval between runs."} Increase the interval between runs.`,retryable:!1};if(error.code==="single_at_too_soon")return{reason:AGENT_REASON.SINGLE_AT_TOO_SOON,message:`${apiErrorDetail(error)??"The one-time schedule is too soon."} Choose a later value for \`--at\`.`,retryable:!1};if(error.code==="payload_too_large")return{reason:AGENT_REASON.SCHEDULE_PAYLOAD_TOO_LARGE,message:`${apiErrorDetail(error)??"The schedule payload is too large."} Reduce the value passed to \`--payload\` and try again.`,retryable:!1};if(error.code==="payload_store_failed")return{reason:AGENT_REASON.SCHEDULE_PAYLOAD_STORE_FAILED,message:"Failed to store the schedule payload. Try again later.",retryable:!0};if(error.code==="service_unavailable")return{reason:AGENT_REASON.SCHEDULE_SERVICE_UNAVAILABLE,message:"Schedule execution history is temporarily unavailable. Try again later.",retryable:!0};if(error.code==="service_error")return{reason:AGENT_REASON.SCHEDULE_SERVICE_ERROR,message:error.status>=500?"Failed to load schedule execution history. Try again later.":"Failed to load schedule execution history. Choose a shorter time range and try again.",retryable:error.status>=500};if(error.status===400){let detail2=apiErrorDetail(error);return{reason:AGENT_REASON.INVALID_ARGUMENTS,message:`The Schedules API rejected the request.${detail2?` ${detail2}`:""}`,retryable:!1}}if(error.status===401&&error.code==="missing_team_param")return{reason:AGENT_REASON.MISSING_SCOPE,message:"Schedules requires a team project. Run `vercel link` to link a project owned by a team.",retryable:!1,userActionRequired:!0};if(error.status===401){let tokenSource=client.authConfig.tokenSource;return{reason:AGENT_REASON.LOGIN_REQUIRED,message:tokenSource==="env"?"Schedules API authentication failed. Replace VERCEL_TOKEN, or unset it to use your saved login.":tokenSource==="flag"?"Schedules API authentication failed. Replace the token passed to `--token`.":`Schedules API authentication failed. Run ${getCommandName("login")} and try again.`,retryable:!1,userActionRequired:!0}}if(error.status===402){let detail2=apiErrorDetail(error);return{reason:AGENT_REASON.PLAN_UPGRADE_REQUIRED,message:`Schedules isn't available for this team.${detail2?` ${detail2}`:""} Ask a team owner to review the requirement.`,retryable:!1,userActionRequired:!0}}if(error.status===403&&error.code==="not_enabled"||!context.local&&error.status===404&&(serverMessage==="not found"||serverMessage==="not found."))return{reason:AGENT_REASON.SCHEDULES_NOT_ENABLED,message:"Vercel Schedules is not enabled for this team.",retryable:!1,userActionRequired:!0};if(error.status===403)return{reason:AGENT_REASON.PERMISSION_DENIED,message:"Can't access Schedules with the current credentials and team. Check the token and selected team. If both are correct, ask a team owner for access.",retryable:!1,userActionRequired:!0};if(error.status===404&&(serverMessage==="project not found"||serverMessage==="project not found."))return{reason:AGENT_REASON.PROJECT_NOT_FOUND,message:"The linked project isn't available to this team. Run `vercel link` to update the project link.",retryable:!1,userActionRequired:!0};if(error.status===404&&context.action!=="create"&&context.action!=="list"&&context.name)return{reason:AGENT_REASON.NOT_FOUND,message:`Schedule not found: ${context.namespace}/${context.name}.`,retryable:!1};if(error.status===429){let retryAfterMs=typeof error.retryAfterMs=="number"&&error.retryAfterMs>0?error.retryAfterMs:void 0;return{reason:AGENT_REASON.RATE_LIMITED,message:retryAfterMs===void 0?"The Schedules API request limit was reached. Wait and try again.":`The Schedules API request limit was reached. Try again in ${Math.ceil(retryAfterMs/1e3)} second${retryAfterMs>1e3?"s":""}.`,retryable:!0,...retryAfterMs&&{retryAfterMs}}}if(error.status>=500)return context.action==="invoke"?ambiguousInvokeError(context.local):{reason:AGENT_REASON.API_ERROR,message:context.local?`Local Schedules is unavailable. Check the ${getCommandName("dev")} output and restart the local session if needed.`:"The Schedules API is temporarily unavailable. Try again later.",retryable:!0};let detail=apiErrorDetail(error);return{reason:AGENT_REASON.API_ERROR,message:`Failed to ${requestDescription(context)}.${detail?` ${detail}`:""}`,retryable:!1}}function handleSchedulesApiError(client,error,context){let details=getSchedulesError(client,error,context);return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,...details},1),1):(output_manager_default.fatal(details.message),1)}var DEFAULT_SCHEDULES_BASE_URL="https://vercel-schedules.com",DEFAULT_SCHEDULE_NAMESPACE="default",DEFAULT_SCHEDULES_LIMIT=20,LocalSchedulesError=class extends Error{constructor(message){super(message),this.name="LocalSchedulesError"}};function sanitizeSchedule(schedule){let{trackId:_trackId,...publicSchedule}=schedule;return publicSchedule}var SchedulesClient=class{constructor(client,options){this.client=client;this.options=options;if("local"in options){if(!isLocalSchedulesOrigin(options.local.origin))throw new LocalSchedulesError("Local Schedules requires an HTTP 127.0.0.1 endpoint with a valid port.");this.baseUrl=new URL(options.local.origin);return}this.baseUrl=new URL(options.baseUrl??process.env.VERCEL_SCHEDULE_BASE_URL??DEFAULT_SCHEDULES_BASE_URL)}get localOrigin(){return"local"in this.options?this.baseUrl.origin:void 0}async request(path,options={}){let url=new URL(path,this.baseUrl);if("local"in this.options){let session=this.options.local;url.searchParams.set("projectId",session.projectId);let response;try{response=await directFetch(url.href,{method:options.method??"GET",headers:{authorization:`Bearer ${DEV_RESOURCE_TOKEN}`,[LOCAL_SCHEDULES_SESSION_HEADER]:session.id,...options.body===void 0?{}:{"content-type":"application/json"}},body:options.body===void 0?void 0:JSON.stringify(options.body),redirect:"manual",signal:AbortSignal.timeout(3e4)})}catch{throw new LocalSchedulesError(`Could not reach local Schedules at ${session.origin}. No cloud request was made.`)}if(response.status>=300&&response.status<400||response.headers.get(LOCAL_SCHEDULES_SESSION_HEADER)!==session.id)throw await response.body?.cancel(),new LocalSchedulesError("The local Schedules session changed or returned an unexpected response. Restart vercel dev and try again.");if(!response.ok)throw await responseError(response);if(response.status===204)return;try{return await response.json()}catch{throw new LocalSchedulesError("The local Schedules session returned an invalid JSON response.")}}return url.searchParams.set("projectId",this.options.projectId),this.options.environment!==void 0&&url.searchParams.set("env",this.options.environment),this.options.gitBranch!==void 0&&url.searchParams.set("branch",this.options.gitBranch),this.client.fetch(url.href,{...options,accountId:this.options.ownerId,useCurrentTeam:!1})}schedulePath(name,namespace,suffix=""){return`${`/v1/schedules/${encodeURIComponent(name)}${suffix}`}?${new URLSearchParams({namespace})}`}async create({target,...params}){let schedule=await this.request("/v1/schedules",{method:"POST",bailOn429:!0,body:{...params,target:{type:"queue",topic:target.topic}}});return sanitizeSchedule(schedule)}async get({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){let schedule=await this.request(this.schedulePath(name,namespace),{bailOn429:!0});return sanitizeSchedule(schedule)}async list({namespace=DEFAULT_SCHEDULE_NAMESPACE,cursor,limit=DEFAULT_SCHEDULES_LIMIT}={}){let searchParams=new URLSearchParams({namespace,limit:String(limit)});cursor!==void 0&&searchParams.set("cursor",cursor);let response=await this.request(`/v1/schedules?${searchParams}`,{bailOn429:!0});return{data:response.data.map(sanitizeSchedule),cursor:response.cursor}}async update({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,target,...params}){let schedule=await this.request(this.schedulePath(name,namespace),{method:"PATCH",bailOn429:!0,body:{...params,...target?{target:{type:"queue",topic:target.topic}}:{}}});return sanitizeSchedule(schedule)}async delete({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){return this.request(this.schedulePath(name,namespace),{method:"DELETE",bailOn429:!0})}async enable({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,activeUntil}){return this.changeState(name,namespace,"enable",activeUntil===void 0?void 0:{until:activeUntil})}async disable({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){return this.changeState(name,namespace,"disable")}async changeState(name,namespace,action,body){let schedule=await this.request(this.schedulePath(name,namespace,`/${action}`),{method:"POST",bailOn429:!0,...body&&{body}});return sanitizeSchedule(schedule)}async invoke({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){await this.request(this.schedulePath(name,namespace,"/invoke"),{method:"POST",bailOn429:!0,retry:{retries:0}})}async listExecutions({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,cursor,limit=DEFAULT_SCHEDULES_LIMIT,sort,from,to,executionId}){if("local"in this.options)throw new LocalSchedulesError("Execution history is not supported for local Schedules. Inspect the vercel dev output for local executions.");let searchParams=new URLSearchParams({limit:String(limit)});return cursor!==void 0&&searchParams.set("cursor",cursor),sort!==void 0&&searchParams.set("sort",sort),from!==void 0&&searchParams.set("from",String(from)),to!==void 0&&searchParams.set("to",String(to)),executionId!==void 0&&searchParams.set("executionId",executionId),this.request(`${this.schedulePath(name,namespace,"/executions")}&${searchParams}`,{bailOn429:!0})}};async function createLocalSchedulesClient(client){let sessions=await readLocalSchedulesSessions(client.cwd);if(sessions.length===0)throw new LocalSchedulesError("No running local Schedules session was found in this directory. Start vercel dev here, or use --cwd to select its project directory.");if(sessions.length>1)throw new LocalSchedulesError("Multiple vercel dev sessions are running in this directory. Stop the extra instances before using schedules --local.");let[session]=sessions,response;try{response=await directFetch(`${session.origin}/v1/info`,{headers:{authorization:`Bearer ${DEV_RESOURCE_TOKEN}`,[LOCAL_SCHEDULES_SESSION_HEADER]:session.id},redirect:"manual",signal:AbortSignal.timeout(2e3)})}catch{throw new LocalSchedulesError(`The local Schedules session at ${session.origin} is unavailable. Restart vercel dev in this directory. No cloud request was made.`)}if(!response.ok||response.headers.get(LOCAL_SCHEDULES_SESSION_HEADER)!==session.id)throw await response.body?.cancel(),new LocalSchedulesError("The local Schedules session is stale, not ready, or incompatible. Restart vercel dev in this directory.");let info;try{info=await response.json()}catch{throw new LocalSchedulesError("The local Schedules session returned invalid metadata. Restart vercel dev in this directory.")}if(!info||info.version!==session.version||info.id!==session.id||info.pid!==session.pid||info.cwd!==session.cwd||info.origin!==session.origin||info.projectId!==session.projectId)throw new LocalSchedulesError("The local Schedules session does not match this project instance. Restart vercel dev in this directory.");return new SchedulesClient(client,{local:session})}var import_ms7=__toESM(require_ms(),1),MAX_IDENTIFIER_LENGTH=256,IDENTIFIER_PATTERN=/^[0-9A-Za-z][0-9A-Za-z._-]*$/,MAX_QUEUE_TOPIC_LENGTH=256,QUEUE_TOPIC_PATTERN=/^[A-Za-z0-9_-]+$/,MAX_JITTER_MINUTES=15,LOCAL_MINUTE_DATETIME_PATTERN=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/,LOCAL_SECOND_DATETIME_PATTERN=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/,TIMEZONE_PATTERN=/^[A-Za-z][A-Za-z0-9_+/-]*$/;function validateScheduleIdentifier(value,label){if(value.length>MAX_IDENTIFIER_LENGTH)return`${label} must be at most ${MAX_IDENTIFIER_LENGTH} characters.`;if(!IDENTIFIER_PATTERN.test(value))return`${label} must start with a letter or number and can contain only letters, numbers, periods, underscores, and hyphens.`}function validateScheduleTimezone(value){if(value!==void 0){if(value.length===0||value.length>50||!TIMEZONE_PATTERN.test(value))return"`--timezone` must be a valid IANA timezone.";try{new Intl.DateTimeFormat("en-US",{timeZone:value})}catch{return"`--timezone` must be a valid IANA timezone."}}}function validateScheduleQueueTopic(value){if(value.length>MAX_QUEUE_TOPIC_LENGTH||!QUEUE_TOPIC_PATTERN.test(value))return"`--topic` must be 1\u2013256 characters and contain only letters, numbers, underscores, and hyphens."}function normalizeLocalDatetime(value){let secondMatch=LOCAL_SECOND_DATETIME_PATTERN.exec(value);if(secondMatch){if(secondMatch[6]!=="00")return}else LOCAL_MINUTE_DATETIME_PATTERN.test(value)&&(value=`${value}:00`);let match=LOCAL_SECOND_DATETIME_PATTERN.exec(value);if(!match)return;let[,yearValue,monthValue,dayValue,hourValue,minuteValue]=match,year=Number(yearValue),month=Number(monthValue),day=Number(dayValue),hour=Number(hourValue),minute=Number(minuteValue),daysInMonth=[31,year%4===0&&(year%100!==0||year%400===0)?29:28,31,30,31,30,31,31,30,31,30,31];if(!(month<1||month>12||day<1||day>daysInMonth[month-1]||hour<0||hour>23||minute<0||minute>59))return value}function parseScheduleExpression(cron,at,required){if(cron!==void 0&&at!==void 0)return{valid:!1,error:"Use either `--cron` or `--at`, not both."};if(cron!==void 0)return cron.trim()?{valid:!0,value:{type:"cron",cron}}:{valid:!1,error:"`--cron` cannot be empty."};if(at!==void 0){let normalized=normalizeLocalDatetime(at);return normalized===void 0?{valid:!1,error:"`--at` must use YYYY-MM-DDTHH:mm or YYYY-MM-DDTHH:mm:00 without a timezone suffix. Use `--timezone` to select the timezone."}:{valid:!0,value:{type:"single",at:normalized}}}return required?{valid:!1,error:"A schedule expression is required. Use `--cron` or `--at`."}:{valid:!0,value:void 0}}function validateJitter(value){return!Number.isInteger(value)||value<1||value>MAX_JITTER_MINUTES?{valid:!1,error:"`--jitter` must be an integer between 1 and 15."}:{valid:!0,value}}function parseCreateJitter(value){return value===void 0?{valid:!0,value:void 0}:validateJitter(value)}function parseUpdateJitter(value){return value===void 0?{valid:!0,value:void 0}:value==="none"?{valid:!0,value:null}:validateJitter(Number(value))}function parseSchedulePayload(value){if(value===void 0)return{valid:!0,value:void 0};try{return{valid:!0,value:JSON.parse(value)}}catch{return{valid:!1,error:"`--payload` must be valid JSON."}}}var UNIX_MILLISECONDS_PATTERN=/^\d+$/,ISO_DATE_PATTERN=/^(\d{4})-(\d{2})-(\d{2})/,DURATION_PATTERN=/^\d+(?:\.\d+)?\s*[a-z]+$/i;function parseEnableUntil(until,duration,now=Date.now()){if(until!==void 0&&duration!==void 0)return{valid:!1,error:"`--until` and `--for` cannot be used together."};if(duration!==void 0){let durationMs=DURATION_PATTERN.test(duration.trim())?(0,import_ms7.default)(duration.trim()):void 0;return durationMs===void 0||!(durationMs>0)?{valid:!1,error:"`--for` must be a duration such as 30m, 5h, or 10s."}:{valid:!0,value:now+durationMs}}if(until===void 0)return{valid:!0,value:void 0};let untilMs,isoDate=ISO_DATE_PATTERN.exec(until);if(UNIX_MILLISECONDS_PATTERN.test(until))untilMs=Number(until);else if(isoDate){let[,year,month,day]=isoDate.map(Number),daysInMonth=new Date(Date.UTC(year,month,0)).getUTCDate();untilMs=day>=1&&day<=daysInMonth?Date.parse(until):NaN}else return{valid:!1,error:DURATION_PATTERN.test(until.trim())?`\`--until\` must be a time, not a duration. Use \`--for ${until.trim()}\` instead.`:"`--until` must be an ISO 8601 time or Unix milliseconds."};return Number.isFinite(untilMs)?untilMs<=now?{valid:!1,error:"`--until` must be in the future."}:{valid:!0,value:untilMs}:{valid:!1,error:"`--until` must be an ISO 8601 time or Unix milliseconds."}}var routingFlags2=getFlagsSpecification([...schedulesCommand.subcommands.flatMap(command2=>[...command2.options]),...executionsListSubcommand.options]);function takeScheduleCommand(argv){return takeCommand(argv,routingFlags2)}function scheduleCommandWithGlobalFlags(client,usage){let local=!1;try{local=!!parseArguments(client.argv.slice(2),routingFlags2,{permissive:!0}).flags["--local"]}catch{}return buildCommandWithGlobalFlags(client.argv,`${usage}${local?" --local":""}`,void 0,{excludeFlags:local?["--scope","--team"]:[]})}function validateLocalScheduleFlags(client,flags,usage){if(flags["--environment"]!==void 0&&flags["--git-branch"]!==void 0)return invalidScheduleArguments(client,usage,"Use either --environment or --git-branch, not both.");if(!flags["--local"])return;for(let flag of["--environment","--git-branch"])if(flags[flag]!==void 0)return invalidScheduleArguments(client,usage,`Cannot combine --local with ${flag}. Local Schedules uses the current vercel dev session.`);let originalFlags;try{originalFlags=parseArguments(client.argv.slice(2),routingFlags2,{permissive:!0}).flags}catch(error){return invalidScheduleArguments(client,usage,error instanceof Error?error.message:String(error))}for(let flag of["--scope","--team","--token"])if(flags[flag]!==void 0||originalFlags[flag]!==void 0)return invalidScheduleArguments(client,usage,`Cannot combine --local with ${flag}. Local Schedules uses the current vercel dev session.`)}function unsupportedLocalExecutions(client){let message="Execution history is not supported for local Schedules. Inspect the vercel dev output for local executions.";return client.nonInteractive?outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message,retryable:!1}):output_manager_default.fatal(message),1}async function resolveSchedulesClient(client,flags){if(flags["--local"])try{let schedules=await createLocalSchedulesClient(client);return output_manager_default.log(`Using local Schedules at ${schedules.localOrigin}`),schedules}catch(error){let message=error instanceof Error?error.message:String(error);return client.nonInteractive?outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message,retryable:!1}):output_manager_default.fatal(message),1}let link=await requireProjectContext(client,"schedules");return typeof link=="number"?link:new SchedulesClient(client,{ownerId:link.org.id,projectId:link.project.id,environment:flags["--environment"],gitBranch:flags["--git-branch"]})}function scheduleTrackArgs(flags){let args=[];return flags["--environment"]!==void 0&&args.push(`--environment ${quoteArg(flags["--environment"])}`),flags["--git-branch"]!==void 0&&args.push(`--git-branch ${quoteArg(flags["--git-branch"])}`),args}function invalidScheduleArguments(client,usage,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:scheduleCommandWithGlobalFlags(client,usage),when:"Provide valid schedule arguments"}]}),2):(output_manager_default.fatal(message),2)}function validateScheduleNameAndNamespace(client,args,namespaceFlag,usage){let[name]=args;if(!name)return{valid:!1,exitCode:invalidScheduleArguments(client,usage,"A schedule name is required")};if(args.length!==1)return{valid:!1,exitCode:invalidScheduleArguments(client,usage,`Expected one schedule name. Usage: ${getCommandName(usage)}`)};let namespace=namespaceFlag??DEFAULT_SCHEDULE_NAMESPACE,nameError=validateScheduleIdentifier(name,"Schedule name"),namespaceError=validateScheduleIdentifier(namespace,"Namespace"),error=nameError??namespaceError;return error?{valid:!1,exitCode:invalidScheduleArguments(client,usage,error)}:{valid:!0,name,namespace}}function parseScheduleOutput(client,usage,flags){let result=validateJsonOutput(flags);return result.valid?{valid:!0,json:result.jsonOutput||client.nonInteractive}:{valid:!1,exitCode:invalidScheduleArguments(client,usage,result.error)}}function writeScheduleMutationResult(client,schedule,message,json){if(json){let value=client.nonInteractive?{status:AGENT_STATUS.OK,schedule,message}:schedule;client.stdout.write(`${JSON.stringify(value,null,2)}
250
+ `)}else output_manager_default.success(message);return 0}async function runScheduleAction(client,argv,action){let subcommand=action==="enable"?enableSubcommand2:action==="disable"?disableSubcommand2:invokeSubcommand,usage=`schedules ${action} <name>`,telemetry=new SchedulesActionTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(subcommand.options))}catch(error){return invalidScheduleArguments(client,usage,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs,enableFlags=flags;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,usage);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionUntil(enableFlags["--until"]),telemetry.trackCliOptionFor(enableFlags["--for"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],usage);if(!identifier.valid)return identifier.exitCode;let outputMode=parseScheduleOutput(client,usage,flags);if(!outputMode.valid)return outputMode.exitCode;let activeUntil=parseEnableUntil(enableFlags["--until"],enableFlags["--for"]);if(!activeUntil.valid)return invalidScheduleArguments(client,usage,activeUntil.error);if(flags["--local"]&&activeUntil.value!==void 0)return invalidScheduleArguments(client,usage,"Cannot combine --local with --until or --for. Local Schedules does not support enabling a schedule until a time.");let schedulesClient=await resolveSchedulesClient(client,flags);if(typeof schedulesClient=="number")return schedulesClient;let presentParticiple=action==="enable"?"Enabling":action==="disable"?"Disabling":"Invoking";outputMode.json||output_manager_default.spinner(`${presentParticiple} schedule\u2026`);let schedule;try{action==="enable"?schedule=await schedulesClient.enable({...identifier,activeUntil:activeUntil.value}):action==="disable"?schedule=await schedulesClient.disable(identifier):await schedulesClient.invoke(identifier)}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action,local:flags["--local"],name:identifier.name,namespace:identifier.namespace,trackArgs:scheduleTrackArgs(flags)})}output_manager_default.stopSpinner();let pastTense=action==="enable"?"Enabled":action==="disable"?"Disabled":"Invoked",enabledUntil=schedule?.activeUntil??activeUntil.value,message=action==="enable"&&enabledUntil!==void 0?`${pastTense} schedule ${identifier.namespace}/${identifier.name} until ${new Date(enabledUntil).toISOString()} (in ${(0,import_ms8.default)(Math.max(enabledUntil-Date.now(),1e3),{long:!0})}).`:`${pastTense} schedule ${identifier.namespace}/${identifier.name}.`;if(schedule)return writeScheduleMutationResult(client,schedule,message,outputMode.json);if(outputMode.json){let result=client.nonInteractive?{status:AGENT_STATUS.OK,message}:{invoked:!0,name:identifier.name,namespace:identifier.namespace};client.stdout.write(`${JSON.stringify(result,null,2)}
251
+ `)}else output_manager_default.success(message);return 0}var SchedulesCreateTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionCron(cron){cron&&this.trackCliOption({option:"cron",value:this.redactedValue})}trackCliOptionAt(at){at&&this.trackCliOption({option:"at",value:this.redactedValue})}trackCliOptionTimezone(timezone){timezone&&this.trackCliOption({option:"timezone",value:timezone})}trackCliOptionJitter(jitter){jitter!==void 0&&this.trackCliOption({option:"jitter",value:String(jitter)})}trackCliOptionTopic(topic){topic&&this.trackCliOption({option:"topic",value:this.redactedValue})}trackCliOptionPayload(payload){payload!==void 0&&this.trackCliOption({option:"payload",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE14="schedules create <name> --cron <expression> --topic <topic>";async function create(client,argv){let telemetry=new SchedulesCreateTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(createSubcommand2.options))}catch(error){return invalidScheduleArguments(client,USAGE14,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE14);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionCron(flags["--cron"]),telemetry.trackCliOptionAt(flags["--at"]),telemetry.trackCliOptionTimezone(flags["--timezone"]),telemetry.trackCliOptionJitter(flags["--jitter"]),telemetry.trackCliOptionTopic(flags["--topic"]),telemetry.trackCliOptionPayload(flags["--payload"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],USAGE14);if(!identifier.valid)return identifier.exitCode;let expression=parseScheduleExpression(flags["--cron"],flags["--at"],!0);if(!expression.valid)return invalidScheduleArguments(client,USAGE14,expression.error);let topic=flags["--topic"];if(!topic?.trim())return invalidScheduleArguments(client,USAGE14,"A target queue topic is required. Use `--topic`.");let topicError=validateScheduleQueueTopic(topic);if(topicError)return invalidScheduleArguments(client,USAGE14,topicError);let jitter=parseCreateJitter(flags["--jitter"]);if(!jitter.valid)return invalidScheduleArguments(client,USAGE14,jitter.error);let timezoneError=validateScheduleTimezone(flags["--timezone"]);if(timezoneError)return invalidScheduleArguments(client,USAGE14,timezoneError);let payload=parseSchedulePayload(flags["--payload"]);if(!payload.valid)return invalidScheduleArguments(client,USAGE14,payload.error);let outputMode=parseScheduleOutput(client,USAGE14,flags);if(!outputMode.valid)return outputMode.exitCode;let schedules=await resolveSchedulesClient(client,flags);if(typeof schedules=="number")return schedules;outputMode.json||output_manager_default.spinner("Creating schedule\u2026");let schedule;try{schedule=await schedules.create({name:identifier.name,namespace:identifier.namespace,expression:expression.value,target:{topic},...flags["--timezone"]!==void 0&&{timezone:flags["--timezone"]},...jitter.value!==void 0&&{jitter:jitter.value},...flags["--payload"]!==void 0&&{payload:payload.value}})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"create",local:flags["--local"],name:identifier.name,namespace:identifier.namespace,trackArgs:scheduleTrackArgs(flags)})}return output_manager_default.stopSpinner(),writeScheduleMutationResult(client,schedule,`Created schedule ${identifier.namespace}/${identifier.name}.`,outputMode.json)}var SchedulesDeleteTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE15="schedules delete <name> --yes";async function deleteSchedule(client,argv){let telemetry=new SchedulesDeleteTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(deleteSubcommand3.options))}catch(error){return invalidScheduleArguments(client,USAGE15,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE15);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliFlagYes(flags["--yes"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],USAGE15);if(!identifier.valid)return identifier.exitCode;let outputMode=parseScheduleOutput(client,USAGE15,flags);if(!outputMode.valid)return outputMode.exitCode;let skipConfirmation=flags["--yes"]??!1;if(client.nonInteractive&&!skipConfirmation)return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:flags["--local"]?"Deleting a local schedule requires confirmation. Re-run with `--yes`.":"Deleting a schedule requires confirmation. Re-run with `--yes`.",next:[{command:flags["--local"]?scheduleCommandWithGlobalFlags(client,`schedules delete ${quoteArg(identifier.name)} --namespace ${quoteArg(identifier.namespace)} --yes`):buildCommandWithYes(client.argv)}]},1),1;let schedules=await resolveSchedulesClient(client,flags);if(typeof schedules=="number")return schedules;let target=flags["--local"]?"local schedule":"schedule";if(!skipConfirmation&&!await client.input.confirm(`Delete ${target} ${identifier.namespace}/${identifier.name}? This cannot be undone.`,!1))return output_manager_default.log("Canceled"),0;outputMode.json||output_manager_default.spinner("Deleting schedule\u2026");let deletedScheduleId;try{deletedScheduleId=(await schedules.delete(identifier)).scheduleId}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"delete",local:flags["--local"],name:identifier.name,namespace:identifier.namespace,trackArgs:scheduleTrackArgs(flags)})}output_manager_default.stopSpinner();let message=`Deleted ${target} ${identifier.namespace}/${identifier.name}.`;if(outputMode.json){let deleted={name:identifier.name,namespace:identifier.namespace,scheduleId:deletedScheduleId},result=client.nonInteractive?{status:AGENT_STATUS.OK,deleted,message}:{deleted:!0,...deleted};client.stdout.write(`${JSON.stringify(result,null,2)}
252
+ `)}else output_manager_default.success(message);return 0}var import_chalk35=__toESM(require_source(),1);var SchedulesListExecutionsTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionLimit(limit){limit!==void 0&&this.trackCliOption({option:"limit",value:String(limit)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionSort(sort){sort&&this.trackCliOption({option:"sort",value:sort})}trackCliOptionSince(since){since&&this.trackCliOption({option:"since",value:this.redactedValue})}trackCliOptionUntil(until){until&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionFrom(from){from!==void 0&&this.trackCliOption({option:"from",value:String(from)})}trackCliOptionTo(to){to!==void 0&&this.trackCliOption({option:"to",value:String(to)})}trackCliOptionExecution(execution){execution&&this.trackCliOption({option:"execution",value:this.redactedValue})}trackCliOptionExecutionId(executionId){executionId&&this.trackCliOption({option:"execution-id",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE16="schedules executions list <name>",MAX_EXECUTION_RANGE_MS=30*864e5;function invalidArguments(client,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,USAGE16),when:"List schedule executions with valid options"}]}),2):(output_manager_default.fatal(message),2)}function capitalize(value){return`${value.charAt(0).toUpperCase()}${value.slice(1)}`}function formatExecutionStatus(status){return status==="succeeded"?import_chalk35.default.green("Succeeded"):status==="failed"?import_chalk35.default.red("Failed"):import_chalk35.default.gray("Unavailable")}function formatPercentage2(value){return value===null?import_chalk35.default.gray("-"):`${Number((value*100).toFixed(2))}%`}function formatDuration(value){return value===null?import_chalk35.default.gray("-"):value<1e3?`${Math.round(value)}ms`:value<6e4?`${Number((value/1e3).toFixed(1))}s`:`${Number((value/6e4).toFixed(1))}m`}function formatInvocationCount(value){return`${value} invocation${value===1?"":"s"}`}function executionMetrics(metrics){return[formatAlignedLabel("Range",`${formatDate(metrics.from)} \u2013 ${formatDate(metrics.to)}`),formatAlignedLabel("Recorded",formatInvocationCount(metrics.recordedInvocations)),formatAlignedLabel("Failed",formatInvocationCount(metrics.failedInvocations)),formatAlignedLabel("Error Rate",formatPercentage2(metrics.errorRate)),formatAlignedLabel("Avg Duration",formatDuration(metrics.averageDurationMs))].join(`
253
253
  `)}function executionTable(executions2){let rows=[["Execution ID","Status","Source","Fired At"].map(header=>import_chalk35.default.dim(header)),...executions2.map(execution=>[import_chalk35.default.bold(execution.executionId),formatExecutionStatus(execution.status),execution.invokeSource?capitalize(execution.invokeSource):import_chalk35.default.gray("-"),execution.firedAt===null?import_chalk35.default.gray("-"):formatDate(execution.firedAt)])];return table(rows,{hsep:3}).split(`
254
254
  `).map(line=>line.trimEnd()).join(`
255
- `).replace(/^/gm," ")}function nextPageCommand(client,name,namespace,options){let parts=["schedules executions list",quoteArg(name)];return options.namespaceWasExplicit&&parts.push(`--namespace ${quoteArg(namespace)}`),options.limitWasExplicit&&parts.push(`--limit ${options.limit}`),options.sortWasExplicit&&options.sort&&parts.push(`--sort ${options.sort}`),options.from!==void 0&&options.to!==void 0&&parts.push(`--since ${new Date(options.from).toISOString()} --until ${new Date(options.to).toISOString()}`),options.executionId!==void 0&&parts.push(`--execution-id ${quoteArg(options.executionId)}`),parts.push(`--next ${quoteArg(options.cursor)}`),buildCommandWithGlobalFlags(client.argv,parts.join(" "))}function resolveTimeBound(flag,value,legacyFlag,legacyValue){if(value!==void 0&&legacyValue!==void 0)return{error:`Pass only one of \`${flag}\` or \`${legacyFlag}\`. (\`${legacyFlag}\` is deprecated.)`};if(legacyValue!==void 0)return!Number.isInteger(legacyValue)||legacyValue<0?{error:`\`${legacyFlag}\` must be a non-negative integer (Unix milliseconds).`}:{value:legacyValue};if(value===void 0)return{};if(!value.trim())return{error:`\`${flag}\` cannot be empty.`};let result=validateTimeBound(value);return result.valid?{value:result.value?.getTime()}:{error:`\`${flag}\`: ${result.message}`}}function resolveTimeRange2(since,until,legacyFrom,legacyTo){let now=Date.now(),start=resolveTimeBound("--since",since,"--from",legacyFrom);if("error"in start)return start;let end=resolveTimeBound("--until",until,"--to",legacyTo);if("error"in end)return end;let sinceName=legacyFrom!==void 0?"--from":"--since",untilName=legacyTo!==void 0?"--to":"--until",from=start.value;if(from===void 0)return end.value!==void 0?{error:`\`${untilName}\` requires \`--since\`.`}:{};let to=end.value??now;return to<=from?{error:`\`${untilName}\` must be after \`${sinceName}\`.`}:to-from>MAX_EXECUTION_RANGE_MS?{error:"The time range must be at most 30 days."}:{from,to}}async function list4(client,argv){let telemetry=new SchedulesListExecutionsTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(executionsListSubcommand.options))}catch(error){return invalidArguments(client,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE16);if(conflict!==void 0)return conflict;if(flags["--local"])return unsupportedLocalExecutions(client);let[name]=args,namespace=flags["--namespace"]??DEFAULT_SCHEDULE_NAMESPACE,limitResult=validateIntegerRangeWithDefault(flags["--limit"],{flag:"--limit",min:1,max:100,defaultValue:DEFAULT_SCHEDULES_LIMIT}),sort=flags["--sort"],executionId=flags["--execution-id"];if(telemetry.trackCliArgumentName(name),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionLimit(flags["--limit"]),telemetry.trackCliOptionNext(flags["--next"]),telemetry.trackCliOptionSort(sort),telemetry.trackCliOptionSince(flags["--since"]),telemetry.trackCliOptionUntil(flags["--until"]),telemetry.trackCliOptionFrom(flags["--from"]),telemetry.trackCliOptionTo(flags["--to"]),telemetry.trackCliOptionExecutionId(executionId),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),!name)return invalidArguments(client,`A schedule name is required. Usage: ${getCommandName(USAGE16)}`);if(args.length!==1)return invalidArguments(client,`Expected one schedule name. Usage: ${getCommandName(USAGE16)}`);let nameError=validateScheduleIdentifier(name,"Schedule name");if(nameError)return invalidArguments(client,nameError);let namespaceError=validateScheduleIdentifier(namespace,"Namespace");if(namespaceError)return invalidArguments(client,namespaceError);if(!limitResult.valid)return invalidArguments(client,limitResult.message);if(sort!==void 0&&sort!=="asc"&&sort!=="desc")return invalidArguments(client,"`--sort` must be `asc` or `desc`.");let timeRange=resolveTimeRange2(flags["--since"],flags["--until"],flags["--from"],flags["--to"]);if("error"in timeRange)return invalidArguments(client,timeRange.error);let{from,to}=timeRange;if(flags["--from"]!==void 0&&output_manager_default.warn("`--from` is deprecated, please use `--since` instead"),flags["--to"]!==void 0&&output_manager_default.warn("`--to` is deprecated, please use `--until` instead"),executionId!==void 0&&!executionId.trim())return invalidArguments(client,"`--execution-id` cannot be empty.");let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return invalidArguments(client,formatResult.error);let asJson=formatResult.jsonOutput||client.nonInteractive,schedules=await resolveSchedulesClient(client,flags["--local"]);if(typeof schedules=="number")return schedules;asJson||output_manager_default.spinner(`Fetching executions for ${namespace}/${name}\u2026`);let result;try{result=await schedules.listExecutions({name,namespace,cursor:flags["--next"],limit:limitResult.value,...sort!==void 0?{sort}:{},...from!==void 0?{from,to}:{},...executionId!==void 0?{executionId}:{}})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"list-executions",local:flags["--local"],name,namespace})}if(output_manager_default.stopSpinner(),asJson){let jsonOutput=client.nonInteractive?{status:AGENT_STATUS.OK,data:result.data,cursor:result.cursor,pagination:{next:result.cursor??null},metrics:result.metrics,message:`Found ${result.data.length} execution${result.data.length===1?"":"s"} for schedule ${namespace}/${name}.`}:{...result,pagination:{next:result.cursor??null}};return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
255
+ `).replace(/^/gm," ")}function nextPageCommand(client,name,namespace,options){let parts=["schedules executions list",quoteArg(name)];return options.namespaceWasExplicit&&parts.push(`--namespace ${quoteArg(namespace)}`),parts.push(...options.trackArgs),options.limitWasExplicit&&parts.push(`--limit ${options.limit}`),options.sortWasExplicit&&options.sort&&parts.push(`--sort ${options.sort}`),options.from!==void 0&&options.to!==void 0&&parts.push(`--since ${new Date(options.from).toISOString()} --until ${new Date(options.to).toISOString()}`),options.executionId!==void 0&&parts.push(`--execution ${quoteArg(options.executionId)}`),parts.push(`--next ${quoteArg(options.cursor)}`),buildCommandWithGlobalFlags(client.argv,parts.join(" "))}function resolveTimeBound(flag,value,legacyFlag,legacyValue){if(value!==void 0&&legacyValue!==void 0)return{error:`Pass only one of \`${flag}\` or \`${legacyFlag}\`. (\`${legacyFlag}\` is deprecated.)`};if(legacyValue!==void 0)return!Number.isInteger(legacyValue)||legacyValue<0?{error:`\`${legacyFlag}\` must be a non-negative integer (Unix milliseconds).`}:{value:legacyValue};if(value===void 0)return{};if(!value.trim())return{error:`\`${flag}\` cannot be empty.`};let result=validateTimeBound(value);return result.valid?{value:result.value?.getTime()}:{error:`\`${flag}\`: ${result.message}`}}function resolveTimeRange2(since,until,legacyFrom,legacyTo){let now=Date.now(),start=resolveTimeBound("--since",since,"--from",legacyFrom);if("error"in start)return start;let end=resolveTimeBound("--until",until,"--to",legacyTo);if("error"in end)return end;let sinceName=legacyFrom!==void 0?"--from":"--since",untilName=legacyTo!==void 0?"--to":"--until",from=start.value;if(from===void 0)return end.value!==void 0?{error:`\`${untilName}\` requires \`--since\`.`}:{};let to=end.value??now;return to<=from?{error:`\`${untilName}\` must be after \`${sinceName}\`.`}:to-from>MAX_EXECUTION_RANGE_MS?{error:"The time range must be at most 30 days."}:{from,to}}async function list4(client,argv){let telemetry=new SchedulesListExecutionsTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(executionsListSubcommand.options))}catch(error){return invalidArguments(client,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE16);if(conflict!==void 0)return conflict;if(flags["--local"])return unsupportedLocalExecutions(client);let[name]=args,namespace=flags["--namespace"]??DEFAULT_SCHEDULE_NAMESPACE,limitResult=validateIntegerRangeWithDefault(flags["--limit"],{flag:"--limit",min:1,max:100,defaultValue:DEFAULT_SCHEDULES_LIMIT}),sort=flags["--sort"],execution=getRenamedOption(flags,"--execution","--execution-id",{json:wantsMachineReadableOutput(void 0,client.argv)||client.nonInteractive});if(telemetry.trackCliArgumentName(name),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionLimit(flags["--limit"]),telemetry.trackCliOptionNext(flags["--next"]),telemetry.trackCliOptionSort(sort),telemetry.trackCliOptionSince(flags["--since"]),telemetry.trackCliOptionUntil(flags["--until"]),telemetry.trackCliOptionFrom(flags["--from"]),telemetry.trackCliOptionTo(flags["--to"]),telemetry.trackCliOptionExecution(flags["--execution"]),telemetry.trackCliOptionExecutionId(flags["--execution-id"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),"error"in execution)return invalidArguments(client,execution.error);let executionId=execution.value;if(!name)return invalidArguments(client,`A schedule name is required. Usage: ${getCommandName(USAGE16)}`);if(args.length!==1)return invalidArguments(client,`Expected one schedule name. Usage: ${getCommandName(USAGE16)}`);let nameError=validateScheduleIdentifier(name,"Schedule name");if(nameError)return invalidArguments(client,nameError);let namespaceError=validateScheduleIdentifier(namespace,"Namespace");if(namespaceError)return invalidArguments(client,namespaceError);if(!limitResult.valid)return invalidArguments(client,limitResult.message);if(sort!==void 0&&sort!=="asc"&&sort!=="desc")return invalidArguments(client,"`--sort` must be `asc` or `desc`.");let timeRange=resolveTimeRange2(flags["--since"],flags["--until"],flags["--from"],flags["--to"]);if("error"in timeRange)return invalidArguments(client,timeRange.error);let{from,to}=timeRange;if(flags["--from"]!==void 0&&output_manager_default.warn("`--from` is deprecated, please use `--since` instead"),flags["--to"]!==void 0&&output_manager_default.warn("`--to` is deprecated, please use `--until` instead"),executionId!==void 0&&!executionId.trim()){let typed=flags["--execution-id"]!==void 0?"--execution-id":"--execution";return invalidArguments(client,`\`${typed}\` cannot be empty.`)}let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return invalidArguments(client,formatResult.error);let asJson=formatResult.jsonOutput||client.nonInteractive,schedules=await resolveSchedulesClient(client,flags);if(typeof schedules=="number")return schedules;asJson||output_manager_default.spinner(`Fetching executions for ${namespace}/${name}\u2026`);let result;try{result=await schedules.listExecutions({name,namespace,cursor:flags["--next"],limit:limitResult.value,...sort!==void 0?{sort}:{},...from!==void 0?{from,to}:{},...executionId!==void 0?{executionId}:{}})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"list-executions",local:flags["--local"],name,namespace,trackArgs:scheduleTrackArgs(flags)})}if(output_manager_default.stopSpinner(),asJson){let jsonOutput=client.nonInteractive?{status:AGENT_STATUS.OK,data:result.data,cursor:result.cursor,pagination:{next:result.cursor??null},metrics:result.metrics,message:`Found ${result.data.length} execution${result.data.length===1?"":"s"} for schedule ${namespace}/${name}.`}:{...result,pagination:{next:result.cursor??null}};return client.stdout.write(`${JSON.stringify(withWarnings(jsonOutput,[execution.warning]),null,2)}
256
256
  `),0}if(output_manager_default.print(`Executions for schedule ${import_chalk35.default.bold(`${namespace}/${name}`)}
257
257
 
258
258
  ${executionMetrics(result.metrics)}
@@ -260,14 +260,14 @@ ${executionMetrics(result.metrics)}
260
260
  No executions found for schedule ${import_chalk35.default.bold(`${namespace}/${name}`)}.
261
261
  `),0;if(output_manager_default.print(`
262
262
  ${executionTable(result.data)}
263
- `),result.cursor){let next=nextPageCommand(client,name,namespace,{namespaceWasExplicit:flags["--namespace"]!==void 0,limit:limitResult.value,limitWasExplicit:flags["--limit"]!==void 0,sort,sortWasExplicit:flags["--sort"]!==void 0,from,to,executionId,cursor:result.cursor});output_manager_default.print(`
264
- `),printNextPageCommand(next)}return 0}var COMMAND_CONFIG6={list:getCommandAliases(executionsListSubcommand)};async function executions(client,args,telemetry){let parsedArgs,commandArgs;try{commandArgs=takeScheduleCommand(args),parsedArgs=parseArguments(commandArgs.args,getFlagsSpecification(executionsListSubcommand.options),{warnDeprecated:!1})}catch(error){return client.nonInteractive?invalidScheduleArguments(client,"schedules executions",error instanceof Error?error.message:String(error)):(printError(error),2)}let{subcommand,subcommandOriginal}=getSubcommand2(commandArgs.command?[commandArgs.command]:[],COMMAND_CONFIG6),subArgs=commandArgs.args,needHelp=parsedArgs.flags["--help"],conflict=validateLocalScheduleFlags(client,parsedArgs.flags,"schedules executions");if(conflict!==void 0)return conflict;if(parsedArgs.flags["--local"]&&!needHelp)return unsupportedLocalExecutions(client);function printHelp(command2,nested){return output_manager_default.print(help(command2,{parent:nested?{...schedulesCommand,name:"schedules executions"}:schedulesCommand,columns:client.stderr.columns})),0}return subcommand?subcommand==="list"?needHelp?(telemetry.trackCliFlagHelp("schedules",`executions:${subcommandOriginal}`),printHelp(executionsListSubcommand,!0)):(telemetry.trackCliSubcommandExecutionsList(subcommandOriginal),list4(client,subArgs)):(output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG6)),printHelp(executionsSubcommand,!1)):needHelp?(telemetry.trackCliFlagHelp("schedules","executions"),output_manager_default.print(help(executionsSubcommand,{parent:schedulesCommand,columns:client.stderr.columns})),0):(output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG6)),output_manager_default.print(help(executionsSubcommand,{parent:schedulesCommand,columns:client.stderr.columns})),2)}var import_chalk36=__toESM(require_source(),1);function formatScheduleTarget(target){switch(target.type){case"queue":return`Queue: ${target.topic}`;case"path":return`Path: ${target.path}`;case"function":return target.service===void 0?`Function: ${target.function}`:`Function: ${target.function} (service ${target.service})`}}function formatScheduleTargetDetail(target){switch(target.type){case"queue":return`${target.topic} ${import_chalk36.default.gray("(Queue)")}`;case"path":return`${target.path} ${import_chalk36.default.gray("(Path)")}`;case"function":return target.service===void 0?`${target.function} ${import_chalk36.default.gray("(Function)")}`:`${target.function} ${import_chalk36.default.gray(`(Function in service ${target.service})`)}`}}var SchedulesGetTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE17="schedules inspect <name>";function invalidArguments2(client,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:scheduleCommandWithGlobalFlags(client,USAGE17),when:"Provide a valid schedule name"}]}),2):(output_manager_default.fatal(message),2)}function formatExpression(expression){return expression.type==="cron"?expression.cron:expression.at}function capitalize2(value){return`${value.charAt(0).toUpperCase()}${value.slice(1)}`}function printSchedule(schedule){printAlignedLabel("Name",schedule.name),printAlignedLabel("Namespace",schedule.namespace),printAlignedLabel("State",capitalize2(schedule.state)),printAlignedLabel("Source",capitalize2(schedule.source)),printAlignedLabel("Type",capitalize2(schedule.expression.type)),printAlignedLabel("Expression",formatExpression(schedule.expression)),printAlignedLabel("Timezone",schedule.timezone),schedule.jitter!==void 0&&printAlignedLabel("Jitter",`${schedule.jitter} minute${schedule.jitter===1?"":"s"}`),printAlignedLabel("Target",formatScheduleTargetDetail(schedule.target)),printAlignedLabel("Schedule ID",schedule.scheduleId),printAlignedLabel("Project ID",schedule.projectId),printAlignedLabel("Owner ID",schedule.ownerId),printAlignedLabel("Created",formatDate(schedule.createdAt)),printAlignedLabel("Updated",formatDate(schedule.updatedAt))}async function get(client,argv){let telemetry=new SchedulesGetTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(getSubcommand.options))}catch(error){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message:error instanceof Error?error.message:String(error)}),2):(output_manager_default.fatal(error instanceof Error?error.message:String(error)),2)}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE17);if(conflict!==void 0)return conflict;let[name]=args,namespace=flags["--namespace"]??DEFAULT_SCHEDULE_NAMESPACE;if(telemetry.trackCliArgumentName(name),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),!name)return invalidArguments2(client,"A schedule name is required");if(args.length!==1)return invalidArguments2(client,`Expected one schedule name. Usage: ${getCommandName(USAGE17)}`);let nameError=validateScheduleIdentifier(name,"Schedule name");if(nameError)return invalidArguments2(client,nameError);let namespaceError=validateScheduleIdentifier(namespace,"Namespace");if(namespaceError)return invalidArguments2(client,namespaceError);let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return invalidArguments2(client,formatResult.error);let asJson=formatResult.jsonOutput||client.nonInteractive,schedules=await resolveSchedulesClient(client,flags["--local"]);if(typeof schedules=="number")return schedules;asJson||output_manager_default.spinner("Fetching schedule\u2026");let schedule;try{schedule=await schedules.get({name,namespace})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"get",local:flags["--local"],name,namespace})}if(output_manager_default.stopSpinner(),asJson){let jsonOutput=client.nonInteractive?{status:AGENT_STATUS.OK,schedule,message:`Schedule ${namespace}/${name} found.`}:schedule;return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
265
- `),0}return printSchedule(schedule),0}var import_chalk37=__toESM(require_source(),1);var SchedulesListTelemetryClient=class extends TelemetryClient{trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionLimit(limit){limit!==void 0&&this.trackCliOption({option:"limit",value:String(limit)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE18="schedules list";function invalidArguments3(client,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:scheduleCommandWithGlobalFlags(client,USAGE18),when:"List schedules with valid options"}]}),2):(output_manager_default.fatal(message),2)}function capitalize3(value){return`${value.charAt(0).toUpperCase()}${value.slice(1)}`}function formatExpression2(expression){return expression.type==="cron"?expression.cron:expression.at}function scheduleTable(schedules){let rows=[["Name","State","Type","Expression","Target"].map(header=>import_chalk37.default.dim(header)),...schedules.map(schedule=>[import_chalk37.default.bold(schedule.name),capitalize3(schedule.state),capitalize3(schedule.expression.type),formatExpression2(schedule.expression),formatScheduleTarget(schedule.target)])];return table(rows,{hsep:3}).split(`
263
+ `),result.cursor){let next=nextPageCommand(client,name,namespace,{namespaceWasExplicit:flags["--namespace"]!==void 0,limit:limitResult.value,limitWasExplicit:flags["--limit"]!==void 0,sort,sortWasExplicit:flags["--sort"]!==void 0,from,to,executionId,trackArgs:scheduleTrackArgs(flags),cursor:result.cursor});output_manager_default.print(`
264
+ `),printNextPageCommand(next)}return 0}var COMMAND_CONFIG6={list:getCommandAliases(executionsListSubcommand)};async function executions(client,args,telemetry){let parsedArgs,commandArgs;try{commandArgs=takeScheduleCommand(args),parsedArgs=parseArguments(commandArgs.args,getFlagsSpecification(executionsListSubcommand.options),{warnDeprecated:!1})}catch(error){return client.nonInteractive?invalidScheduleArguments(client,"schedules executions",error instanceof Error?error.message:String(error)):(printError(error),2)}let{subcommand,subcommandOriginal}=getSubcommand2(commandArgs.command?[commandArgs.command]:[],COMMAND_CONFIG6),subArgs=commandArgs.args,needHelp=parsedArgs.flags["--help"],conflict=validateLocalScheduleFlags(client,parsedArgs.flags,"schedules executions");if(conflict!==void 0)return conflict;if(parsedArgs.flags["--local"]&&!needHelp)return unsupportedLocalExecutions(client);function printHelp(command2,nested){return output_manager_default.print(help(command2,{parent:nested?{...schedulesCommand,name:"schedules executions"}:schedulesCommand,columns:client.stderr.columns})),0}return subcommand?subcommand==="list"?needHelp?(telemetry.trackCliFlagHelp("schedules",`executions:${subcommandOriginal}`),printHelp(executionsListSubcommand,!0)):(telemetry.trackCliSubcommandExecutionsList(subcommandOriginal),list4(client,subArgs)):(output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG6)),printHelp(executionsSubcommand,!1)):needHelp?(telemetry.trackCliFlagHelp("schedules","executions"),output_manager_default.print(help(executionsSubcommand,{parent:schedulesCommand,columns:client.stderr.columns})),0):(output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG6)),output_manager_default.print(help(executionsSubcommand,{parent:schedulesCommand,columns:client.stderr.columns})),2)}var import_chalk36=__toESM(require_source(),1);function formatScheduleTarget(target){switch(target.type){case"queue":return`Queue: ${target.topic}`;case"path":return`Path: ${target.path}`;case"function":return target.service===void 0?`Function: ${target.function}`:`Function: ${target.function} (service ${target.service})`}}function formatScheduleTargetDetail(target){switch(target.type){case"queue":return`${target.topic} ${import_chalk36.default.gray("(Queue)")}`;case"path":return`${target.path} ${import_chalk36.default.gray("(Path)")}`;case"function":return target.service===void 0?`${target.function} ${import_chalk36.default.gray("(Function)")}`:`${target.function} ${import_chalk36.default.gray(`(Function in service ${target.service})`)}`}}var SchedulesGetTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE17="schedules inspect <name>";function invalidArguments2(client,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:scheduleCommandWithGlobalFlags(client,USAGE17),when:"Provide a valid schedule name"}]}),2):(output_manager_default.fatal(message),2)}function formatExpression(expression){return expression.type==="cron"?expression.cron:expression.at}function capitalize2(value){return`${value.charAt(0).toUpperCase()}${value.slice(1)}`}function printSchedule(schedule){printAlignedLabel("Name",schedule.name),printAlignedLabel("Namespace",schedule.namespace),printAlignedLabel("State",capitalize2(schedule.state)),printAlignedLabel("Source",capitalize2(schedule.source)),printAlignedLabel("Type",capitalize2(schedule.expression.type)),printAlignedLabel("Expression",formatExpression(schedule.expression)),printAlignedLabel("Timezone",schedule.timezone),schedule.jitter!==void 0&&printAlignedLabel("Jitter",`${schedule.jitter} minute${schedule.jitter===1?"":"s"}`),printAlignedLabel("Target",formatScheduleTargetDetail(schedule.target)),printAlignedLabel("Schedule ID",schedule.scheduleId),printAlignedLabel("Project ID",schedule.projectId),printAlignedLabel("Owner ID",schedule.ownerId),printAlignedLabel("Created",formatDate(schedule.createdAt)),printAlignedLabel("Updated",formatDate(schedule.updatedAt))}async function get(client,argv){let telemetry=new SchedulesGetTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(getSubcommand.options))}catch(error){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message:error instanceof Error?error.message:String(error)}),2):(output_manager_default.fatal(error instanceof Error?error.message:String(error)),2)}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE17);if(conflict!==void 0)return conflict;let[name]=args,namespace=flags["--namespace"]??DEFAULT_SCHEDULE_NAMESPACE;if(telemetry.trackCliArgumentName(name),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),!name)return invalidArguments2(client,"A schedule name is required");if(args.length!==1)return invalidArguments2(client,`Expected one schedule name. Usage: ${getCommandName(USAGE17)}`);let nameError=validateScheduleIdentifier(name,"Schedule name");if(nameError)return invalidArguments2(client,nameError);let namespaceError=validateScheduleIdentifier(namespace,"Namespace");if(namespaceError)return invalidArguments2(client,namespaceError);let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return invalidArguments2(client,formatResult.error);let asJson=formatResult.jsonOutput||client.nonInteractive,schedules=await resolveSchedulesClient(client,flags);if(typeof schedules=="number")return schedules;asJson||output_manager_default.spinner("Fetching schedule\u2026");let schedule;try{schedule=await schedules.get({name,namespace})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"get",local:flags["--local"],name,namespace,trackArgs:scheduleTrackArgs(flags)})}if(output_manager_default.stopSpinner(),asJson){let jsonOutput=client.nonInteractive?{status:AGENT_STATUS.OK,schedule,message:`Schedule ${namespace}/${name} found.`}:schedule;return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
265
+ `),0}return printSchedule(schedule),0}var import_chalk37=__toESM(require_source(),1);var SchedulesListTelemetryClient=class extends TelemetryClient{trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionLimit(limit){limit!==void 0&&this.trackCliOption({option:"limit",value:String(limit)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE18="schedules list";function invalidArguments3(client,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:scheduleCommandWithGlobalFlags(client,USAGE18),when:"List schedules with valid options"}]}),2):(output_manager_default.fatal(message),2)}function capitalize3(value){return`${value.charAt(0).toUpperCase()}${value.slice(1)}`}function formatExpression2(expression){return expression.type==="cron"?expression.cron:expression.at}function scheduleTable(schedules){let rows=[["Name","State","Type","Expression","Target"].map(header=>import_chalk37.default.dim(header)),...schedules.map(schedule=>[import_chalk37.default.bold(schedule.name),capitalize3(schedule.state),capitalize3(schedule.expression.type),formatExpression2(schedule.expression),formatScheduleTarget(schedule.target)])];return table(rows,{hsep:3}).split(`
266
266
  `).map(line=>line.trimEnd()).join(`
267
- `).replace(/^/gm," ")}function nextPageCommand2(client,namespace,namespaceWasExplicit,limit,limitWasExplicit,cursor){let parts=["schedules list"];return namespaceWasExplicit&&parts.push(`--namespace ${quoteArg(namespace)}`),limitWasExplicit&&parts.push(`--limit ${limit}`),parts.push(`--next ${quoteArg(cursor)}`),scheduleCommandWithGlobalFlags(client,parts.join(" "))}async function list5(client,argv){let telemetry=new SchedulesListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(listSubcommand6.options))}catch(error){return invalidArguments3(client,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE18);if(conflict!==void 0)return conflict;let namespace=flags["--namespace"]??DEFAULT_SCHEDULE_NAMESPACE,limitResult=validateIntegerRangeWithDefault(flags["--limit"],{flag:"--limit",min:1,max:100,defaultValue:DEFAULT_SCHEDULES_LIMIT});if(telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionLimit(flags["--limit"]),telemetry.trackCliOptionNext(flags["--next"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),args.length!==0)return invalidArguments3(client,`Expected no arguments. Usage: ${getCommandName(USAGE18)}`);let namespaceError=validateScheduleIdentifier(namespace,"Namespace");if(namespaceError)return invalidArguments3(client,namespaceError);if(!limitResult.valid)return invalidArguments3(client,limitResult.message);let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return invalidArguments3(client,formatResult.error);let asJson=formatResult.jsonOutput||client.nonInteractive,schedules=await resolveSchedulesClient(client,flags["--local"]);if(typeof schedules=="number")return schedules;asJson||output_manager_default.spinner("Fetching schedules\u2026");let result;try{result=await schedules.list({namespace,cursor:flags["--next"],limit:limitResult.value})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"list",local:flags["--local"],namespace})}if(output_manager_default.stopSpinner(),asJson){let jsonOutput=client.nonInteractive?{status:AGENT_STATUS.OK,data:result.data,cursor:result.cursor,pagination:{next:result.cursor??null},message:`Found ${result.data.length} schedule${result.data.length===1?"":"s"} in namespace ${namespace}.`}:{...result,pagination:{next:result.cursor??null}};return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
267
+ `).replace(/^/gm," ")}function nextPageCommand2(client,namespace,namespaceWasExplicit,limit,limitWasExplicit,trackArgs,cursor){let parts=["schedules list"];return namespaceWasExplicit&&parts.push(`--namespace ${quoteArg(namespace)}`),parts.push(...trackArgs),limitWasExplicit&&parts.push(`--limit ${limit}`),parts.push(`--next ${quoteArg(cursor)}`),scheduleCommandWithGlobalFlags(client,parts.join(" "))}async function list5(client,argv){let telemetry=new SchedulesListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(listSubcommand6.options))}catch(error){return invalidArguments3(client,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE18);if(conflict!==void 0)return conflict;let namespace=flags["--namespace"]??DEFAULT_SCHEDULE_NAMESPACE,limitResult=validateIntegerRangeWithDefault(flags["--limit"],{flag:"--limit",min:1,max:100,defaultValue:DEFAULT_SCHEDULES_LIMIT});if(telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionLimit(flags["--limit"]),telemetry.trackCliOptionNext(flags["--next"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),args.length!==0)return invalidArguments3(client,`Expected no arguments. Usage: ${getCommandName(USAGE18)}`);let namespaceError=validateScheduleIdentifier(namespace,"Namespace");if(namespaceError)return invalidArguments3(client,namespaceError);if(!limitResult.valid)return invalidArguments3(client,limitResult.message);let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return invalidArguments3(client,formatResult.error);let asJson=formatResult.jsonOutput||client.nonInteractive,schedules=await resolveSchedulesClient(client,flags);if(typeof schedules=="number")return schedules;asJson||output_manager_default.spinner("Fetching schedules\u2026");let result;try{result=await schedules.list({namespace,cursor:flags["--next"],limit:limitResult.value})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"list",local:flags["--local"],namespace,trackArgs:scheduleTrackArgs(flags)})}if(output_manager_default.stopSpinner(),asJson){let jsonOutput=client.nonInteractive?{status:AGENT_STATUS.OK,data:result.data,cursor:result.cursor,pagination:{next:result.cursor??null},message:`Found ${result.data.length} schedule${result.data.length===1?"":"s"} in namespace ${namespace}.`}:{...result,pagination:{next:result.cursor??null}};return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
268
268
  `),0}if(result.data.length===0)return output_manager_default.print(`No schedules found in namespace ${namespace}.
269
269
  `),0;if(output_manager_default.print(`Schedules in namespace ${import_chalk37.default.bold(namespace)}
270
270
 
271
271
  ${scheduleTable(result.data)}
272
- `),result.cursor){let next=nextPageCommand2(client,namespace,flags["--namespace"]!==void 0,limitResult.value,flags["--limit"]!==void 0,result.cursor);output_manager_default.print(`
273
- `),printNextPageCommand(next)}return 0}var SchedulesUpdateTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionCron(cron){cron&&this.trackCliOption({option:"cron",value:this.redactedValue})}trackCliOptionAt(at){at&&this.trackCliOption({option:"at",value:this.redactedValue})}trackCliOptionTimezone(timezone){timezone&&this.trackCliOption({option:"timezone",value:timezone})}trackCliOptionJitter(jitter){jitter!==void 0&&this.trackCliOption({option:"jitter",value:jitter})}trackCliOptionTopic(topic){topic&&this.trackCliOption({option:"topic",value:this.redactedValue})}trackCliOptionPayload(payload){payload!==void 0&&this.trackCliOption({option:"payload",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE19="schedules update <name> [options]";async function update2(client,argv){let telemetry=new SchedulesUpdateTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(updateSubcommand3.options))}catch(error){return invalidScheduleArguments(client,USAGE19,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE19);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionCron(flags["--cron"]),telemetry.trackCliOptionAt(flags["--at"]),telemetry.trackCliOptionTimezone(flags["--timezone"]),telemetry.trackCliOptionJitter(flags["--jitter"]),telemetry.trackCliOptionTopic(flags["--topic"]),telemetry.trackCliOptionPayload(flags["--payload"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],USAGE19);if(!identifier.valid)return identifier.exitCode;let expression=parseScheduleExpression(flags["--cron"],flags["--at"],!1);if(!expression.valid)return invalidScheduleArguments(client,USAGE19,expression.error);let jitter=parseUpdateJitter(flags["--jitter"]);if(!jitter.valid)return invalidScheduleArguments(client,USAGE19,jitter.error);let timezoneError=validateScheduleTimezone(flags["--timezone"]);if(timezoneError)return invalidScheduleArguments(client,USAGE19,timezoneError);let payload=parseSchedulePayload(flags["--payload"]);if(!payload.valid)return invalidScheduleArguments(client,USAGE19,payload.error);if(!(expression.value!==void 0||flags["--timezone"]!==void 0||flags["--jitter"]!==void 0||flags["--topic"]!==void 0||flags["--payload"]!==void 0))return invalidScheduleArguments(client,USAGE19,"At least one update option is required.");if(flags["--topic"]!==void 0&&!flags["--topic"].trim())return invalidScheduleArguments(client,USAGE19,"`--topic` cannot be empty.");if(flags["--topic"]!==void 0){let topicError=validateScheduleQueueTopic(flags["--topic"]);if(topicError)return invalidScheduleArguments(client,USAGE19,topicError)}let outputMode=parseScheduleOutput(client,USAGE19,flags);if(!outputMode.valid)return outputMode.exitCode;let schedules=await resolveSchedulesClient(client,flags["--local"]);if(typeof schedules=="number")return schedules;outputMode.json||output_manager_default.spinner("Updating schedule\u2026");let schedule;try{schedule=await schedules.update({name:identifier.name,namespace:identifier.namespace,...expression.value!==void 0&&{expression:expression.value},...flags["--timezone"]!==void 0&&{timezone:flags["--timezone"]},...flags["--jitter"]!==void 0&&{jitter:jitter.value},...flags["--topic"]!==void 0&&{target:{topic:flags["--topic"]}},...flags["--payload"]!==void 0&&{payload:payload.value}})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"update",local:flags["--local"],name:identifier.name,namespace:identifier.namespace})}return output_manager_default.stopSpinner(),writeScheduleMutationResult(client,schedule,`Updated schedule ${identifier.namespace}/${identifier.name}.`,outputMode.json)}var COMMAND_CONFIG7={create:getCommandAliases(createSubcommand2),delete:getCommandAliases(deleteSubcommand3),disable:getCommandAliases(disableSubcommand2),enable:getCommandAliases(enableSubcommand2),executions:getCommandAliases(executionsSubcommand),inspect:getCommandAliases(getSubcommand),invoke:getCommandAliases(invokeSubcommand),list:getCommandAliases(listSubcommand6),update:getCommandAliases(updateSubcommand3)};async function main5(client){let parsedArgs,commandArgs,selectedCommand;try{let group=takeScheduleCommand(client.argv.slice(2));commandArgs=takeScheduleCommand(group.args),selectedCommand=schedulesCommand.subcommands.find(command2=>getCommandAliases(command2).includes(commandArgs.command)),parsedArgs=parseArguments(commandArgs.args,getFlagsSpecification(selectedCommand?.options??schedulesCommand.options),{permissive:selectedCommand?.name==="executions",warnDeprecated:!1})}catch(error){return client.nonInteractive?invalidScheduleArguments(client,"schedules",error instanceof Error?error.message:String(error)):(printError(error),2)}let telemetry=new SchedulesTelemetryClient({opts:{store:client.telemetryEventStore}}),{subcommand,subcommandOriginal}=getSubcommand2(commandArgs.command?[commandArgs.command]:[],COMMAND_CONFIG7),args=commandArgs.args,needHelp=parsedArgs.flags["--help"];(!subcommand||needHelp||subcommand==="executions")&&telemetry.trackCliFlagLocal(parsedArgs.flags["--local"]);let conflict=validateLocalScheduleFlags(client,parsedArgs.flags,"schedules");if(conflict!==void 0)return conflict;function printHelp(command2,parent){return output_manager_default.print(help(command2,{parent:parent??(command2===schedulesCommand?void 0:schedulesCommand),columns:client.stderr.columns})),0}return subcommand?needHelp&&subcommand!=="executions"?(telemetry.trackCliFlagHelp("schedules",subcommandOriginal),printHelp(subcommand==="create"?createSubcommand2:subcommand==="delete"?deleteSubcommand3:subcommand==="disable"?disableSubcommand2:subcommand==="enable"?enableSubcommand2:subcommand==="inspect"?getSubcommand:subcommand==="invoke"?invokeSubcommand:subcommand==="update"?updateSubcommand3:listSubcommand6)):subcommand==="inspect"?(telemetry.trackCliSubcommandInspect(subcommandOriginal),subcommandOriginal==="get"&&warnDeprecatedSubcommand(client,"schedules get","schedules inspect"),get(client,args)):subcommand==="list"?(telemetry.trackCliSubcommandList(subcommandOriginal),list5(client,args)):subcommand==="executions"?(telemetry.trackCliSubcommandExecutions(subcommandOriginal),executions(client,args,telemetry)):subcommand==="create"?(telemetry.trackCliSubcommandCreate(subcommandOriginal),create(client,args)):subcommand==="delete"?(telemetry.trackCliSubcommandDelete(subcommandOriginal),deleteSchedule(client,args)):subcommand==="update"?(telemetry.trackCliSubcommandUpdate(subcommandOriginal),update2(client,args)):subcommand==="enable"?(telemetry.trackCliSubcommandEnable(subcommandOriginal),runScheduleAction(client,args,"enable")):subcommand==="disable"?(telemetry.trackCliSubcommandDisable(subcommandOriginal),runScheduleAction(client,args,"disable")):(telemetry.trackCliSubcommandInvoke(subcommandOriginal),runScheduleAction(client,args,"invoke")):(commandArgs.command&&output_manager_default.fatal(getInvalidSubcommand(COMMAND_CONFIG7)),needHelp&&telemetry.trackCliFlagHelp("schedules"),printHelp(schedulesCommand))}export{daemons,experiments,main as kms,main2 as microfrontends,redeploy,main3 as redirects,remove2 as remove,main4 as routes,main5 as schedules};
272
+ `),result.cursor){let next=nextPageCommand2(client,namespace,flags["--namespace"]!==void 0,limitResult.value,flags["--limit"]!==void 0,scheduleTrackArgs(flags),result.cursor);output_manager_default.print(`
273
+ `),printNextPageCommand(next)}return 0}var SchedulesUpdateTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionCron(cron){cron&&this.trackCliOption({option:"cron",value:this.redactedValue})}trackCliOptionAt(at){at&&this.trackCliOption({option:"at",value:this.redactedValue})}trackCliOptionTimezone(timezone){timezone&&this.trackCliOption({option:"timezone",value:timezone})}trackCliOptionJitter(jitter){jitter!==void 0&&this.trackCliOption({option:"jitter",value:jitter})}trackCliOptionTopic(topic){topic&&this.trackCliOption({option:"topic",value:this.redactedValue})}trackCliOptionPayload(payload){payload!==void 0&&this.trackCliOption({option:"payload",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE19="schedules update <name> [options]";async function update2(client,argv){let telemetry=new SchedulesUpdateTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(updateSubcommand3.options))}catch(error){return invalidScheduleArguments(client,USAGE19,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE19);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionCron(flags["--cron"]),telemetry.trackCliOptionAt(flags["--at"]),telemetry.trackCliOptionTimezone(flags["--timezone"]),telemetry.trackCliOptionJitter(flags["--jitter"]),telemetry.trackCliOptionTopic(flags["--topic"]),telemetry.trackCliOptionPayload(flags["--payload"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],USAGE19);if(!identifier.valid)return identifier.exitCode;let expression=parseScheduleExpression(flags["--cron"],flags["--at"],!1);if(!expression.valid)return invalidScheduleArguments(client,USAGE19,expression.error);let jitter=parseUpdateJitter(flags["--jitter"]);if(!jitter.valid)return invalidScheduleArguments(client,USAGE19,jitter.error);let timezoneError=validateScheduleTimezone(flags["--timezone"]);if(timezoneError)return invalidScheduleArguments(client,USAGE19,timezoneError);let payload=parseSchedulePayload(flags["--payload"]);if(!payload.valid)return invalidScheduleArguments(client,USAGE19,payload.error);if(!(expression.value!==void 0||flags["--timezone"]!==void 0||flags["--jitter"]!==void 0||flags["--topic"]!==void 0||flags["--payload"]!==void 0))return invalidScheduleArguments(client,USAGE19,"At least one update option is required.");if(flags["--topic"]!==void 0&&!flags["--topic"].trim())return invalidScheduleArguments(client,USAGE19,"`--topic` cannot be empty.");if(flags["--topic"]!==void 0){let topicError=validateScheduleQueueTopic(flags["--topic"]);if(topicError)return invalidScheduleArguments(client,USAGE19,topicError)}let outputMode=parseScheduleOutput(client,USAGE19,flags);if(!outputMode.valid)return outputMode.exitCode;let schedules=await resolveSchedulesClient(client,flags);if(typeof schedules=="number")return schedules;outputMode.json||output_manager_default.spinner("Updating schedule\u2026");let schedule;try{schedule=await schedules.update({name:identifier.name,namespace:identifier.namespace,...expression.value!==void 0&&{expression:expression.value},...flags["--timezone"]!==void 0&&{timezone:flags["--timezone"]},...flags["--jitter"]!==void 0&&{jitter:jitter.value},...flags["--topic"]!==void 0&&{target:{topic:flags["--topic"]}},...flags["--payload"]!==void 0&&{payload:payload.value}})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"update",local:flags["--local"],name:identifier.name,namespace:identifier.namespace,trackArgs:scheduleTrackArgs(flags)})}return output_manager_default.stopSpinner(),writeScheduleMutationResult(client,schedule,`Updated schedule ${identifier.namespace}/${identifier.name}.`,outputMode.json)}var COMMAND_CONFIG7={create:getCommandAliases(createSubcommand2),delete:getCommandAliases(deleteSubcommand3),disable:getCommandAliases(disableSubcommand2),enable:getCommandAliases(enableSubcommand2),executions:getCommandAliases(executionsSubcommand),inspect:getCommandAliases(getSubcommand),invoke:getCommandAliases(invokeSubcommand),list:getCommandAliases(listSubcommand6),update:getCommandAliases(updateSubcommand3)};async function main5(client){let parsedArgs,commandArgs,selectedCommand;try{let group=takeScheduleCommand(client.argv.slice(2));commandArgs=takeScheduleCommand(group.args),selectedCommand=schedulesCommand.subcommands.find(command2=>getCommandAliases(command2).includes(commandArgs.command)),parsedArgs=parseArguments(commandArgs.args,getFlagsSpecification(selectedCommand?.options??schedulesCommand.options),{permissive:selectedCommand?.name==="executions",warnDeprecated:!1})}catch(error){return client.nonInteractive?invalidScheduleArguments(client,"schedules",error instanceof Error?error.message:String(error)):(printError(error),2)}let telemetry=new SchedulesTelemetryClient({opts:{store:client.telemetryEventStore}}),{subcommand,subcommandOriginal}=getSubcommand2(commandArgs.command?[commandArgs.command]:[],COMMAND_CONFIG7),args=commandArgs.args,needHelp=parsedArgs.flags["--help"];(!subcommand||needHelp||subcommand==="executions")&&telemetry.trackCliFlagLocal(parsedArgs.flags["--local"]);let conflict=validateLocalScheduleFlags(client,parsedArgs.flags,"schedules");if(conflict!==void 0)return conflict;function printHelp(command2,parent){return output_manager_default.print(help(command2,{parent:parent??(command2===schedulesCommand?void 0:schedulesCommand),columns:client.stderr.columns})),0}return subcommand?needHelp&&subcommand!=="executions"?(telemetry.trackCliFlagHelp("schedules",subcommandOriginal),printHelp(subcommand==="create"?createSubcommand2:subcommand==="delete"?deleteSubcommand3:subcommand==="disable"?disableSubcommand2:subcommand==="enable"?enableSubcommand2:subcommand==="inspect"?getSubcommand:subcommand==="invoke"?invokeSubcommand:subcommand==="update"?updateSubcommand3:listSubcommand6)):subcommand==="inspect"?(telemetry.trackCliSubcommandInspect(subcommandOriginal),subcommandOriginal==="get"&&warnDeprecatedSubcommand(client,"schedules get","schedules inspect"),get(client,args)):subcommand==="list"?(telemetry.trackCliSubcommandList(subcommandOriginal),list5(client,args)):subcommand==="executions"?(telemetry.trackCliSubcommandExecutions(subcommandOriginal),executions(client,args,telemetry)):subcommand==="create"?(telemetry.trackCliSubcommandCreate(subcommandOriginal),create(client,args)):subcommand==="delete"?(telemetry.trackCliSubcommandDelete(subcommandOriginal),deleteSchedule(client,args)):subcommand==="update"?(telemetry.trackCliSubcommandUpdate(subcommandOriginal),update2(client,args)):subcommand==="enable"?(telemetry.trackCliSubcommandEnable(subcommandOriginal),runScheduleAction(client,args,"enable")):subcommand==="disable"?(telemetry.trackCliSubcommandDisable(subcommandOriginal),runScheduleAction(client,args,"disable")):(telemetry.trackCliSubcommandInvoke(subcommandOriginal),runScheduleAction(client,args,"invoke")):(commandArgs.command&&output_manager_default.fatal(getInvalidSubcommand(COMMAND_CONFIG7)),needHelp&&telemetry.trackCliFlagHelp("schedules"),printHelp(schedulesCommand))}export{daemons,experiments,main as kms,main2 as microfrontends,redeploy,main3 as redirects,remove2 as remove,main4 as routes,main5 as schedules};