@vercel/cli-support 65.8.0-snapshot-c4f338842961 → 65.8.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.
- package/dist/chunks/add-3MWFJH54.js +8 -0
- package/dist/chunks/add-CJWCA3MM.js +8 -0
- package/dist/chunks/add-GLCVYEEN.js +8 -0
- package/dist/chunks/build-6RK6VECG.js +7 -0
- package/dist/chunks/{chunk-UF7QYHFU.js → chunk-2B7U6BB5.js} +1 -1
- package/dist/chunks/{chunk-UMMQR6WI.js → chunk-2OET5FWH.js} +1 -1
- package/dist/chunks/chunk-2PYFJXKS.js +14 -0
- package/dist/chunks/{chunk-FVIVFDCB.js → chunk-2QSNFVB6.js} +1 -1
- package/dist/chunks/{chunk-SLDWAIO3.js → chunk-33U57CNE.js} +1 -1
- package/dist/chunks/{chunk-N5CXIFE2.js → chunk-37DIJCWK.js} +1 -1
- package/dist/chunks/{chunk-HMWDOAWO.js → chunk-3AXMZRAB.js} +1 -1
- package/dist/chunks/{chunk-4JE57EBL.js → chunk-3DDEBTCC.js} +1 -1
- package/dist/chunks/{chunk-O7COT3YB.js → chunk-3KSTUMR6.js} +1 -1
- package/dist/chunks/{chunk-26QK3I2S.js → chunk-3LQ2ADXO.js} +1 -1
- package/dist/chunks/{chunk-QFUCWOCL.js → chunk-3RXEJWYM.js} +1 -1
- package/dist/chunks/{chunk-FAELJM4F.js → chunk-44XDCARR.js} +1 -1
- package/dist/chunks/{chunk-M7LUSXMG.js → chunk-45UDRX4C.js} +1 -1
- package/dist/chunks/{chunk-EAUDC24V.js → chunk-4ELZOAQH.js} +1 -1
- package/dist/chunks/{chunk-CCD7E322.js → chunk-4MP4HVBG.js} +1 -1
- package/dist/chunks/{chunk-64VMAYM6.js → chunk-5GOQ3FBV.js} +1 -1
- package/dist/chunks/{chunk-OGSTNJJ5.js → chunk-5MHRCRIN.js} +1 -1
- package/dist/chunks/{chunk-JAOYF7AW.js → chunk-5SMV2PPI.js} +1 -1
- package/dist/chunks/{chunk-QAYWROXQ.js → chunk-62FZFXPJ.js} +1 -1
- package/dist/chunks/{chunk-WGPYUXIC.js → chunk-63DO6KMD.js} +2 -2
- package/dist/chunks/{chunk-OKNDHNH6.js → chunk-6KCYUYUM.js} +1 -1
- package/dist/chunks/{chunk-IUMJJFEP.js → chunk-6V67VZJD.js} +1 -1
- package/dist/chunks/{chunk-JYK7ZIZW.js → chunk-753RQ6WV.js} +1 -1
- package/dist/chunks/{chunk-EMORYAJQ.js → chunk-7A5WO5KA.js} +1 -1
- package/dist/chunks/chunk-7BML2OR6.js +33 -0
- package/dist/chunks/{chunk-FNA4MIOH.js → chunk-7E6UJXLR.js} +1 -1
- package/dist/chunks/{chunk-ET5ARPPO.js → chunk-7EJ3BZ67.js} +1 -1
- package/dist/chunks/{chunk-VWHIWUGJ.js → chunk-7V2PXIVW.js} +1 -1
- package/dist/chunks/{chunk-RKWPLZJX.js → chunk-A67TLHES.js} +1 -1
- package/dist/chunks/{chunk-OTYF3ZZW.js → chunk-A6F3EE2O.js} +1 -1
- package/dist/chunks/{chunk-V6NMCQUQ.js → chunk-AEOG4E5G.js} +1 -1
- package/dist/chunks/{chunk-F4KY2TOK.js → chunk-AKOYIH3A.js} +1 -1
- package/dist/chunks/{chunk-RMW2FDXS.js → chunk-APNR444T.js} +1 -1
- package/dist/chunks/{chunk-OCRNZT7G.js → chunk-AQA4JVKA.js} +1 -1
- package/dist/chunks/{chunk-KHADRPBJ.js → chunk-B3ETPBO4.js} +1 -1
- package/dist/chunks/{chunk-CS6E5XNQ.js → chunk-BHJLCFQ4.js} +1 -1
- package/dist/chunks/{chunk-RPWGUQSE.js → chunk-BLFPDEXE.js} +1 -1
- package/dist/chunks/chunk-BULSRTQE.js +7 -0
- package/dist/chunks/{chunk-SXRZZDON.js → chunk-C4XT3PG4.js} +1 -1
- package/dist/chunks/chunk-CJHVHB2F.js +8 -0
- package/dist/chunks/{chunk-DPZFKHW3.js → chunk-CJLRNGWY.js} +1 -1
- package/dist/chunks/chunk-D3GYYGSS.js +9 -0
- package/dist/chunks/{chunk-GVPVWHFK.js → chunk-DBV6AB6T.js} +1 -1
- package/dist/chunks/{chunk-APWCVJAG.js → chunk-EGPVNTKP.js} +1 -1
- package/dist/chunks/{chunk-RVXE4MXS.js → chunk-EKB2DYCQ.js} +1 -1
- package/dist/chunks/{chunk-JW57JYRO.js → chunk-ELQBQ2O5.js} +1 -1
- package/dist/chunks/{chunk-2FHZYQPY.js → chunk-EZL4AJXH.js} +1 -1
- package/dist/chunks/{chunk-QHM6OK76.js → chunk-F76MNMH3.js} +1 -1
- package/dist/chunks/{chunk-4K3O7QWS.js → chunk-FNOCIKAU.js} +1 -1
- package/dist/chunks/{chunk-QNL22LAW.js → chunk-FQVSBXRY.js} +1 -1
- package/dist/chunks/{chunk-YCJHUYBJ.js → chunk-FXEMEIST.js} +1 -1
- package/dist/chunks/{chunk-4NDWIUKJ.js → chunk-G7X2TVUO.js} +1 -1
- package/dist/chunks/{chunk-JQTSETXH.js → chunk-GJB72ITS.js} +1 -1
- package/dist/chunks/{chunk-K3TCWYVX.js → chunk-GKUHMS3A.js} +1 -1
- package/dist/chunks/{chunk-H73G2ROF.js → chunk-GP2FXUFE.js} +1 -1
- package/dist/chunks/{chunk-UWMPVTXG.js → chunk-GP5MFCGO.js} +1 -1
- package/dist/chunks/{chunk-TZT3VYZ3.js → chunk-GZWYJT4C.js} +1 -1
- package/dist/chunks/{chunk-XCKUJZUG.js → chunk-H3SJJO6S.js} +1 -1
- package/dist/chunks/{chunk-GSXTCMKC.js → chunk-H4DE2OFO.js} +1 -1
- package/dist/chunks/{chunk-CZINAGH6.js → chunk-HA2ICIB5.js} +1 -1
- package/dist/chunks/{chunk-SUMMI76H.js → chunk-HNOZM6D4.js} +1 -1
- package/dist/chunks/{chunk-UJQ6PBRF.js → chunk-HTFQFHPR.js} +1 -1
- package/dist/chunks/{chunk-AUY363W7.js → chunk-IECNFRTK.js} +1 -1
- package/dist/chunks/{chunk-2EYHCJQO.js → chunk-IHNEF3BG.js} +1 -1
- package/dist/chunks/{chunk-BGWS5R5R.js → chunk-IHRM7L23.js} +1 -1
- package/dist/chunks/{chunk-3IRPFJ2G.js → chunk-INH6RXBH.js} +1 -1
- package/dist/chunks/chunk-IU6PHFPQ.js +7 -0
- package/dist/chunks/{chunk-C6IITJ5S.js → chunk-J52UJYOK.js} +1 -1
- package/dist/chunks/{chunk-7SAEZ4NC.js → chunk-JRBPVMQO.js} +1 -1
- package/dist/chunks/chunk-JUAHDOL6.js +7 -0
- package/dist/chunks/{chunk-FJ5CNQDD.js → chunk-JULKMXVP.js} +1 -1
- package/dist/chunks/{chunk-3H36RI7C.js → chunk-K2R3QPOC.js} +1 -1
- package/dist/chunks/{chunk-QGGJ5VVZ.js → chunk-KARAZGCO.js} +1 -1
- package/dist/chunks/chunk-KAUKCHQF.js +10 -0
- package/dist/chunks/{chunk-F34TG2V3.js → chunk-KDRCBWRY.js} +1 -1
- package/dist/chunks/{chunk-F22QLVTX.js → chunk-KIMIK4SG.js} +1 -1
- package/dist/chunks/{chunk-BPR5CLQM.js → chunk-KL6HNOFN.js} +1 -1
- package/dist/chunks/{chunk-LBTMGBAK.js → chunk-KUNFE2M6.js} +1 -1
- package/dist/chunks/{chunk-XSQVCDSD.js → chunk-LD42X7ZH.js} +1 -1
- package/dist/chunks/{chunk-RLKS5G6C.js → chunk-LM3YPF3K.js} +1 -1
- package/dist/chunks/{chunk-J4OVLASZ.js → chunk-LOEU4R4Z.js} +1 -1
- package/dist/chunks/{chunk-DSY2S2YT.js → chunk-M4TIOVOP.js} +1 -1
- package/dist/chunks/{chunk-55H6G46X.js → chunk-MCP63EVQ.js} +1 -1
- package/dist/chunks/{chunk-CNOJCW2I.js → chunk-MDWYXLDB.js} +2 -2
- package/dist/chunks/{chunk-J6L5MDTX.js → chunk-NAXFG37F.js} +1 -1
- package/dist/chunks/{chunk-VM3R6MAM.js → chunk-NDWGYZRT.js} +2 -2
- package/dist/chunks/{chunk-C7D43G3N.js → chunk-O7IYJGOR.js} +1 -1
- package/dist/chunks/chunk-OLAG7Y3P.js +10 -0
- package/dist/chunks/{chunk-5SIC5273.js → chunk-OTJNOMRV.js} +2 -2
- package/dist/chunks/{chunk-RGQZXLV4.js → chunk-OV7G6RIQ.js} +1 -1
- package/dist/chunks/{chunk-MBJT3CNI.js → chunk-P2HBUDGR.js} +1 -1
- package/dist/chunks/{chunk-OER4YAWM.js → chunk-PY5A73YH.js} +1 -1
- package/dist/chunks/{chunk-VAWZZK3Y.js → chunk-QIPUFI6P.js} +1 -1
- package/dist/chunks/{chunk-EPO7P734.js → chunk-QLW5DCM4.js} +1 -1
- package/dist/chunks/{chunk-RUXABBNV.js → chunk-QR7PY5JS.js} +1 -1
- package/dist/chunks/{chunk-AA3JM33J.js → chunk-QTCS2HDX.js} +1 -1
- package/dist/chunks/{chunk-RHFPMM4R.js → chunk-QZEZCUUZ.js} +7 -7
- package/dist/chunks/{chunk-SOGL2HOD.js → chunk-RIAOB3RF.js} +1 -1
- package/dist/chunks/{chunk-4BIGNS67.js → chunk-SBBD2Q5A.js} +1 -1
- package/dist/chunks/{chunk-A3RU52F4.js → chunk-SKLRHAGH.js} +1 -1
- package/dist/chunks/{chunk-SKSOCUDZ.js → chunk-SOCGBVML.js} +1 -1
- package/dist/chunks/{chunk-XTKGBVSF.js → chunk-T2SRGJPU.js} +1 -1
- package/dist/chunks/{chunk-7VTPAXDC.js → chunk-T3S63EA3.js} +1 -1
- package/dist/chunks/{chunk-SJA2LZ4O.js → chunk-TCEEQLD4.js} +1 -1
- package/dist/chunks/{chunk-2NMEPXG3.js → chunk-TK2ILW2O.js} +1 -1
- package/dist/chunks/{chunk-ID663OJ7.js → chunk-TOTTVS5P.js} +1 -1
- package/dist/chunks/{chunk-KPO6VDR2.js → chunk-TSKFDJ77.js} +1 -1
- package/dist/chunks/{chunk-FOQK3VTY.js → chunk-UAUVCOGS.js} +1 -1
- package/dist/chunks/chunk-UI2H2EIM.js +23 -0
- package/dist/chunks/{chunk-5RMIM4S2.js → chunk-UUBPAYTG.js} +1 -1
- package/dist/chunks/{chunk-SACGQMVQ.js → chunk-UUDE44NV.js} +1 -1
- package/dist/chunks/{chunk-5CZNUB7Y.js → chunk-V5A4EBV3.js} +1 -1
- package/dist/chunks/{chunk-KY7LDQRX.js → chunk-VBKFCR5W.js} +1 -1
- package/dist/chunks/{chunk-EQT2VHL2.js → chunk-WRC5CTUD.js} +1 -1
- package/dist/chunks/chunk-X65XZSWS.js +10 -0
- package/dist/chunks/{chunk-LOO42IMZ.js → chunk-XBOGVOV5.js} +1 -1
- package/dist/chunks/{chunk-MFW6IJIK.js → chunk-XK3W6Q5I.js} +1 -1
- package/dist/chunks/{chunk-UKJAWDQX.js → chunk-XUJA3RZD.js} +1 -1
- package/dist/chunks/{chunk-6GSI4VMJ.js → chunk-Y55DGB3L.js} +1 -1
- package/dist/chunks/{chunk-P6ZTEDX2.js → chunk-YEPB52XE.js} +1 -1
- package/dist/chunks/{chunk-7CNJTFWP.js → chunk-YHFZIUXF.js} +1 -1
- package/dist/chunks/{chunk-P2SVNHTJ.js → chunk-YIOT5B5Z.js} +1 -1
- package/dist/chunks/{chunk-OETX5QG4.js → chunk-YKNHA3RN.js} +1 -1
- package/dist/chunks/chunk-YPPDRKVC.js +7 -0
- package/dist/chunks/{chunk-75JI2SZX.js → chunk-YRK2BCTJ.js} +1 -1
- package/dist/chunks/{chunk-EDLTSAD2.js → chunk-YTZPQVGF.js} +1 -1
- package/dist/chunks/{chunk-D2XEF6G4.js → chunk-ZBJ44DRL.js} +1 -1
- package/dist/chunks/chunk-ZRJKGAUT.js +25 -0
- package/dist/chunks/clear-375VKVXY.js +8 -0
- package/dist/chunks/compile-vercel-config-LNRUSKTH.js +7 -0
- package/dist/chunks/config-GOYBATSI.js +8 -0
- package/dist/chunks/config-VAW454ZH.js +7 -0
- package/dist/chunks/connect-git-provider-7KRYVDFS.js +7 -0
- package/dist/chunks/delete-3SN6XFOW.js +10 -0
- package/dist/chunks/delete-W6BZHLGP.js +9 -0
- package/dist/chunks/detect-services-6L57MV5F.js +7 -0
- package/dist/chunks/disable-UUV5MYYH.js +7 -0
- package/dist/chunks/discard-Y6ZITZ2P.js +14 -0
- package/dist/chunks/edit-CVMUITFG.js +9 -0
- package/dist/chunks/edit-LLRI57RF.js +8 -0
- package/dist/chunks/enable-TFA6XWAA.js +7 -0
- package/dist/chunks/esm-4ZHGYTUV.js +7 -0
- package/dist/chunks/esm-7FVTQHRH.js +9 -0
- package/dist/chunks/esm-GTSUYLKG.js +7 -0
- package/dist/chunks/{esm-DFFBNKNU.js → esm-IBY43SSX.js} +1 -1
- package/dist/chunks/esm-LNIAU767.js +7 -0
- package/dist/chunks/esm-TEM4KPXZ.js +7 -0
- package/dist/chunks/esm-TLAM7FSK.js +9 -0
- package/dist/chunks/{exec-R5BDGSGP.js → exec-7LB36K52.js} +1 -1
- package/dist/chunks/{export-FV6WM43O.js → export-AI2O22W5.js} +1 -1
- package/dist/chunks/future-EZEU2CBY.js +7 -0
- package/dist/chunks/generate-cert-for-deploy-QP5BUOJL.js +7 -0
- package/dist/chunks/image-YLUF7SHR.js +7 -0
- package/dist/chunks/import-builders-ANLKHIYK.js +7 -0
- package/dist/chunks/{inspect-DLADA2SX.js → inspect-3NMNI7GY.js} +1 -1
- package/dist/chunks/inspect-3TRAN3SP.js +9 -0
- package/dist/chunks/{inspect-W3RVFJLM.js → inspect-4A67JORH.js} +1 -1
- package/dist/chunks/{inspect-ZUHCIZFW.js → inspect-OM5S5YQ2.js} +1 -1
- package/dist/chunks/inspect-VEUY4QJ2.js +13 -0
- package/dist/chunks/list-DJKKVFUL.js +12 -0
- package/dist/chunks/{list-6EZHEJGK.js → list-NEV4FBTY.js} +1 -1
- package/dist/chunks/{list-L4ZCXNAN.js → list-TUJ7HCQK.js} +1 -1
- package/dist/chunks/login-4HCFKDKL.js +7 -0
- package/dist/chunks/login-EPBJQDEK.js +9 -0
- package/dist/chunks/logs-Q7XXVFR3.js +7 -0
- package/dist/chunks/ls-3TKRCF4T.js +8 -0
- package/dist/chunks/{ls-IGICS6HZ.js → ls-COOTTCRW.js} +1 -1
- package/dist/chunks/{ls-EIGVX2LB.js → ls-CVO4MCX5.js} +1 -1
- package/dist/chunks/ls-LS5J5ERG.js +11 -0
- package/dist/chunks/ls-OQQTUQFN.js +8 -0
- package/dist/chunks/{ls-36K3OMRV.js → ls-OVM2DZYL.js} +1 -1
- package/dist/chunks/{ls-GSMTVAMC.js → ls-UY3KCDSF.js} +1 -1
- package/dist/chunks/mutate-I6QWCURL.js +9 -0
- package/dist/chunks/notifications-UKC5Z6AH.js +7 -0
- package/dist/chunks/open-CYATUDTT.js +7 -0
- package/dist/chunks/openapi-B7WSK7AU.js +7 -0
- package/dist/chunks/permissions-4ZYPHPOZ.js +7 -0
- package/dist/chunks/plugin-offer-4YTKDZGS.js +9 -0
- package/dist/chunks/prompt-missing-credentials-4OKJMYW5.js +7 -0
- package/dist/chunks/publish-N6E7VTRK.js +15 -0
- package/dist/chunks/pull-LPIT3XUR.js +7 -0
- package/dist/chunks/purchase-domain-if-available-IS6UDPJT.js +7 -0
- package/dist/chunks/push-ETLU6OCC.js +7 -0
- package/dist/chunks/{query-CUU7RRG6.js → query-NIMDIFLO.js} +1 -1
- package/dist/chunks/reauthenticate-TESIUM6U.js +7 -0
- package/dist/chunks/reorder-PQU2BQEE.js +10 -0
- package/dist/chunks/reply-RKDDYV5I.js +9 -0
- package/dist/chunks/resolve-ZF7BFXIW.js +12 -0
- package/dist/chunks/resolve-agent-team-QSIJ665W.js +7 -0
- package/dist/chunks/restore-U5A3BEFQ.js +16 -0
- package/dist/chunks/rm-7H5O3T7G.js +8 -0
- package/dist/chunks/rm-EPPMQEAV.js +8 -0
- package/dist/chunks/rm-FNMW2FPM.js +8 -0
- package/dist/chunks/rm-OZIA3DFM.js +8 -0
- package/dist/chunks/rm-W3VOR2ED.js +8 -0
- package/dist/chunks/routes-BLE5XZJE.js +7 -0
- package/dist/chunks/rule-inspect-YAVRRGAP.js +8 -0
- package/dist/chunks/{schema-5G57LHUD.js → schema-44U7GOQE.js} +1 -1
- package/dist/chunks/schema-6SAZ7T2S.js +14 -0
- package/dist/chunks/select-org-L5FJVL5Q.js +7 -0
- package/dist/chunks/set-3NQXDGJV.js +7 -0
- package/dist/chunks/setup-and-link-H36NRP3A.js +7 -0
- package/dist/chunks/{skills-4WEJZT7E.js → skills-XOH4Q7KK.js} +1 -1
- package/dist/chunks/tags-CRG27GFL.js +7 -0
- package/dist/chunks/{types-EK3C4EHF.js → types-6W3KAE2A.js} +1 -1
- package/dist/chunks/{update-IKZXIUYB.js → update-YLFMSPQF.js} +1 -1
- package/dist/commands/build/index.js +1 -1
- package/dist/commands/deploy/index.js +10 -6
- package/dist/commands/dev/index.js +2 -2
- package/dist/commands/env/index.js +5 -3
- package/dist/commands/link/index.js +1 -1
- package/dist/commands/list/index.js +1 -1
- package/dist/commands/project/index.js +1 -1
- package/dist/commands-account.js +1 -1
- package/dist/commands-ai.js +2 -2
- package/dist/commands-blob.js +1 -1
- package/dist/commands-core.js +6 -6
- package/dist/commands-deployments.js +6 -9
- package/dist/commands-flags.js +1 -1
- package/dist/commands-integrations.js +1 -1
- package/dist/commands-observability.js +2 -2
- package/dist/commands-routing.js +162 -153
- package/dist/help.js +1 -1
- package/dist/index.js +5 -5
- package/dist/internal-build.js +1 -1
- package/dist/package.json +57 -57
- package/dist/root-help-commands.mjs +1 -1
- package/dist/version.mjs +1 -1
- package/package.json +50 -50
- package/dist/chunks/add-6R2L3B6P.js +0 -8
- package/dist/chunks/add-O4YI4D5H.js +0 -8
- package/dist/chunks/add-W7MDOZMC.js +0 -8
- package/dist/chunks/build-UOKGUTFN.js +0 -7
- package/dist/chunks/chunk-2GHZGOWT.js +0 -7
- package/dist/chunks/chunk-3UD4MZMH.js +0 -8
- package/dist/chunks/chunk-67GZ5REA.js +0 -7
- package/dist/chunks/chunk-A2UZ2O7H.js +0 -7
- package/dist/chunks/chunk-BS32OUOC.js +0 -7
- package/dist/chunks/chunk-D3AHZ5LI.js +0 -7
- package/dist/chunks/chunk-DWOJP4ST.js +0 -27
- package/dist/chunks/chunk-FXF3NEJM.js +0 -14
- package/dist/chunks/chunk-I7U2XP4X.js +0 -10
- package/dist/chunks/chunk-IEZKTS2C.js +0 -10
- package/dist/chunks/chunk-IFXMG2WQ.js +0 -7
- package/dist/chunks/chunk-LCMNJNSQ.js +0 -9
- package/dist/chunks/chunk-MVGTMPMI.js +0 -23
- package/dist/chunks/chunk-RRDNKB2X.js +0 -7
- package/dist/chunks/chunk-YEOOTTBB.js +0 -33
- package/dist/chunks/clear-P2GBQ7OM.js +0 -8
- package/dist/chunks/compile-vercel-config-SPFLKB2T.js +0 -7
- package/dist/chunks/config-BI7WYZWB.js +0 -7
- package/dist/chunks/config-PR2PEOA7.js +0 -8
- package/dist/chunks/connect-git-provider-IQ7N2NPY.js +0 -7
- package/dist/chunks/delete-BZ3NLCTU.js +0 -9
- package/dist/chunks/delete-PUEGS2CP.js +0 -10
- package/dist/chunks/detect-services-HHGBWOND.js +0 -7
- package/dist/chunks/disable-UYLN3HPM.js +0 -7
- package/dist/chunks/discard-NMRN5PS4.js +0 -14
- package/dist/chunks/edit-KA7OSMJA.js +0 -9
- package/dist/chunks/edit-UQ4J2OQ7.js +0 -8
- package/dist/chunks/enable-7FM67BEJ.js +0 -7
- package/dist/chunks/esm-33752ISR.js +0 -7
- package/dist/chunks/esm-4JKEE7PC.js +0 -7
- package/dist/chunks/esm-BYG5BWYH.js +0 -9
- package/dist/chunks/esm-IF453UWS.js +0 -7
- package/dist/chunks/esm-LABWDJ72.js +0 -7
- package/dist/chunks/esm-TG37FXTU.js +0 -9
- package/dist/chunks/future-3WF7CSGN.js +0 -7
- package/dist/chunks/generate-cert-for-deploy-3OBDQ2R3.js +0 -7
- package/dist/chunks/image-SYY2IBOV.js +0 -7
- package/dist/chunks/import-builders-IJYZSEBY.js +0 -7
- package/dist/chunks/inspect-3NZE4UWJ.js +0 -13
- package/dist/chunks/inspect-J4WU7N2Z.js +0 -9
- package/dist/chunks/list-GLYYBTWD.js +0 -12
- package/dist/chunks/login-4OUKTVIZ.js +0 -7
- package/dist/chunks/login-E6L7CG3P.js +0 -9
- package/dist/chunks/logs-XHJPPHQ7.js +0 -7
- package/dist/chunks/ls-E75T2PHD.js +0 -8
- package/dist/chunks/ls-PA4OVQ43.js +0 -11
- package/dist/chunks/ls-RKILAXZ4.js +0 -8
- package/dist/chunks/mutate-4L6XPD7X.js +0 -9
- package/dist/chunks/notifications-IAKFNMTC.js +0 -7
- package/dist/chunks/open-62S7LSPT.js +0 -7
- package/dist/chunks/openapi-SO34WDBK.js +0 -7
- package/dist/chunks/permissions-T2KL34JP.js +0 -7
- package/dist/chunks/plugin-offer-HMNGWYIC.js +0 -9
- package/dist/chunks/prompt-missing-credentials-WTRJREZF.js +0 -7
- package/dist/chunks/publish-EFZO7IO2.js +0 -15
- package/dist/chunks/pull-GVFCZAHC.js +0 -7
- package/dist/chunks/purchase-domain-if-available-PJMKV5BI.js +0 -7
- package/dist/chunks/push-PHTW37LC.js +0 -7
- package/dist/chunks/reauthenticate-7P3C7ASY.js +0 -7
- package/dist/chunks/reorder-EBYXIVUZ.js +0 -10
- package/dist/chunks/reply-CBBADKE5.js +0 -9
- package/dist/chunks/resolve-KKFBXTIX.js +0 -12
- package/dist/chunks/resolve-agent-team-BBBIQWFZ.js +0 -7
- package/dist/chunks/restore-D4JUHPJ7.js +0 -16
- package/dist/chunks/rm-CRDLGD4Y.js +0 -8
- package/dist/chunks/rm-DSAXELZD.js +0 -8
- package/dist/chunks/rm-HXDTYZ3G.js +0 -8
- package/dist/chunks/rm-TDI6GXCE.js +0 -8
- package/dist/chunks/rm-XAUKTN2C.js +0 -8
- package/dist/chunks/routes-RWILS4LA.js +0 -7
- package/dist/chunks/rule-inspect-RKUBC35D.js +0 -8
- package/dist/chunks/schema-WSHKYL5H.js +0 -14
- package/dist/chunks/select-org-OKHCDXNF.js +0 -7
- package/dist/chunks/set-PBM7ZMZ7.js +0 -7
- package/dist/chunks/setup-and-link-PVMEKIYD.js +0 -7
- package/dist/chunks/tags-WUAMDEUU.js +0 -7
|
@@ -4,4 +4,4 @@ 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{packageName}from"./chunk-JESNVRVR.js";import{environmentOption,formatOption,jsonOption,projectOption,sinceOption,untilOption}from"./chunk-
|
|
7
|
+
import{packageName}from"./chunk-JESNVRVR.js";import{environmentOption,formatOption,jsonOption,projectOption,sinceOption,untilOption}from"./chunk-YPPDRKVC.js";var schemaSubcommand={name:"schema",aliases:[],description:"List available metrics or inspect a specific metric.",arguments:[{name:"metric-or-prefix",required:!1}],options:[formatOption,jsonOption],examples:[{name:"List all metrics",value:`${packageName} metrics schema`},{name:"Show metric details",value:`${packageName} metrics schema vercel.function_invocation`},{name:"Schema as JSON for agents",value:`${packageName} metrics schema vercel.request.count --json`}]},metricsCommand={name:"metrics",aliases:[],description:"Query observability metrics for your Vercel project or team.",arguments:[{name:"metric-id",required:!1}],subcommands:[{name:"query",aliases:[],description:"",default:!0,hidden:!0,arguments:[],options:[],examples:[]},schemaSubcommand],options:[{name:"aggregation",shorthand:null,deprecatedShorthand:"a",type:String,deprecated:!1,description:"Aggregation function (default: sum for counts/bytes/currency, avg for durations/memory/ratios)",argument:"FN"},{name:"group-by",shorthand:null,type:[String],deprecated:!1,description:"Dimensions to group by (repeatable)",argument:"DIM"},{name:"limit",shorthand:"n",deprecatedShorthand:"l",type:Number,deprecated:!1,description:"Max groups per time bucket (default: 10)",argument:"N"},{name:"order-by",shorthand:null,type:String,deprecated:!1,description:"Order grouped results by value or count (default: count, or value when count is unsupported)",argument:"value|count"},{name:"order",shorthand:null,type:String,deprecated:!1,description:"Order direction for grouped results: asc or desc (default: desc)",argument:"asc|desc"},{name:"query",shorthand:"q",type:[String],deprecated:!1,get description(){return process.env.FF_LEGACY_METRICS?"OData filter expression (repeatable, ANDed together)":"KQL filter expression (repeatable, ANDed together)"},argument:"TEXT"},{name:"filter",shorthand:"f",type:[String],deprecated:!0,description:"Deprecated alias for `--query`",argument:"EXPR"},{...environmentOption,description:"Limit the query to one environment, such as production or preview"},{name:"prod",shorthand:null,type:Boolean,deprecated:!0,description:"Deprecated alias for `--environment production`"},{...sinceOption,description:`${sinceOption.description} (default: 1h ago)`},untilOption,{name:"granularity",shorthand:null,deprecatedShorthand:"g",type:String,deprecated:!1,description:"Time bucket size: 1m, 5m, 15m, 1h, 4h, 1d (default: auto; raised when too fine for the time range)",argument:"SIZE"},{name:"bucket-timezone",shorthand:null,type:String,deprecated:!1,description:"IANA timezone for calendar bucket alignment only; does not shift --since/--until or output timestamps (e.g., Europe/Paris)",argument:"ZONE"},{...projectOption,shorthand:"p"},{name:"all",shorthand:null,type:Boolean,deprecated:!1,description:"Query across all projects for the team"},formatOption,jsonOption],get examples(){let canonical=!process.env.FF_LEGACY_METRICS,httpStatus=canonical?"httpStatus":"http_status",errorCode=canonical?"errorCode":"error_code",aiProvider=canonical?"aiProvider":"ai_provider",aiGatewayCostMetric=canonical?"vercel.ai_gateway.request.cost":"vercel.ai_gateway_request.cost",pageViewMetric=canonical?"vercel.analytics.page_view.count":"vercel.analytics_pageview.count",visitorId=canonical?"visitorId":"visitor_id",projectId=canonical?"projectId":"project_id",statusFilter=canonical?"httpStatus >= 500":"http_status ge 500",routeFilter=canonical?`'route:"/api"'`:`"contains(request_path, '/api')"`;return[{name:"5xx errors by error code in the last hour",value:`${packageName} metrics vercel.function_invocation.count --query "${statusFilter}" --group-by ${errorCode} --since 1h`},{name:"Function invocations by HTTP status code",value:`${packageName} metrics vercel.function_invocation.count --group-by ${httpStatus} --since 6h`},{name:"Function duration by route",value:`${packageName} metrics vercel.function_invocation.function_duration_ms --aggregation avg --group-by route --since 1h`},{name:"AI Gateway costs by provider",value:`${packageName} metrics ${aiGatewayCostMetric} --aggregation sum --group-by ${aiProvider} --since 7d`},{name:"Core Web Vitals (LCP) by route",value:`${packageName} metrics vercel.speed_insights.lcp_ms --aggregation p75 --environment production --group-by route --since 7d`},{name:"Routes with the lowest p75 LCP",value:`${packageName} metrics vercel.speed_insights.lcp_ms --aggregation p75 --environment production --group-by route --since 7d --order-by value --order asc`},{name:canonical?"Daily pageviews":"Daily pageviews with a Paris-aligned bucket",value:canonical?`${packageName} metrics ${pageViewMetric} --since 7d --granularity 1d`:`${packageName} metrics ${pageViewMetric} --since 7d --granularity 1d --bucket-timezone Europe/Paris`},{name:"Visitors time series from the top 5 countries",value:`${packageName} metrics ${pageViewMetric} --aggregation unique/${visitorId} --group-by country --since 1d --granularity 1h --limit 5`},{name:"List available metrics",value:`${packageName} metrics schema`},{name:"Function executions matching an API route",value:`${packageName} metrics vercel.function_invocation.count --query ${routeFilter} --group-by route --since 1h`},{name:"Function executions matching multiple filters",value:`${packageName} metrics vercel.function_invocation.count --query "${statusFilter}" --query ${routeFilter} --since 1h`},{name:"Show schema for a metric prefix",value:`${packageName} metrics schema vercel.request`},{name:"Team-wide function executions by project",value:`${packageName} metrics --all vercel.function_invocation.count --group-by ${projectId} --since 24h`}]}};export{schemaSubcommand,metricsCommand};
|
|
@@ -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{buildCommandExampleLines,buildCommandOptionLines,createHelpTheme,helpColumns,helpCommandNames,helpLiterals,helpRows,helpSection,helpUsage}from"./chunk-
|
|
7
|
+
import{buildCommandExampleLines,buildCommandOptionLines,createHelpTheme,helpColumns,helpCommandNames,helpLiterals,helpRows,helpSection,helpUsage}from"./chunk-33U57CNE.js";import{globalCommandOptions}from"./chunk-YPPDRKVC.js";var BETA_COMMANDS=new Set(["budget","budgets","crons","daemons","kms","schedules"]);var ROOT_HELP_GROUPS={"Deploy and Develop":["deploy","build","dev","init","inspect","list","promote","redeploy","rollback","remove","rolling-release","bisect","ci","curl","httpstat"],"Projects and Configuration":["project","link","open","pull","env","git","cache","target","environments","flags","microfrontends","deploy-hooks"],"Domains and Traffic":["domains","dns","alias","certs","redirects","routes"],"Data and Compute":["storage","blob","global-config","sandbox","vcr","daemons","crons","schedules","ai-gateway"],"Operations and Security":["activity","health","agent-runs","alerts","monitors","comments","logs","drains","metrics","traces","security","firewall","kms","webhooks"],"Account and Billing":["login","logout","signup","switch","teams","organizations","tokens","whoami","budgets","buy","contract","pricing","usage"],"CLI and Integrations":["help","feedback","api","install","integration","integration-resource","connect","agent","mcp","setup","skills","changelog","telemetry","upgrade","version","token-pass"]};function commandGroup(name,fallback="CLI and Integrations"){return Object.entries(ROOT_HELP_GROUPS).find(([,names])=>names.includes(name))?.[0]??fallback}var DEPRECATED_COMMANDS=new Set(["integration-resource"]),DEFAULT_COMMAND="deploy",HELP_ROW={names:["help"],description:"Show help for a command",group:commandGroup("help"),default:!1};function summarize(description){let firstLine=description.trim().split(/\n\s*\n/)[0].replace(/\s*\n\s*/g," "),abbreviations=new Set(["e.g.","i.e.","vs.","etc."]),sentenceEnd=[...firstLine.matchAll(/[^.]\.(\s|$)/g)].find(match=>{let prefix=firstLine.slice(0,match.index+2);return!abbreviations.has((prefix.split(/\s/).at(-1)??"").replace(/^[^a-z]+/i,""))});return(sentenceEnd?firstLine.slice(0,sentenceEnd.index+1):firstLine).replace(/\.$/,"")}function getRootHelpCommands(commands){let rows=[HELP_ROW];for(let command of commands){if(!("description"in command)||command.hidden||command.name==="help"||DEPRECATED_COMMANDS.has(command.name))continue;let names=helpCommandNames(command),description=command.summary?command.summary.replace(/\.$/,""):summarize(command.description);BETA_COMMANDS.has(command.name)&&(description+=" [beta]"),rows.push({names,description,group:commandGroup(command.name),default:command.name===DEFAULT_COMMAND});for(let alias of command.aliases){let subcommand=command.subcommands?.find(candidate=>candidate.name===alias&&!candidate.hidden);subcommand&&rows.push({names:[alias],description:subcommand.summary?subcommand.summary.replace(/\.$/,""):summarize(subcommand.description),group:commandGroup(alias,commandGroup(command.name)),default:!1})}}return rows.sort((a,b)=>{if(a.default!==b.default)return a.default?-1:1;let aName=a.names[a.names.length-1],bName=b.names[b.names.length-1];return aName<bName?-1:aName>bName?1:0})}var ROOT_HELP_EXAMPLES=[{name:"Deploy the current directory",value:"vercel"},{name:"Deploy a linked project without prompts",value:"vercel deploy --yes --non-interactive"},{name:"Show help for a command",value:"vercel domains --help"}];function help(commands,columns=80,theme=createHelpTheme()){columns=helpColumns(columns);let sections=Object.keys(ROOT_HELP_GROUPS).flatMap(group=>{let rows=commands.filter(command=>command.group===group);return rows.length?[helpSection(group,helpRows(rows.map(command=>({syntax:helpLiterals(command.names),description:`${command.description}${command.default?" (default)":""}`})),columns,theme),theme)]:[]});return[`${helpUsage(theme)} ${theme.reference("vercel")} [options] [command | path]`,...sections,buildCommandOptionLines([...globalCommandOptions,{name:"changelog",shorthand:null,type:Boolean,deprecated:!1,description:"Show the 5 latest Vercel product updates"}],{columns,theme},"Global Options"),buildCommandExampleLines({examples:ROOT_HELP_EXAMPLES},columns,theme)].filter(Boolean).join(`
|
|
8
8
|
|
|
9
9
|
`)+`
|
|
10
10
|
`}export{BETA_COMMANDS,getRootHelpCommands,ROOT_HELP_EXAMPLES,help};
|
|
@@ -4,6 +4,6 @@ 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{writeProjectSettings}from"./chunk-
|
|
7
|
+
import{writeProjectSettings}from"./chunk-FNOCIKAU.js";import{envPullCommandLogic}from"./chunk-KUNFE2M6.js";import{parseTarget,warnDeprecatedProdFlag}from"./chunk-WRC5CTUD.js";import{ensureLink}from"./chunk-NDWGYZRT.js";import{stamp_default}from"./chunk-A2RZZQEP.js";import{pullCommand}from"./chunk-37DIJCWK.js";import{printError}from"./chunk-D3GYYGSS.js";import{help}from"./chunk-33U57CNE.js";import{TelemetryClient}from"./chunk-SBBD2Q5A.js";import{VERCEL_DIR,VERCEL_DIR_PROJECT,humanizePath}from"./chunk-QZEZCUUZ.js";import{parseArguments}from"./chunk-KIMIK4SG.js";import{emoji,output_manager_default,prependEmoji}from"./chunk-ZRJKGAUT.js";import{getFlagsSpecification}from"./chunk-YPPDRKVC.js";import{require_source}from"./chunk-NB2WLB3J.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);import{join}from"node:path";var PullTelemetryClient=class extends TelemetryClient{trackCliArgumentProjectPath(value){value&&this.trackCliArgument({arg:"projectPath",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedTargetName(environment)})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliFlagProd(isProduction){isProduction&&this.trackCliFlag("prod")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};async function pullAllEnvFiles(environment,client,link,flags,cwd){let environmentFile=`.env.${environment}.local`;return await envPullCommandLogic(client,join(".vercel",environmentFile),!!flags["--yes"],environment,link,flags["--git-branch"],cwd,"vercel-cli:pull"),0}async function main(client){let parsedArgs=null,flagsSpecification=getFlagsSpecification(pullCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let telemetryClient=new PullTelemetryClient({opts:{store:client.telemetryEventStore}});if(parsedArgs.flags["--help"])return telemetryClient.trackCliFlagHelp("pull"),output_manager_default.print(help(pullCommand,{stream:client.stderr,columns:client.stderr.columns})),0;let cwd=parsedArgs.args[1]||client.cwd,autoConfirm=!!parsedArgs.flags["--yes"],isProduction=!!parsedArgs.flags["--prod"];warnDeprecatedProdFlag(client,parsedArgs.flags);let environment=parseTarget({flagName:"environment",flags:parsedArgs.flags})||"development";return telemetryClient.trackCliArgumentProjectPath(parsedArgs.args[1]),telemetryClient.trackCliFlagYes(autoConfirm),telemetryClient.trackCliFlagProd(isProduction),telemetryClient.trackCliOptionGitBranch(parsedArgs.flags["--git-branch"]),telemetryClient.trackCliOptionEnvironment(parsedArgs.flags["--environment"]),telemetryClient.trackCliOptionProject(parsedArgs.flags["--project"]),await pullCommandLogic(client,cwd,autoConfirm,environment,parsedArgs.flags,parsedArgs.flags["--project"])}async function pullCommandLogic(client,cwd,autoConfirm,environment,flags,projectNameOrId){let link=await ensureLink("pull",client,cwd,{autoConfirm,pullEnv:!1,projectName:projectNameOrId,failIfNotFound:!!projectNameOrId,skipOwnerLookup:!0});if(typeof link=="number")return link;let{project,org,repoRoot}=link,currentDirectory;repoRoot?currentDirectory=join(repoRoot,project.rootDirectory||""):currentDirectory=cwd,client.config.currentTeam=org.type==="team"?org.id:void 0;let pullResultCode=await pullAllEnvFiles(environment,client,link,flags,currentDirectory);if(pullResultCode!==0)return pullResultCode;output_manager_default.print(`
|
|
8
8
|
`),output_manager_default.log("Downloading project settings"),await writeProjectSettings(currentDirectory,project,org,typeof repoRoot=="string");let settingsStamp=stamp_default();return output_manager_default.print(`${prependEmoji(`Downloaded project settings to ${import_chalk.default.bold(humanizePath(join(currentDirectory,VERCEL_DIR,VERCEL_DIR_PROJECT)))} ${import_chalk.default.gray(settingsStamp())}`,emoji("success"))}
|
|
9
9
|
`),0}export{main,pullCommandLogic};
|
|
@@ -4,4 +4,4 @@ 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{warnDeprecatedInput}from"./chunk-
|
|
7
|
+
import{warnDeprecatedInput}from"./chunk-JRBPVMQO.js";function applyDeprecatedGitBranchFlag(client,flags,oldName,typedName=oldName){let value=flags[oldName];if(value!==void 0){if(flags["--git-branch"]!==void 0)return`Can't use ${typedName} with --git-branch. Use --git-branch.`;warnDeprecatedInput(client,typedName,"--git-branch"),flags["--git-branch"]=value,delete flags[oldName]}}export{applyDeprecatedGitBranchFlag};
|
|
@@ -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{getOrCreateDeploymentProtectionToken}from"./chunk-J4OVLASZ.js";import{getProtectionForProductionDomain,readEnabledProtection}from"./chunk-V6NMCQUQ.js";import{ensureLink}from"./chunk-VM3R6MAM.js";import{toHost}from"./chunk-VAWZZK3Y.js";import{getTeams}from"./chunk-P6ZTEDX2.js";import{curlCommand}from"./chunk-FXF3NEJM.js";import{printError}from"./chunk-LCMNJNSQ.js";import{help}from"./chunk-SLDWAIO3.js";import{detectExplicitScope,getScope,introspectToken,isAppPrincipalEnabled,resolveAppFromToken}from"./chunk-IFXMG2WQ.js";import{TelemetryClient}from"./chunk-4BIGNS67.js";import{getLinkedProject,getUser}from"./chunk-RHFPMM4R.js";import{getGlobalPathConfig}from"./chunk-55H6G46X.js";import{parseArguments}from"./chunk-F22QLVTX.js";import{InvalidToken,isAPIError}from"./chunk-YCJHUYBJ.js";import{cmd,getCommandName}from"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-DWOJP4ST.js";import{require_dist}from"./chunk-RM3ZDRYE.js";import{getFlagsSpecification}from"./chunk-A2UZ2O7H.js";import{require_source}from"./chunk-NB2WLB3J.js";import{__toESM}from"./chunk-BZENIQ7N.js";import{spawn as spawn2}from"child_process";var SECRET_HEADER=/^((?:x-vercel-protection-bypass|cookie):\s*).+$/i,redactSecretHeader=arg=>arg.replace(SECRET_HEADER,"$1[REDACTED]"),requoteArgs=arg=>arg.includes(" ")?arg.includes('"')?`'${arg}'`:`"${arg}"`:arg;var CurlTelemetryClient=class extends TelemetryClient{trackCliArgumentPath(path){if(path){let value=path.startsWith("/")?"slash":"no-slash";this.trackCliArgument({arg:"path",value})}}trackCliOptionDeployment(deploymentId){if(deploymentId){let value=deploymentId.startsWith("http://")||deploymentId.startsWith("https://")?"url":deploymentId.startsWith("dpl_")?"dpl_":"no-prefix";this.trackCliOption({option:"deployment",value})}}trackCliOptionProtectionBypass(secret){secret&&this.trackCliOption({option:"protection-bypass",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliFlagTrace(trace2){trace2&&this.trackCliFlag("trace")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}trackCliFlagYesOnProduction(value){value&&this.trackCliFlag("yes-on-production")}};var import_chalk=__toESM(require_source(),1),import_error_utils=__toESM(require_dist(),1);async function getDeploymentAccounts(client){if(detectExplicitScope(client))return client.config.currentTeam?[client.config.currentTeam]:[];if(isAppPrincipalEnabled())try{await getUser(client)}catch(err){if(!(err instanceof InvalidToken))throw err;let token=await introspectToken(client).catch(()=>null);if(!token||!resolveAppFromToken(token))throw err;return token.team?[token.team.id]:[]}let currentTeam=client.config.currentTeam;try{return(await getTeams(client)).filter(team=>!team.limited).map(team=>team.id).sort((a,b)=>+(b===currentTeam)-+(a===currentTeam))}catch(err){if(err instanceof InvalidToken&¤tTeam)return[currentTeam];throw err}}async function resolveDeployment(client,selector,accountId){let hostOrId=selector.includes(".")?toHost(selector):selector,endpoint=`/v13/deployments/${encodeURIComponent(hostOrId)}`,lookup=async accountId2=>{try{let deployment2=await client.fetch(endpoint,{useCurrentTeam:!1,...accountId2?{accountId:accountId2}:{},bailOn429:!0});return deployment2?{...deployment2,ownerId:deployment2.ownerId??deployment2.team?.id}:null}catch(err){if(!isAPIError(err)||err.status!==403&&err.status!==404)throw err;return output_manager_default.debug(`Deployment lookup failed for ${hostOrId}: ${err}`),null}};if(accountId||detectExplicitScope(client))return lookup(accountId??client.config.currentTeam);let deployment=await lookup();if(deployment?.projectId&&deployment.ownerId)return deployment;let accounts;try{accounts=await getDeploymentAccounts(client)}catch(err){if(deployment?.url)return deployment;throw err}for(let account of accounts){let scoped=await lookup(account);if(scoped?.projectId&&scoped.ownerId)return scoped;deployment??=scoped}return deployment}async function getDeploymentUrlById(client,deploymentIdOrUrl,accountId){try{if(deploymentIdOrUrl.startsWith("http://")||deploymentIdOrUrl.startsWith("https://"))try{return new URL(deploymentIdOrUrl).origin}catch{return output_manager_default.debug(`Invalid deployment URL provided: ${deploymentIdOrUrl}`),null}if(deploymentIdOrUrl.includes("vercel.app"))return`https://${deploymentIdOrUrl}`;let fullDeploymentId=deploymentIdOrUrl;fullDeploymentId.startsWith("dpl_")||(fullDeploymentId=`dpl_${deploymentIdOrUrl}`);let deployment=await resolveDeployment(client,fullDeploymentId,accountId);return!deployment||!deployment.url?null:`https://${deployment.url}`}catch(error){return output_manager_default.debug(`Failed to fetch deployment by ID: ${error}`),null}}function looksLikeHostname(path){let firstSegment=path.split("/")[0];return firstSegment.includes(".")&&!firstSegment.startsWith(".")}function orgFromOwner(id,slug=id){return{type:id.startsWith("team_")?"team":"user",id,slug}}var VC_STRING_FLAGS=new Set(["--deployment","--protection-bypass"]),VC_IGNORED_STRING_FLAGS=new Set(["--scope","--team"]),VC_IGNORED_BOOLEAN_FLAGS=new Set(["--debug"]),VC_BOOLEAN_FLAGS=new Set(["--yes","--help","--trace","--json"]);function flagName(arg){let eqIdx=arg.indexOf("=");return eqIdx===-1?arg:arg.slice(0,eqIdx)}function flagValue(args,index){let arg=args[index],eqIdx=arg.indexOf("=");if(eqIdx!==-1)return arg.slice(eqIdx+1);let next=args[index+1];return next&&!next.startsWith("-")?next:void 0}function getCurlLikeArgs(rawArgs,commandName){if(rawArgs[0]===commandName)return rawArgs.slice(1);let commandIndex=0;for(;commandIndex<rawArgs.length;){let arg=rawArgs[commandIndex];if(VC_IGNORED_BOOLEAN_FLAGS.has(flagName(arg))){commandIndex++;continue}if(!VC_IGNORED_STRING_FLAGS.has(flagName(arg)))break;commandIndex++,!arg.includes("=")&&commandIndex<rawArgs.length&&commandIndex++}return rawArgs[commandIndex]===commandName?rawArgs.slice(commandIndex+1):[...rawArgs]}function parseCurlLikeArgs(rawArgs,commandName){let result={target:void 0,deployment:void 0,protectionBypass:void 0,yes:!1,help:!1,trace:!1,json:!1,toolFlags:[]},args=getCurlLikeArgs(rawArgs,commandName),separatorIndex=args.indexOf("--"),beforeSeparator=separatorIndex===-1?args:args.slice(0,separatorIndex),afterSeparator=separatorIndex===-1?[]:args.slice(separatorIndex+1);for(let i=0;i<beforeSeparator.length;i++){let arg=beforeSeparator[i],name=flagName(arg);if(VC_STRING_FLAGS.has(name)){let value=flagValue(beforeSeparator,i);!arg.includes("=")&&value!==void 0&&i++,name==="--deployment"?result.deployment=value:result.protectionBypass=value;continue}if(!VC_IGNORED_BOOLEAN_FLAGS.has(name)){if(VC_IGNORED_STRING_FLAGS.has(name)){let value=flagValue(beforeSeparator,i);!arg.includes("=")&&value!==void 0&&i++;continue}if(VC_BOOLEAN_FLAGS.has(name)){name==="--yes"?result.yes=!0:name==="--trace"?result.trace=!0:name==="--json"?result.json=!0:result.help=!0;continue}if(!result.target&&name==="--url"){let value=flagValue(beforeSeparator,i);!arg.includes("=")&&value!==void 0&&i++,result.target=value;continue}!result.target&&!arg.startsWith("-")?result.target=arg:result.toolFlags.push(arg)}}return result.toolFlags.push(...afterSeparator),result}function setupCurlLikeCommand(client,command,telemetryClient,options={}){let{print}=output_manager_default;if(options.allowFullUrl){let parsed=parseCurlLikeArgs(options.args??client.argv.slice(2),command.name);if(parsed.help)return print(help(command,{stream:client.stderr,columns:client.stderr.columns})),0;let path2=parsed.target;if(telemetryClient.trackCliArgumentPath(path2),parsed.deployment&&telemetryClient.trackCliOptionDeployment(parsed.deployment),parsed.protectionBypass&&telemetryClient.trackCliOptionProtectionBypass(parsed.protectionBypass),!path2)return output_manager_default.error(`${getCommandName(`${command.name} <url|path>`)} requires a URL or API path (e.g., 'https://example.vercel.app/api/hello' or '/api/hello')`),print(help(command,{stream:client.stderr,columns:client.stderr.columns})),2;let isFullUrl2=path2.startsWith("http://")||path2.startsWith("https://");return!isFullUrl2&&looksLikeHostname(path2)&&(isFullUrl2=!0),output_manager_default.debug(`${command.name} options (${parsed.toolFlags.length} args): ${JSON.stringify(parsed.toolFlags)}`),{path:isFullUrl2&&!path2.startsWith("http")?`https://${path2}`:path2,isFullUrl:isFullUrl2,deploymentFlag:parsed.deployment,protectionBypassFlag:parsed.protectionBypass,toolFlags:parsed.toolFlags,yes:parsed.yes,trace:parsed.trace,json:parsed.json}}let parsedArgs=null,flagsSpecification=getFlagsSpecification(command.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return printError(err),2}let{flags}=parsedArgs;if(parsedArgs.flags["--help"])return print(help(command,{stream:client.stderr,columns:client.stderr.columns})),0;parsedArgs.args[0]===command.name&&parsedArgs.args.shift();let separatorIndex=process.argv.indexOf("--"),path=parsedArgs.args[0];telemetryClient.trackCliArgumentPath(path);let deploymentFlag=flags["--deployment"];deploymentFlag&&telemetryClient.trackCliOptionDeployment(deploymentFlag);let protectionBypassFlag=flags["--protection-bypass"];if(protectionBypassFlag&&telemetryClient.trackCliOptionProtectionBypass(protectionBypassFlag),!path||path==="--"||path.startsWith("-"))return options.allowFullUrl?output_manager_default.error(`${getCommandName(`${command.name} <url|path>`)} requires a URL or API path (e.g., 'https://example.vercel.app/api/hello' or '/api/hello')`):output_manager_default.error(`${getCommandName(`${command.name} <path>`)} requires an API path (e.g., '/' or '/api/hello' or 'api/hello')`),print(help(command,{stream:client.stderr,columns:client.stderr.columns})),1;let isFullUrl=path.startsWith("http://")||path.startsWith("https://");if(!isFullUrl&&looksLikeHostname(path)&&(isFullUrl=!0),isFullUrl&&!options.allowFullUrl)return output_manager_default.error("The <path> argument must be a relative API path (e.g., '/' or '/api/hello'), not a full URL."),output_manager_default.print("To target a specific deployment within the currently linked project, use the --deployment <id|url> option."),print(help(command,{stream:client.stderr,columns:client.stderr.columns})),1;let toolFlags=separatorIndex!==-1?process.argv.slice(separatorIndex+1):[];return output_manager_default.debug(`${command.name} options (${toolFlags.length} args): ${JSON.stringify(toolFlags)}`),{path:isFullUrl&&!path.startsWith("http")?`https://${path}`:path,isFullUrl,deploymentFlag,protectionBypassFlag,toolFlags,yes:!!flags["--yes"],trace:!!flags["--trace"],json:!!flags["--json"]}}async function resolveProjectFromUrl(client,url){let host=toHost(url);try{let deployment=await resolveDeployment(client,host);if(deployment){let link=await linkFromDeployment(client,deployment);if(link)return link}}catch(err){if(output_manager_default.debug(`Deployment lookup failed for ${host}: ${err}`),isAPIError(err)&&err.status===429)return null}try{let aliasUrl=`/now/aliases/${encodeURIComponent(host)}`;try{let alias=await client.fetch(aliasUrl,{useCurrentTeam:!1,...detectExplicitScope(client)?{accountId:client.config.currentTeam}:{}});if(alias.projectId&&alias.ownerId)return{status:"linked",project:await client.fetch(`/v9/projects/${encodeURIComponent(alias.projectId)}`,{accountId:alias.ownerId}),org:orgFromOwner(alias.ownerId)}}catch(err){output_manager_default.debug(`User alias lookup failed for ${host}: ${err}`)}for(let accountId of await getDeploymentAccounts(client))try{let alias=await client.fetch(aliasUrl,{accountId}),projectId=alias.projectId,ownerId=alias.ownerId||accountId;if(projectId)return{status:"linked",project:await client.fetch(`/v9/projects/${encodeURIComponent(projectId)}`,{accountId:ownerId}),org:orgFromOwner(ownerId)}}catch(err){output_manager_default.debug(`Alias lookup failed for ${host} in ${accountId}: ${err}`)}}catch(err){output_manager_default.debug(`Team lookup failed for ${host}: ${err}`)}return null}async function getFullUrlAndToken(client,fullUrl,protectionBypassFlag){if(protectionBypassFlag)return{fullUrl,deploymentProtectionToken:protectionBypassFlag,link:null};if(process.env.VERCEL_AUTOMATION_BYPASS_SECRET)return output_manager_default.debug("Using protection bypass secret from environment variable"),{fullUrl,deploymentProtectionToken:process.env.VERCEL_AUTOMATION_BYPASS_SECRET,link:null};let link=await resolveProjectFromUrl(client,fullUrl),deploymentProtectionToken=null;if(link)try{deploymentProtectionToken=await getOrCreateDeploymentProtectionToken(client,link)}catch(err){output_manager_default.debug(`Failed to get deployment protection bypass token: ${err}`)}return{fullUrl,deploymentProtectionToken,link}}async function linkFromDeployment(client,deployment){return!deployment.projectId||!deployment.ownerId?null:{status:"linked",project:await client.fetch(`/v9/projects/${encodeURIComponent(deployment.projectId)}`,{accountId:deployment.ownerId}),org:orgFromOwner(deployment.ownerId)}}async function resolveTargetProject(client,deployment,deploymentFlag){try{let link=await linkFromDeployment(client,deployment);return link||output_manager_default.warn(`Deployment "${deploymentFlag}" is missing project metadata; proceeding without an automatic protection bypass token.`),link}catch(err){return output_manager_default.debug(`Failed to resolve deployment project: ${err}`),output_manager_default.warn(`Failed to load project for deployment "${deploymentFlag}"; proceeding without an automatic protection bypass token.`),null}}async function tryGetDeployment(client,selector){try{return await resolveDeployment(client,selector)}catch(err){return output_manager_default.debug(`Failed to resolve deployment: ${err}`),null}}async function tryLinkFromSelector(client,selector){try{let deployment=await resolveDeployment(client,selector);return deployment?await linkFromDeployment(client,deployment):null}catch(err){return output_manager_default.debug(`Failed to resolve trace project context: ${err}`),null}}async function getLinkedProjectOrNull(client){try{let linked=await getLinkedProject(client,{cwd:client.cwd});return linked.status==="linked"?linked:null}catch(err){return output_manager_default.debug(`Failed to load linked project: ${err}`),null}}function hasAutomationBypassToken(project){return Object.values(project.protectionBypass??{}).some(token=>token.scope==="automation-bypass")}async function getDeploymentUrlAndToken(client,commandName,path,options){let{deploymentFlag,protectionBypassFlag,autoConfirm,resolveProjectForTrace}=options,suppliedProtectionBypass=deploymentFlag?protectionBypassFlag??(process.env.VERCEL_AUTOMATION_BYPASS_SECRET||void 0):protectionBypassFlag,link=null,createProtectionBypassIfMissing=!deploymentFlag,baseUrl;if(deploymentFlag){let requestedBaseUrl=deploymentFlag.startsWith("http://")||deploymentFlag.startsWith("https://")||deploymentFlag.includes("vercel.app")?await getDeploymentUrlById(client,deploymentFlag):null,deploymentSelector=deploymentFlag.includes(".")||deploymentFlag.startsWith("dpl_")?deploymentFlag:`dpl_${deploymentFlag}`;if(suppliedProtectionBypass!==void 0){if(baseUrl=requestedBaseUrl??await getDeploymentUrlById(client,deploymentFlag)??"",!baseUrl)return output_manager_default.error(`No deployment found for ID "${deploymentFlag}"`),1;resolveProjectForTrace&&(link=await tryLinkFromSelector(client,deploymentSelector)??await getLinkedProjectOrNull(client))}else{let deployment=await tryGetDeployment(client,deploymentSelector);if(baseUrl=requestedBaseUrl??(deployment?.url?`https://${deployment.url}`:""),!baseUrl)return output_manager_default.error(`No deployment found for ID "${deploymentFlag}"`),1;deployment?(link=await resolveTargetProject(client,deployment,deploymentFlag),link&&!hasAutomationBypassToken(link.project)&&(createProtectionBypassIfMissing=(await getLinkedProjectOrNull(client))?.project.id===link.project.id)):output_manager_default.warn(`Could not resolve project information for deployment "${deploymentFlag}"; proceeding without an automatic protection bypass token.`)}}else{try{await getScope(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return output_manager_default.error(err.message),1;throw err}let ensuredLink;try{ensuredLink=await ensureLink(commandName,client,client.cwd,{autoConfirm})}catch(err){if((0,import_error_utils.isErrnoException)(err)&&err.code==="NOT_AUTHORIZED")return output_manager_default.error(err.message),1;throw err}if(typeof ensuredLink=="number")return ensuredLink;link=ensuredLink;let{project}=ensuredLink;if(!project.targets&&!project.latestDeployments){let linkedProject=await getLinkedProject(client,{cwd:client.cwd});if(linkedProject.status!=="linked")return output_manager_default.error("This command requires a linked project. Please run:"),output_manager_default.print(" vercel link"),1;if(!linkedProject.project||!linkedProject.org)return output_manager_default.error("Failed to get project information"),1;project=linkedProject.project}let preferredAlias=project.targets?.production?.alias?.[0],backupAlias=project.latestDeployments?.[0]?.url,target=preferredAlias||backupAlias;if(!target)throw new Error("No deployment URL found for the project");baseUrl=`https://${target}`}let fullUrl=`${baseUrl}${path.startsWith("/")?path:`/${path}`}`;output_manager_default.debug(`${import_chalk.default.cyan("Target URL:")} ${import_chalk.default.bold(fullUrl)}`);let deploymentProtectionToken=suppliedProtectionBypass??null;if(suppliedProtectionBypass===void 0&&link?.project.id)try{deploymentProtectionToken=await getOrCreateDeploymentProtectionToken(client,link,{createIfMissing:createProtectionBypassIfMissing})}catch(err){return output_manager_default.error(`Failed to get deployment protection bypass token: ${err instanceof Error?err.message:String(err)}`),1}return{fullUrl,deploymentProtectionToken,link}}function traceCurl(root){let span=root?.child("vc.cli.curl"),finished=!1;return code=>{finished||(finished=!0,code!==0&&span?.setAttributes({error:"true"}),span?.stop())}}var import_error_utils2=__toESM(require_dist(),1);import{spawn}from"child_process";import{tmpdir}from"os";import{join as join2}from"path";import{mkdtemp,readFile as readFile2,rm}from"fs/promises";async function confirmProduction(client,{deploymentTarget,yes,isTTY}){return deploymentTarget!=="production"||yes?"proceed":isTTY?await client.input.confirm("You are about to capture a trace against a production deployment. Continue?",!1)?"proceed":"declined":(output_manager_default.error("Use --yes to capture traces on production from non-interactive contexts."),"non-tty-no-yes")}import{createHash}from"crypto";import{chmod,mkdir,readFile,unlink,writeFile}from"fs/promises";import{dirname,join}from"path";var FALLBACK_TTL_MS=5*60*1e3,EXPIRY_BUFFER_MS=30*1e3,CACHE_SCHEMA_VERSION=1;function resolveCacheDir(override){return override||join(getGlobalPathConfig(),"cache","traces")}function cacheFilename(teamId,host){let key=`${teamId??""}:${host}`;return`${createHash("sha256").update(key).digest("hex")}.json`}function cachePath(cacheDir,teamId,host){return join(cacheDir,cacheFilename(teamId,host))}async function readCache(path){let raw;try{raw=await readFile(path,"utf8")}catch{return null}try{let parsed=JSON.parse(raw);return!parsed||typeof parsed.token!="string"||typeof parsed.expiresAt!="number"||parsed.schemaVersion!==CACHE_SCHEMA_VERSION?null:parsed}catch{return output_manager_default.debug(`Trace cookie cache file is corrupt at ${path}; re-issuing.`),null}}async function writeCache(path,entry){await mkdir(dirname(path),{recursive:!0}),await writeFile(path,JSON.stringify(entry),{mode:384}),await chmod(path,384)}async function issueToken(client,{teamId,projectId,hostname}){let body=JSON.stringify({projectId,hostname}),response=await client.fetch("/v1/projects/traces/session",{method:"POST",body,headers:{"Content-Type":"application/json"},accountId:teamId});if(!response?.token)throw new Error("Trace session response is missing a token");let expiresAt=typeof response.expiresAt=="number"?response.expiresAt:Date.now()+FALLBACK_TTL_MS;return{token:response.token,expiresAt}}async function getTraceSessionToken({client,teamId,projectId,host,evictedToken,cacheDir}){let dir=resolveCacheDir(cacheDir),hostname=toHost(host),path=cachePath(dir,teamId,hostname),cached=await readCache(path);if(cached&&evictedToken&&cached.token===evictedToken)await unlink(path).catch(()=>{});else if(cached&&Date.now()<cached.expiresAt-EXPIRY_BUFFER_MS)return{token:cached.token,expiresAt:cached.expiresAt,fromCache:!0};let issued=await issueToken(client,{teamId,projectId,hostname});try{await writeCache(path,{token:issued.token,expiresAt:issued.expiresAt,schemaVersion:CACHE_SCHEMA_VERSION})}catch(err){output_manager_default.debug(`Failed to write trace cookie cache: ${err}`)}return{token:issued.token,expiresAt:issued.expiresAt,fromCache:!1}}var TRACE_COOKIE_NAME="_vercel_tracing",SESSION_COOKIE_NAME="_vercel_session";async function lookupDeployment(client,fullUrl,accountId){let deployment=await resolveDeployment(client,fullUrl,accountId);if(!deployment)throw new Error("Deployment not found");return deployment}function resolveTeamId(link,deployment){if(link?.org.type==="team")return link.org.id;if(deployment.ownerId?.startsWith("team_"))return deployment.ownerId}function extractVercelId(headerDump){let lines=headerDump.split(/\r?\n/),lastValue;for(let line of lines){let idx=line.indexOf(":");if(idx===-1)continue;line.slice(0,idx).trim().toLowerCase()==="x-vercel-id"&&(lastValue=line.slice(idx+1).trim())}if(!lastValue)return;let sepIdx=lastValue.lastIndexOf("::");return sepIdx===-1?lastValue:lastValue.slice(sepIdx+2)}function extractFinalStatus(headerDump){let lines=headerDump.split(/\r?\n/),lastStatus;for(let line of lines){let match=line.match(/^HTTP\/[\d.]+\s+(\d{3})/);match&&(lastStatus=Number(match[1]))}return lastStatus}async function runCurlAndCaptureHeaders(client,curlFlags,json){let tmpDir=await mkdtemp(join2(tmpdir(),"vc-curl-trace-")),headerFile=join2(tmpDir,"headers"),flags=["--dump-header",headerFile,...curlFlags];try{let{exitCode,capturedBody}=await new Promise(resolve=>{let finishTrace=traceCurl(client.telemetryEventStore.enabled?client.rootSpan:void 0),child=spawn("curl",flags,{stdio:json?["inherit","pipe","inherit"]:"inherit",shell:!1}),buf="";json&&child.stdout&&(child.stdout.setEncoding("utf8"),child.stdout.on("data",chunk=>{buf+=chunk})),child.on("error",err=>{finishTrace(1),err.code==="ENOENT"?output_manager_default.error("curl command not found. Please install curl."):output_manager_default.error(`Failed to execute curl: ${err.message}`),resolve({exitCode:1,capturedBody:buf})}),child.on("close",code=>{finishTrace(code),resolve({exitCode:code??1,capturedBody:buf})})}),headerDump="";try{headerDump=await readFile2(headerFile,"utf8")}catch(err){output_manager_default.debug(`Failed to read curl header dump: ${err}`)}return{exitCode,headerDump,capturedBody}}finally{await rm(tmpDir,{recursive:!0,force:!0}).catch(()=>{})}}async function trace(client,{fullUrl,link,curlFlags,json,yes,telemetry}){telemetry.trackCliFlagTrace(!0),json&&telemetry.trackCliFlagJson(!0);let accountId=link?.org.id,deployment;try{deployment=await lookupDeployment(client,fullUrl,accountId)}catch(err){return output_manager_default.error(`Failed to look up deployment for tracing: ${err instanceof Error?err.message:String(err)}`),1}let projectId=link?.project.id??deployment.projectId;if(!projectId)return output_manager_default.error("Could not resolve project for trace session. Run `vercel link` and retry."),1;let teamId=resolveTeamId(link,deployment),userId;try{userId=client.authConfig.userId??(await getUser(client)).id}catch(err){return output_manager_default.error(`Failed to resolve user for trace session: ${(0,import_error_utils2.errorToString)(err)}`),1}let deploymentTarget=deployment.target==="production"?"production":"preview",confirmation=await confirmProduction(client,{deploymentTarget,yes,isTTY:!!client.stdin.isTTY});if(confirmation==="non-tty-no-yes")return 1;if(confirmation==="declined")return output_manager_default.log("Trace cancelled."),0;deploymentTarget==="production"&&yes&&telemetry.trackCliFlagYesOnProduction(!0);let session;try{session=await getTraceSessionToken({client,teamId,projectId,host:fullUrl})}catch(err){return output_manager_default.error(`Failed to acquire trace session: ${err instanceof Error?err.message:String(err)}`),1}let{exitCode,headerDump,capturedBody}=await runCurlWithCookie(client,session.token,userId,curlFlags,json);if(session.fromCache&&extractFinalStatus(headerDump)===401&&exitCode===0){output_manager_default.debug("Trace cookie returned 401; evicting cache and retrying.");let refreshed;try{refreshed=await getTraceSessionToken({client,teamId,projectId,host:fullUrl,evictedToken:session.token})}catch(err){return output_manager_default.error(`Failed to refresh trace session after 401: ${err instanceof Error?err.message:String(err)}`),1}({exitCode,headerDump,capturedBody}=await runCurlWithCookie(client,refreshed.token,userId,curlFlags,json))}let requestId=extractVercelId(headerDump);return json?(client.stdout.write(`${JSON.stringify({response:capturedBody,requestId:requestId??null},null,2)}
|
|
7
|
+
import{getOrCreateDeploymentProtectionToken}from"./chunk-LOEU4R4Z.js";import{getProtectionForProductionDomain,readEnabledProtection}from"./chunk-AEOG4E5G.js";import{ensureLink}from"./chunk-NDWGYZRT.js";import{toHost}from"./chunk-QIPUFI6P.js";import{getTeams}from"./chunk-YEPB52XE.js";import{curlCommand}from"./chunk-2PYFJXKS.js";import{printError}from"./chunk-D3GYYGSS.js";import{help}from"./chunk-33U57CNE.js";import{detectExplicitScope,getScope,introspectToken,isAppPrincipalEnabled,resolveAppFromToken}from"./chunk-IU6PHFPQ.js";import{TelemetryClient}from"./chunk-SBBD2Q5A.js";import{getLinkedProject,getUser}from"./chunk-QZEZCUUZ.js";import{getGlobalPathConfig}from"./chunk-MCP63EVQ.js";import{parseArguments}from"./chunk-KIMIK4SG.js";import{InvalidToken,isAPIError}from"./chunk-FXEMEIST.js";import{cmd,getCommandName}from"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-ZRJKGAUT.js";import{require_dist}from"./chunk-RM3ZDRYE.js";import{getFlagsSpecification}from"./chunk-YPPDRKVC.js";import{require_source}from"./chunk-NB2WLB3J.js";import{__toESM}from"./chunk-BZENIQ7N.js";import{spawn as spawn2}from"child_process";var SECRET_HEADER=/^((?:x-vercel-protection-bypass|cookie):\s*).+$/i,redactSecretHeader=arg=>arg.replace(SECRET_HEADER,"$1[REDACTED]"),requoteArgs=arg=>arg.includes(" ")?arg.includes('"')?`'${arg}'`:`"${arg}"`:arg;var CurlTelemetryClient=class extends TelemetryClient{trackCliArgumentPath(path){if(path){let value=path.startsWith("/")?"slash":"no-slash";this.trackCliArgument({arg:"path",value})}}trackCliOptionDeployment(deploymentId){if(deploymentId){let value=deploymentId.startsWith("http://")||deploymentId.startsWith("https://")?"url":deploymentId.startsWith("dpl_")?"dpl_":"no-prefix";this.trackCliOption({option:"deployment",value})}}trackCliOptionProtectionBypass(secret){secret&&this.trackCliOption({option:"protection-bypass",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliFlagTrace(trace2){trace2&&this.trackCliFlag("trace")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}trackCliFlagYesOnProduction(value){value&&this.trackCliFlag("yes-on-production")}};var import_chalk=__toESM(require_source(),1),import_error_utils=__toESM(require_dist(),1);async function getDeploymentAccounts(client){if(detectExplicitScope(client))return client.config.currentTeam?[client.config.currentTeam]:[];if(isAppPrincipalEnabled())try{await getUser(client)}catch(err){if(!(err instanceof InvalidToken))throw err;let token=await introspectToken(client).catch(()=>null);if(!token||!resolveAppFromToken(token))throw err;return token.team?[token.team.id]:[]}let currentTeam=client.config.currentTeam;try{return(await getTeams(client)).filter(team=>!team.limited).map(team=>team.id).sort((a,b)=>+(b===currentTeam)-+(a===currentTeam))}catch(err){if(err instanceof InvalidToken&¤tTeam)return[currentTeam];throw err}}async function resolveDeployment(client,selector,accountId){let hostOrId=selector.includes(".")?toHost(selector):selector,endpoint=`/v13/deployments/${encodeURIComponent(hostOrId)}`,lookup=async accountId2=>{try{let deployment2=await client.fetch(endpoint,{useCurrentTeam:!1,...accountId2?{accountId:accountId2}:{},bailOn429:!0});return deployment2?{...deployment2,ownerId:deployment2.ownerId??deployment2.team?.id}:null}catch(err){if(!isAPIError(err)||err.status!==403&&err.status!==404)throw err;return output_manager_default.debug(`Deployment lookup failed for ${hostOrId}: ${err}`),null}};if(accountId||detectExplicitScope(client))return lookup(accountId??client.config.currentTeam);let deployment=await lookup();if(deployment?.projectId&&deployment.ownerId)return deployment;let accounts;try{accounts=await getDeploymentAccounts(client)}catch(err){if(deployment?.url)return deployment;throw err}for(let account of accounts){let scoped=await lookup(account);if(scoped?.projectId&&scoped.ownerId)return scoped;deployment??=scoped}return deployment}async function getDeploymentUrlById(client,deploymentIdOrUrl,accountId){try{if(deploymentIdOrUrl.startsWith("http://")||deploymentIdOrUrl.startsWith("https://"))try{return new URL(deploymentIdOrUrl).origin}catch{return output_manager_default.debug(`Invalid deployment URL provided: ${deploymentIdOrUrl}`),null}if(deploymentIdOrUrl.includes("vercel.app"))return`https://${deploymentIdOrUrl}`;let fullDeploymentId=deploymentIdOrUrl;fullDeploymentId.startsWith("dpl_")||(fullDeploymentId=`dpl_${deploymentIdOrUrl}`);let deployment=await resolveDeployment(client,fullDeploymentId,accountId);return!deployment||!deployment.url?null:`https://${deployment.url}`}catch(error){return output_manager_default.debug(`Failed to fetch deployment by ID: ${error}`),null}}function looksLikeHostname(path){let firstSegment=path.split("/")[0];return firstSegment.includes(".")&&!firstSegment.startsWith(".")}function orgFromOwner(id,slug=id){return{type:id.startsWith("team_")?"team":"user",id,slug}}var VC_STRING_FLAGS=new Set(["--deployment","--protection-bypass"]),VC_IGNORED_STRING_FLAGS=new Set(["--scope","--team"]),VC_IGNORED_BOOLEAN_FLAGS=new Set(["--debug"]),VC_BOOLEAN_FLAGS=new Set(["--yes","--help","--trace","--json"]);function flagName(arg){let eqIdx=arg.indexOf("=");return eqIdx===-1?arg:arg.slice(0,eqIdx)}function flagValue(args,index){let arg=args[index],eqIdx=arg.indexOf("=");if(eqIdx!==-1)return arg.slice(eqIdx+1);let next=args[index+1];return next&&!next.startsWith("-")?next:void 0}function getCurlLikeArgs(rawArgs,commandName){if(rawArgs[0]===commandName)return rawArgs.slice(1);let commandIndex=0;for(;commandIndex<rawArgs.length;){let arg=rawArgs[commandIndex];if(VC_IGNORED_BOOLEAN_FLAGS.has(flagName(arg))){commandIndex++;continue}if(!VC_IGNORED_STRING_FLAGS.has(flagName(arg)))break;commandIndex++,!arg.includes("=")&&commandIndex<rawArgs.length&&commandIndex++}return rawArgs[commandIndex]===commandName?rawArgs.slice(commandIndex+1):[...rawArgs]}function parseCurlLikeArgs(rawArgs,commandName){let result={target:void 0,deployment:void 0,protectionBypass:void 0,yes:!1,help:!1,trace:!1,json:!1,toolFlags:[]},args=getCurlLikeArgs(rawArgs,commandName),separatorIndex=args.indexOf("--"),beforeSeparator=separatorIndex===-1?args:args.slice(0,separatorIndex),afterSeparator=separatorIndex===-1?[]:args.slice(separatorIndex+1);for(let i=0;i<beforeSeparator.length;i++){let arg=beforeSeparator[i],name=flagName(arg);if(VC_STRING_FLAGS.has(name)){let value=flagValue(beforeSeparator,i);!arg.includes("=")&&value!==void 0&&i++,name==="--deployment"?result.deployment=value:result.protectionBypass=value;continue}if(!VC_IGNORED_BOOLEAN_FLAGS.has(name)){if(VC_IGNORED_STRING_FLAGS.has(name)){let value=flagValue(beforeSeparator,i);!arg.includes("=")&&value!==void 0&&i++;continue}if(VC_BOOLEAN_FLAGS.has(name)){name==="--yes"?result.yes=!0:name==="--trace"?result.trace=!0:name==="--json"?result.json=!0:result.help=!0;continue}if(!result.target&&name==="--url"){let value=flagValue(beforeSeparator,i);!arg.includes("=")&&value!==void 0&&i++,result.target=value;continue}!result.target&&!arg.startsWith("-")?result.target=arg:result.toolFlags.push(arg)}}return result.toolFlags.push(...afterSeparator),result}function setupCurlLikeCommand(client,command,telemetryClient,options={}){let{print}=output_manager_default;if(options.allowFullUrl){let parsed=parseCurlLikeArgs(options.args??client.argv.slice(2),command.name);if(parsed.help)return print(help(command,{stream:client.stderr,columns:client.stderr.columns})),0;let path2=parsed.target;if(telemetryClient.trackCliArgumentPath(path2),parsed.deployment&&telemetryClient.trackCliOptionDeployment(parsed.deployment),parsed.protectionBypass&&telemetryClient.trackCliOptionProtectionBypass(parsed.protectionBypass),!path2)return output_manager_default.error(`${getCommandName(`${command.name} <url|path>`)} requires a URL or API path (e.g., 'https://example.vercel.app/api/hello' or '/api/hello')`),print(help(command,{stream:client.stderr,columns:client.stderr.columns})),2;let isFullUrl2=path2.startsWith("http://")||path2.startsWith("https://");return!isFullUrl2&&looksLikeHostname(path2)&&(isFullUrl2=!0),output_manager_default.debug(`${command.name} options (${parsed.toolFlags.length} args): ${JSON.stringify(parsed.toolFlags)}`),{path:isFullUrl2&&!path2.startsWith("http")?`https://${path2}`:path2,isFullUrl:isFullUrl2,deploymentFlag:parsed.deployment,protectionBypassFlag:parsed.protectionBypass,toolFlags:parsed.toolFlags,yes:parsed.yes,trace:parsed.trace,json:parsed.json}}let parsedArgs=null,flagsSpecification=getFlagsSpecification(command.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return printError(err),2}let{flags}=parsedArgs;if(parsedArgs.flags["--help"])return print(help(command,{stream:client.stderr,columns:client.stderr.columns})),0;parsedArgs.args[0]===command.name&&parsedArgs.args.shift();let separatorIndex=process.argv.indexOf("--"),path=parsedArgs.args[0];telemetryClient.trackCliArgumentPath(path);let deploymentFlag=flags["--deployment"];deploymentFlag&&telemetryClient.trackCliOptionDeployment(deploymentFlag);let protectionBypassFlag=flags["--protection-bypass"];if(protectionBypassFlag&&telemetryClient.trackCliOptionProtectionBypass(protectionBypassFlag),!path||path==="--"||path.startsWith("-"))return options.allowFullUrl?output_manager_default.error(`${getCommandName(`${command.name} <url|path>`)} requires a URL or API path (e.g., 'https://example.vercel.app/api/hello' or '/api/hello')`):output_manager_default.error(`${getCommandName(`${command.name} <path>`)} requires an API path (e.g., '/' or '/api/hello' or 'api/hello')`),print(help(command,{stream:client.stderr,columns:client.stderr.columns})),1;let isFullUrl=path.startsWith("http://")||path.startsWith("https://");if(!isFullUrl&&looksLikeHostname(path)&&(isFullUrl=!0),isFullUrl&&!options.allowFullUrl)return output_manager_default.error("The <path> argument must be a relative API path (e.g., '/' or '/api/hello'), not a full URL."),output_manager_default.print("To target a specific deployment within the currently linked project, use the --deployment <id|url> option."),print(help(command,{stream:client.stderr,columns:client.stderr.columns})),1;let toolFlags=separatorIndex!==-1?process.argv.slice(separatorIndex+1):[];return output_manager_default.debug(`${command.name} options (${toolFlags.length} args): ${JSON.stringify(toolFlags)}`),{path:isFullUrl&&!path.startsWith("http")?`https://${path}`:path,isFullUrl,deploymentFlag,protectionBypassFlag,toolFlags,yes:!!flags["--yes"],trace:!!flags["--trace"],json:!!flags["--json"]}}async function resolveProjectFromUrl(client,url){let host=toHost(url);try{let deployment=await resolveDeployment(client,host);if(deployment){let link=await linkFromDeployment(client,deployment);if(link)return link}}catch(err){if(output_manager_default.debug(`Deployment lookup failed for ${host}: ${err}`),isAPIError(err)&&err.status===429)return null}try{let aliasUrl=`/now/aliases/${encodeURIComponent(host)}`;try{let alias=await client.fetch(aliasUrl,{useCurrentTeam:!1,...detectExplicitScope(client)?{accountId:client.config.currentTeam}:{}});if(alias.projectId&&alias.ownerId)return{status:"linked",project:await client.fetch(`/v9/projects/${encodeURIComponent(alias.projectId)}`,{accountId:alias.ownerId}),org:orgFromOwner(alias.ownerId)}}catch(err){output_manager_default.debug(`User alias lookup failed for ${host}: ${err}`)}for(let accountId of await getDeploymentAccounts(client))try{let alias=await client.fetch(aliasUrl,{accountId}),projectId=alias.projectId,ownerId=alias.ownerId||accountId;if(projectId)return{status:"linked",project:await client.fetch(`/v9/projects/${encodeURIComponent(projectId)}`,{accountId:ownerId}),org:orgFromOwner(ownerId)}}catch(err){output_manager_default.debug(`Alias lookup failed for ${host} in ${accountId}: ${err}`)}}catch(err){output_manager_default.debug(`Team lookup failed for ${host}: ${err}`)}return null}async function getFullUrlAndToken(client,fullUrl,protectionBypassFlag){if(protectionBypassFlag)return{fullUrl,deploymentProtectionToken:protectionBypassFlag,link:null};if(process.env.VERCEL_AUTOMATION_BYPASS_SECRET)return output_manager_default.debug("Using protection bypass secret from environment variable"),{fullUrl,deploymentProtectionToken:process.env.VERCEL_AUTOMATION_BYPASS_SECRET,link:null};let link=await resolveProjectFromUrl(client,fullUrl),deploymentProtectionToken=null;if(link)try{deploymentProtectionToken=await getOrCreateDeploymentProtectionToken(client,link)}catch(err){output_manager_default.debug(`Failed to get deployment protection bypass token: ${err}`)}return{fullUrl,deploymentProtectionToken,link}}async function linkFromDeployment(client,deployment){return!deployment.projectId||!deployment.ownerId?null:{status:"linked",project:await client.fetch(`/v9/projects/${encodeURIComponent(deployment.projectId)}`,{accountId:deployment.ownerId}),org:orgFromOwner(deployment.ownerId)}}async function resolveTargetProject(client,deployment,deploymentFlag){try{let link=await linkFromDeployment(client,deployment);return link||output_manager_default.warn(`Deployment "${deploymentFlag}" is missing project metadata; proceeding without an automatic protection bypass token.`),link}catch(err){return output_manager_default.debug(`Failed to resolve deployment project: ${err}`),output_manager_default.warn(`Failed to load project for deployment "${deploymentFlag}"; proceeding without an automatic protection bypass token.`),null}}async function tryGetDeployment(client,selector){try{return await resolveDeployment(client,selector)}catch(err){return output_manager_default.debug(`Failed to resolve deployment: ${err}`),null}}async function tryLinkFromSelector(client,selector){try{let deployment=await resolveDeployment(client,selector);return deployment?await linkFromDeployment(client,deployment):null}catch(err){return output_manager_default.debug(`Failed to resolve trace project context: ${err}`),null}}async function getLinkedProjectOrNull(client){try{let linked=await getLinkedProject(client,{cwd:client.cwd});return linked.status==="linked"?linked:null}catch(err){return output_manager_default.debug(`Failed to load linked project: ${err}`),null}}function hasAutomationBypassToken(project){return Object.values(project.protectionBypass??{}).some(token=>token.scope==="automation-bypass")}async function getDeploymentUrlAndToken(client,commandName,path,options){let{deploymentFlag,protectionBypassFlag,autoConfirm,resolveProjectForTrace}=options,suppliedProtectionBypass=deploymentFlag?protectionBypassFlag??(process.env.VERCEL_AUTOMATION_BYPASS_SECRET||void 0):protectionBypassFlag,link=null,createProtectionBypassIfMissing=!deploymentFlag,baseUrl;if(deploymentFlag){let requestedBaseUrl=deploymentFlag.startsWith("http://")||deploymentFlag.startsWith("https://")||deploymentFlag.includes("vercel.app")?await getDeploymentUrlById(client,deploymentFlag):null,deploymentSelector=deploymentFlag.includes(".")||deploymentFlag.startsWith("dpl_")?deploymentFlag:`dpl_${deploymentFlag}`;if(suppliedProtectionBypass!==void 0){if(baseUrl=requestedBaseUrl??await getDeploymentUrlById(client,deploymentFlag)??"",!baseUrl)return output_manager_default.error(`No deployment found for ID "${deploymentFlag}"`),1;resolveProjectForTrace&&(link=await tryLinkFromSelector(client,deploymentSelector)??await getLinkedProjectOrNull(client))}else{let deployment=await tryGetDeployment(client,deploymentSelector);if(baseUrl=requestedBaseUrl??(deployment?.url?`https://${deployment.url}`:""),!baseUrl)return output_manager_default.error(`No deployment found for ID "${deploymentFlag}"`),1;deployment?(link=await resolveTargetProject(client,deployment,deploymentFlag),link&&!hasAutomationBypassToken(link.project)&&(createProtectionBypassIfMissing=(await getLinkedProjectOrNull(client))?.project.id===link.project.id)):output_manager_default.warn(`Could not resolve project information for deployment "${deploymentFlag}"; proceeding without an automatic protection bypass token.`)}}else{try{await getScope(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return output_manager_default.error(err.message),1;throw err}let ensuredLink;try{ensuredLink=await ensureLink(commandName,client,client.cwd,{autoConfirm})}catch(err){if((0,import_error_utils.isErrnoException)(err)&&err.code==="NOT_AUTHORIZED")return output_manager_default.error(err.message),1;throw err}if(typeof ensuredLink=="number")return ensuredLink;link=ensuredLink;let{project}=ensuredLink;if(!project.targets&&!project.latestDeployments){let linkedProject=await getLinkedProject(client,{cwd:client.cwd});if(linkedProject.status!=="linked")return output_manager_default.error("This command requires a linked project. Please run:"),output_manager_default.print(" vercel link"),1;if(!linkedProject.project||!linkedProject.org)return output_manager_default.error("Failed to get project information"),1;project=linkedProject.project}let preferredAlias=project.targets?.production?.alias?.[0],backupAlias=project.latestDeployments?.[0]?.url,target=preferredAlias||backupAlias;if(!target)throw new Error("No deployment URL found for the project");baseUrl=`https://${target}`}let fullUrl=`${baseUrl}${path.startsWith("/")?path:`/${path}`}`;output_manager_default.debug(`${import_chalk.default.cyan("Target URL:")} ${import_chalk.default.bold(fullUrl)}`);let deploymentProtectionToken=suppliedProtectionBypass??null;if(suppliedProtectionBypass===void 0&&link?.project.id)try{deploymentProtectionToken=await getOrCreateDeploymentProtectionToken(client,link,{createIfMissing:createProtectionBypassIfMissing})}catch(err){return output_manager_default.error(`Failed to get deployment protection bypass token: ${err instanceof Error?err.message:String(err)}`),1}return{fullUrl,deploymentProtectionToken,link}}function traceCurl(root){let span=root?.child("vc.cli.curl"),finished=!1;return code=>{finished||(finished=!0,code!==0&&span?.setAttributes({error:"true"}),span?.stop())}}var import_error_utils2=__toESM(require_dist(),1);import{spawn}from"child_process";import{tmpdir}from"os";import{join as join2}from"path";import{mkdtemp,readFile as readFile2,rm}from"fs/promises";async function confirmProduction(client,{deploymentTarget,yes,isTTY}){return deploymentTarget!=="production"||yes?"proceed":isTTY?await client.input.confirm("You are about to capture a trace against a production deployment. Continue?",!1)?"proceed":"declined":(output_manager_default.error("Use --yes to capture traces on production from non-interactive contexts."),"non-tty-no-yes")}import{createHash}from"crypto";import{chmod,mkdir,readFile,unlink,writeFile}from"fs/promises";import{dirname,join}from"path";var FALLBACK_TTL_MS=5*60*1e3,EXPIRY_BUFFER_MS=30*1e3,CACHE_SCHEMA_VERSION=1;function resolveCacheDir(override){return override||join(getGlobalPathConfig(),"cache","traces")}function cacheFilename(teamId,host){let key=`${teamId??""}:${host}`;return`${createHash("sha256").update(key).digest("hex")}.json`}function cachePath(cacheDir,teamId,host){return join(cacheDir,cacheFilename(teamId,host))}async function readCache(path){let raw;try{raw=await readFile(path,"utf8")}catch{return null}try{let parsed=JSON.parse(raw);return!parsed||typeof parsed.token!="string"||typeof parsed.expiresAt!="number"||parsed.schemaVersion!==CACHE_SCHEMA_VERSION?null:parsed}catch{return output_manager_default.debug(`Trace cookie cache file is corrupt at ${path}; re-issuing.`),null}}async function writeCache(path,entry){await mkdir(dirname(path),{recursive:!0}),await writeFile(path,JSON.stringify(entry),{mode:384}),await chmod(path,384)}async function issueToken(client,{teamId,projectId,hostname}){let body=JSON.stringify({projectId,hostname}),response=await client.fetch("/v1/projects/traces/session",{method:"POST",body,headers:{"Content-Type":"application/json"},accountId:teamId});if(!response?.token)throw new Error("Trace session response is missing a token");let expiresAt=typeof response.expiresAt=="number"?response.expiresAt:Date.now()+FALLBACK_TTL_MS;return{token:response.token,expiresAt}}async function getTraceSessionToken({client,teamId,projectId,host,evictedToken,cacheDir}){let dir=resolveCacheDir(cacheDir),hostname=toHost(host),path=cachePath(dir,teamId,hostname),cached=await readCache(path);if(cached&&evictedToken&&cached.token===evictedToken)await unlink(path).catch(()=>{});else if(cached&&Date.now()<cached.expiresAt-EXPIRY_BUFFER_MS)return{token:cached.token,expiresAt:cached.expiresAt,fromCache:!0};let issued=await issueToken(client,{teamId,projectId,hostname});try{await writeCache(path,{token:issued.token,expiresAt:issued.expiresAt,schemaVersion:CACHE_SCHEMA_VERSION})}catch(err){output_manager_default.debug(`Failed to write trace cookie cache: ${err}`)}return{token:issued.token,expiresAt:issued.expiresAt,fromCache:!1}}var TRACE_COOKIE_NAME="_vercel_tracing",SESSION_COOKIE_NAME="_vercel_session";async function lookupDeployment(client,fullUrl,accountId){let deployment=await resolveDeployment(client,fullUrl,accountId);if(!deployment)throw new Error("Deployment not found");return deployment}function resolveTeamId(link,deployment){if(link?.org.type==="team")return link.org.id;if(deployment.ownerId?.startsWith("team_"))return deployment.ownerId}function extractVercelId(headerDump){let lines=headerDump.split(/\r?\n/),lastValue;for(let line of lines){let idx=line.indexOf(":");if(idx===-1)continue;line.slice(0,idx).trim().toLowerCase()==="x-vercel-id"&&(lastValue=line.slice(idx+1).trim())}if(!lastValue)return;let sepIdx=lastValue.lastIndexOf("::");return sepIdx===-1?lastValue:lastValue.slice(sepIdx+2)}function extractFinalStatus(headerDump){let lines=headerDump.split(/\r?\n/),lastStatus;for(let line of lines){let match=line.match(/^HTTP\/[\d.]+\s+(\d{3})/);match&&(lastStatus=Number(match[1]))}return lastStatus}async function runCurlAndCaptureHeaders(client,curlFlags,json){let tmpDir=await mkdtemp(join2(tmpdir(),"vc-curl-trace-")),headerFile=join2(tmpDir,"headers"),flags=["--dump-header",headerFile,...curlFlags];try{let{exitCode,capturedBody}=await new Promise(resolve=>{let finishTrace=traceCurl(client.telemetryEventStore.enabled?client.rootSpan:void 0),child=spawn("curl",flags,{stdio:json?["inherit","pipe","inherit"]:"inherit",shell:!1}),buf="";json&&child.stdout&&(child.stdout.setEncoding("utf8"),child.stdout.on("data",chunk=>{buf+=chunk})),child.on("error",err=>{finishTrace(1),err.code==="ENOENT"?output_manager_default.error("curl command not found. Please install curl."):output_manager_default.error(`Failed to execute curl: ${err.message}`),resolve({exitCode:1,capturedBody:buf})}),child.on("close",code=>{finishTrace(code),resolve({exitCode:code??1,capturedBody:buf})})}),headerDump="";try{headerDump=await readFile2(headerFile,"utf8")}catch(err){output_manager_default.debug(`Failed to read curl header dump: ${err}`)}return{exitCode,headerDump,capturedBody}}finally{await rm(tmpDir,{recursive:!0,force:!0}).catch(()=>{})}}async function trace(client,{fullUrl,link,curlFlags,json,yes,telemetry}){telemetry.trackCliFlagTrace(!0),json&&telemetry.trackCliFlagJson(!0);let accountId=link?.org.id,deployment;try{deployment=await lookupDeployment(client,fullUrl,accountId)}catch(err){return output_manager_default.error(`Failed to look up deployment for tracing: ${err instanceof Error?err.message:String(err)}`),1}let projectId=link?.project.id??deployment.projectId;if(!projectId)return output_manager_default.error("Could not resolve project for trace session. Run `vercel link` and retry."),1;let teamId=resolveTeamId(link,deployment),userId;try{userId=client.authConfig.userId??(await getUser(client)).id}catch(err){return output_manager_default.error(`Failed to resolve user for trace session: ${(0,import_error_utils2.errorToString)(err)}`),1}let deploymentTarget=deployment.target==="production"?"production":"preview",confirmation=await confirmProduction(client,{deploymentTarget,yes,isTTY:!!client.stdin.isTTY});if(confirmation==="non-tty-no-yes")return 1;if(confirmation==="declined")return output_manager_default.log("Trace cancelled."),0;deploymentTarget==="production"&&yes&&telemetry.trackCliFlagYesOnProduction(!0);let session;try{session=await getTraceSessionToken({client,teamId,projectId,host:fullUrl})}catch(err){return output_manager_default.error(`Failed to acquire trace session: ${err instanceof Error?err.message:String(err)}`),1}let{exitCode,headerDump,capturedBody}=await runCurlWithCookie(client,session.token,userId,curlFlags,json);if(session.fromCache&&extractFinalStatus(headerDump)===401&&exitCode===0){output_manager_default.debug("Trace cookie returned 401; evicting cache and retrying.");let refreshed;try{refreshed=await getTraceSessionToken({client,teamId,projectId,host:fullUrl,evictedToken:session.token})}catch(err){return output_manager_default.error(`Failed to refresh trace session after 401: ${err instanceof Error?err.message:String(err)}`),1}({exitCode,headerDump,capturedBody}=await runCurlWithCookie(client,refreshed.token,userId,curlFlags,json))}let requestId=extractVercelId(headerDump);return json?(client.stdout.write(`${JSON.stringify({response:capturedBody,requestId:requestId??null},null,2)}
|
|
8
8
|
`),requestId?exitCode:exitCode===0?1:exitCode):requestId?(client.stderr.write(`
|
|
9
9
|
Run \`vercel traces inspect ${requestId}\` to fetch the trace.
|
|
10
10
|
`),exitCode):(output_manager_default.error("Trace cookie was set but the response did not include an x-vercel-id header."),exitCode===0?1:exitCode)}async function runCurlWithCookie(client,token,userId,curlFlags,json){let flagsWithCookie=["--header",`Cookie: ${TRACE_COOKIE_NAME}=${token}; ${SESSION_COOKIE_NAME}=${userId}`,...curlFlags];return output_manager_default.debug(`Executing: curl ${flagsWithCookie.map(redactSecretHeader).map(requoteArgs).join(" ")}`),runCurlAndCaptureHeaders(client,flagsWithCookie,json)}async function curl(client){return runCurl(client,{})}async function runCurl(client,{forceTrace=!1,args}){let telemetryClient=new CurlTelemetryClient({opts:{store:client.telemetryEventStore}}),setup=setupCurlLikeCommand(client,curlCommand,telemetryClient,{allowFullUrl:!0,args});if(typeof setup=="number")return setup;let{path,isFullUrl,deploymentFlag,protectionBypassFlag,toolFlags,json:jsonFlag}=setup,traceFlag=forceTrace||setup.trace,result=isFullUrl?await getFullUrlAndToken(client,path,protectionBypassFlag):await getDeploymentUrlAndToken(client,"curl",path,{deploymentFlag,protectionBypassFlag,autoConfirm:setup.yes,resolveProjectForTrace:traceFlag});if(typeof result=="number")return result;let{fullUrl,deploymentProtectionToken}=result,curlFlags=[...toolFlags];return deploymentProtectionToken&&curlFlags.unshift("--header",`x-vercel-protection-bypass: ${deploymentProtectionToken}`),curlFlags.unshift("--url",fullUrl),traceFlag?trace(client,{fullUrl,link:result.link??null,curlFlags,json:jsonFlag,yes:setup.yes,telemetry:telemetryClient}):(output_manager_default.debug(`Executing: curl ${curlFlags.map(redactSecretHeader).map(requoteArgs).join(" ")}`),deploymentProtectionToken&&bypassesProtection(result.link,fullUrl)&&(output_manager_default.warning("This request bypasses Deployment Protection, so its response doesn't show whether the URL is public."),output_manager_default.print(`
|
|
@@ -4,4 +4,4 @@ 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{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption}from"./chunk-
|
|
7
|
+
import{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption}from"./chunk-YPPDRKVC.js";var specUrlOption={name:"spec-url",shorthand:null,type:String,argument:"URL",deprecated:!1,description:"Fetch endpoints from a custom OpenAPI spec URL instead of the public Vercel spec"},listSubcommand={name:"list",aliases:["ls"],description:"List all available API endpoints",arguments:[],options:[formatOption,jsonOption,specUrlOption,{name:"refresh",shorthand:null,type:Boolean,deprecated:!1,description:"Force refresh the cached OpenAPI spec"}],examples:[{name:"List all endpoints in table format",value:`${packageName} api list`},{name:"List all endpoints as JSON",value:`${packageName} api list --json`},{name:"List endpoints from a custom OpenAPI spec",value:`${packageName} api list --spec-url https://openapi-internal.vercel.sh --refresh`}]},apiCommand={name:"api",aliases:[],description:"Make authenticated HTTP requests to the Vercel API",arguments:[{name:"endpoint",required:!1}],subcommands:[listSubcommand],options:[{name:"method",shorthand:"X",type:String,argument:"METHOD",deprecated:!1,description:"HTTP method (GET, POST, PUT, PATCH, DELETE) (default: GET, or POST if body is provided)"},{name:"field",shorthand:"F",type:[String],argument:"KEY=VALUE",deprecated:!1,description:"Add a typed parameter (numbers, booleans parsed). Use @file for file contents"},{name:"raw-field",shorthand:"f",type:[String],argument:"KEY=VALUE",deprecated:!1,description:"Add a string option (no type parsing)"},{name:"header",shorthand:"H",type:[String],argument:"KEY:VALUE",deprecated:!1,description:"Add a custom HTTP header"},{name:"input",shorthand:null,type:String,argument:"FILE",deprecated:!1,description:"Read request body from file (use - for stdin)"},{name:"paginate",shorthand:null,type:Boolean,deprecated:!1,description:"Fetch all pages of results"},{name:"include",shorthand:"i",type:Boolean,deprecated:!1,description:"Include response headers in output"},{name:"silent",shorthand:null,type:Boolean,deprecated:!1,description:"Suppress response output"},{name:"verbose",shorthand:null,type:Boolean,deprecated:!1,description:"Show debug information including full request/response"},{name:"raw",shorthand:null,type:Boolean,deprecated:!1,description:"Output raw JSON without pretty-printing (default: on when output is piped)"},{name:"refresh",shorthand:null,type:Boolean,deprecated:!1,description:"Force refresh the cached OpenAPI spec"},specUrlOption,{name:"generate",shorthand:null,type:String,argument:"FORMAT",deprecated:!1,description:"Generate output instead of executing (e.g., --generate=curl)"},{name:"dangerously-skip-permissions",shorthand:null,type:Boolean,deprecated:!1,description:"Skip confirmation prompts for DELETE operations (use with caution)"}],examples:[{name:"Get current user information",value:`${packageName} api /v2/user`},{name:"List projects with team scope",value:`${packageName} api /v9/projects --scope my-team`},{name:"Create a new project",value:`${packageName} api /v10/projects -X POST -F name=my-project`},{name:"Delete a deployment",value:`${packageName} api /v13/deployments/dpl_abc123 -X DELETE`},{name:"Paginate through all deployments",value:`${packageName} api /v6/deployments --paginate`},{name:"Post JSON from file",value:`${packageName} api /v10/projects -X POST --input config.json`},{name:"Add custom header",value:`${packageName} api /v2/user -H "X-Custom-Header: value"`},{name:"Interactive mode (select endpoint)",value:`${packageName} api`},{name:"Interactive mode with a custom OpenAPI spec",value:`${packageName} api --spec-url https://openapi-internal.vercel.sh --refresh`}]};export{listSubcommand,apiCommand};
|
|
@@ -4,4 +4,4 @@ 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{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption,limitOption,projectOption,sinceOption,untilOption}from"./chunk-
|
|
7
|
+
import{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption,limitOption,projectOption,sinceOption,untilOption}from"./chunk-YPPDRKVC.js";var listSubcommand={name:"ls",aliases:["list"],description:"",default:!0,hidden:!0,arguments:[],options:[],examples:[]},inspectSubcommand={name:"inspect",aliases:[],description:"Show details for a single alert group",arguments:[{name:"groupId",required:!0}],options:[formatOption,jsonOption,{...projectOption,shorthand:"p",description:"Filter by project (overrides auto-detected linked project)."},{name:"all",shorthand:"a",type:Boolean,deprecated:!1,description:"Use team-wide scope (ignore linked project auto-scoping)."}],examples:[{name:"Inspect a group in the linked project",value:`${packageName} alerts inspect grp_abc123`},{name:"Inspect as JSON",value:`${packageName} alerts inspect grp_abc123 --json`}]},alertsCommand={name:"alerts",aliases:[],description:"List alert groups or inspect a group. To manage alert rules, see `vercel monitors`.",arguments:[],subcommands:[listSubcommand,inspectSubcommand],options:[{name:"type",shorthand:null,type:[String],argument:"TYPE",deprecated:!1,description:"Filter by alert type. Repeatable and comma-separated (for example --type usage_anomaly,error_anomaly)."},{...projectOption,shorthand:"p",description:"Filter by project (overrides auto-detected linked project)."},{name:"all",shorthand:"a",type:Boolean,deprecated:!1,description:"Show team-wide alerts (ignore linked project auto-scoping)."},{name:"ai",shorthand:null,type:Boolean,deprecated:!1,description:"Print AI-focused sections (title, resolved time, summary, key findings) instead of table output."},{...sinceOption,description:`${sinceOption.description} (default: 24h ago)`},untilOption,limitOption,formatOption,jsonOption],examples:[{name:"List alerts for the linked project",value:`${packageName} alerts`},{name:"List team-wide alerts",value:`${packageName} alerts --all`},{name:"Filter by type",value:`${packageName} alerts --type usage_anomaly --type error_anomaly`},{name:"Output JSON",value:`${packageName} alerts --json`},{name:"Custom time range",value:`${packageName} alerts --since 2026-03-01T00:00:00.000Z --until 2026-03-02T00:00:00.000Z`}]};export{listSubcommand,inspectSubcommand,alertsCommand};
|
|
@@ -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{require_open}from"./chunk-PVASGBEF.js";import{getTeams}from"./chunk-
|
|
7
|
+
import{require_open}from"./chunk-PVASGBEF.js";import{getTeams}from"./chunk-YEPB52XE.js";import{printError}from"./chunk-D3GYYGSS.js";import{TelemetryClient}from"./chunk-SBBD2Q5A.js";import{createDpopKey,deleteDpopKey,deviceAccessTokenRequest,deviceAuthorizationRequest,getUser,humanizePath,isDpopLoginEnabled,isOAuthError,processDeviceAuthorizationResponse,processTokenResponse}from"./chunk-QZEZCUUZ.js";import{getTeamByIdOrSlug}from"./chunk-F53OKXYI.js";import{getCommandName}from"./chunk-JESNVRVR.js";import{emoji,output_manager_default}from"./chunk-ZRJKGAUT.js";import{require_dist}from"./chunk-RM3ZDRYE.js";import{require_ansi_escapes}from"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1),import_error_utils=__toESM(require_dist(),1),open=__toESM(require_open(),1),import_ansi_escapes=__toESM(require_ansi_escapes(),1);import readline from"node:readline";import{KNOWN_AGENTS}from"@vercel/detect-agent";async function updateCurrentTeamAfterLogin(client,ssoTeamId){if(ssoTeamId)client.updateConfig({currentTeam:ssoTeamId});else{let user=null;try{user=await getUser(client)}catch{return output_manager_default.error("Failed to fetch the logged in user. Please try again."),1}client.updateConfig({currentTeam:user.version==="northstar"&&user.defaultTeamId?user.defaultTeamId:void 0})}}var LoginTelemetryClient=class extends TelemetryClient{trackState(...args){this.trackLoginState(...args)}trackDpopKey(storage){this.trackDpopKeyStorage(storage)}};function getSignupVerificationUrl(verificationUriComplete,email){let deviceUrl=new URL(verificationUriComplete),signupUrl=new URL("/signup",deviceUrl.origin);return signupUrl.searchParams.set("email",email),signupUrl.searchParams.set("autoSubmit","1"),signupUrl.searchParams.set("next",`${deviceUrl.pathname}${deviceUrl.search}`),signupUrl.toString()}async function performDeviceCodeFlow(client,options){let dpopKey=getDpopKeyForLogin(client,options),isNewKey=dpopKey!==client.authConfig.dpop?.key,tokens=null;try{return tokens=await runDeviceCodeFlow(client,options,dpopKey),tokens}finally{dpopKey&&isNewKey&&!tokens&&deleteDpopKey(dpopKey)}}async function runDeviceCodeFlow(client,options,dpopKey){let deviceAuthorizationResponse=await deviceAuthorizationRequest({refresh_token:options?.refreshToken,acr_values:options?.acrValues});output_manager_default.debug(`'Device Authorization response:', ${await deviceAuthorizationResponse.clone().text()}`);let[deviceAuthorizationError,deviceAuthorization]=await processDeviceAuthorizationResponse(deviceAuthorizationResponse);if(deviceAuthorizationError)return options?.fallbackToLoginOnStepUpFailure&&options.refreshToken&&isOAuthError(deviceAuthorizationError)&&(deviceAuthorizationError.code==="invalid_grant"||deviceAuthorizationError.code==="invalid_scope")?(output_manager_default.debug(`Step-up device authorization failed: ${deviceAuthorizationError.cause.message}`),output_manager_default.log("Couldn't refresh the saved login. Starting a new login."),performDeviceCodeFlow(client,options.teamId?{teamId:options.teamId}:void 0)):(printError(isOAuthError(deviceAuthorizationError)?deviceAuthorizationError.cause:deviceAuthorizationError),null);let{device_code,user_code,verification_uri,expiresAt,interval}=deviceAuthorization,{verification_uri_complete}=deviceAuthorization;if(options?.teamId){let url=new URL(verification_uri_complete);url.searchParams.set("team_id",options.teamId),verification_uri_complete=url.toString()}let isCursorAgent=client.agentName===KNOWN_AGENTS.CURSOR||client.agentName===KNOWN_AGENTS.CURSOR_CLI,shouldSkipBrowser=process.env.CI&&!isCursorAgent,browserUrl=verification_uri_complete;if(options?.signupEmail?(browserUrl=getSignupVerificationUrl(verification_uri_complete,options.signupEmail),output_manager_default.log(`
|
|
8
8
|
Visit ${import_chalk.default.bold(output_manager_default.link(new URL(browserUrl).host+"/signup",browserUrl,{color:!1,fallback:()=>browserUrl}))} to create your account with ${import_chalk.default.bold(options.signupEmail)} (device code ${import_chalk.default.bold(user_code)}).
|
|
9
9
|
`)):output_manager_default.log(`
|
|
10
10
|
Visit ${import_chalk.default.bold(output_manager_default.link(verification_uri.replace("https://",""),verification_uri_complete,{color:!1,fallback:()=>verification_uri_complete}))}${output_manager_default.supportsHyperlink?` and enter ${import_chalk.default.bold(user_code)}`:""}
|
|
@@ -4,6 +4,6 @@ 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{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption,projectOption,yesOption}from"./chunk-
|
|
7
|
+
import{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption,projectOption,yesOption}from"./chunk-YPPDRKVC.js";var builtInBody={type:"built-in",name:"Production server errors",triggers:{mode:"selected",items:[{type:"error_anomaly",filter:"statusGroup:5xx AND route:/api/*"}]},matchMinimumSeverityLevel:"high"},patchBody={name:"Critical production errors",matchMinimumSeverityLevel:"critical"},authoringReference={title:"Authoring reference",body:[{command:"vercel monitors schema --type built-in"}]},monitorsAddHelpSections=[{title:"Scope",body:["Provide ruleScope in the body or use a scope option, not both.","--project maps to one included project.","--all maps to every project in the team."]},{title:"Built-in body (rule.json)",preformatted:!0,body:[...JSON.stringify(builtInBody,null,2).split(`
|
|
8
8
|
`),"",{command:"vercel monitors add --project my-app --body ./rule.json"}]},authoringReference],monitorsUpdateHelpSections=[{title:"Update body",body:["Include only the fields to change. type is optional and inferred from the stored monitor.","Use --project or --all to change scope with or without --body.","Do not combine a ruleScope field in the body with --project or --all.","--all moves the monitor to team-wide scope."]},{title:"Partial body (patch.json)",preformatted:!0,body:[...JSON.stringify(patchBody,null,2).split(`
|
|
9
9
|
`),"",{command:"vercel monitors update ar_abc123 --body ./patch.json"},{command:"vercel monitors update ar_abc123 --project my-app"}]},authoringReference];var projectScopeOption={...projectOption,shorthand:"p",description:"Use a project by name or ID"},listAllOption={name:"all",shorthand:"a",type:Boolean,deprecated:!1,description:"List all accessible monitors in the selected team"},mutationAllOption={...listAllOption,description:"Apply the monitor to all projects in the selected team"},deprecatedItemScopeOptions=[{...projectScopeOption,deprecated:!0},{...listAllOption,deprecated:!0}],bodyOption={name:"body",shorthand:null,type:String,argument:"PATH",deprecated:!1,description:"Read the monitor body from a JSON file"},monitorsLsSubcommand={name:"ls",aliases:["list"],default:!0,description:"List monitors for a project or team",arguments:[],options:[projectScopeOption,listAllOption,{name:"type",shorthand:null,type:[String],argument:"TYPE",deprecated:!1,description:"Filter by monitor type"},formatOption,jsonOption],examples:[{name:"List monitors affecting the linked project",value:`${packageName} monitors ls`},{name:"List all monitors in the selected team",value:`${packageName} monitors ls --all`},{name:"Write JSON output",value:`${packageName} monitors ls --all --json`}]},monitorsSchemaSubcommand={name:"schema",aliases:[],description:"Show monitor request fields and examples",arguments:[],options:[{name:"type",shorthand:null,type:String,argument:"TYPE",deprecated:!1,description:"Monitor type to describe"},formatOption,jsonOption],examples:[{name:"List supported monitor types",value:`${packageName} monitors schema`},{name:"Show the built-in monitor schema",value:`${packageName} monitors schema --type built-in`}]},monitorsAddSubcommand={name:"add",aliases:["create"],description:"Add a monitor from a JSON body",helpSections:monitorsAddHelpSections,arguments:[],options:[projectScopeOption,mutationAllOption,formatOption,jsonOption,bodyOption],examples:[{name:"Create a project-scoped monitor",value:`${packageName} monitors add --project my-app --body ./rule.json`},{name:"Create a team-wide built-in monitor",value:`${packageName} monitors add --all --body ./rule.json`}]},monitorsInspectSubcommand={name:"inspect",aliases:["get"],description:"Show one monitor by ID",arguments:[{name:"monitorId",required:!0}],options:[...deprecatedItemScopeOptions,formatOption,jsonOption],examples:[{name:"Inspect a monitor",value:`${packageName} monitors inspect ar_abc123`},{name:"Write JSON output",value:`${packageName} monitors inspect ar_abc123 --json`}]},monitorsRmSubcommand={name:"remove",aliases:["rm","delete"],description:"Remove a monitor",arguments:[{name:"monitorId",required:!0}],options:[...deprecatedItemScopeOptions,formatOption,jsonOption,yesOption],examples:[{name:"Remove with confirmation",value:`${packageName} monitors remove ar_abc123`},{name:"Remove without a prompt",value:`${packageName} monitors remove ar_abc123 --yes`}]},monitorsUpdateSubcommand={name:"update",aliases:["patch"],description:"Update a monitor's settings or scope",helpSections:monitorsUpdateHelpSections,arguments:[{name:"monitorId",required:!0}],options:[projectScopeOption,mutationAllOption,formatOption,jsonOption,{...bodyOption,description:"Read the partial update body from a JSON file"}],examples:[{name:"Update fields from a file",value:`${packageName} monitors update ar_abc123 --body ./patch.json`},{name:"Move a monitor to a project",value:`${packageName} monitors update ar_abc123 --project my-app`}]},notificationTargetOptions=[{name:"webhook",shorthand:null,type:String,argument:"WEBHOOK_ID",deprecated:!1,description:"Select an account webhook by ID"},{name:"slack-channel",shorthand:null,type:String,argument:"CHANNEL_ID",deprecated:!1,description:"Select a Slack channel by ID"},{name:"slack-installation-id",shorthand:null,type:String,argument:"INSTALLATION_ID",deprecated:!1,description:"Slack installation ID. Optional only when the team has exactly one completed Slack installation."}],criticalOnlyOption={name:"critical-only",shorthand:null,type:Boolean,deprecated:!1,description:"Notify only when Vercel Agent escalates an alert to Critical"},noCriticalOnlyOption={name:"no-critical-only",shorthand:null,type:Boolean,deprecated:!1,description:"Deliver every alert matched by the monitor"},monitorsNotificationsLsSubcommand={name:"ls",aliases:["list"],default:!0,description:"List notification destinations for all readable monitors or one monitor",arguments:[{name:"monitorId",required:!1}],options:[formatOption,jsonOption],examples:[{name:"List notification destinations for all readable monitors",value:`${packageName} monitors notifications ls`},{name:"List notification destinations for one monitor",value:`${packageName} monitors notifications ls ar_abc123`},{name:"Write JSON output",value:`${packageName} monitors notifications ar_abc123 --json`}]},monitorsNotificationsLinkSubcommand={name:"link",aliases:[],description:"Link a Slack channel or account webhook to a monitor",arguments:[{name:"monitorId",required:!0}],options:[...notificationTargetOptions,criticalOnlyOption,formatOption,jsonOption],examples:[{name:"Link a Slack channel",value:`${packageName} monitors notifications link ar_abc123 --slack-channel C123`},{name:"Link a Slack channel from a specific installation",value:`${packageName} monitors notifications link ar_abc123 --slack-channel C123 --slack-installation-id icfg_abc123`},{name:"Link a webhook",value:`${packageName} monitors notifications link ar_abc123 --webhook wh_abc123`},{name:"Link a Critical-only webhook",value:`${packageName} monitors notifications link ar_abc123 --webhook wh_abc123 --critical-only`}]},monitorsNotificationsUpdateSubcommand={name:"update",aliases:["patch"],description:"Update a notification destination's delivery setting",arguments:[{name:"monitorId",required:!0}],options:[...notificationTargetOptions,criticalOnlyOption,noCriticalOnlyOption,formatOption,jsonOption],examples:[{name:"Restrict a Slack channel to Critical alerts",value:`${packageName} monitors notifications update ar_abc123 --slack-channel C123 --critical-only`},{name:"Restore delivery for every alert matched by the monitor",value:`${packageName} monitors notifications update ar_abc123 --webhook wh_abc123 --no-critical-only`}]},monitorsNotificationsUnlinkSubcommand={name:"unlink",aliases:[],description:"Unlink a Slack channel or account webhook from a monitor",arguments:[{name:"monitorId",required:!0}],options:[...notificationTargetOptions,formatOption,jsonOption],examples:[{name:"Unlink a Slack channel",value:`${packageName} monitors notifications unlink ar_abc123 --slack-channel C123`},{name:"Unlink a webhook",value:`${packageName} monitors notifications unlink ar_abc123 --webhook wh_abc123`}]},monitorsNotificationsAggregateCommand={name:"notifications",aliases:[],description:"List and manage linked Slack and webhook destinations for monitors",arguments:[],subcommands:[monitorsNotificationsLsSubcommand,monitorsNotificationsLinkSubcommand,monitorsNotificationsUpdateSubcommand,monitorsNotificationsUnlinkSubcommand],options:[formatOption,jsonOption],examples:[{name:"List destinations for all readable monitors",value:`${packageName} monitors notifications`},{name:"List destinations for one monitor",value:`${packageName} monitors notifications ar_abc123`},{name:"Link Slack with the team's only installation",value:`${packageName} monitors notifications link ar_abc123 --slack-channel C123`}]},monitorsCommand={name:"monitors",aliases:[],description:"Add, inspect, list, update, and remove monitors, and manage their notification destinations",arguments:[],subcommands:[monitorsLsSubcommand,monitorsSchemaSubcommand,monitorsAddSubcommand,monitorsInspectSubcommand,monitorsRmSubcommand,monitorsUpdateSubcommand,monitorsNotificationsAggregateCommand],options:monitorsLsSubcommand.options,examples:[{name:"List monitors for the linked project",value:`${packageName} monitors ls`},{name:"Add a monitor",value:`${packageName} monitors add --project my-app --body ./rule.json`},{name:"Inspect a monitor",value:`${packageName} monitors inspect ar_abc123`},{name:"Update a monitor",value:`${packageName} monitors update ar_abc123 --body ./patch.json`},{name:"Remove a monitor",value:`${packageName} monitors remove ar_abc123`},{name:"List notification destinations for a monitor",value:`${packageName} monitors notifications ar_abc123`}]};export{monitorsLsSubcommand,monitorsSchemaSubcommand,monitorsAddSubcommand,monitorsInspectSubcommand,monitorsRmSubcommand,monitorsUpdateSubcommand,monitorsNotificationsLsSubcommand,monitorsNotificationsLinkSubcommand,monitorsNotificationsUpdateSubcommand,monitorsNotificationsUnlinkSubcommand,monitorsNotificationsAggregateCommand,monitorsCommand};
|
|
@@ -4,6 +4,6 @@ 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{readJSONFile}from"./chunk-
|
|
7
|
+
import{readJSONFile}from"./chunk-KARAZGCO.js";import{getScope}from"./chunk-IU6PHFPQ.js";import{humanizePath,require_types}from"./chunk-QZEZCUUZ.js";import{getArgs}from"./chunk-KIMIK4SG.js";import{CantFindConfig,CantParseJSONFile,DeprecatedNowJson,WorkingDirectoryDoesNotExist}from"./chunk-FXEMEIST.js";import{cliErrorFromUnknown,output_manager_default,recordCliError}from"./chunk-ZRJKGAUT.js";import{require_dist}from"./chunk-RM3ZDRYE.js";import{__commonJS,__toESM}from"./chunk-BZENIQ7N.js";var require_epipebomb=__commonJS({"../../node_modules/.pnpm/epipebomb@1.0.0/node_modules/epipebomb/epipebomb.js"(exports,module){module.exports=epipeBomb;function epipeBomb(stream,callback){stream==null&&(stream=process.stdout),callback==null&&(callback=process.exit);function epipeFilter(err){if(err.code==="EPIPE")return callback();stream.listeners("error").length<=1&&(stream.removeAllListeners(),stream.emit("error",err),stream.on("error",epipeFilter))}stream.on("error",epipeFilter)}}});var sentry;async function getSentry(){if(!sentry){let[SentryModule,{SENTRY_DSN},{default:pkg}]=await Promise.all([import("./cjs-2SMN43VH.js"),import("./constants-JAB7MRSK.js"),import("./pkg-EDJQLCNP.js")]),Sentry="init"in SentryModule?SentryModule:SentryModule.default;Sentry.init({dsn:SENTRY_DSN,release:`vercel-cli@${pkg.version}`,environment:"stable",autoSessionTracking:!1}),sentry=Sentry}return sentry}function isOutputDebugEnabled(debugFlag){return debugFlag===!0||process.env.VERCEL_CLI_DEBUG==="1"}var import_epipebomb=__toESM(require_epipebomb(),1),SILENCED_ERRORS=["DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead."],installed=!1;function installProcessGuards(){if(installed)return;installed=!0;let originalError=console.error;console.error=msg=>{SILENCED_ERRORS.some(error=>typeof msg=="string"&&msg.includes(error))||originalError(msg)},(0,import_epipebomb.default)()}var import_error_utils=__toESM(require_dist(),1);async function reportError(sentry2,client,error){if(ignoreError(error))return;let user,team,scopeError;try{({user,team}=await getScope(client))}catch(err){(0,import_error_utils.isError)(err)&&(scopeError=err)}sentry2.withScope(scope=>{if(user){let spec={email:user.email,id:user.id,username:user.username,name:user.name};scope.setUser(spec)}team&&scope.setTag("currentTeam",team.id),scopeError&&scope.setExtra("scopeError",{name:scopeError.name,message:scopeError.message,stack:scopeError.stack});let args,argsError;try{args=getArgs(process.argv.slice(2),{})}catch(err){(0,import_error_utils.isError)(err)&&(argsError=err)}if(args){let flags=["--env","--build-env","--token"];for(let flag of flags)args[flag]&&(args[flag]="REDACTED");args._.length>=4&&args._[0].startsWith("secret")&&args._[1]==="add"&&(args._[3]="REDACTED"),scope.setExtra("args",args)}else{let msg="Unable to parse args";argsError&&(msg+=`: ${argsError}`),scope.setExtra("args",msg)}scope.setExtra("node",{execPath:process.execPath,version:process.version,platform:process.platform}),sentry2.captureException(error)});let sentryClient=sentry2.getCurrentHub().getClient();sentryClient&&await sentryClient.close()}function ignoreError(error){return(0,import_error_utils.isError)(error)&&error.message.includes("uv_cwd")}var fatalErrorHandlerSymbol=Symbol.for("vercel.cli.fatal-error-handler");async function exitWithUnexpectedError(error){let handler=globalThis[fatalErrorHandlerSymbol];if(typeof handler=="function")try{await handler(error)}catch{}process.exit(1)}async function handleUnexpectedError(client,err){let{message}=err;return message.includes("sentry")&&message.includes("ENOTFOUND")?(output_manager_default.debug(`Sentry is not reachable: ${err}`),!1):(output_manager_default.error(`An unexpected error occurred!
|
|
8
8
|
${err.stack}`),await reportError(await getSentry(),client,err),!0)}function registerUnexpectedErrorHandlers(getClient){process.on("unhandledRejection",async err=>{recordCliError(cliErrorFromUnknown(err)),err?err instanceof Error?await handleUnexpectedError(getClient(),err):(output_manager_default.error(`An unexpected rejection occurred
|
|
9
9
|
${err}`),await reportError(await getSentry(),getClient(),err)):output_manager_default.error("An unexpected empty rejection occurred"),await exitWithUnexpectedError(err)}),process.on("uncaughtException",async error=>{await handleUnexpectedError(getClient(),error)&&await exitWithUnexpectedError(error)})}var import_types=__toESM(require_types(),1);import path from"path";var import_error_utils2=__toESM(require_dist(),1);var config;async function earlyGetConfig(configFile){if(config)return config;let localPath;try{localPath=process.cwd()}catch(err){if((0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOENT")return new WorkingDirectoryDoesNotExist;throw err}if(configFile){let localFilePath=path.resolve(localPath,configFile);output_manager_default.debug(`Found config in provided --local-config path ${localFilePath}`);let localConfig=await readJSONFile(localFilePath);return localConfig instanceof CantParseJSONFile?localConfig:localConfig===null?new CantFindConfig([humanizePath(localFilePath)]):(config=localConfig,config[import_types.fileNameSymbol]=configFile,config)}let vercelFilePath=path.resolve(localPath,"vercel.json"),nowFilePath=path.resolve(localPath,"now.json"),[vercelConfig,nowConfig]=await Promise.all([readJSONFile(vercelFilePath),readJSONFile(nowFilePath)]);return vercelConfig instanceof CantParseJSONFile?vercelConfig:nowConfig instanceof CantParseJSONFile?nowConfig:vercelConfig!==null?(output_manager_default.debug(`Found config in file "${vercelFilePath}"`),config=vercelConfig,config[import_types.fileNameSymbol]="vercel.json",config):nowConfig!==null?new DeprecatedNowJson(nowFilePath):new CantFindConfig([vercelFilePath].map(humanizePath))}var fallbackReason;function recordDirectBuildFallback(reason){fallbackReason=reason}function getDirectBuildFallbackAttributes(){return fallbackReason===void 0?void 0:{directBuild:"false",fallbackReason}}export{getSentry,isOutputDebugEnabled,installProcessGuards,reportError,exitWithUnexpectedError,handleUnexpectedError,registerUnexpectedErrorHandlers,earlyGetConfig,recordDirectBuildFallback,getDirectBuildFallbackAttributes};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'node:url';
|
|
3
|
+
import { dirname as __dirname_ } from 'node:path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __dirname_(__filename);
|
|
7
|
+
import{AGENT_REASON,outputAgentError}from"./chunk-KAUKCHQF.js";import{findProjectsFromPath,getConfigFilePath,getLinkFromDir,getRepoLink,getUser,getVercelDirectory,inspectTokenRequest,processInspectTokenResponse}from"./chunk-QZEZCUUZ.js";import{getTeamByIdOrSlug}from"./chunk-F53OKXYI.js";import{require_ms}from"./chunk-MXTC4ZAQ.js";import{require_cli_config}from"./chunk-4SAVH3H7.js";import{InvalidToken,TeamDeleted}from"./chunk-FXEMEIST.js";import{output_manager_default,require_build_utils}from"./chunk-ZRJKGAUT.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_build_utils=__toESM(require_build_utils(),1);var VERCEL_API_ORIGIN="https://api.vercel.com";async function introspectToken(client){let token=client.authConfig.token;if(!token)throw new Error("No token to introspect");if(new URL(client.apiUrl).origin!==VERCEL_API_ORIGIN)throw new Error("Token introspection is unavailable for custom API origins");let[error,introspection]=await processInspectTokenResponse(await inspectTokenRequest(token));if(error)throw error;return introspection}function isAppPrincipalEnabled(){return!!process.env.APP_PRINCIPAL_ENABLED}function resolveAppFromToken(token){return!token.active||!token.client_id?null:{id:token.client_id,name:token.client_name}}async function getAppTokenTeamId(client){try{await getUser(client);return}catch{let token=await introspectToken(client).catch(()=>null);return token&&resolveAppFromToken(token)?token.team?.id:void 0}}function assertOrgIdMatchesAppTeam(client,appTeamId){let envOrgId=(0,import_build_utils.getPlatformEnv)("ORG_ID");if(!envOrgId||envOrgId===appTeamId)return;let message=`This token only works with team ${appTeamId}, but VERCEL_ORG_ID is set to ${envOrgId}.`;throw outputAgentError(client,{status:"error",reason:AGENT_REASON.SCOPE_NOT_ACCESSIBLE,message}),new Error(message)}async function resolveAppTokenScope(client,scope){let token=await introspectToken(client).catch(()=>null),app=token?resolveAppFromToken(token):null,team=token?.team;return!app||!team||team.id!==scope&&team.slug!==scope?!1:(client.config.currentTeam=team.id,!0)}async function isActiveAppToken(client){let token=await introspectToken(client).catch(()=>null);return!!(token&&resolveAppFromToken(token))}var import_cli_config=__toESM(require_cli_config(),1),import_ms=__toESM(require_ms(),1);var TEAM_SLUG_TTL_MS=(0,import_ms.default)("1d");function getCachedTeamSlug(config,teamId,now=Date.now()){let saved=config.cachedTeamSlugs?.[teamId];if(!isSavedTeamSlug(saved))return;let age=now-saved.savedAt;return age>=0&&age<TEAM_SLUG_TTL_MS?saved.slug:void 0}function setCachedTeamSlug(client,teamId,slug){if(getCachedTeamSlug(client.config,teamId)===slug)return;let saved={slug,savedAt:Date.now()};updateCachedTeamSlugs(client,slugs=>({...slugs,[teamId]:saved}))}function forgetCachedTeamSlug(client,teamId){let slugs=client.config.cachedTeamSlugs;!slugs||!(teamId in slugs)||updateCachedTeamSlugs(client,saved=>{let rest={...saved};return delete rest[teamId],rest})}function isSavedTeamSlug(value){return typeof value=="object"&&value!==null&&typeof value.slug=="string"&&typeof value.savedAt=="number"}function updateCachedTeamSlugs(client,update){try{let configPath=getConfigFilePath(),savedConfig=(0,import_cli_config.readGlobalConfigFile)(configPath),cachedTeamSlugs=update(savedConfig.cachedTeamSlugs??{}),config={...savedConfig,cachedTeamSlugs};(0,import_cli_config.writeGlobalConfigFile)(configPath,config),client.config.cachedTeamSlugs=cachedTeamSlugs}catch{output_manager_default.debug("Failed to persist cached team slugs.")}}var import_build_utils2=__toESM(require_build_utils(),1);import{relative}from"path";async function getScope(client,opts={}){let{user,app,token}=await getPrincipal(client),defaultTeamId=user?.version==="northstar"&&!client.ignoresSavedTeam?user.defaultTeamId:void 0,appTeamId=!user&&app?token?.team?.id:void 0;if(!user&&app&&opts.getTeam===!1)throw new Error("App principal scope resolution requires a team lookup.");!user&&app&&(client.ignoresSavedTeam&&appTeamId&&assertOrgIdMatchesAppTeam(client,appTeamId),client.config.currentTeam=appTeamId),!client.config.currentTeam&&defaultTeamId&&(client.config.currentTeam=defaultTeamId),client.isTeamUnchosen()&&await client.chooseTeam({ask:opts.chooseTeam!==!1});let teamId=client.config.currentTeam||defaultTeamId,team=teamId&&opts.getTeam!==!1?await getTeam(client,teamId):null,contextName=team?.slug||user?.username||user?.email;if(!contextName)throw new Error("Unable to determine context name");return opts.resolveLocalScope?resolveLocalScopeContext(client,{user,app,team}):{contextName,team,user,app}}async function getContextName(client,opts={}){let teamId=client.config.currentTeam,cachedSlug=teamId&&!client.authConfig.tokenSource?getCachedTeamSlug(client.config,teamId):void 0;if(cachedSlug&&!(opts.resolveLocalScope&&await hasLocalScope(client)))return output_manager_default.debug(`Using saved name "${cachedSlug}" for team ${teamId}`),cachedSlug;let{contextName,team}=opts.resolveLocalScope?await getScope(client,{resolveLocalScope:!0}):await getScope(client);return team&&!client.authConfig.tokenSource&&setCachedTeamSlug(client,team.id,team.slug),contextName}async function hasLocalScope(client){if(detectExplicitScope(client))return!1;let{localOrgId,isCrossTeamRepo}=await findLocalLink(client);return!!localOrgId||isCrossTeamRepo}async function getPrincipal(client){if(!isAppPrincipalEnabled())return{user:await getUser(client),app:null,token:null};let[userResult,tokenResult]=await Promise.allSettled([getUser(client),introspectToken(client)]),token=tokenResult.status==="fulfilled"?tokenResult.value:null,app=token?resolveAppFromToken(token):null;if(userResult.status==="rejected"&&!(app&&userResult.reason instanceof InvalidToken))throw userResult.reason;return{user:userResult.status==="fulfilled"?userResult.value:null,app,token}}async function resolveLocalScopeContext(client,{user,app,team}){let explicitScopeProvided=detectExplicitScope(client)||client.ignoresSavedTeam&&!!(0,import_build_utils2.getPlatformEnv)("ORG_ID"),globalTeamId=client.config.currentTeam,{localOrgId,linkedRepo,isCrossTeamRepo}=await findLocalLink(client),isAppPrincipal=!user&&!!app,effectiveLocalOrgId=isAppPrincipal?void 0:localOrgId,scopeMismatch=!!(effectiveLocalOrgId&&globalTeamId&&globalTeamId!==effectiveLocalOrgId);!isAppPrincipal&&!explicitScopeProvided&&!effectiveLocalOrgId&&isCrossTeamRepo&&output_manager_default.warn("This repository has projects across multiple teams. Use `--scope` to specify which team, or `cd` into a project directory.");let resolvedTeam=!explicitScopeProvided&&effectiveLocalOrgId?await applyLocalOrg(client,effectiveLocalOrgId):team,{org,contextName}=resolveOrg(resolvedTeam,user);return{org,contextName,user,team:resolvedTeam,app,globalTeam:team,linkedRepo,isCrossTeamRepo,localOrgId:effectiveLocalOrgId,scopeMismatch,explicitScopeProvided}}async function applyLocalOrg(client,localOrgId){return client.config.currentTeam=localOrgId.startsWith("team_")?localOrgId:void 0,client.config.currentTeam?await getTeamByIdOrSlug(client,client.config.currentTeam):null}async function getTeam(client,teamId){let team=await getTeamByIdOrSlug(client,teamId);if(!team)throw new TeamDeleted;return team}function resolveOrg(team,user){if(team)return{org:{type:"team",id:team.id,slug:team.slug},contextName:team.slug};if(user)return{org:{type:"user",id:user.id,slug:user.username},contextName:user.username||user.email};throw new Error("Unable to determine scope: no team or personal account is available for this token. Use `--scope` to specify a team.")}async function getLocalOrgId(client){return(await findLocalLink(client)).localOrgId}async function findLocalLink(client){let[projectLink,repoLink]=await Promise.all([findProjectLink(client),findRepoLink(client)]);return{localOrgId:findLocalOrgId(client.cwd,projectLink,repoLink),linkedRepo:repoLink?.repoConfig?{repoConfig:repoLink.repoConfig,rootPath:repoLink.rootPath}:null,isCrossTeamRepo:detectCrossTeamRepo(repoLink?.repoConfig)}}async function findProjectLink(client){try{return await getLinkFromDir(getVercelDirectory(client.cwd))}catch{return null}}async function findRepoLink(client){try{return await getRepoLink(client,client.cwd)}catch{return null}}function findLocalOrgId(cwd,projectLink,repoLink){if(projectLink)return projectLink.orgId;if(repoLink?.repoConfig)return findRepoOrgId(repoLink.repoConfig,relative(repoLink.rootPath,cwd))}function findRepoOrgId(repoConfig,pathFromRepoRoot){let matchedProjects=findProjectsFromPath(repoConfig.projects,pathFromRepoRoot),projects=matchedProjects.length===0&&pathFromRepoRoot===""?repoConfig.projects:matchedProjects,orgIds=new Set(projects.map(p=>p.orgId??repoConfig.orgId??""));if(orgIds.size!==1)return;let[orgId]=orgIds;return orgId||void 0}function scopeFlagPassed(argv){for(let arg of argv){if(arg==="--")break;if(arg==="--scope"||arg==="--team"||arg.startsWith("--scope=")||arg.startsWith("--team=")||arg==="-S"||arg==="-T")return!0}return!1}function detectExplicitScope(client){return scopeFlagPassed(client.argv)||!!client.localConfig?.scope}function detectCrossTeamRepo(repoConfig){if(!repoConfig?.projects||repoConfig.projects.length<2)return!1;let orgIds=new Set;for(let project of repoConfig.projects){let orgId=project.orgId??repoConfig.orgId;orgId&&orgIds.add(orgId)}return orgIds.size>1}export{introspectToken,isAppPrincipalEnabled,resolveAppFromToken,getAppTokenTeamId,assertOrgIdMatchesAppTeam,resolveAppTokenScope,isActiveAppToken,forgetCachedTeamSlug,getScope,getContextName,getLocalOrgId,scopeFlagPassed,detectExplicitScope};
|
|
@@ -4,4 +4,4 @@ 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{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption,yesOption}from"./chunk-
|
|
7
|
+
import{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption,yesOption}from"./chunk-YPPDRKVC.js";var agentOption={name:"agent",shorthand:null,type:[String],argument:"NAME",deprecated:!1,description:"Select a coding agent (repeatable); plugin setup supports claude-code, codex, and opencode"},dryRunOption={name:"dry-run",shorthand:null,type:Boolean,deprecated:!1,description:"Show what would change without writing any files"},pluginSubcommand={name:"plugin",aliases:[],description:"Install or update the Vercel plugin for Claude Code, Codex, and OpenCode",arguments:[],options:[{...agentOption,description:"Select claude-code, codex, or opencode (repeatable)"},dryRunOption,yesOption],examples:[{name:"Install the Vercel plugin for every detected agent",value:`${packageName} setup plugin`},{name:"Install the Vercel plugin for Codex",value:`${packageName} setup plugin --agent codex`}]},gatewaySubcommand={name:"gateway",aliases:[],description:"Connect local coding agents to the AI Gateway",arguments:[],options:[{...agentOption,description:"Select a coding agent (repeatable)"},{name:"all",shorthand:"a",type:Boolean,deprecated:!1,description:"Configure every supported coding agent"},{name:"key",shorthand:null,type:String,argument:"KEY",deprecated:!1,description:"Use an existing AI Gateway API key instead of creating one"},{name:"reconfigure",shorthand:null,type:Boolean,deprecated:!1,description:"Re-run even if already configured, to rotate the key or switch team"},{name:"no-session-migration",shorthand:null,type:Boolean,deprecated:!1,description:"Do not copy existing Codex Desktop sessions for use with the Vercel AI Gateway provider."},dryRunOption,yesOption],examples:[{name:"Connect detected coding agents to the AI Gateway",value:`${packageName} setup gateway`},{name:"Preview the AI Gateway changes for Claude Code",value:`${packageName} setup gateway --agent claude-code --dry-run`}]},skillsSubcommand={name:"skills",aliases:[],description:"Write the vercel-cli agent skill that ships with this CLI version to ~/.agents/skills, or to --output",arguments:[],options:[{name:"output",shorthand:"o",type:String,argument:"PATH",deprecated:!1,description:"Directory to write the skill into (default: ~/.agents/skills/vercel-cli)"},{name:"dry-run",shorthand:null,type:Boolean,deprecated:!1,description:"Show what would change without writing any files"},formatOption,jsonOption],examples:[{name:"Write the Vercel CLI skill to ~/.agents/skills/vercel-cli",value:`${packageName} setup skills`},{name:"Update the skill after upgrading the CLI",value:`${packageName} setup skills`},{name:"Preview what would change",value:`${packageName} setup skills --dry-run`},{name:"Write the skill into a project or custom agent directory",value:`${packageName} setup skills --output .agents/skills/vercel-cli`}]},setupCommand={name:"setup",aliases:[],summary:"Set up coding agents for Vercel",description:"Set up your machine for Vercel: install the Vercel plugin for Claude Code, Codex, and OpenCode and connect local coding agents to the AI Gateway",arguments:[],runsWithoutSubcommand:!0,subcommands:[pluginSubcommand,gatewaySubcommand,skillsSubcommand],options:[{name:"plugin",shorthand:null,type:Boolean,deprecated:!0,description:"DEPRECATED: Use `vercel setup plugin` instead"},{name:"gateway",shorthand:null,type:Boolean,deprecated:!0,description:"DEPRECATED: Use `vercel setup gateway` instead"},agentOption,dryRunOption,yesOption],examples:[{name:"Set up everything (prompts for each step)",value:`${packageName} setup`},{name:"Only connect coding agents to the AI Gateway",value:`${packageName} setup gateway`},{name:"Install the Vercel plugin for Codex",value:`${packageName} setup plugin --agent codex`},{name:"Preview what setup would change",value:`${packageName} setup --dry-run`},{name:"Run setup without prompts",value:`${packageName} setup --yes`},{name:"Write the Vercel CLI skill that matches this CLI version",value:`${packageName} setup skills`}]};export{pluginSubcommand,gatewaySubcommand,skillsSubcommand,setupCommand};
|
|
@@ -4,4 +4,4 @@ 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{getCommandName}from"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-
|
|
7
|
+
import{getCommandName}from"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-ZRJKGAUT.js";var OUTPUT_FORMATS=["json"];function parseOutputFormat(value){let normalized=value.toLowerCase();if(OUTPUT_FORMATS.includes(normalized))return normalized;throw new Error(`Invalid output format: "${value}". Valid formats: ${OUTPUT_FORMATS.join(", ")}`)}function getOutputFormat(flags){let formatFlag=flags["--format"],jsonFlag=flags["--json"];if(formatFlag)return parseOutputFormat(formatFlag);if(jsonFlag)return"json"}function isJsonOutput(flags){return getOutputFormat(flags)==="json"}function validateJsonOutput(flags){try{return{valid:!0,jsonOutput:isJsonOutput(flags)}}catch(err){return{valid:!1,error:err.message}}}function wantsMachineReadableOutput(subcommand,argv){if(argv.includes("--help")||argv.includes("-h"))return!1;if(subcommand==="api"||argv.includes("--json"))return!0;for(let arg of argv)if(arg.toLowerCase()==="--format=json")return!0;let formatIdx=argv.indexOf("--format");return formatIdx!==-1&&argv[formatIdx+1]?.toLowerCase()==="json"}function shouldPrintVersionBanner(subcommand,argv){return!wantsMachineReadableOutput(subcommand,argv)}function warnDeprecatedSubcommand(client,deprecated,replacement){wantsMachineReadableOutput(void 0,client.argv)||output_manager_default.warning(`${getCommandName(deprecated)} is deprecated. Use ${getCommandName(replacement)}.`)}function warnDeprecatedOption(argv,deprecated,replacement){wantsMachineReadableOutput(void 0,argv)||output_manager_default.warning(`${deprecated} is deprecated. Use ${replacement}.`)}function warnDeprecatedInput(client,deprecated,replacement){wantsMachineReadableOutput(void 0,client.argv)||output_manager_default.warning(`${deprecated} is deprecated. Use ${replacement}.`)}export{validateJsonOutput,wantsMachineReadableOutput,shouldPrintVersionBanner,warnDeprecatedSubcommand,warnDeprecatedOption,warnDeprecatedInput};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'node:url';
|
|
3
|
+
import { dirname as __dirname_ } from 'node:path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __dirname_(__filename);
|
|
7
|
+
import{__commonJS}from"./chunk-BZENIQ7N.js";var require_escape_string_regexp=__commonJS({"../../node_modules/.pnpm/escape-string-regexp@1.0.5/node_modules/escape-string-regexp/index.js"(exports,module){"use strict";var matchOperatorsRe=/[|\\{}()[\]^$+*?.]/g;module.exports=function(str){if(typeof str!="string")throw new TypeError("Expected a string");return str.replace(matchOperatorsRe,"\\$&")}}});var require_figures=__commonJS({"../../node_modules/.pnpm/figures@3.2.0/node_modules/figures/index.js"(exports,module){"use strict";var escapeStringRegexp=require_escape_string_regexp(),{platform}=process,main={tick:"\u2714",cross:"\u2716",star:"\u2605",square:"\u2587",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",play:"\u25B6",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",circleQuestionMark:"?\u20DD",bullet:"\u25CF",dot:"\u2024",line:"\u2500",ellipsis:"\u2026",pointer:"\u276F",pointerSmall:"\u203A",info:"\u2139",warning:"\u26A0",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",heart:"\u2665",nodejs:"\u2B22",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",questionMarkPrefix:"?\u20DD",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneSeventh:"\u2150",oneEighth:"\u215B",oneNinth:"\u2151",oneTenth:"\u2152",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E"},windows={tick:"\u221A",cross:"\xD7",star:"*",square:"\u2588",squareSmall:"[ ]",squareSmallFilled:"[\u2588]",play:"\u25BA",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",circleQuestionMark:"(?)",bullet:"*",dot:".",line:"\u2500",ellipsis:"...",pointer:">",pointerSmall:"\xBB",info:"i",warning:"\u203C",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",heart:main.heart,nodejs:"\u2666",arrowUp:main.arrowUp,arrowDown:main.arrowDown,arrowLeft:main.arrowLeft,arrowRight:main.arrowRight,radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",questionMarkPrefix:"\uFF1F",oneHalf:"1/2",oneThird:"1/3",oneQuarter:"1/4",oneFifth:"1/5",oneSixth:"1/6",oneSeventh:"1/7",oneEighth:"1/8",oneNinth:"1/9",oneTenth:"1/10",twoThirds:"2/3",twoFifths:"2/5",threeQuarters:"3/4",threeFifths:"3/5",threeEighths:"3/8",fourFifths:"4/5",fiveSixths:"5/6",fiveEighths:"5/8",sevenEighths:"7/8"};platform==="linux"&&(main.questionMarkPrefix="?");var figures=platform==="win32"?windows:main,fn=string=>{if(figures===main)return string;for(let[key,value]of Object.entries(main))value!==figures[key]&&(string=string.replace(new RegExp(escapeStringRegexp(value),"g"),figures[key]));return string};module.exports=Object.assign(fn,figures);module.exports.main=main;module.exports.windows=windows}});export{require_figures};
|
|
@@ -4,4 +4,4 @@ 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{printProjectNotFoundError}from"./chunk-
|
|
7
|
+
import{printProjectNotFoundError}from"./chunk-ZBJ44DRL.js";import{detectExplicitScope}from"./chunk-IU6PHFPQ.js";import{omitGlobalFlagsFromArgs}from"./chunk-KAUKCHQF.js";import{getLinkedProject}from"./chunk-QZEZCUUZ.js";function getInvokingCommandFromArgv(argv){let args=omitGlobalFlagsFromArgs(argv.slice(2)),positionals=[];for(let arg of args){if(arg.startsWith("-"))break;positionals.push(arg)}return positionals.join(" ")}async function resolveProjectContext({client,cwd=client.cwd,projectNameOrId,commandName="",projectNotFoundHandling="report",skipOwnerLookup,quiet}){let context=await getLinkedProject(client,{cwd,projectName:projectNameOrId,projectNameIsExplicit:!!projectNameOrId,scopeIsExplicit:detectExplicitScope(client),skipOwnerLookup,quiet});return context.status==="not_linked"&&projectNameOrId&&projectNotFoundHandling==="report"?(await printProjectNotFoundError(client,projectNameOrId,commandName||getInvokingCommandFromArgv(client.argv),context.orgId),{status:"error",exitCode:1,orgId:context.orgId}):context}export{resolveProjectContext};
|
|
@@ -4,4 +4,4 @@ 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{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption,limitOption,nextCursorOption,projectOption,sinceOption,untilOption}from"./chunk-
|
|
7
|
+
import{packageName}from"./chunk-JESNVRVR.js";import{formatOption,jsonOption,limitOption,nextCursorOption,projectOption,sinceOption,untilOption}from"./chunk-YPPDRKVC.js";var typesSubcommand={name:"types",aliases:[],description:"List available event types with descriptions.",arguments:[],options:[formatOption,jsonOption],examples:[{name:"List all event types",value:`${packageName} activity types`},{name:"Output JSON",value:`${packageName} activity types --json`}]},activityCommand={name:"activity",aliases:[],description:"List user activity events.",arguments:[],subcommands:[{name:"ls",aliases:["list"],description:"",default:!0,hidden:!0,arguments:[],options:[],examples:[]},typesSubcommand],options:[{name:"type",shorthand:null,type:[String],argument:"TYPE",deprecated:!1,description:"Filter by event type. Repeatable and comma-separated (e.g. --type deployment --type project-created or --type deployment,project-created)."},sinceOption,untilOption,{...projectOption,shorthand:"p",description:"Filter by project (overrides auto-detected linked project)."},{name:"all",shorthand:"a",type:Boolean,deprecated:!1,description:"Show all team events (ignore linked project auto-scoping)."},limitOption,nextCursorOption,formatOption,jsonOption],examples:[{name:"List events for the linked project",value:`${packageName} activity`},{name:"Filter events by multiple types",value:`${packageName} activity --type deployment --type project-created --since 7d`},{name:"Filter events by comma-separated types",value:`${packageName} activity --type deployment,project-created --since 7d`},{name:"List all team events",value:`${packageName} activity --all --since 30d`},{name:"Output JSON",value:`${packageName} activity --json | jq '.events[]'`},{name:"List activity event types",value:`${packageName} activity types`}]};export{typesSubcommand,activityCommand};
|
|
@@ -4,4 +4,4 @@ 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{require_json_parse_better_errors}from"./chunk-25565AGS.js";import{require_lib}from"./chunk-
|
|
7
|
+
import{require_json_parse_better_errors}from"./chunk-25565AGS.js";import{require_lib}from"./chunk-QZEZCUUZ.js";import{CantParseJSONFile}from"./chunk-FXEMEIST.js";import{require_dist}from"./chunk-RM3ZDRYE.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_fs_extra=__toESM(require_lib(),1);var import_json_parse_better_errors=__toESM(require_json_parse_better_errors(),1),import_error_utils=__toESM(require_dist(),1);async function readJSONFile(file){let content=await readFileSafe(file);if(content===null)return content;try{return(0,import_json_parse_better_errors.default)(content)}catch(error){return new CantParseJSONFile(file,(0,import_error_utils.errorToString)(error))}}async function readFileSafe(file){try{return await import_fs_extra.default.readFile(file,"utf8")}catch{return null}}export{readJSONFile};
|