vercel 64.3.1 → 64.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/chunks/{add-RFCYPSPS.js → add-FRVZLYB5.js} +1 -1
  2. package/dist/chunks/{build-SE3QLNVF.js → build-F5GOX2EV.js} +1 -1
  3. package/dist/chunks/{chunk-KGXW36FQ.js → chunk-6RVMAWKT.js} +1 -1
  4. package/dist/chunks/{chunk-CN3IVZJO.js → chunk-7NNENHGN.js} +1 -1
  5. package/dist/chunks/chunk-BFRDBBSO.js +7 -0
  6. package/dist/chunks/{chunk-26Z4U6G4.js → chunk-DWEDXCBK.js} +1 -1
  7. package/dist/chunks/chunk-NLCTF4EJ.js +14 -0
  8. package/dist/chunks/{chunk-YUYCSDCO.js → chunk-OXAPCSYY.js} +1 -1
  9. package/dist/chunks/{chunk-BTCKMXWW.js → chunk-UQIVF4Q2.js} +1 -1
  10. package/dist/chunks/chunk-XXCWQPAH.js +7 -0
  11. package/dist/chunks/{chunk-VVAZC5IO.js → chunk-ZVTI6BRR.js} +1 -1
  12. package/dist/chunks/{config-6YWGF4CO.js → config-AZ2O2E4R.js} +1 -1
  13. package/dist/chunks/{config-VAOXMKVX.js → config-D22GD5IM.js} +1 -1
  14. package/dist/chunks/{delete-FEUSV3JO.js → delete-4JCBFL7Y.js} +1 -1
  15. package/dist/chunks/{delete-YW2NH7VG.js → delete-UOY7IFZV.js} +1 -1
  16. package/dist/chunks/{disable-KA6PS2CZ.js → disable-Q5BTSVR7.js} +1 -1
  17. package/dist/chunks/{discard-ZNUPAJTQ.js → discard-5LQP6CPX.js} +1 -1
  18. package/dist/chunks/{edit-D7VE55ZF.js → edit-3XGKBSUZ.js} +2 -2
  19. package/dist/chunks/edit-R5X24DJJ.js +8 -0
  20. package/dist/chunks/{enable-Q4OCTJIJ.js → enable-V2IPH6TD.js} +1 -1
  21. package/dist/chunks/{export-UX6JVWOD.js → export-WLJE6AJW.js} +1 -1
  22. package/dist/chunks/{inspect-UPXTGUJQ.js → inspect-DZMXSBMA.js} +1 -1
  23. package/dist/chunks/{inspect-YAMAGNIW.js → inspect-VVYQWFTM.js} +1 -1
  24. package/dist/chunks/{list-FDYB6GHF.js → list-DXOVBT4F.js} +1 -1
  25. package/dist/chunks/{login-XYYNIAMM.js → login-XPUGYRGM.js} +1 -1
  26. package/dist/chunks/{ls-MO3R46TQ.js → ls-PF2XG6UU.js} +1 -1
  27. package/dist/chunks/notifications-WUCV63TE.js +7 -0
  28. package/dist/chunks/{open-YPOEUM3S.js → open-QJE5QER2.js} +1 -1
  29. package/dist/chunks/{publish-CATCXJZG.js → publish-XR24NSTQ.js} +1 -1
  30. package/dist/chunks/{push-KZZE3AQ3.js → push-YOAY5F5X.js} +1 -1
  31. package/dist/chunks/{reorder-XU55LOZ5.js → reorder-TQGSMCBZ.js} +1 -1
  32. package/dist/chunks/{reply-B2XOCSZD.js → reply-G4EVGJQ3.js} +1 -1
  33. package/dist/chunks/{resolve-H4BZ2QI3.js → resolve-SNM6MK5J.js} +1 -1
  34. package/dist/chunks/{restore-AJLS2N6C.js → restore-3NDP224I.js} +1 -1
  35. package/dist/chunks/{rm-ZQUVOC3V.js → rm-REZG7TP4.js} +1 -1
  36. package/dist/chunks/{routes-TCMUHSJF.js → routes-LK2HUGAK.js} +1 -1
  37. package/dist/chunks/{rules-SVLVB6YB.js → rules-XSLHADBV.js} +1 -1
  38. package/dist/commands/deploy/index.js +11 -11
  39. package/dist/commands/env/index.js +1 -1
  40. package/dist/commands/link/index.js +1 -1
  41. package/dist/commands-bulk.js +27 -26
  42. package/dist/index.js +1 -1
  43. package/dist/version.mjs +1 -1
  44. package/package.json +19 -19
  45. package/dist/chunks/chunk-2FHICLHJ.js +0 -7
  46. package/dist/chunks/chunk-H7CRPXOA.js +0 -14
  47. package/dist/chunks/chunk-ZE53XHAY.js +0 -7
  48. package/dist/chunks/edit-YTYYBVZN.js +0 -8
  49. package/dist/chunks/notifications-TDSFYYNB.js +0 -7
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{renderThreadRow}from"./chunk-GNV6PG6W.js";import{handleCommentsParseError,inferBranch,listThreads,resolveCommentsScope}from"./chunk-ZLWTPS5T.js";import{handleValidationError,outputError,validateIntegerRangeWithDefault}from"./chunk-ZQKDO5PL.js";import"./chunk-F4KY2TOK.js";import"./chunk-ID663OJ7.js";import"./chunk-6ZRULOO3.js";import"./chunk-GCSAJUL6.js";import{listSubcommand}from"./chunk-CN3IVZJO.js";import"./chunk-QAETJRKX.js";import"./chunk-BS32OUOC.js";import{validateJsonOutput}from"./chunk-D4MW3RDW.js";import{getScope}from"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import"./chunk-BAT6SDBJ.js";import{getFlagsSpecification,stripSensitiveAuthArgs}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import{getCommandName}from"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);function validateStatus(value){let status=value??"unresolved";if(["unresolved","resolved","all"].includes(status))return status}async function resolveAuthors(client,authors,jsonOutput){if(!authors||authors.length===0)return;if(!authors.includes("me"))return authors;let{user}=await getScope(client);return user?authors.map(author=>author==="me"?user.id:author):outputError(client,jsonOutput,"USER_REQUIRED","Can't resolve `--author me` when authenticated as an app. Use an author ID with `--author`, or authenticate with a user token.")}function statusWord(status){return status==="all"?"":` ${status}`}function printActiveFilters(flags){let parts=[];flags["--author"]?.length&&parts.push(`--author ${flags["--author"].join(", ")} (takes a user ID or \`me\` \u2014 usernames match nothing)`);let pagePaths=flags["--page-path"]??flags["--page"];pagePaths?.length&&parts.push(`--page-path ${pagePaths.join(", ")}`),flags["--search"]&&parts.push(`--search ${flags["--search"]}`),flags["--content-id"]?.length&&parts.push(`--content-id ${flags["--content-id"].join(", ")}`),parts.length>0&&output_manager_default.log(`Filters: ${parts.join(" \xB7 ")}`)}function countLine(count,status){return`${count}${statusWord(status)} comment${count===1?"":"s"}`}var SCOPE_FLAG_NAMES=new Set(["--scope","-S","--project","-p","--team","-T"]);function argvFlagTokens(client){return stripSensitiveAuthArgs(client.argv.slice(3))}function scopeFlagsSuffix(client){let tokens=argvFlagTokens(client),out=[];for(let i=0;i<tokens.length;i++){let token=tokens[i],name=token.split("=")[0];SCOPE_FLAG_NAMES.has(name)&&(out.push(token),!token.includes("=")&&i+1<tokens.length&&out.push(tokens[++i]))}return out.length>0?` ${out.join(" ")}`:""}function nextPageFlagsSuffix(client){let tokens=argvFlagTokens(client),out=[];for(let i=0;i<tokens.length;i++){let token=tokens[i];if(!token.startsWith("-"))continue;let name=token.split("=")[0];if(name==="--next"||name==="-N"){!token.includes("=")&&i+1<tokens.length&&i++;continue}out.push(name==="--page"?token.replace(/^--page(?==|$)/,"--page-path"):token),!token.includes("=")&&i+1<tokens.length&&!tokens[i+1].startsWith("-")&&out.push(tokens[++i])}return out.length>0?` ${out.join(" ")}`:""}function shellSafe(value){return/^[A-Za-z0-9._/-]+$/.test(value)?value:`'${value.replace(/'/g,"'\\''")}'`}async function printEmptyState(client,scope,focus,params,status,flags){let probe;try{probe=await listThreads(client,scope.teamId,{...params,branch:void 0,cursor:void 0,limit:20})}catch{output_manager_default.log(`No${statusWord(status)} comments on ${focus.value}.`);return}let branches=new Map;for(let thread of probe.threads){let branch=thread.branch??"(no branch)";branches.set(branch,(branches.get(branch)??0)+1)}if(branches.size===0){output_manager_default.log(`No${statusWord(status)} comments in ${scope.projectName??"this project"} on any branch.`),printActiveFilters(flags);return}output_manager_default.log(`No${statusWord(status)} comments on ${focus.value}.`);let suffix=probe.pagination.nextCursor?"+":"",scopeSuffix=scopeFlagsSuffix(client);if(branches.size===1){let[branch,count]=[...branches.entries()][0];output_manager_default.log(`${count}${suffix}${statusWord(status)} on ${import_chalk.default.bold(branch)} \u2014 run ${getCommandName(`comments --branch ${shellSafe(branch)}${scopeSuffix}`)}`);return}let total=[...branches.values()].reduce((a,b)=>a+b,0);output_manager_default.log(`${total}${suffix}${statusWord(status)} on other branches \u2014 run ${getCommandName(`comments --all-branches${scopeSuffix}`)}`)}async function list(client,telemetry,defaultInvocation){let parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,"list")}let flags=parsedArgs.flags,pagePaths=flags["--page-path"]??flags["--page"],expectedPositionals=defaultInvocation?1:2;if(parsedArgs.args.length>expectedPositionals)return output_manager_default.error(`Unknown ${defaultInvocation?"subcommand":"argument"} "${parsedArgs.args[expectedPositionals]}". Run \`vercel comments --help\` for usage.`),1;let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let jsonOutput=formatResult.jsonOutput;telemetry.trackCliOptionProject(flags["--project"]),telemetry.trackCliOptionBranch(flags["--branch"]),telemetry.trackCliFlagAllBranches(flags["--all-branches"]),telemetry.trackCliOptionStatus(flags["--status"]),telemetry.trackCliOptionPagePath(flags["--page-path"]),telemetry.trackCliOptionPage(flags["--page"]),telemetry.trackCliOptionAuthor(flags["--author"]),telemetry.trackCliOptionContentId(flags["--content-id"]),telemetry.trackCliOptionSearch(flags["--search"]),telemetry.trackCliOptionLimit(flags["--limit"]),telemetry.trackCliOptionNext(flags["--next"]),telemetry.trackCliOptionFormat(flags["--format"]);let status=validateStatus(flags["--status"]);if(!status)return outputError(client,jsonOutput,"INVALID_STATUS",`Invalid --status "${flags["--status"]}". Valid values: unresolved, resolved, all.`);let limitResult=validateIntegerRangeWithDefault(flags["--limit"],{flag:"--limit",min:1,max:100,defaultValue:20});if(!limitResult.valid)return handleValidationError(limitResult,jsonOutput,client);if(flags["--branch"]&&flags["--all-branches"])return outputError(client,jsonOutput,"MUTUAL_EXCLUSIVITY","Cannot specify both --branch and --all-branches.");let scope=await resolveCommentsScope(client,{project:flags["--project"],requireProject:!0,jsonOutput});if(typeof scope=="number")return scope;let focus,branchFilter;if(flags["--branch"]&&flags["--branch"].length>0)branchFilter=flags["--branch"],focus={value:branchFilter.join(", "),source:"flag"};else if(!flags["--all-branches"]&&scope.linked){let inferred=inferBranch(client.cwd);inferred&&(focus=inferred,branchFilter=[inferred.value])}let authors=await resolveAuthors(client,flags["--author"],jsonOutput);if(typeof authors=="number")return authors;let params={projectId:scope.projectId,branch:branchFilter,status:status==="all"?void 0:status,page:pagePaths,author:authors,contentId:flags["--content-id"],search:flags["--search"],limit:limitResult.value,cursor:flags["--next"]};jsonOutput||output_manager_default.spinner("Fetching comments\u2026");let response;try{response=await listThreads(client,scope.teamId,params)}catch(err){if(isAPIError(err))return outputError(client,jsonOutput,err.code||"API_ERROR",err.serverMessage||`API error (${err.status}).`);throw err}finally{output_manager_default.stopSpinner()}let threads=response.threads??[],nextCursor=response.pagination?.nextCursor??null;if(jsonOutput){let envelope={scope:{teamId:scope.teamId,...scope.teamSlug&&{teamSlug:scope.teamSlug},...scope.projectId&&{projectId:scope.projectId},...scope.projectName&&{projectName:scope.projectName},...focus&&focus.source!=="flag"&&{inferredBranch:focus.value}},filters:{...status!=="all"&&{status},...focus&&{branch:{value:focus.value,source:focus.source}}},pagination:{nextCursor},threads};return client.stdout.write(`${JSON.stringify(envelope,null,2)}
7
+ import{renderThreadRow}from"./chunk-GNV6PG6W.js";import{handleCommentsParseError,inferBranch,listThreads,resolveCommentsScope}from"./chunk-ZLWTPS5T.js";import{handleValidationError,outputError,validateIntegerRangeWithDefault}from"./chunk-ZQKDO5PL.js";import"./chunk-F4KY2TOK.js";import"./chunk-ID663OJ7.js";import"./chunk-6ZRULOO3.js";import"./chunk-GCSAJUL6.js";import{listSubcommand}from"./chunk-7NNENHGN.js";import"./chunk-QAETJRKX.js";import"./chunk-BS32OUOC.js";import{validateJsonOutput}from"./chunk-D4MW3RDW.js";import{getScope}from"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import"./chunk-BAT6SDBJ.js";import{getFlagsSpecification,stripSensitiveAuthArgs}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import{getCommandName}from"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);function validateStatus(value){let status=value??"unresolved";if(["unresolved","resolved","all"].includes(status))return status}async function resolveAuthors(client,authors,jsonOutput){if(!authors||authors.length===0)return;if(!authors.includes("me"))return authors;let{user}=await getScope(client);return user?authors.map(author=>author==="me"?user.id:author):outputError(client,jsonOutput,"USER_REQUIRED","Can't resolve `--author me` when authenticated as an app. Use an author ID with `--author`, or authenticate with a user token.")}function statusWord(status){return status==="all"?"":` ${status}`}function printActiveFilters(flags){let parts=[];flags["--author"]?.length&&parts.push(`--author ${flags["--author"].join(", ")} (takes a user ID or \`me\` \u2014 usernames match nothing)`);let pagePaths=flags["--page-path"]??flags["--page"];pagePaths?.length&&parts.push(`--page-path ${pagePaths.join(", ")}`),flags["--search"]&&parts.push(`--search ${flags["--search"]}`),flags["--content-id"]?.length&&parts.push(`--content-id ${flags["--content-id"].join(", ")}`),parts.length>0&&output_manager_default.log(`Filters: ${parts.join(" \xB7 ")}`)}function countLine(count,status){return`${count}${statusWord(status)} comment${count===1?"":"s"}`}var SCOPE_FLAG_NAMES=new Set(["--scope","-S","--project","-p","--team","-T"]);function argvFlagTokens(client){return stripSensitiveAuthArgs(client.argv.slice(3))}function scopeFlagsSuffix(client){let tokens=argvFlagTokens(client),out=[];for(let i=0;i<tokens.length;i++){let token=tokens[i],name=token.split("=")[0];SCOPE_FLAG_NAMES.has(name)&&(out.push(token),!token.includes("=")&&i+1<tokens.length&&out.push(tokens[++i]))}return out.length>0?` ${out.join(" ")}`:""}function nextPageFlagsSuffix(client){let tokens=argvFlagTokens(client),out=[];for(let i=0;i<tokens.length;i++){let token=tokens[i];if(!token.startsWith("-"))continue;let name=token.split("=")[0];if(name==="--next"||name==="-N"){!token.includes("=")&&i+1<tokens.length&&i++;continue}out.push(name==="--page"?token.replace(/^--page(?==|$)/,"--page-path"):token),!token.includes("=")&&i+1<tokens.length&&!tokens[i+1].startsWith("-")&&out.push(tokens[++i])}return out.length>0?` ${out.join(" ")}`:""}function shellSafe(value){return/^[A-Za-z0-9._/-]+$/.test(value)?value:`'${value.replace(/'/g,"'\\''")}'`}async function printEmptyState(client,scope,focus,params,status,flags){let probe;try{probe=await listThreads(client,scope.teamId,{...params,branch:void 0,cursor:void 0,limit:20})}catch{output_manager_default.log(`No${statusWord(status)} comments on ${focus.value}.`);return}let branches=new Map;for(let thread of probe.threads){let branch=thread.branch??"(no branch)";branches.set(branch,(branches.get(branch)??0)+1)}if(branches.size===0){output_manager_default.log(`No${statusWord(status)} comments in ${scope.projectName??"this project"} on any branch.`),printActiveFilters(flags);return}output_manager_default.log(`No${statusWord(status)} comments on ${focus.value}.`);let suffix=probe.pagination.nextCursor?"+":"",scopeSuffix=scopeFlagsSuffix(client);if(branches.size===1){let[branch,count]=[...branches.entries()][0];output_manager_default.log(`${count}${suffix}${statusWord(status)} on ${import_chalk.default.bold(branch)} \u2014 run ${getCommandName(`comments --branch ${shellSafe(branch)}${scopeSuffix}`)}`);return}let total=[...branches.values()].reduce((a,b)=>a+b,0);output_manager_default.log(`${total}${suffix}${statusWord(status)} on other branches \u2014 run ${getCommandName(`comments --all-branches${scopeSuffix}`)}`)}async function list(client,telemetry,defaultInvocation){let parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,"list")}let flags=parsedArgs.flags,pagePaths=flags["--page-path"]??flags["--page"],expectedPositionals=defaultInvocation?1:2;if(parsedArgs.args.length>expectedPositionals)return output_manager_default.error(`Unknown ${defaultInvocation?"subcommand":"argument"} "${parsedArgs.args[expectedPositionals]}". Run \`vercel comments --help\` for usage.`),1;let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let jsonOutput=formatResult.jsonOutput;telemetry.trackCliOptionProject(flags["--project"]),telemetry.trackCliOptionBranch(flags["--branch"]),telemetry.trackCliFlagAllBranches(flags["--all-branches"]),telemetry.trackCliOptionStatus(flags["--status"]),telemetry.trackCliOptionPagePath(flags["--page-path"]),telemetry.trackCliOptionPage(flags["--page"]),telemetry.trackCliOptionAuthor(flags["--author"]),telemetry.trackCliOptionContentId(flags["--content-id"]),telemetry.trackCliOptionSearch(flags["--search"]),telemetry.trackCliOptionLimit(flags["--limit"]),telemetry.trackCliOptionNext(flags["--next"]),telemetry.trackCliOptionFormat(flags["--format"]);let status=validateStatus(flags["--status"]);if(!status)return outputError(client,jsonOutput,"INVALID_STATUS",`Invalid --status "${flags["--status"]}". Valid values: unresolved, resolved, all.`);let limitResult=validateIntegerRangeWithDefault(flags["--limit"],{flag:"--limit",min:1,max:100,defaultValue:20});if(!limitResult.valid)return handleValidationError(limitResult,jsonOutput,client);if(flags["--branch"]&&flags["--all-branches"])return outputError(client,jsonOutput,"MUTUAL_EXCLUSIVITY","Cannot specify both --branch and --all-branches.");let scope=await resolveCommentsScope(client,{project:flags["--project"],requireProject:!0,jsonOutput});if(typeof scope=="number")return scope;let focus,branchFilter;if(flags["--branch"]&&flags["--branch"].length>0)branchFilter=flags["--branch"],focus={value:branchFilter.join(", "),source:"flag"};else if(!flags["--all-branches"]&&scope.linked){let inferred=inferBranch(client.cwd);inferred&&(focus=inferred,branchFilter=[inferred.value])}let authors=await resolveAuthors(client,flags["--author"],jsonOutput);if(typeof authors=="number")return authors;let params={projectId:scope.projectId,branch:branchFilter,status:status==="all"?void 0:status,page:pagePaths,author:authors,contentId:flags["--content-id"],search:flags["--search"],limit:limitResult.value,cursor:flags["--next"]};jsonOutput||output_manager_default.spinner("Fetching comments\u2026");let response;try{response=await listThreads(client,scope.teamId,params)}catch(err){if(isAPIError(err))return outputError(client,jsonOutput,err.code||"API_ERROR",err.serverMessage||`API error (${err.status}).`);throw err}finally{output_manager_default.stopSpinner()}let threads=response.threads??[],nextCursor=response.pagination?.nextCursor??null;if(jsonOutput){let envelope={scope:{teamId:scope.teamId,...scope.teamSlug&&{teamSlug:scope.teamSlug},...scope.projectId&&{projectId:scope.projectId},...scope.projectName&&{projectName:scope.projectName},...focus&&focus.source!=="flag"&&{inferredBranch:focus.value}},filters:{...status!=="all"&&{status},...focus&&{branch:{value:focus.value,source:focus.source}}},pagination:{nextCursor},threads};return client.stdout.write(`${JSON.stringify(envelope,null,2)}
8
8
  `),0}let branchLabel=focus?focus.value:"all branches";if(output_manager_default.log(`Comments in ${import_chalk.default.bold(scope.projectName??scope.projectId??"")} \xB7 ${branchLabel}`),threads.length===0)return focus?await printEmptyState(client,scope,focus,params,status,flags):(output_manager_default.log(`No${statusWord(status)} comments in ${scope.projectName??"this project"}.`),printActiveFilters(flags)),0;output_manager_default.print(`
9
9
  `);for(let thread of threads)output_manager_default.print(`${renderThreadRow(thread,{showBranch:!focus})}
10
10
 
@@ -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{AUTH_FAILURE,CREDENTIAL_STORE_CONFLICT,VCR_ENGINES,VCR_LOGIN_USERNAME,emitVcrArgParseError,engineLogin,engineLogout,handleVcrApiError,isEngineInstalled,resolveRegistry,resolveVcrScope,stderrTail,validateVcrChoice,validateVcrJsonOutput}from"./chunk-IYCHAIFZ.js";import{outputError}from"./chunk-ZQKDO5PL.js";import"./chunk-KKCBFBJK.js";import{loginSubcommand}from"./chunk-2FHICLHJ.js";import"./chunk-2UMWTCY7.js";import"./chunk-Q5ZGA2RO.js";import"./chunk-UGMTKOTN.js";import"./chunk-FBYA6LLM.js";import"./chunk-SCV7XEEO.js";import{printError}from"./chunk-QAETJRKX.js";import"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";var LOGIN_VALID_HOURS=12;async function login(client,argv,telemetry){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(loginSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr login <engine> --project <name-or-id>"),printError(err),2}let fr=validateVcrJsonOutput(client,parsedArgs.flags);if(typeof fr=="number")return fr;let engineArg=parsedArgs.args[0],project=parsedArgs.flags["--project"];if(telemetry.trackCliArgumentEngine(engineArg),telemetry.trackCliOptionProject(project),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),!engineArg){let message=`Missing engine. Choose one of: ${VCR_ENGINES.join(", ")}.`;return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,"vcr login docker"),when:"Replace docker with the container tool you use"}]},2),outputError(client,fr.jsonOutput,"MISSING_ARGUMENTS",message)}let choiceError=validateVcrChoice(client,"engine",engineArg,VCR_ENGINES,fr.jsonOutput);if(typeof choiceError=="number")return choiceError;let engine=engineArg;if(!isEngineInstalled(engine)){let message=`\`${engine}\` is not installed or not on your PATH. Install it and try again.`;return outputAgentError(client,{status:"error",reason:"engine_not_found",message},1),outputError(client,fr.jsonOutput,"ENGINE_NOT_FOUND",message)}let scope=await resolveVcrScope(client,{project,jsonOutput:fr.jsonOutput});if(typeof scope=="number")return scope;let registry=resolveRegistry();output_manager_default.spinner(`Authenticating ${engine} with ${registry}...`);try{let{token}=await client.fetch(`/projects/${scope.projectId}/token`,{method:"POST",accountId:scope.teamId,body:JSON.stringify({source:"vercel-cli"}),headers:{"Content-Type":"application/json"}}),result=await engineLogin(engine,registry,token);if(result.exitCode!==0&&CREDENTIAL_STORE_CONFLICT.test(result.stderr)&&(output_manager_default.debug(`Stale ${registry} credential in the ${engine} credential store; running \`${engine} logout\` and retrying`),await engineLogout(engine,registry),result=await engineLogin(engine,registry,token)),result.exitCode!==0){let message=AUTH_FAILURE.test(result.stderr)?`Authentication to ${registry} as "${VCR_LOGIN_USERNAME}" was rejected. The OIDC token may be expired or lack access to this project.`:`\`${engine} login\` failed (exit code ${result.exitCode}).${stderrTail(result.stderr)?`
7
+ import{AUTH_FAILURE,CREDENTIAL_STORE_CONFLICT,VCR_ENGINES,VCR_LOGIN_USERNAME,emitVcrArgParseError,engineLogin,engineLogout,handleVcrApiError,isEngineInstalled,resolveRegistry,resolveVcrScope,stderrTail,validateVcrChoice,validateVcrJsonOutput}from"./chunk-IYCHAIFZ.js";import{outputError}from"./chunk-ZQKDO5PL.js";import"./chunk-KKCBFBJK.js";import{loginSubcommand}from"./chunk-BFRDBBSO.js";import"./chunk-2UMWTCY7.js";import"./chunk-Q5ZGA2RO.js";import"./chunk-UGMTKOTN.js";import"./chunk-FBYA6LLM.js";import"./chunk-SCV7XEEO.js";import{printError}from"./chunk-QAETJRKX.js";import"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";var LOGIN_VALID_HOURS=12;async function login(client,argv,telemetry){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(loginSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr login <engine> --project <name-or-id>"),printError(err),2}let fr=validateVcrJsonOutput(client,parsedArgs.flags);if(typeof fr=="number")return fr;let engineArg=parsedArgs.args[0],project=parsedArgs.flags["--project"];if(telemetry.trackCliArgumentEngine(engineArg),telemetry.trackCliOptionProject(project),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),!engineArg){let message=`Missing engine. Choose one of: ${VCR_ENGINES.join(", ")}.`;return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,"vcr login docker"),when:"Replace docker with the container tool you use"}]},2),outputError(client,fr.jsonOutput,"MISSING_ARGUMENTS",message)}let choiceError=validateVcrChoice(client,"engine",engineArg,VCR_ENGINES,fr.jsonOutput);if(typeof choiceError=="number")return choiceError;let engine=engineArg;if(!isEngineInstalled(engine)){let message=`\`${engine}\` is not installed or not on your PATH. Install it and try again.`;return outputAgentError(client,{status:"error",reason:"engine_not_found",message},1),outputError(client,fr.jsonOutput,"ENGINE_NOT_FOUND",message)}let scope=await resolveVcrScope(client,{project,jsonOutput:fr.jsonOutput});if(typeof scope=="number")return scope;let registry=resolveRegistry();output_manager_default.spinner(`Authenticating ${engine} with ${registry}...`);try{let{token}=await client.fetch(`/projects/${scope.projectId}/token`,{method:"POST",accountId:scope.teamId,body:JSON.stringify({source:"vercel-cli"}),headers:{"Content-Type":"application/json"}}),result=await engineLogin(engine,registry,token);if(result.exitCode!==0&&CREDENTIAL_STORE_CONFLICT.test(result.stderr)&&(output_manager_default.debug(`Stale ${registry} credential in the ${engine} credential store; running \`${engine} logout\` and retrying`),await engineLogout(engine,registry),result=await engineLogin(engine,registry,token)),result.exitCode!==0){let message=AUTH_FAILURE.test(result.stderr)?`Authentication to ${registry} as "${VCR_LOGIN_USERNAME}" was rejected. The OIDC token may be expired or lack access to this project.`:`\`${engine} login\` failed (exit code ${result.exitCode}).${stderrTail(result.stderr)?`
8
8
  ${stderrTail(result.stderr)}`:""}`;return outputAgentError(client,{status:"error",reason:AUTH_FAILURE.test(result.stderr)?"not_authorized":"command_failed",message,next:[{command:buildCommandWithGlobalFlags(client.argv,"whoami"),when:"See current user and team"}]},1),outputError(client,fr.jsonOutput,AUTH_FAILURE.test(result.stderr)?"NOT_AUTHORIZED":"COMMAND_FAILED",message)}return fr.jsonOutput?client.stdout.write(`${JSON.stringify({status:"success",engine,registry,username:VCR_LOGIN_USERNAME,validForHours:LOGIN_VALID_HOURS},null,2)}
9
9
  `):(output_manager_default.success(`Logged in to ${registry} as ${VCR_LOGIN_USERNAME} (${engine}).`),output_manager_default.log(`Credentials are valid for ~${LOGIN_VALID_HOURS} hours. Re-run \`${buildCommandWithGlobalFlags(client.argv,`vcr login ${engine}`)}\` to refresh.`)),0}catch(err){if(isAPIError(err))return handleVcrApiError(client,err,fr.jsonOutput);throw err}finally{output_manager_default.stopSpinner()}}export{login as default};
@@ -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{repositoriesPath}from"./chunk-DFVNL5ML.js";import{emitVcrArgParseError,formatRelativeTime,handleVcrApiError,resolveVcrScope,validateVcrJsonOutput}from"./chunk-IYCHAIFZ.js";import{outputError,validateOptionalIntegerRange}from"./chunk-ZQKDO5PL.js";import"./chunk-KKCBFBJK.js";import{listSubcommand}from"./chunk-2FHICLHJ.js";import"./chunk-2UMWTCY7.js";import"./chunk-Q5ZGA2RO.js";import"./chunk-UGMTKOTN.js";import"./chunk-FBYA6LLM.js";import"./chunk-SCV7XEEO.js";import{table}from"./chunk-773GOZIR.js";import{printError}from"./chunk-QAETJRKX.js";import"./chunk-67GZ5REA.js";import"./chunk-BS32OUOC.js";import"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import{AGENT_REASON,outputAgentError}from"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);function printRepositories(list){if(list.repositories.length===0){output_manager_default.log("No repositories found.");return}let rows=[["Name","ID","Created"].map(h=>import_chalk.default.cyan(h)),...list.repositories.map(repo=>[import_chalk.default.bold(repo.name),import_chalk.default.dim(repo.id),formatRelativeTime(repo.createdAt)])],tableOutput=table(rows,{hsep:3}).split(`
7
+ import{repositoriesPath}from"./chunk-DFVNL5ML.js";import{emitVcrArgParseError,formatRelativeTime,handleVcrApiError,resolveVcrScope,validateVcrJsonOutput}from"./chunk-IYCHAIFZ.js";import{outputError,validateOptionalIntegerRange}from"./chunk-ZQKDO5PL.js";import"./chunk-KKCBFBJK.js";import{listSubcommand}from"./chunk-BFRDBBSO.js";import"./chunk-2UMWTCY7.js";import"./chunk-Q5ZGA2RO.js";import"./chunk-UGMTKOTN.js";import"./chunk-FBYA6LLM.js";import"./chunk-SCV7XEEO.js";import{table}from"./chunk-773GOZIR.js";import{printError}from"./chunk-QAETJRKX.js";import"./chunk-67GZ5REA.js";import"./chunk-BS32OUOC.js";import"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import{AGENT_REASON,outputAgentError}from"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);function printRepositories(list){if(list.repositories.length===0){output_manager_default.log("No repositories found.");return}let rows=[["Name","ID","Created"].map(h=>import_chalk.default.cyan(h)),...list.repositories.map(repo=>[import_chalk.default.bold(repo.name),import_chalk.default.dim(repo.id),formatRelativeTime(repo.createdAt)])],tableOutput=table(rows,{hsep:3}).split(`
8
8
  `).map(line=>line.trimEnd()).join(`
9
9
  `).replace(/^/gm," ");output_manager_default.print(`
10
10
  ${tableOutput}
@@ -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{warnDeprecatedSubcommand}from"./chunk-HJRAWEA2.js";import{getSubcommand}from"./chunk-ETV3C2CV.js";import"./chunk-D4MW3RDW.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-BAT6SDBJ.js";import"./chunk-MI7W4QMV.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";var NOTIFICATIONS_CONFIG={ls:["ls","list"],link:["link"],update:["update","patch"],unlink:["unlink"]};async function notifications(client,argv){if(argv.length===0||argv[0]?.startsWith("-")||argv[0]?.startsWith("ar_"))return(await import("./ls-A4NEYMKP.js")).default(client,argv);let{subcommand,subcommandOriginal,args}=getSubcommand(argv,NOTIFICATIONS_CONFIG);if(subcommand==null)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:`Unknown "alerts rules notifications" subcommand "${argv[0]}".`,next:[{command:buildCommandWithGlobalFlags(client.argv,"alerts rules notifications --help"),when:"Show valid notification subcommands"}]},2),output_manager_default.error(`Unknown "alerts rules notifications" subcommand "${argv[0]}". Run \`vercel alerts rules notifications --help\`.`),2;switch(subcommand){case"ls":return(await import("./ls-A4NEYMKP.js")).default(client,args);case"link":case"update":case"unlink":return subcommandOriginal==="patch"&&warnDeprecatedSubcommand(client,"alerts rules notifications patch","alerts rules notifications update"),(await import("./mutate-BQAP2S7A.js")).default(client,args,subcommand);default:return output_manager_default.error(`Unhandled notifications subcommand: ${String(subcommand)}`),1}}export{notifications as default};
@@ -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{parseThreadArg}from"./chunk-2S6PE6GB.js";import{getThread,handleCommentsParseError,resolveCommentsScope,threadNotFoundMessage,toApiErrorParts}from"./chunk-ZLWTPS5T.js";import{outputError}from"./chunk-ZQKDO5PL.js";import"./chunk-6ZRULOO3.js";import"./chunk-GCSAJUL6.js";import{require_open}from"./chunk-PVASGBEF.js";import{openSubcommand}from"./chunk-CN3IVZJO.js";import"./chunk-QAETJRKX.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_open=__toESM(require_open(),1);async function openThread(client,telemetry){let parsedArgs,flagsSpecification=getFlagsSpecification(openSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,"open")}let threadInput=parsedArgs.args[2];if(telemetry.trackCliArgumentThread(threadInput),!threadInput)return output_manager_default.error("Pass a thread ID or URL: `vercel comments open <thread>`."),2;let threadRef=parseThreadArg(threadInput);if(!threadRef)return output_manager_default.error(`Could not extract a thread ID from "${threadInput}". Pass the thread ID or its vercel.com URL.`),2;let threadId=threadRef.id;telemetry.trackCliOptionProject(parsedArgs.flags["--project"]);let scope=await resolveCommentsScope(client,{project:parsedArgs.flags["--project"],requireProject:!1,jsonOutput:!1,urlTeamSlug:threadRef.teamSlug});if(typeof scope=="number")return scope;let webUrl;try{webUrl=(await getThread(client,scope.teamId,threadId)).webUrl}catch(err){if(isAPIError(err)){let{code,message}=toApiErrorParts(err);return outputError(client,!1,code,err.status===404?threadNotFoundMessage(threadId,scope):message)}throw err}return webUrl?(output_manager_default.log(`Opening ${webUrl}`),await(0,import_open.default)(webUrl),0):(output_manager_default.error(`The API returned no web URL for ${threadId}.`),1)}export{openThread as default};
7
+ import{parseThreadArg}from"./chunk-2S6PE6GB.js";import{getThread,handleCommentsParseError,resolveCommentsScope,threadNotFoundMessage,toApiErrorParts}from"./chunk-ZLWTPS5T.js";import{outputError}from"./chunk-ZQKDO5PL.js";import"./chunk-6ZRULOO3.js";import"./chunk-GCSAJUL6.js";import{require_open}from"./chunk-PVASGBEF.js";import{openSubcommand}from"./chunk-7NNENHGN.js";import"./chunk-QAETJRKX.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_open=__toESM(require_open(),1);async function openThread(client,telemetry){let parsedArgs,flagsSpecification=getFlagsSpecification(openSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,"open")}let threadInput=parsedArgs.args[2];if(telemetry.trackCliArgumentThread(threadInput),!threadInput)return output_manager_default.error("Pass a thread ID or URL: `vercel comments open <thread>`."),2;let threadRef=parseThreadArg(threadInput);if(!threadRef)return output_manager_default.error(`Could not extract a thread ID from "${threadInput}". Pass the thread ID or its vercel.com URL.`),2;let threadId=threadRef.id;telemetry.trackCliOptionProject(parsedArgs.flags["--project"]);let scope=await resolveCommentsScope(client,{project:parsedArgs.flags["--project"],requireProject:!1,jsonOutput:!1,urlTeamSlug:threadRef.teamSlug});if(typeof scope=="number")return scope;let webUrl;try{webUrl=(await getThread(client,scope.teamId,threadId)).webUrl}catch(err){if(isAPIError(err)){let{code,message}=toApiErrorParts(err);return outputError(client,!1,code,err.status===404?threadNotFoundMessage(threadId,scope):message)}throw err}return webUrl?(output_manager_default.log(`Opening ${webUrl}`),await(0,import_open.default)(webUrl),0):(output_manager_default.error(`The API returned no web URL for ${threadId}.`),1)}export{openThread as default};
@@ -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{updateRouteVersion}from"./chunk-6QKS6QK7.js";import{getRouteVersions}from"./chunk-BVH2AEFE.js";import{confirmAction,getRoutes,parseSubcommandArgs,printDiffSummary,requireProjectContext,withGlobalFlags}from"./chunk-VVAZC5IO.js";import"./chunk-6ZRULOO3.js";import{stamp_default}from"./chunk-A2RZZQEP.js";import"./chunk-GCSAJUL6.js";import{publishSubcommand}from"./chunk-BTCKMXWW.js";import"./chunk-Q7D7RGXM.js";import"./chunk-QAETJRKX.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import"./chunk-ELDHGU6N.js";import{outputAgentError}from"./chunk-BAT6SDBJ.js";import"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function publish(client,argv){let parsed=await parseSubcommandArgs(argv,publishSubcommand,client);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0;output_manager_default.spinner(`Fetching route versions for ${import_chalk.default.bold(project.name)}`);let{versions}=await getRouteVersions(client,project.id,{teamId}),version=versions.find(v=>v.isStaging);if(!version)return output_manager_default.warn(`No staged changes to publish. Make changes first with ${import_chalk.default.cyan(withGlobalFlags(client,"routes add"))}.`),0;output_manager_default.spinner("Fetching changes");let{routes:diffRoutes}=await getRoutes(client,project.id,{teamId,versionId:version.id,diff:!0}),changedRoutes=diffRoutes.filter(r=>r.action!==void 0);if(changedRoutes.length>0?(output_manager_default.print(`
7
+ import{updateRouteVersion}from"./chunk-6QKS6QK7.js";import{getRouteVersions}from"./chunk-BVH2AEFE.js";import{confirmAction,getRoutes,parseSubcommandArgs,printDiffSummary,requireProjectContext,withGlobalFlags}from"./chunk-ZVTI6BRR.js";import"./chunk-6ZRULOO3.js";import{stamp_default}from"./chunk-A2RZZQEP.js";import"./chunk-GCSAJUL6.js";import{publishSubcommand}from"./chunk-UQIVF4Q2.js";import"./chunk-Q7D7RGXM.js";import"./chunk-QAETJRKX.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import"./chunk-ELDHGU6N.js";import{outputAgentError}from"./chunk-BAT6SDBJ.js";import"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function publish(client,argv){let parsed=await parseSubcommandArgs(argv,publishSubcommand,client);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0;output_manager_default.spinner(`Fetching route versions for ${import_chalk.default.bold(project.name)}`);let{versions}=await getRouteVersions(client,project.id,{teamId}),version=versions.find(v=>v.isStaging);if(!version)return output_manager_default.warn(`No staged changes to publish. Make changes first with ${import_chalk.default.cyan(withGlobalFlags(client,"routes add"))}.`),0;output_manager_default.spinner("Fetching changes");let{routes:diffRoutes}=await getRoutes(client,project.id,{teamId,versionId:version.id,diff:!0}),changedRoutes=diffRoutes.filter(r=>r.action!==void 0);if(changedRoutes.length>0?(output_manager_default.print(`
8
8
  ${import_chalk.default.bold("Changes to be published:")}
9
9
 
10
10
  `),printDiffSummary(changedRoutes),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{DEFAULT_TAG,buildRepositoryReference,parseNameArg,validateImageParts}from"./chunk-HEGJZJO7.js";import{VCR_ENGINES,emitVcrArgParseError,isEngineInstalled,pushCompressionArgs,reportEnginePushFailure,resolveRegistry,resolveVcrScope,runEngine,splitPassthrough,validateVcrChoice}from"./chunk-IYCHAIFZ.js";import{outputError}from"./chunk-ZQKDO5PL.js";import"./chunk-KKCBFBJK.js";import{pushSubcommand}from"./chunk-2FHICLHJ.js";import"./chunk-2UMWTCY7.js";import"./chunk-Q5ZGA2RO.js";import"./chunk-UGMTKOTN.js";import"./chunk-FBYA6LLM.js";import"./chunk-SCV7XEEO.js";import{printError}from"./chunk-QAETJRKX.js";import"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";async function push(client,telemetry){let{own,passthrough}=splitPassthrough(client.argv),parsedArgs;try{parsedArgs=parseArguments(own,getFlagsSpecification(pushSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr push <engine> [name[:tag]]"),printError(err),2}let[engineArg,nameArg]=parsedArgs.args.slice(2),project=parsedArgs.flags["--project"];if(telemetry.trackCliArgumentEngine(engineArg),telemetry.trackCliArgumentName(nameArg),telemetry.trackCliOptionProject(project),!engineArg){let message=`Missing engine. Choose one of: ${VCR_ENGINES.join(", ")}.`;return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,"vcr push docker"),when:"Replace docker with the container tool you use"}]},2),outputError(client,!1,"MISSING_ARGUMENTS",message)}let choiceError=validateVcrChoice(client,"engine",engineArg,VCR_ENGINES,!1);if(typeof choiceError=="number")return choiceError;let engine=engineArg;if(!isEngineInstalled(engine)){let message=`\`${engine}\` is not installed or not on your PATH. Install it and try again.`;return outputAgentError(client,{status:"error",reason:"engine_not_found",message},1),outputError(client,!1,"ENGINE_NOT_FOUND",message)}let scope=await resolveVcrScope(client,{project,jsonOutput:!1});if(typeof scope=="number")return scope;let parsed=parseNameArg(nameArg,scope.projectName);if("error"in parsed)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:parsed.error},2),outputError(client,!1,"INVALID_ARGUMENTS",parsed.error);let validationError=validateImageParts(parsed);if(validationError)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:validationError},2),outputError(client,!1,"INVALID_ARGUMENTS",validationError);let ref=`${buildRepositoryReference({registry:resolveRegistry(),teamSlug:scope.teamSlug,projectName:scope.projectName,repository:parsed.repository})}:${parsed.tag??DEFAULT_TAG}`,engineArgs=["push",...pushCompressionArgs(engine),...passthrough,ref];output_manager_default.log(`Running: ${engine} ${engineArgs.join(" ")}`);let result=await runEngine(engine,engineArgs,{cwd:client.cwd,captureStderr:!0});return result.exitCode!==0?reportEnginePushFailure(client,engine,"push",result):(output_manager_default.success(`Pushed ${ref}`),0)}export{push as default};
7
+ import{DEFAULT_TAG,buildRepositoryReference,parseNameArg,validateImageParts}from"./chunk-HEGJZJO7.js";import{VCR_ENGINES,emitVcrArgParseError,isEngineInstalled,pushCompressionArgs,reportEnginePushFailure,resolveRegistry,resolveVcrScope,runEngine,splitPassthrough,validateVcrChoice}from"./chunk-IYCHAIFZ.js";import{outputError}from"./chunk-ZQKDO5PL.js";import"./chunk-KKCBFBJK.js";import{pushSubcommand}from"./chunk-BFRDBBSO.js";import"./chunk-2UMWTCY7.js";import"./chunk-Q5ZGA2RO.js";import"./chunk-UGMTKOTN.js";import"./chunk-FBYA6LLM.js";import"./chunk-SCV7XEEO.js";import{printError}from"./chunk-QAETJRKX.js";import"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";async function push(client,telemetry){let{own,passthrough}=splitPassthrough(client.argv),parsedArgs;try{parsedArgs=parseArguments(own,getFlagsSpecification(pushSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr push <engine> [name[:tag]]"),printError(err),2}let[engineArg,nameArg]=parsedArgs.args.slice(2),project=parsedArgs.flags["--project"];if(telemetry.trackCliArgumentEngine(engineArg),telemetry.trackCliArgumentName(nameArg),telemetry.trackCliOptionProject(project),!engineArg){let message=`Missing engine. Choose one of: ${VCR_ENGINES.join(", ")}.`;return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,"vcr push docker"),when:"Replace docker with the container tool you use"}]},2),outputError(client,!1,"MISSING_ARGUMENTS",message)}let choiceError=validateVcrChoice(client,"engine",engineArg,VCR_ENGINES,!1);if(typeof choiceError=="number")return choiceError;let engine=engineArg;if(!isEngineInstalled(engine)){let message=`\`${engine}\` is not installed or not on your PATH. Install it and try again.`;return outputAgentError(client,{status:"error",reason:"engine_not_found",message},1),outputError(client,!1,"ENGINE_NOT_FOUND",message)}let scope=await resolveVcrScope(client,{project,jsonOutput:!1});if(typeof scope=="number")return scope;let parsed=parseNameArg(nameArg,scope.projectName);if("error"in parsed)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:parsed.error},2),outputError(client,!1,"INVALID_ARGUMENTS",parsed.error);let validationError=validateImageParts(parsed);if(validationError)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:validationError},2),outputError(client,!1,"INVALID_ARGUMENTS",validationError);let ref=`${buildRepositoryReference({registry:resolveRegistry(),teamSlug:scope.teamSlug,projectName:scope.projectName,repository:parsed.repository})}:${parsed.tag??DEFAULT_TAG}`,engineArgs=["push",...pushCompressionArgs(engine),...passthrough,ref];output_manager_default.log(`Running: ${engine} ${engineArgs.join(" ")}`);let result=await runEngine(engine,engineArgs,{cwd:client.cwd,captureStderr:!0});return result.exitCode!==0?reportEnginePushFailure(client,engine,"push",result):(output_manager_default.success(`Pushed ${ref}`),0)}export{push as default};
@@ -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{getRouteVersions}from"./chunk-BVH2AEFE.js";import{getRoutes,offerAutoPromote,parsePosition,parseSubcommandArgs,requireProjectContext,resolveRoute,shellQuoteRouteIdentifierForSuggestion,withGlobalFlags}from"./chunk-VVAZC5IO.js";import"./chunk-6ZRULOO3.js";import{stamp_default}from"./chunk-A2RZZQEP.js";import"./chunk-GCSAJUL6.js";import{reorderSubcommand}from"./chunk-BTCKMXWW.js";import"./chunk-Q7D7RGXM.js";import"./chunk-QAETJRKX.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import"./chunk-ELDHGU6N.js";import{outputAgentError}from"./chunk-BAT6SDBJ.js";import"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function stageRoutes(client,projectId,routes,overwrite,options={}){let{teamId}=options,query=new URLSearchParams;teamId&&query.set("teamId",teamId);let queryString=query.toString(),url=`/v1/projects/${projectId}/routes${queryString?`?${queryString}`:""}`;return await client.fetch(url,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({routes,overwrite})})}async function reorder(client,argv){let parsed=await parseSubcommandArgs(argv,reorderSubcommand,client);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,{args,flags}=parsed,skipConfirmation=flags["--yes"],identifier=args[0];if(!identifier)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"missing_arguments",message:"Route name or ID and position are required.",next:[{command:withGlobalFlags(client,"routes reorder <name-or-id> --position <pos> --yes"),when:"replace placeholders; --first/--last or numeric position"}]},2),output_manager_default.error(`Route name or ID is required. Usage: ${withGlobalFlags(client,"routes reorder <name-or-id> --position <pos>")}`),2;let{versions}=await getRouteVersions(client,project.id,{teamId}),existingStagingVersion=versions.find(v=>v.isStaging);output_manager_default.spinner("Fetching routes");let{routes}=await getRoutes(client,project.id,{teamId});if(output_manager_default.stopSpinner(),routes.length===0)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"not_found",message:"No routes found in this project."},1),output_manager_default.error("No routes found in this project."),1;if(routes.length===1)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:"Cannot reorder when there is only one route."},2),output_manager_default.error("Cannot reorder when there is only one route."),2;let route=await resolveRoute(client,routes,identifier);if(!route)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"not_found",message:`No route found matching "${identifier}".`,next:[{command:withGlobalFlags(client,"routes list"),when:"list routes"}]},1),output_manager_default.error(`No route found matching "${identifier}". Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list"))} to see all routes.`),1;let currentIndex=routes.findIndex(r=>r.id===route.id),currentPosition=currentIndex+1,targetIndex,positionFlag=flags["--position"],firstFlag=flags["--first"],lastFlag=flags["--last"];if(firstFlag)targetIndex=0;else if(lastFlag)targetIndex=routes.length;else if(positionFlag)if(positionFlag==="first")targetIndex=0;else if(positionFlag==="last")targetIndex=routes.length;else{let num=parseInt(positionFlag,10);if(!isNaN(num)&&String(num)===positionFlag){if(num<1){let msg="Position must be 1 or greater. Positions are 1-based (e.g. --position 1 for first). Use --first or --last instead of 0.";return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:msg,next:[{command:withGlobalFlags(client,`routes reorder ${shellQuoteRouteIdentifierForSuggestion(identifier)} --first --yes`),when:"move to first position"},{command:withGlobalFlags(client,`routes reorder ${shellQuoteRouteIdentifierForSuggestion(identifier)} --position 1 --yes`),when:"same as first (1-based index)"},{command:withGlobalFlags(client,`routes reorder ${shellQuoteRouteIdentifierForSuggestion(identifier)} --last --yes`),when:"move to last position"}],hint:"Numeric --position uses 1-based indices; there is no position 0."},2),2):(output_manager_default.error(msg),2)}targetIndex=Math.min(num-1,routes.length)}else try{let pos=parsePosition(positionFlag);if(pos.placement==="start")targetIndex=0;else if(pos.placement==="end")targetIndex=routes.length;else if(pos.placement==="after"&&pos.referenceId){let refIndex=routes.findIndex(r=>r.id===pos.referenceId);if(refIndex===-1)return output_manager_default.error(`Reference route "${pos.referenceId}" not found. Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list"))} to see route IDs.`),1;targetIndex=refIndex+1}else if(pos.placement==="before"&&pos.referenceId){let refIndex=routes.findIndex(r=>r.id===pos.referenceId);if(refIndex===-1)return output_manager_default.error(`Reference route "${pos.referenceId}" not found. Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list"))} to see route IDs.`),1;targetIndex=refIndex}else return output_manager_default.error("Invalid position specification."),1}catch(e){return output_manager_default.error(`${e instanceof Error?e.message:"Invalid position"}. Usage: ${withGlobalFlags(client,"routes reorder <name-or-id> --position <pos>")}`),2}}else{client.nonInteractive&&outputAgentError(client,{status:"error",reason:"missing_arguments",message:"Target position is required. Use --position <n|first|last|after:id|before:id> or --first / --last.",next:[{command:withGlobalFlags(client,`routes reorder ${shellQuoteRouteIdentifierForSuggestion(identifier)} --position <pos> --yes`),when:"replace <pos> with numeric position or first/last"}]},2),output_manager_default.print(`
7
+ import{getRouteVersions}from"./chunk-BVH2AEFE.js";import{getRoutes,offerAutoPromote,parsePosition,parseSubcommandArgs,requireProjectContext,resolveRoute,shellQuoteRouteIdentifierForSuggestion,withGlobalFlags}from"./chunk-ZVTI6BRR.js";import"./chunk-6ZRULOO3.js";import{stamp_default}from"./chunk-A2RZZQEP.js";import"./chunk-GCSAJUL6.js";import{reorderSubcommand}from"./chunk-UQIVF4Q2.js";import"./chunk-Q7D7RGXM.js";import"./chunk-QAETJRKX.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import"./chunk-ELDHGU6N.js";import{outputAgentError}from"./chunk-BAT6SDBJ.js";import"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function stageRoutes(client,projectId,routes,overwrite,options={}){let{teamId}=options,query=new URLSearchParams;teamId&&query.set("teamId",teamId);let queryString=query.toString(),url=`/v1/projects/${projectId}/routes${queryString?`?${queryString}`:""}`;return await client.fetch(url,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({routes,overwrite})})}async function reorder(client,argv){let parsed=await parseSubcommandArgs(argv,reorderSubcommand,client);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,{args,flags}=parsed,skipConfirmation=flags["--yes"],identifier=args[0];if(!identifier)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"missing_arguments",message:"Route name or ID and position are required.",next:[{command:withGlobalFlags(client,"routes reorder <name-or-id> --position <pos> --yes"),when:"replace placeholders; --first/--last or numeric position"}]},2),output_manager_default.error(`Route name or ID is required. Usage: ${withGlobalFlags(client,"routes reorder <name-or-id> --position <pos>")}`),2;let{versions}=await getRouteVersions(client,project.id,{teamId}),existingStagingVersion=versions.find(v=>v.isStaging);output_manager_default.spinner("Fetching routes");let{routes}=await getRoutes(client,project.id,{teamId});if(output_manager_default.stopSpinner(),routes.length===0)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"not_found",message:"No routes found in this project."},1),output_manager_default.error("No routes found in this project."),1;if(routes.length===1)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:"Cannot reorder when there is only one route."},2),output_manager_default.error("Cannot reorder when there is only one route."),2;let route=await resolveRoute(client,routes,identifier);if(!route)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"not_found",message:`No route found matching "${identifier}".`,next:[{command:withGlobalFlags(client,"routes list"),when:"list routes"}]},1),output_manager_default.error(`No route found matching "${identifier}". Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list"))} to see all routes.`),1;let currentIndex=routes.findIndex(r=>r.id===route.id),currentPosition=currentIndex+1,targetIndex,positionFlag=flags["--position"],firstFlag=flags["--first"],lastFlag=flags["--last"];if(firstFlag)targetIndex=0;else if(lastFlag)targetIndex=routes.length;else if(positionFlag)if(positionFlag==="first")targetIndex=0;else if(positionFlag==="last")targetIndex=routes.length;else{let num=parseInt(positionFlag,10);if(!isNaN(num)&&String(num)===positionFlag){if(num<1){let msg="Position must be 1 or greater. Positions are 1-based (e.g. --position 1 for first). Use --first or --last instead of 0.";return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:msg,next:[{command:withGlobalFlags(client,`routes reorder ${shellQuoteRouteIdentifierForSuggestion(identifier)} --first --yes`),when:"move to first position"},{command:withGlobalFlags(client,`routes reorder ${shellQuoteRouteIdentifierForSuggestion(identifier)} --position 1 --yes`),when:"same as first (1-based index)"},{command:withGlobalFlags(client,`routes reorder ${shellQuoteRouteIdentifierForSuggestion(identifier)} --last --yes`),when:"move to last position"}],hint:"Numeric --position uses 1-based indices; there is no position 0."},2),2):(output_manager_default.error(msg),2)}targetIndex=Math.min(num-1,routes.length)}else try{let pos=parsePosition(positionFlag);if(pos.placement==="start")targetIndex=0;else if(pos.placement==="end")targetIndex=routes.length;else if(pos.placement==="after"&&pos.referenceId){let refIndex=routes.findIndex(r=>r.id===pos.referenceId);if(refIndex===-1)return output_manager_default.error(`Reference route "${pos.referenceId}" not found. Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list"))} to see route IDs.`),1;targetIndex=refIndex+1}else if(pos.placement==="before"&&pos.referenceId){let refIndex=routes.findIndex(r=>r.id===pos.referenceId);if(refIndex===-1)return output_manager_default.error(`Reference route "${pos.referenceId}" not found. Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list"))} to see route IDs.`),1;targetIndex=refIndex}else return output_manager_default.error("Invalid position specification."),1}catch(e){return output_manager_default.error(`${e instanceof Error?e.message:"Invalid position"}. Usage: ${withGlobalFlags(client,"routes reorder <name-or-id> --position <pos>")}`),2}}else{client.nonInteractive&&outputAgentError(client,{status:"error",reason:"missing_arguments",message:"Target position is required. Use --position <n|first|last|after:id|before:id> or --first / --last.",next:[{command:withGlobalFlags(client,`routes reorder ${shellQuoteRouteIdentifierForSuggestion(identifier)} --position <pos> --yes`),when:"replace <pos> with numeric position or first/last"}]},2),output_manager_default.print(`
8
8
  `),output_manager_default.log("Current route order:");for(let i=0;i<routes.length;i++){let r=routes[i],isCurrent=r.id===route.id,prefix=isCurrent?import_chalk.default.cyan("\u2192"):" ",num=import_chalk.default.gray(`${i+1}.`),name=isCurrent?import_chalk.default.bold(r.name):r.name,src=import_chalk.default.gray(`(${r.route.src})`),marker=isCurrent?import_chalk.default.cyan(" \u2190 current"):"";output_manager_default.print(` ${prefix} ${num} ${name} ${src}${marker}
9
9
  `)}output_manager_default.print(`
10
10
  `);let input=await client.input.text({message:`Move "${route.name}" to position (1-${routes.length}, "first", or "last"):`,validate:val=>{if(!val)return"Position is required";if(val==="first"||val==="last")return!0;let num=parseInt(val,10);return isNaN(num)||num<1||num>routes.length?`Enter a number between 1 and ${routes.length}, "first", or "last"`:!0}});input==="first"?targetIndex=0:input==="last"?targetIndex=routes.length:targetIndex=parseInt(input,10)-1}let adjustedTarget=currentIndex<targetIndex?targetIndex-1:targetIndex,clampedTarget=Math.max(0,Math.min(adjustedTarget,routes.length-1));if(currentIndex===clampedTarget)return output_manager_default.log(`Route "${route.name}" is already at position ${currentPosition}.`),0;let finalPosition=clampedTarget+1;if(!skipConfirmation&&(client.nonInteractive&&outputAgentError(client,{status:"error",reason:"confirmation_required",message:"Reorder requires confirmation. Pass --yes in non-interactive mode.",next:[{command:withGlobalFlags(client,`routes reorder ${shellQuoteRouteIdentifierForSuggestion(identifier)} --position ${finalPosition} --yes`),when:"re-run with --yes"}]},1),!await client.input.confirm(`Move "${route.name}" from position ${currentPosition} to position ${finalPosition}?`,!0)))return output_manager_default.log("Aborted."),0;let reordered=[...routes];reordered.splice(currentIndex,1),reordered.splice(clampedTarget,0,route);let reorderStamp=stamp_default();output_manager_default.spinner(`Moving route "${route.name}"`);try{let{version}=await stageRoutes(client,project.id,reordered,!0,{teamId});return output_manager_default.log(`${import_chalk.default.cyan("Moved")} "${route.name}" from position ${currentPosition} to ${finalPosition} ${import_chalk.default.gray(reorderStamp())}`),await offerAutoPromote(client,project.id,version,!!existingStagingVersion,{teamId,skipPrompts:skipConfirmation}),0}catch(e){let error=e;return output_manager_default.error(error.message||"Failed to reorder route"),1}}export{reorder as default};
@@ -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{resolveMessageContent}from"./chunk-7GFRZWLE.js";import{parseThreadArg}from"./chunk-2S6PE6GB.js";import{addMessage,handleCommentsParseError,resolveCommentsScope,threadNotFoundMessage,toApiErrorParts}from"./chunk-ZLWTPS5T.js";import{outputError}from"./chunk-ZQKDO5PL.js";import"./chunk-IQ7FPAI4.js";import"./chunk-6ZRULOO3.js";import"./chunk-GCSAJUL6.js";import{replySubcommand}from"./chunk-CN3IVZJO.js";import"./chunk-QAETJRKX.js";import{validateJsonOutput}from"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);function validateAttachments(attach){if(!(!attach||attach.length===0)){if(attach.length>10)return"A message can have at most 10 attachments.";for(let url of attach)if(!/^https:\/\//i.test(url))return`Attachments must be https URLs (the API fetches them); got "${url}". Local file upload is not supported by the API.`}}async function reply(client,telemetry){let parsedArgs,flagsSpecification=getFlagsSpecification(replySubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,"reply")}let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let jsonOutput=formatResult.jsonOutput;telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),telemetry.trackCliOptionMessage(parsedArgs.flags["--message"]),telemetry.trackCliOptionFile(parsedArgs.flags["--file"]),telemetry.trackCliOptionAttach(parsedArgs.flags["--attach"]);let threadInput=parsedArgs.args[2];if(telemetry.trackCliArgumentThread(threadInput),!threadInput)return outputError(client,jsonOutput,"MISSING_THREAD","Pass a thread ID or URL: `vercel comments reply <thread> -m <text>`.");let threadRef=parseThreadArg(threadInput);if(!threadRef)return outputError(client,jsonOutput,"INVALID_THREAD",`Could not extract a thread ID from "${threadInput}". Pass the thread ID or its vercel.com URL.`);let threadId=threadRef.id,attach=parsedArgs.flags["--attach"],attachError=validateAttachments(attach);if(attachError)return outputError(client,jsonOutput,"INVALID_ATTACHMENT",attachError);let content=await resolveMessageContent(client,{message:parsedArgs.flags["--message"],file:parsedArgs.flags["--file"],hasAttachments:!!(attach&&attach.length>0)},jsonOutput);if(typeof content=="number")return content;telemetry.trackCliOptionProject(parsedArgs.flags["--project"]);let scope=await resolveCommentsScope(client,{project:parsedArgs.flags["--project"],requireProject:!1,jsonOutput,urlTeamSlug:threadRef.teamSlug});if(typeof scope=="number")return scope;jsonOutput||output_manager_default.spinner("Posting reply\u2026");try{let message=await addMessage(client,scope.teamId,threadId,{...content!==void 0&&{markdown:content},...attach&&attach.length>0&&{attachments:attach.map(url=>({url}))}});return jsonOutput?(client.stdout.write(`${JSON.stringify(message,null,2)}
7
+ import{resolveMessageContent}from"./chunk-7GFRZWLE.js";import{parseThreadArg}from"./chunk-2S6PE6GB.js";import{addMessage,handleCommentsParseError,resolveCommentsScope,threadNotFoundMessage,toApiErrorParts}from"./chunk-ZLWTPS5T.js";import{outputError}from"./chunk-ZQKDO5PL.js";import"./chunk-IQ7FPAI4.js";import"./chunk-6ZRULOO3.js";import"./chunk-GCSAJUL6.js";import{replySubcommand}from"./chunk-7NNENHGN.js";import"./chunk-QAETJRKX.js";import{validateJsonOutput}from"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);function validateAttachments(attach){if(!(!attach||attach.length===0)){if(attach.length>10)return"A message can have at most 10 attachments.";for(let url of attach)if(!/^https:\/\//i.test(url))return`Attachments must be https URLs (the API fetches them); got "${url}". Local file upload is not supported by the API.`}}async function reply(client,telemetry){let parsedArgs,flagsSpecification=getFlagsSpecification(replySubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,"reply")}let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let jsonOutput=formatResult.jsonOutput;telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),telemetry.trackCliOptionMessage(parsedArgs.flags["--message"]),telemetry.trackCliOptionFile(parsedArgs.flags["--file"]),telemetry.trackCliOptionAttach(parsedArgs.flags["--attach"]);let threadInput=parsedArgs.args[2];if(telemetry.trackCliArgumentThread(threadInput),!threadInput)return outputError(client,jsonOutput,"MISSING_THREAD","Pass a thread ID or URL: `vercel comments reply <thread> -m <text>`.");let threadRef=parseThreadArg(threadInput);if(!threadRef)return outputError(client,jsonOutput,"INVALID_THREAD",`Could not extract a thread ID from "${threadInput}". Pass the thread ID or its vercel.com URL.`);let threadId=threadRef.id,attach=parsedArgs.flags["--attach"],attachError=validateAttachments(attach);if(attachError)return outputError(client,jsonOutput,"INVALID_ATTACHMENT",attachError);let content=await resolveMessageContent(client,{message:parsedArgs.flags["--message"],file:parsedArgs.flags["--file"],hasAttachments:!!(attach&&attach.length>0)},jsonOutput);if(typeof content=="number")return content;telemetry.trackCliOptionProject(parsedArgs.flags["--project"]);let scope=await resolveCommentsScope(client,{project:parsedArgs.flags["--project"],requireProject:!1,jsonOutput,urlTeamSlug:threadRef.teamSlug});if(typeof scope=="number")return scope;jsonOutput||output_manager_default.spinner("Posting reply\u2026");try{let message=await addMessage(client,scope.teamId,threadId,{...content!==void 0&&{markdown:content},...attach&&attach.length>0&&{attachments:attach.map(url=>({url}))}});return jsonOutput?(client.stdout.write(`${JSON.stringify(message,null,2)}
8
8
  `),0):(output_manager_default.print(`${import_chalk.default.green("\u2713")} Replied to ${threadId}
9
9
  `),0)}catch(err){if(isAPIError(err)){let{code,message}=toApiErrorParts(err);return outputError(client,jsonOutput,code,err.status===404?threadNotFoundMessage(threadId,scope):message)}throw err}finally{output_manager_default.stopSpinner()}}export{reply as default};
@@ -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{parseThreadArg}from"./chunk-2S6PE6GB.js";import{addMessage,handleCommentsParseError,resolveCommentsScope,threadNotFoundMessage,toApiErrorParts,updateThread}from"./chunk-ZLWTPS5T.js";import{outputError}from"./chunk-ZQKDO5PL.js";import{canPrompt}from"./chunk-IQ7FPAI4.js";import"./chunk-6ZRULOO3.js";import"./chunk-GCSAJUL6.js";import{reopenSubcommand,resolveSubcommand}from"./chunk-CN3IVZJO.js";import"./chunk-QAETJRKX.js";import{validateJsonOutput}from"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function resolveThreads(client,telemetry,resolved){let subcommand=resolved?resolveSubcommand:reopenSubcommand,verb=resolved?"resolve":"reopen",pastVerb=resolved?"resolved":"reopened",parsedArgs,flagsSpecification=getFlagsSpecification(subcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,subcommand.name)}let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let jsonOutput=formatResult.jsonOutput,closingMessage=resolved?parsedArgs.flags["--message"]:void 0,yes=!!parsedArgs.flags["--yes"];telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),resolved&&telemetry.trackCliOptionMessage(closingMessage);let threadInputs=parsedArgs.args.slice(2);if(telemetry.trackCliArgumentThread(threadInputs[0]),threadInputs.length===0)return outputError(client,jsonOutput,"MISSING_THREAD",`Pass at least one thread ID or URL: \`vercel comments ${verb} <thread>\`.`);let threadIds=[],urlTeamSlug;for(let input of threadInputs){let ref=parseThreadArg(input);if(!ref)return outputError(client,jsonOutput,"INVALID_THREAD",`Could not extract a thread ID from "${input}".`);if(ref.teamSlug){if(urlTeamSlug&&urlTeamSlug!==ref.teamSlug)return outputError(client,jsonOutput,"MIXED_TEAMS",`The URLs belong to different teams (${urlTeamSlug}, ${ref.teamSlug}). Run once per team.`);urlTeamSlug=ref.teamSlug}threadIds.push(ref.id)}if(closingMessage!==void 0&&threadIds.length>1)return outputError(client,jsonOutput,"MESSAGE_WITH_MULTIPLE_THREADS","Cannot use -m with multiple threads. Resolve one thread with a closing message, or resolve multiple threads without -m.");let scope=await resolveCommentsScope(client,{project:parsedArgs.flags["--project"],requireProject:!1,jsonOutput,urlTeamSlug});if(typeof scope=="number")return scope;if(threadIds.length>1&&!yes){if(!canPrompt(client)||jsonOutput)return outputError(client,jsonOutput,"CONFIRMATION_REQUIRED",`Pass --yes to ${verb} ${threadIds.length} comments non-interactively.`);if(!await client.input.confirm(`${import_chalk.default.bold(String(threadIds.length))} comments will be ${pastVerb} in team ${scope.teamSlug??scope.teamId}. Continue?`,!1))return output_manager_default.log("Canceled."),0}if(telemetry.trackCliOptionProject(parsedArgs.flags["--project"]),threadIds.length===1){let threadId=threadIds[0],replied=!1;try{closingMessage!==void 0&&(await addMessage(client,scope.teamId,threadId,{markdown:closingMessage}),replied=!0);let thread=await updateThread(client,scope.teamId,threadId,resolved);return jsonOutput?(client.stdout.write(`${JSON.stringify({thread,replied},null,2)}
7
+ import{parseThreadArg}from"./chunk-2S6PE6GB.js";import{addMessage,handleCommentsParseError,resolveCommentsScope,threadNotFoundMessage,toApiErrorParts,updateThread}from"./chunk-ZLWTPS5T.js";import{outputError}from"./chunk-ZQKDO5PL.js";import{canPrompt}from"./chunk-IQ7FPAI4.js";import"./chunk-6ZRULOO3.js";import"./chunk-GCSAJUL6.js";import{reopenSubcommand,resolveSubcommand}from"./chunk-7NNENHGN.js";import"./chunk-QAETJRKX.js";import{validateJsonOutput}from"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function resolveThreads(client,telemetry,resolved){let subcommand=resolved?resolveSubcommand:reopenSubcommand,verb=resolved?"resolve":"reopen",pastVerb=resolved?"resolved":"reopened",parsedArgs,flagsSpecification=getFlagsSpecification(subcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,subcommand.name)}let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let jsonOutput=formatResult.jsonOutput,closingMessage=resolved?parsedArgs.flags["--message"]:void 0,yes=!!parsedArgs.flags["--yes"];telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),resolved&&telemetry.trackCliOptionMessage(closingMessage);let threadInputs=parsedArgs.args.slice(2);if(telemetry.trackCliArgumentThread(threadInputs[0]),threadInputs.length===0)return outputError(client,jsonOutput,"MISSING_THREAD",`Pass at least one thread ID or URL: \`vercel comments ${verb} <thread>\`.`);let threadIds=[],urlTeamSlug;for(let input of threadInputs){let ref=parseThreadArg(input);if(!ref)return outputError(client,jsonOutput,"INVALID_THREAD",`Could not extract a thread ID from "${input}".`);if(ref.teamSlug){if(urlTeamSlug&&urlTeamSlug!==ref.teamSlug)return outputError(client,jsonOutput,"MIXED_TEAMS",`The URLs belong to different teams (${urlTeamSlug}, ${ref.teamSlug}). Run once per team.`);urlTeamSlug=ref.teamSlug}threadIds.push(ref.id)}if(closingMessage!==void 0&&threadIds.length>1)return outputError(client,jsonOutput,"MESSAGE_WITH_MULTIPLE_THREADS","Cannot use -m with multiple threads. Resolve one thread with a closing message, or resolve multiple threads without -m.");let scope=await resolveCommentsScope(client,{project:parsedArgs.flags["--project"],requireProject:!1,jsonOutput,urlTeamSlug});if(typeof scope=="number")return scope;if(threadIds.length>1&&!yes){if(!canPrompt(client)||jsonOutput)return outputError(client,jsonOutput,"CONFIRMATION_REQUIRED",`Pass --yes to ${verb} ${threadIds.length} comments non-interactively.`);if(!await client.input.confirm(`${import_chalk.default.bold(String(threadIds.length))} comments will be ${pastVerb} in team ${scope.teamSlug??scope.teamId}. Continue?`,!1))return output_manager_default.log("Canceled."),0}if(telemetry.trackCliOptionProject(parsedArgs.flags["--project"]),threadIds.length===1){let threadId=threadIds[0],replied=!1;try{closingMessage!==void 0&&(await addMessage(client,scope.teamId,threadId,{markdown:closingMessage}),replied=!0);let thread=await updateThread(client,scope.teamId,threadId,resolved);return jsonOutput?(client.stdout.write(`${JSON.stringify({thread,replied},null,2)}
8
8
  `),0):(output_manager_default.print(`${import_chalk.default.green("\u2713")} ${threadId} ${pastVerb}${replied?" (with closing reply)":""}
9
9
  `),0)}catch(err){if(isAPIError(err)){let{code,message}=toApiErrorParts(err),friendly=err.status===404?threadNotFoundMessage(threadId,scope):message;return outputError(client,jsonOutput,code,replied?`Replied, but ${verb} failed: ${friendly} Run \`vercel comments resolve ${threadId}\` (without -m) to finish without duplicating the reply.`:friendly)}throw err}}let results=[];for(let threadId of threadIds)try{await updateThread(client,scope.teamId,threadId,resolved),results.push({id:threadId,ok:!0})}catch(err){if(isAPIError(err)){let{message}=toApiErrorParts(err);results.push({id:threadId,ok:!1,error:message})}else throw err}let failed=results.filter(result=>!result.ok);if(jsonOutput)return client.stdout.write(`${JSON.stringify({results},null,2)}
10
10
  `),failed.length>0?1:0;for(let result of results)result.ok?output_manager_default.print(`${import_chalk.default.green("\u2713")} ${result.id} ${pastVerb}
@@ -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{updateRouteVersion}from"./chunk-6QKS6QK7.js";import{getRouteVersions}from"./chunk-BVH2AEFE.js";import{confirmAction,findVersionById,getRoutes,parseSubcommandArgs,printDiffSummary,requireProjectContext,validateRequiredArguments,withGlobalFlags}from"./chunk-VVAZC5IO.js";import"./chunk-6ZRULOO3.js";import{stamp_default}from"./chunk-A2RZZQEP.js";import"./chunk-GCSAJUL6.js";import{restoreSubcommand}from"./chunk-BTCKMXWW.js";import"./chunk-Q7D7RGXM.js";import"./chunk-QAETJRKX.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import"./chunk-ELDHGU6N.js";import{outputAgentError}from"./chunk-BAT6SDBJ.js";import"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function restore(client,argv){let parsed=await parseSubcommandArgs(argv,restoreSubcommand,client);if(typeof parsed=="number")return parsed;let error=validateRequiredArguments(parsed.args,["version-id"]);if(error)return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"missing_arguments",message:error,next:[{command:withGlobalFlags(client,"routes restore <version-id> --yes")},{command:withGlobalFlags(client,"routes list-versions")}]}),process.exit(1),2):(output_manager_default.error(error),2);let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,[versionIdentifier]=parsed.args;output_manager_default.spinner(`Fetching route versions for ${import_chalk.default.bold(project.name)}`);let{versions}=await getRouteVersions(client,project.id,{teamId}),result=findVersionById(client,versions,versionIdentifier);if(result.error)return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:result.error,next:[{command:withGlobalFlags(client,"routes list-versions")}]}),process.exit(1),2):(output_manager_default.error(result.error),2);let version=result.version;if(!version)return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"not_found",message:"Version not found.",next:[{command:withGlobalFlags(client,"routes list-versions")}]}),process.exit(1),1):(output_manager_default.error("Version not found."),1);if(version.isLive){let liveMsg=`Version ${version.id.slice(0,12)} is currently live. You cannot restore the live version. Run ${withGlobalFlags(client,"routes list-versions")} to see previous versions you can restore.`;return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:liveMsg,next:[{command:withGlobalFlags(client,"routes list-versions")}]}),process.exit(1),2):(output_manager_default.error(`Version ${import_chalk.default.bold(version.id.slice(0,12))} is currently live. You cannot restore the live version.
7
+ import{updateRouteVersion}from"./chunk-6QKS6QK7.js";import{getRouteVersions}from"./chunk-BVH2AEFE.js";import{confirmAction,findVersionById,getRoutes,parseSubcommandArgs,printDiffSummary,requireProjectContext,validateRequiredArguments,withGlobalFlags}from"./chunk-ZVTI6BRR.js";import"./chunk-6ZRULOO3.js";import{stamp_default}from"./chunk-A2RZZQEP.js";import"./chunk-GCSAJUL6.js";import{restoreSubcommand}from"./chunk-UQIVF4Q2.js";import"./chunk-Q7D7RGXM.js";import"./chunk-QAETJRKX.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import"./chunk-ELDHGU6N.js";import{outputAgentError}from"./chunk-BAT6SDBJ.js";import"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function restore(client,argv){let parsed=await parseSubcommandArgs(argv,restoreSubcommand,client);if(typeof parsed=="number")return parsed;let error=validateRequiredArguments(parsed.args,["version-id"]);if(error)return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"missing_arguments",message:error,next:[{command:withGlobalFlags(client,"routes restore <version-id> --yes")},{command:withGlobalFlags(client,"routes list-versions")}]}),process.exit(1),2):(output_manager_default.error(error),2);let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,[versionIdentifier]=parsed.args;output_manager_default.spinner(`Fetching route versions for ${import_chalk.default.bold(project.name)}`);let{versions}=await getRouteVersions(client,project.id,{teamId}),result=findVersionById(client,versions,versionIdentifier);if(result.error)return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:result.error,next:[{command:withGlobalFlags(client,"routes list-versions")}]}),process.exit(1),2):(output_manager_default.error(result.error),2);let version=result.version;if(!version)return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"not_found",message:"Version not found.",next:[{command:withGlobalFlags(client,"routes list-versions")}]}),process.exit(1),1):(output_manager_default.error("Version not found."),1);if(version.isLive){let liveMsg=`Version ${version.id.slice(0,12)} is currently live. You cannot restore the live version. Run ${withGlobalFlags(client,"routes list-versions")} to see previous versions you can restore.`;return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:liveMsg,next:[{command:withGlobalFlags(client,"routes list-versions")}]}),process.exit(1),2):(output_manager_default.error(`Version ${import_chalk.default.bold(version.id.slice(0,12))} is currently live. You cannot restore the live version.
8
8
  Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list-versions"))} to see previous versions you can restore.`),2)}if(version.isStaging){let stagingMsg=`Version ${version.id.slice(0,12)} is staged. Use ${withGlobalFlags(client,"routes publish")} to publish it instead.`;return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:stagingMsg,next:[{command:withGlobalFlags(client,"routes publish --yes")}]}),process.exit(1),2):(output_manager_default.error(`Version ${import_chalk.default.bold(version.id.slice(0,12))} is staged. Use ${import_chalk.default.cyan(withGlobalFlags(client,"routes publish"))} to publish it instead.`),2)}output_manager_default.spinner("Fetching changes");let{routes:diffRoutes}=await getRoutes(client,project.id,{teamId,versionId:version.id,diff:!0}),changedRoutes=diffRoutes.filter(r=>r.action!==void 0);if(changedRoutes.length>0?(output_manager_default.print(`
9
9
  ${import_chalk.default.bold("Changes to be restored:")}
10
10
 
@@ -4,5 +4,5 @@ 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{repositoryPath}from"./chunk-DFVNL5ML.js";import{emitVcrArgParseError,handleVcrApiError,requireVcrRepository,resolveVcrScope,validateVcrJsonOutput}from"./chunk-IYCHAIFZ.js";import"./chunk-ZQKDO5PL.js";import"./chunk-KKCBFBJK.js";import{removeSubcommand}from"./chunk-2FHICLHJ.js";import"./chunk-2UMWTCY7.js";import"./chunk-Q5ZGA2RO.js";import"./chunk-UGMTKOTN.js";import"./chunk-FBYA6LLM.js";import"./chunk-SCV7XEEO.js";import{printError}from"./chunk-QAETJRKX.js";import"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import{AGENT_REASON,buildCommandWithYes,outputAgentError}from"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";async function rm(client,argv,telemetry){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(removeSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr rm <repository> --project <name-or-id>"),printError(err),2}let fr=validateVcrJsonOutput(client,parsedArgs.flags);if(typeof fr=="number")return fr;let repository=parsedArgs.args[0],project=parsedArgs.flags["--project"],skipConfirmation=!!parsedArgs.flags["--yes"];telemetry.trackCliOptionProject(project),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]);let missingRepository=requireVcrRepository(client,repository,fr.jsonOutput,"vcr rm <repository>");if(typeof missingRepository=="number")return missingRepository;let scope=await resolveVcrScope(client,{project,jsonOutput:fr.jsonOutput});if(typeof scope=="number")return scope;if(!skipConfirmation&&(outputAgentError(client,{status:"error",reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:"Deleting a repository deletes it and all of its images. Re-run with --yes.",next:[{command:buildCommandWithYes(client.argv)}]},1),!await client.input.confirm(`Delete repository ${repository} and all of its images? This cannot be undone.`,!1)))return output_manager_default.log("Canceled"),0;let path=repositoryPath(scope,repository);output_manager_default.spinner("Deleting repository...");try{return await client.fetch(path,{method:"DELETE"}),fr.jsonOutput?client.stdout.write(`${JSON.stringify({repository,deleted:!0},null,2)}
7
+ import{repositoryPath}from"./chunk-DFVNL5ML.js";import{emitVcrArgParseError,handleVcrApiError,requireVcrRepository,resolveVcrScope,validateVcrJsonOutput}from"./chunk-IYCHAIFZ.js";import"./chunk-ZQKDO5PL.js";import"./chunk-KKCBFBJK.js";import{removeSubcommand}from"./chunk-BFRDBBSO.js";import"./chunk-2UMWTCY7.js";import"./chunk-Q5ZGA2RO.js";import"./chunk-UGMTKOTN.js";import"./chunk-FBYA6LLM.js";import"./chunk-SCV7XEEO.js";import{printError}from"./chunk-QAETJRKX.js";import"./chunk-D4MW3RDW.js";import"./chunk-IIC2A4YN.js";import"./chunk-MV4WHUIC.js";import"./chunk-VKXEOL4K.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-ZS2WS4AM.js";import"./chunk-AOWWC6WZ.js";import"./chunk-MY4MONOH.js";import{parseArguments}from"./chunk-ELDHGU6N.js";import{AGENT_REASON,buildCommandWithYes,outputAgentError}from"./chunk-BAT6SDBJ.js";import{getFlagsSpecification}from"./chunk-MI7W4QMV.js";import"./chunk-U3NQZJQ4.js";import"./chunk-ROPQIBWJ.js";import"./chunk-VKPZP4LC.js";import"./chunk-PPCFQQSU.js";import"./chunk-IJCCFLCQ.js";import"./chunk-ZQME5XUJ.js";import"./chunk-2VBFQZ72.js";import{isAPIError}from"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";async function rm(client,argv,telemetry){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(removeSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr rm <repository> --project <name-or-id>"),printError(err),2}let fr=validateVcrJsonOutput(client,parsedArgs.flags);if(typeof fr=="number")return fr;let repository=parsedArgs.args[0],project=parsedArgs.flags["--project"],skipConfirmation=!!parsedArgs.flags["--yes"];telemetry.trackCliOptionProject(project),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]);let missingRepository=requireVcrRepository(client,repository,fr.jsonOutput,"vcr rm <repository>");if(typeof missingRepository=="number")return missingRepository;let scope=await resolveVcrScope(client,{project,jsonOutput:fr.jsonOutput});if(typeof scope=="number")return scope;if(!skipConfirmation&&(outputAgentError(client,{status:"error",reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:"Deleting a repository deletes it and all of its images. Re-run with --yes.",next:[{command:buildCommandWithYes(client.argv)}]},1),!await client.input.confirm(`Delete repository ${repository} and all of its images? This cannot be undone.`,!1)))return output_manager_default.log("Canceled"),0;let path=repositoryPath(scope,repository);output_manager_default.spinner("Deleting repository...");try{return await client.fetch(path,{method:"DELETE"}),fr.jsonOutput?client.stdout.write(`${JSON.stringify({repository,deleted:!0},null,2)}
8
8
  `):output_manager_default.success(`Repository ${repository} deleted`),0}catch(err){if(isAPIError(err))return handleVcrApiError(client,err,fr.jsonOutput);throw err}finally{output_manager_default.stopSpinner()}}export{rm as default};
@@ -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{RoutesAddTelemetryClient,RoutesEditTelemetryClient,RoutesTelemetryClient}from"./chunk-ZE53XHAY.js";import"./chunk-KUGXOLL7.js";import"./chunk-VKXEOL4K.js";import"./chunk-NWGBDBZI.js";import"./chunk-4SAVH3H7.js";import"./chunk-VKPZP4LC.js";import"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";export{RoutesAddTelemetryClient,RoutesEditTelemetryClient,RoutesTelemetryClient};
7
+ import{RoutesAddTelemetryClient,RoutesEditTelemetryClient,RoutesTelemetryClient}from"./chunk-XXCWQPAH.js";import"./chunk-KUGXOLL7.js";import"./chunk-VKXEOL4K.js";import"./chunk-NWGBDBZI.js";import"./chunk-4SAVH3H7.js";import"./chunk-VKPZP4LC.js";import"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";export{RoutesAddTelemetryClient,RoutesEditTelemetryClient,RoutesTelemetryClient};
@@ -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{warnDeprecatedSubcommand}from"./chunk-HJRAWEA2.js";import{getSubcommand}from"./chunk-ETV3C2CV.js";import"./chunk-D4MW3RDW.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-BAT6SDBJ.js";import"./chunk-MI7W4QMV.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";var RULES_CONFIG={ls:["ls","list"],schema:["schema"],add:["add","create"],inspect:["inspect","get"],remove:["remove","rm","delete"],update:["update","patch"],notifications:["notifications"]};async function rules(client,argv){if(argv.length===0||argv[0]?.startsWith("-")){let lsFn=(await import("./ls-3GNX6IPE.js")).default;return lsFn(client,argv)}let{subcommand,args,subcommandOriginal}=getSubcommand(argv,RULES_CONFIG);if(subcommand==null)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:`Unknown "alerts rules" subcommand "${argv[0]}".`,next:[{command:buildCommandWithGlobalFlags(client.argv,"alerts rules --help"),when:"Show valid rules subcommands"}]},2),output_manager_default.error(`Unknown "alerts rules" subcommand "${argv[0]}". Run \`vercel alerts rules --help\`.`),2;switch(subcommand){case"ls":return(await import("./ls-3GNX6IPE.js")).default(client,args);case"schema":return(await import("./schema-HWS2SOZS.js")).default(client,args);case"add":return subcommandOriginal==="create"&&warnDeprecatedSubcommand(client,"alerts rules create","alerts rules add"),(await import("./add-5RV75RPG.js")).default(client,args);case"inspect":return(await import("./rule-inspect-NLEABBTP.js")).default(client,args);case"remove":return(await import("./rm-OI5VS7GG.js")).default(client,args);case"update":return(await import("./update-C7XR7CHI.js")).default(client,args);case"notifications":return(await import("./notifications-TDSFYYNB.js")).default(client,args);default:return output_manager_default.error(`Unhandled rules subcommand: ${String(subcommandOriginal)}`),1}}export{rules as default};
7
+ import{warnDeprecatedSubcommand}from"./chunk-HJRAWEA2.js";import{getSubcommand}from"./chunk-ETV3C2CV.js";import"./chunk-D4MW3RDW.js";import{AGENT_REASON,buildCommandWithGlobalFlags,outputAgentError}from"./chunk-BAT6SDBJ.js";import"./chunk-MI7W4QMV.js";import"./chunk-2VBFQZ72.js";import"./chunk-XSDAUM4F.js";import"./chunk-JESNVRVR.js";import{output_manager_default}from"./chunk-M774HRX5.js";import"./chunk-RM3ZDRYE.js";import"./chunk-OO572JUC.js";import"./chunk-D3AHZ5LI.js";import"./chunk-2GHZGOWT.js";import"./chunk-YHPPP3SF.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BRQUZ5NC.js";import"./chunk-BZENIQ7N.js";var RULES_CONFIG={ls:["ls","list"],schema:["schema"],add:["add","create"],inspect:["inspect","get"],remove:["remove","rm","delete"],update:["update","patch"],notifications:["notifications"]};async function rules(client,argv){if(argv.length===0||argv[0]?.startsWith("-")){let lsFn=(await import("./ls-3GNX6IPE.js")).default;return lsFn(client,argv)}let{subcommand,args,subcommandOriginal}=getSubcommand(argv,RULES_CONFIG);if(subcommand==null)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:`Unknown "alerts rules" subcommand "${argv[0]}".`,next:[{command:buildCommandWithGlobalFlags(client.argv,"alerts rules --help"),when:"Show valid rules subcommands"}]},2),output_manager_default.error(`Unknown "alerts rules" subcommand "${argv[0]}". Run \`vercel alerts rules --help\`.`),2;switch(subcommand){case"ls":return(await import("./ls-3GNX6IPE.js")).default(client,args);case"schema":return(await import("./schema-HWS2SOZS.js")).default(client,args);case"add":return subcommandOriginal==="create"&&warnDeprecatedSubcommand(client,"alerts rules create","alerts rules add"),(await import("./add-5RV75RPG.js")).default(client,args);case"inspect":return(await import("./rule-inspect-NLEABBTP.js")).default(client,args);case"remove":return(await import("./rm-OI5VS7GG.js")).default(client,args);case"update":return subcommandOriginal==="patch"&&warnDeprecatedSubcommand(client,"alerts rules patch","alerts rules update"),(await import("./update-C7XR7CHI.js")).default(client,args);case"notifications":return(await import("./notifications-WUCV63TE.js")).default(client,args);default:return output_manager_default.error(`Unhandled rules subcommand: ${String(subcommandOriginal)}`),1}}export{rules as default};