@wraps.dev/cli 2.30.2 → 2.30.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -6519,14 +6519,14 @@ function displaySuccess(outputs) {
6519
6519
  lines.push(
6520
6520
  pc10.bold(" Quick start:"),
6521
6521
  "",
6522
- pc10.dim(" import { Wraps } from '@wraps.dev/email';"),
6522
+ pc10.dim(" import { WrapsEmail } from '@wraps.dev/email';"),
6523
6523
  pc10.dim(""),
6524
- pc10.dim(" const wraps = new Wraps({"),
6524
+ pc10.dim(" const email = new WrapsEmail({"),
6525
6525
  pc10.dim(` roleArn: '${outputs.roleArn}',`),
6526
6526
  pc10.dim(` region: '${outputs.region}'`),
6527
6527
  pc10.dim(" });"),
6528
6528
  pc10.dim(""),
6529
- pc10.dim(" await wraps.emails.send({"),
6529
+ pc10.dim(" await email.send({"),
6530
6530
  pc10.dim(` from: 'hello@${outputs.domain}',`),
6531
6531
  pc10.dim(" to: 'user@example.com',"),
6532
6532
  pc10.dim(" subject: 'Hello from Wraps!',"),
@@ -7216,14 +7216,14 @@ async function withLockRetry(fn, options) {
7216
7216
  throw error;
7217
7217
  }
7218
7218
  const clack69 = await import("@clack/prompts");
7219
- const pc73 = (await import("picocolors")).default;
7219
+ const pc74 = (await import("picocolors")).default;
7220
7220
  if (options.autoConfirm) {
7221
7221
  clack69.log.warn(
7222
7222
  "Stack is locked from a previous interrupted run. Auto-clearing..."
7223
7223
  );
7224
7224
  } else {
7225
7225
  const shouldClear = await clack69.confirm({
7226
- message: `Stack is locked from a previous interrupted run. ${pc73.yellow("Clear the stale lock and retry?")}`,
7226
+ message: `Stack is locked from a previous interrupted run. ${pc74.yellow("Clear the stale lock and retry?")}`,
7227
7227
  initialValue: true
7228
7228
  });
7229
7229
  if (clack69.isCancel(shouldClear) || !shouldClear) {
@@ -31404,7 +31404,7 @@ import { join as join26 } from "path";
31404
31404
  import { Readable as Readable5 } from "stream";
31405
31405
  import { pipeline } from "stream/promises";
31406
31406
  import { cancel as cancel38, confirm as confirm32, intro as intro63, isCancel as isCancel43, log as log62 } from "@clack/prompts";
31407
- import pc71 from "picocolors";
31407
+ import pc72 from "picocolors";
31408
31408
  function isStandaloneInstall() {
31409
31409
  return process.execPath.includes(".wraps/runtime");
31410
31410
  }
@@ -31433,7 +31433,7 @@ function detectPlatformArch() {
31433
31433
  return { platform: platform3, arch };
31434
31434
  }
31435
31435
  async function update(currentVersion) {
31436
- intro63(pc71.bold("Wraps CLI Update"));
31436
+ intro63(pc72.bold("Wraps CLI Update"));
31437
31437
  const progress = new DeploymentProgress();
31438
31438
  const result = await progress.execute(
31439
31439
  "Checking for updates...",
@@ -31445,20 +31445,20 @@ async function update(currentVersion) {
31445
31445
  }
31446
31446
  const { version: latestVersion, release: release2 } = result;
31447
31447
  if (currentVersion === latestVersion) {
31448
- progress.succeed(`Already up to date ${pc71.dim(`(v${currentVersion})`)}`);
31448
+ progress.succeed(`Already up to date ${pc72.dim(`(v${currentVersion})`)}`);
31449
31449
  return;
31450
31450
  }
31451
31451
  console.log();
31452
31452
  log62.info(
31453
- `Current version: ${pc71.dim(`v${currentVersion}`)}
31454
- Latest version: ${pc71.cyan(`v${latestVersion}`)}`
31453
+ `Current version: ${pc72.dim(`v${currentVersion}`)}
31454
+ Latest version: ${pc72.cyan(`v${latestVersion}`)}`
31455
31455
  );
31456
31456
  console.log();
31457
31457
  if (!isStandaloneInstall()) {
31458
31458
  log62.info(
31459
31459
  `You installed Wraps via npm. Update with:
31460
31460
 
31461
- ${pc71.cyan("npm update -g @wraps.dev/cli")}`
31461
+ ${pc72.cyan("npm update -g @wraps.dev/cli")}`
31462
31462
  );
31463
31463
  return;
31464
31464
  }
@@ -31533,7 +31533,7 @@ async function update(currentVersion) {
31533
31533
  });
31534
31534
  console.log();
31535
31535
  progress.succeed(
31536
- `Updated to ${pc71.cyan(`v${latestVersion}`)} successfully!`
31536
+ `Updated to ${pc72.cyan(`v${latestVersion}`)} successfully!`
31537
31537
  );
31538
31538
  } finally {
31539
31539
  rmSync(tmp, { recursive: true, force: true });
@@ -31557,7 +31557,7 @@ import { readFileSync as readFileSync4 } from "fs";
31557
31557
  import { dirname as dirname8, join as join27 } from "path";
31558
31558
  import { fileURLToPath as fileURLToPath8 } from "url";
31559
31559
  import * as clack68 from "@clack/prompts";
31560
- import pc72 from "picocolors";
31560
+ import pc73 from "picocolors";
31561
31561
 
31562
31562
  // src/commands/auth/login.ts
31563
31563
  init_esm_shims();
@@ -62830,18 +62830,18 @@ async function createSMSProtectConfigurationWithSDK(configurationSetName, region
62830
62830
  const existing = await client2.send(
62831
62831
  new DescribeProtectConfigurationsCommand({})
62832
62832
  );
62833
- for (const pc73 of existing.ProtectConfigurations || []) {
62834
- if (!(pc73.ProtectConfigurationArn && pc73.ProtectConfigurationId)) {
62833
+ for (const pc74 of existing.ProtectConfigurations || []) {
62834
+ if (!(pc74.ProtectConfigurationArn && pc74.ProtectConfigurationId)) {
62835
62835
  continue;
62836
62836
  }
62837
62837
  const tagsResponse = await client2.send(
62838
62838
  new ListTagsForResourceCommand({
62839
- ResourceArn: pc73.ProtectConfigurationArn
62839
+ ResourceArn: pc74.ProtectConfigurationArn
62840
62840
  })
62841
62841
  );
62842
62842
  const nameTag = tagsResponse.Tags?.find((t) => t.Key === "Name");
62843
62843
  if (nameTag?.Value === protectConfigName) {
62844
- existingProtectConfigId = pc73.ProtectConfigurationId;
62844
+ existingProtectConfigId = pc74.ProtectConfigurationId;
62845
62845
  break;
62846
62846
  }
62847
62847
  }
@@ -62937,13 +62937,13 @@ async function deleteSMSProtectConfigurationWithSDK(region) {
62937
62937
  new DescribeProtectConfigurationsCommand({})
62938
62938
  );
62939
62939
  if (existing.ProtectConfigurations) {
62940
- for (const pc73 of existing.ProtectConfigurations) {
62941
- if (!(pc73.ProtectConfigurationArn && pc73.ProtectConfigurationId)) {
62940
+ for (const pc74 of existing.ProtectConfigurations) {
62941
+ if (!(pc74.ProtectConfigurationArn && pc74.ProtectConfigurationId)) {
62942
62942
  continue;
62943
62943
  }
62944
62944
  const tagsResponse = await client2.send(
62945
62945
  new ListTagsForResourceCommand({
62946
- ResourceArn: pc73.ProtectConfigurationArn
62946
+ ResourceArn: pc74.ProtectConfigurationArn
62947
62947
  })
62948
62948
  );
62949
62949
  const isWrapsManaged = tagsResponse.Tags?.some(
@@ -62952,7 +62952,7 @@ async function deleteSMSProtectConfigurationWithSDK(region) {
62952
62952
  if (isWrapsManaged) {
62953
62953
  await client2.send(
62954
62954
  new DeleteProtectConfigurationCommand({
62955
- ProtectConfigurationId: pc73.ProtectConfigurationId
62955
+ ProtectConfigurationId: pc74.ProtectConfigurationId
62956
62956
  })
62957
62957
  );
62958
62958
  }
@@ -63201,7 +63201,7 @@ Run ${pc60.cyan("wraps sms init")} to deploy infrastructure again.
63201
63201
  init_esm_shims();
63202
63202
  import * as clack58 from "@clack/prompts";
63203
63203
  import * as pulumi35 from "@pulumi/pulumi";
63204
- import pc61 from "picocolors";
63204
+ import pc62 from "picocolors";
63205
63205
  init_events();
63206
63206
  init_aws();
63207
63207
  init_fs();
@@ -63436,6 +63436,20 @@ function getSMSCostSummary(config2, messagesPerMonth = 1e3) {
63436
63436
  return lines.join("\n");
63437
63437
  }
63438
63438
 
63439
+ // src/utils/sms/output.ts
63440
+ init_esm_shims();
63441
+ import pc61 from "picocolors";
63442
+ function displaySMSSDKUsage(region) {
63443
+ console.log(pc61.dim(" npm install @wraps.dev/sms"));
63444
+ console.log("");
63445
+ console.log(pc61.dim(" import { WrapsSMS } from '@wraps.dev/sms';"));
63446
+ console.log(pc61.dim(` const sms = new WrapsSMS({ region: '${region}' });`));
63447
+ console.log(pc61.dim(" await sms.send({"));
63448
+ console.log(pc61.dim(" to: '+14155551234',"));
63449
+ console.log(pc61.dim(" message: 'Your code is 123456',"));
63450
+ console.log(pc61.dim(" });"));
63451
+ }
63452
+
63439
63453
  // src/utils/sms/presets.ts
63440
63454
  init_esm_shims();
63441
63455
  var SMS_STARTER_PRESET = {
@@ -63728,14 +63742,14 @@ async function promptEstimatedSMSVolume() {
63728
63742
  async function init3(options) {
63729
63743
  const startTime = Date.now();
63730
63744
  if (!isJsonMode()) {
63731
- clack58.intro(pc61.bold("Wraps SMS Infrastructure Setup"));
63745
+ clack58.intro(pc62.bold("Wraps SMS Infrastructure Setup"));
63732
63746
  }
63733
63747
  const progress = new DeploymentProgress();
63734
63748
  const identity = await progress.execute(
63735
63749
  "Validating AWS credentials",
63736
63750
  async () => validateAWSCredentials()
63737
63751
  );
63738
- progress.info(`Connected to AWS account: ${pc61.cyan(identity.accountId)}`);
63752
+ progress.info(`Connected to AWS account: ${pc62.cyan(identity.accountId)}`);
63739
63753
  const wasAutoInstalled = await progress.execute(
63740
63754
  "Checking Pulumi CLI installation",
63741
63755
  async () => await ensurePulumiInstalled()
@@ -63755,9 +63769,9 @@ async function init3(options) {
63755
63769
  );
63756
63770
  if (existingConnection?.services?.sms) {
63757
63771
  clack58.log.warn(
63758
- `SMS already configured for account ${pc61.cyan(identity.accountId)} in region ${pc61.cyan(region)}`
63772
+ `SMS already configured for account ${pc62.cyan(identity.accountId)} in region ${pc62.cyan(region)}`
63759
63773
  );
63760
- clack58.log.info(`Use ${pc61.cyan("wraps sms status")} to view current setup`);
63774
+ clack58.log.info(`Use ${pc62.cyan("wraps sms status")} to view current setup`);
63761
63775
  process.exit(0);
63762
63776
  }
63763
63777
  let preset = options.preset;
@@ -63799,7 +63813,7 @@ async function init3(options) {
63799
63813
  }
63800
63814
  progress.info(
63801
63815
  `
63802
- ${pc61.bold("Fraud Protection")} - Block SMS to countries where you don't do business`
63816
+ ${pc62.bold("Fraud Protection")} - Block SMS to countries where you don't do business`
63803
63817
  );
63804
63818
  const allowedCountries = await promptAllowedCountries();
63805
63819
  let aitFiltering = false;
@@ -63821,13 +63835,13 @@ ${pc61.bold("Fraud Protection")} - Block SMS to countries where you don't do bus
63821
63835
  };
63822
63836
  const estimatedVolume = await promptEstimatedSMSVolume();
63823
63837
  progress.info(`
63824
- ${pc61.bold("Cost Estimate:")}`);
63838
+ ${pc62.bold("Cost Estimate:")}`);
63825
63839
  const costSummary = getSMSCostSummary(smsConfig, estimatedVolume);
63826
63840
  clack58.log.info(costSummary);
63827
63841
  const warnings = validateSMSConfig(smsConfig);
63828
63842
  if (warnings.length > 0) {
63829
63843
  progress.info(`
63830
- ${pc61.yellow(pc61.bold("Important Notes:"))}`);
63844
+ ${pc62.yellow(pc62.bold("Important Notes:"))}`);
63831
63845
  for (const warning2 of warnings) {
63832
63846
  clack58.log.warn(warning2);
63833
63847
  }
@@ -63896,7 +63910,7 @@ ${pc61.yellow(pc61.bold("Important Notes:"))}`);
63896
63910
  commandName: "wraps sms init"
63897
63911
  });
63898
63912
  clack58.outro(
63899
- pc61.green("Preview complete. Run without --preview to deploy.")
63913
+ pc62.green("Preview complete. Run without --preview to deploy.")
63900
63914
  );
63901
63915
  trackServiceInit("sms", true, {
63902
63916
  provider,
@@ -63947,7 +63961,7 @@ ${pc61.yellow(pc61.bold("Important Notes:"))}`);
63947
63961
  const msg = sdkError instanceof Error ? sdkError.message : String(sdkError);
63948
63962
  clack58.log.warn(`Phone pool creation failed: ${msg}`);
63949
63963
  clack58.log.info(
63950
- `Run ${pc61.cyan("wraps sms sync")} to retry SDK resource creation.`
63964
+ `Run ${pc62.cyan("wraps sms sync")} to retry SDK resource creation.`
63951
63965
  );
63952
63966
  }
63953
63967
  }
@@ -63965,7 +63979,7 @@ ${pc61.yellow(pc61.bold("Important Notes:"))}`);
63965
63979
  const msg = sdkError instanceof Error ? sdkError.message : String(sdkError);
63966
63980
  clack58.log.warn(`Event destination creation failed: ${msg}`);
63967
63981
  clack58.log.info(
63968
- `Run ${pc61.cyan("wraps sms sync")} to retry SDK resource creation.`
63982
+ `Run ${pc62.cyan("wraps sms sync")} to retry SDK resource creation.`
63969
63983
  );
63970
63984
  }
63971
63985
  }
@@ -63986,7 +64000,7 @@ ${pc61.yellow(pc61.bold("Important Notes:"))}`);
63986
64000
  const msg = sdkError instanceof Error ? sdkError.message : String(sdkError);
63987
64001
  clack58.log.warn(`Protect configuration creation failed: ${msg}`);
63988
64002
  clack58.log.info(
63989
- `Run ${pc61.cyan("wraps sms sync")} to retry SDK resource creation.`
64003
+ `Run ${pc62.cyan("wraps sms sync")} to retry SDK resource creation.`
63990
64004
  );
63991
64005
  }
63992
64006
  }
@@ -64036,47 +64050,40 @@ ${pc61.yellow(pc61.bold("Important Notes:"))}`);
64036
64050
  return;
64037
64051
  }
64038
64052
  console.log("\n");
64039
- clack58.log.success(pc61.green(pc61.bold("SMS infrastructure deployed!")));
64053
+ clack58.log.success(pc62.green(pc62.bold("SMS infrastructure deployed!")));
64040
64054
  console.log("\n");
64041
64055
  clack58.note(
64042
64056
  [
64043
- `${pc61.bold("Phone Number:")} ${pc61.cyan(outputs.phoneNumber || "Provisioning...")}`,
64044
- `${pc61.bold("Phone Type:")} ${pc61.cyan(smsConfig.phoneNumberType || "simulator")}`,
64045
- `${pc61.bold("Config Set:")} ${pc61.cyan(outputs.configSetName || "wraps-sms-config")}`,
64046
- `${pc61.bold("Region:")} ${pc61.cyan(outputs.region)}`,
64047
- outputs.tableName ? `${pc61.bold("History Table:")} ${pc61.cyan(outputs.tableName)}` : "",
64057
+ `${pc62.bold("Phone Number:")} ${pc62.cyan(outputs.phoneNumber || "Provisioning...")}`,
64058
+ `${pc62.bold("Phone Type:")} ${pc62.cyan(smsConfig.phoneNumberType || "simulator")}`,
64059
+ `${pc62.bold("Config Set:")} ${pc62.cyan(outputs.configSetName || "wraps-sms-config")}`,
64060
+ `${pc62.bold("Region:")} ${pc62.cyan(outputs.region)}`,
64061
+ outputs.tableName ? `${pc62.bold("History Table:")} ${pc62.cyan(outputs.tableName)}` : "",
64048
64062
  "",
64049
- pc61.dim("IAM Role:"),
64050
- pc61.dim(` ${outputs.roleArn}`)
64063
+ pc62.dim("IAM Role:"),
64064
+ pc62.dim(` ${outputs.roleArn}`)
64051
64065
  ].filter(Boolean).join("\n"),
64052
64066
  "SMS Infrastructure"
64053
64067
  );
64054
64068
  const nextSteps = [];
64055
64069
  if (smsConfig.phoneNumberType === "toll-free") {
64056
64070
  nextSteps.push(
64057
- `${pc61.cyan("wraps sms register")} - Submit toll-free registration (required before sending)`
64071
+ `${pc62.cyan("wraps sms register")} - Submit toll-free registration (required before sending)`
64058
64072
  );
64059
64073
  }
64060
64074
  nextSteps.push(
64061
- `${pc61.cyan("wraps sms test --to +1234567890")} - Send a test message`
64075
+ `${pc62.cyan("wraps sms test --to +1234567890")} - Send a test message`
64062
64076
  );
64063
- nextSteps.push(`${pc61.cyan("wraps sms status")} - View SMS configuration`);
64077
+ nextSteps.push(`${pc62.cyan("wraps sms status")} - View SMS configuration`);
64064
64078
  console.log("\n");
64065
- clack58.log.info(pc61.bold("Next steps:"));
64079
+ clack58.log.info(pc62.bold("Next steps:"));
64066
64080
  for (const step of nextSteps) {
64067
64081
  console.log(` ${step}`);
64068
64082
  }
64069
64083
  console.log("\n");
64070
- clack58.log.info(pc61.bold("SDK Usage:"));
64071
- console.log(pc61.dim(" npm install @wraps.dev/sms"));
64072
- console.log("");
64073
- console.log(pc61.dim(" import { Wraps } from '@wraps.dev/sms';"));
64074
- console.log(pc61.dim(" const wraps = new Wraps();"));
64075
- console.log(pc61.dim(" await wraps.sms.send({"));
64076
- console.log(pc61.dim(" to: '+14155551234',"));
64077
- console.log(pc61.dim(" message: 'Your code is 123456',"));
64078
- console.log(pc61.dim(" });"));
64079
- clack58.outro(pc61.green("Setup complete!"));
64084
+ clack58.log.info(pc62.bold("SDK Usage:"));
64085
+ displaySMSSDKUsage(region);
64086
+ clack58.outro(pc62.green("Setup complete!"));
64080
64087
  const duration = Date.now() - startTime;
64081
64088
  const enabledFeatures = [];
64082
64089
  if (smsConfig.tracking?.enabled) {
@@ -64113,7 +64120,7 @@ init_json_output();
64113
64120
  init_metadata();
64114
64121
  init_output();
64115
64122
  import * as clack59 from "@clack/prompts";
64116
- import pc62 from "picocolors";
64123
+ import pc63 from "picocolors";
64117
64124
  async function getPhoneNumberDetails(region) {
64118
64125
  const { PinpointSMSVoiceV2Client: PinpointSMSVoiceV2Client5, DescribePhoneNumbersCommand: DescribePhoneNumbersCommand2 } = await import("@aws-sdk/client-pinpoint-sms-voice-v2");
64119
64126
  const client2 = new PinpointSMSVoiceV2Client5({ region });
@@ -64154,7 +64161,7 @@ async function getRegistrationStatus(region, registrationId) {
64154
64161
  async function smsRegister(options) {
64155
64162
  const startTime = Date.now();
64156
64163
  if (!isJsonMode()) {
64157
- clack59.intro(pc62.bold("Wraps SMS - Toll-Free Registration"));
64164
+ clack59.intro(pc63.bold("Wraps SMS - Toll-Free Registration"));
64158
64165
  }
64159
64166
  const progress = new DeploymentProgress();
64160
64167
  const identity = await progress.execute(
@@ -64168,7 +64175,7 @@ async function smsRegister(options) {
64168
64175
  const metadata = await loadConnectionMetadata(identity.accountId, region);
64169
64176
  if (!metadata?.services?.sms) {
64170
64177
  clack59.log.error("No SMS infrastructure found.");
64171
- clack59.log.info(`Run ${pc62.cyan("wraps sms init")} first.`);
64178
+ clack59.log.info(`Run ${pc63.cyan("wraps sms init")} first.`);
64172
64179
  process.exit(1);
64173
64180
  }
64174
64181
  const phoneDetails = await progress.execute(
@@ -64202,14 +64209,14 @@ async function smsRegister(options) {
64202
64209
  }
64203
64210
  console.log("");
64204
64211
  console.log(
64205
- `${pc62.bold("Phone Number:")} ${pc62.cyan(phoneDetails.phoneNumber)}`
64212
+ `${pc63.bold("Phone Number:")} ${pc63.cyan(phoneDetails.phoneNumber)}`
64206
64213
  );
64207
- console.log(`${pc62.bold("Type:")} ${pc62.cyan(phoneDetails.type)}`);
64214
+ console.log(`${pc63.bold("Type:")} ${pc63.cyan(phoneDetails.type)}`);
64208
64215
  console.log(
64209
- `${pc62.bold("Status:")} ${phoneDetails.status === "ACTIVE" ? pc62.green(phoneDetails.status) : pc62.yellow(phoneDetails.status)}`
64216
+ `${pc63.bold("Status:")} ${phoneDetails.status === "ACTIVE" ? pc63.green(phoneDetails.status) : pc63.yellow(phoneDetails.status)}`
64210
64217
  );
64211
64218
  if (registrationStatus) {
64212
- console.log(`${pc62.bold("Registration:")} ${pc62.cyan(registrationStatus)}`);
64219
+ console.log(`${pc63.bold("Registration:")} ${pc63.cyan(registrationStatus)}`);
64213
64220
  }
64214
64221
  console.log("");
64215
64222
  if (phoneDetails.status === "ACTIVE") {
@@ -64227,21 +64234,21 @@ async function smsRegister(options) {
64227
64234
  clack59.log.info(`Your ${phoneDetails.type} number should be ready to use.`);
64228
64235
  process.exit(0);
64229
64236
  }
64230
- console.log(pc62.bold("Toll-Free Registration Required"));
64237
+ console.log(pc63.bold("Toll-Free Registration Required"));
64231
64238
  console.log("");
64232
64239
  console.log(
64233
- pc62.dim("To send SMS at scale, you must register your toll-free number.")
64240
+ pc63.dim("To send SMS at scale, you must register your toll-free number.")
64234
64241
  );
64235
- console.log(pc62.dim("This process typically takes 1-15 business days."));
64242
+ console.log(pc63.dim("This process typically takes 1-15 business days."));
64236
64243
  console.log("");
64237
- console.log(pc62.bold("You'll need to provide:"));
64238
- console.log(` ${pc62.dim("\u2022")} Business name and address`);
64244
+ console.log(pc63.bold("You'll need to provide:"));
64245
+ console.log(` ${pc63.dim("\u2022")} Business name and address`);
64239
64246
  console.log(
64240
- ` ${pc62.dim("\u2022")} Use case description (what messages you're sending)`
64247
+ ` ${pc63.dim("\u2022")} Use case description (what messages you're sending)`
64241
64248
  );
64242
- console.log(` ${pc62.dim("\u2022")} Sample messages (2-3 examples)`);
64243
- console.log(` ${pc62.dim("\u2022")} How users opt-in to receive messages`);
64244
- console.log(` ${pc62.dim("\u2022")} Expected monthly message volume`);
64249
+ console.log(` ${pc63.dim("\u2022")} Sample messages (2-3 examples)`);
64250
+ console.log(` ${pc63.dim("\u2022")} How users opt-in to receive messages`);
64251
+ console.log(` ${pc63.dim("\u2022")} Expected monthly message volume`);
64245
64252
  console.log("");
64246
64253
  const openConsole = await clack59.confirm({
64247
64254
  message: "Open AWS Console to start registration?",
@@ -64266,33 +64273,33 @@ async function smsRegister(options) {
64266
64273
  } catch {
64267
64274
  clack59.log.info("Open this URL in your browser:");
64268
64275
  console.log(`
64269
- ${pc62.cyan(consoleUrl)}
64276
+ ${pc63.cyan(consoleUrl)}
64270
64277
  `);
64271
64278
  }
64272
64279
  }
64273
64280
  console.log("");
64274
- console.log(pc62.bold("Next Steps:"));
64281
+ console.log(pc63.bold("Next Steps:"));
64275
64282
  console.log(
64276
- ` 1. Click ${pc62.cyan("Create registration")} in the AWS Console`
64283
+ ` 1. Click ${pc63.cyan("Create registration")} in the AWS Console`
64277
64284
  );
64278
- console.log(` 2. Select ${pc62.cyan("Toll-free number registration")}`);
64285
+ console.log(` 2. Select ${pc63.cyan("Toll-free number registration")}`);
64279
64286
  console.log(" 3. Fill out the business information form");
64280
64287
  console.log(" 4. Submit and wait for approval (1-15 business days)");
64281
64288
  console.log("");
64282
64289
  console.log(
64283
- pc62.dim("Once approved, run `wraps sms sync` to complete setup.")
64290
+ pc63.dim("Once approved, run `wraps sms sync` to complete setup.")
64284
64291
  );
64285
64292
  } else {
64286
64293
  const consoleUrl = `https://${region}.console.aws.amazon.com/sms-voice/home?region=${region}#/registrations`;
64287
64294
  console.log("");
64288
64295
  console.log("When you're ready, go to:");
64289
- console.log(` ${pc62.cyan(consoleUrl)}`);
64296
+ console.log(` ${pc63.cyan(consoleUrl)}`);
64290
64297
  }
64291
64298
  trackCommand("sms:register", {
64292
64299
  success: true,
64293
64300
  duration_ms: Date.now() - startTime
64294
64301
  });
64295
- clack59.outro(pc62.dim("Good luck with your registration!"));
64302
+ clack59.outro(pc63.dim("Good luck with your registration!"));
64296
64303
  }
64297
64304
 
64298
64305
  // src/commands/sms/status.ts
@@ -64307,43 +64314,43 @@ init_pulumi();
64307
64314
  init_region_resolver();
64308
64315
  import * as clack60 from "@clack/prompts";
64309
64316
  import * as pulumi36 from "@pulumi/pulumi";
64310
- import pc63 from "picocolors";
64317
+ import pc64 from "picocolors";
64311
64318
  function displaySMSStatus(options) {
64312
64319
  const lines = [];
64313
- lines.push(pc63.bold(pc63.green("SMS Infrastructure Active")));
64320
+ lines.push(pc64.bold(pc64.green("SMS Infrastructure Active")));
64314
64321
  lines.push("");
64315
- lines.push(pc63.bold("Phone Number"));
64322
+ lines.push(pc64.bold("Phone Number"));
64316
64323
  if (options.phoneNumber) {
64317
- lines.push(` Number: ${pc63.cyan(options.phoneNumber)}`);
64324
+ lines.push(` Number: ${pc64.cyan(options.phoneNumber)}`);
64318
64325
  } else {
64319
- lines.push(` Number: ${pc63.yellow("Provisioning...")}`);
64326
+ lines.push(` Number: ${pc64.yellow("Provisioning...")}`);
64320
64327
  }
64321
- lines.push(` Type: ${pc63.cyan(options.phoneNumberType || "simulator")}`);
64328
+ lines.push(` Type: ${pc64.cyan(options.phoneNumberType || "simulator")}`);
64322
64329
  lines.push("");
64323
- lines.push(pc63.bold("Configuration"));
64324
- lines.push(` Region: ${pc63.cyan(options.region)}`);
64330
+ lines.push(pc64.bold("Configuration"));
64331
+ lines.push(` Region: ${pc64.cyan(options.region)}`);
64325
64332
  if (options.preset) {
64326
- lines.push(` Preset: ${pc63.cyan(options.preset)}`);
64333
+ lines.push(` Preset: ${pc64.cyan(options.preset)}`);
64327
64334
  }
64328
64335
  if (options.configSetName) {
64329
- lines.push(` Config Set: ${pc63.cyan(options.configSetName)}`);
64336
+ lines.push(` Config Set: ${pc64.cyan(options.configSetName)}`);
64330
64337
  }
64331
64338
  lines.push("");
64332
- lines.push(pc63.bold("Features"));
64339
+ lines.push(pc64.bold("Features"));
64333
64340
  lines.push(
64334
- ` Event Tracking: ${options.eventTracking ? pc63.green("Enabled") : pc63.dim("Disabled")}`
64341
+ ` Event Tracking: ${options.eventTracking ? pc64.green("Enabled") : pc64.dim("Disabled")}`
64335
64342
  );
64336
64343
  if (options.tableName) {
64337
- lines.push(` Message History: ${pc63.green("Enabled")}`);
64338
- lines.push(` Table: ${pc63.dim(options.tableName)}`);
64344
+ lines.push(` Message History: ${pc64.green("Enabled")}`);
64345
+ lines.push(` Table: ${pc64.dim(options.tableName)}`);
64339
64346
  }
64340
64347
  if (options.queueUrl) {
64341
- lines.push(` Event Queue: ${pc63.green("Enabled")}`);
64348
+ lines.push(` Event Queue: ${pc64.green("Enabled")}`);
64342
64349
  }
64343
64350
  lines.push("");
64344
64351
  if (options.roleArn) {
64345
- lines.push(pc63.bold("IAM Role"));
64346
- lines.push(` ${pc63.dim(options.roleArn)}`);
64352
+ lines.push(pc64.bold("IAM Role"));
64353
+ lines.push(` ${pc64.dim(options.roleArn)}`);
64347
64354
  }
64348
64355
  clack60.note(lines.join("\n"), "SMS Status");
64349
64356
  }
@@ -64352,7 +64359,7 @@ async function smsStatus(options) {
64352
64359
  const startTime = Date.now();
64353
64360
  const progress = new DeploymentProgress();
64354
64361
  if (!isJsonMode()) {
64355
- clack60.intro(pc63.bold("Wraps SMS Status"));
64362
+ clack60.intro(pc64.bold("Wraps SMS Status"));
64356
64363
  }
64357
64364
  const identity = await progress.execute(
64358
64365
  "Loading SMS infrastructure status",
@@ -64370,7 +64377,7 @@ async function smsStatus(options) {
64370
64377
  clack60.log.error("No SMS infrastructure found");
64371
64378
  console.log(
64372
64379
  `
64373
- Run ${pc63.cyan("wraps sms init")} to deploy SMS infrastructure.
64380
+ Run ${pc64.cyan("wraps sms init")} to deploy SMS infrastructure.
64374
64381
  `
64375
64382
  );
64376
64383
  process.exit(1);
@@ -64406,25 +64413,25 @@ Run ${pc63.cyan("wraps sms init")} to deploy SMS infrastructure.
64406
64413
  }
64407
64414
  displaySMSStatus(smsStatusData);
64408
64415
  console.log("");
64409
- clack60.log.info(pc63.bold("Commands:"));
64416
+ clack60.log.info(pc64.bold("Commands:"));
64410
64417
  console.log(
64411
- ` ${pc63.cyan("wraps sms test --to +1234567890")} - Send a test message`
64418
+ ` ${pc64.cyan("wraps sms test --to +1234567890")} - Send a test message`
64412
64419
  );
64413
- console.log(` ${pc63.cyan("wraps sms destroy")} - Remove SMS infrastructure`);
64420
+ console.log(` ${pc64.cyan("wraps sms destroy")} - Remove SMS infrastructure`);
64414
64421
  trackCommand("sms:status", {
64415
64422
  success: true,
64416
64423
  phone_type: smsConfig?.phoneNumberType,
64417
64424
  event_tracking: smsConfig?.eventTracking?.enabled,
64418
64425
  duration_ms: Date.now() - startTime
64419
64426
  });
64420
- clack60.outro(pc63.dim("SMS infrastructure is ready"));
64427
+ clack60.outro(pc64.dim("SMS infrastructure is ready"));
64421
64428
  }
64422
64429
 
64423
64430
  // src/commands/sms/sync.ts
64424
64431
  init_esm_shims();
64425
64432
  import * as clack61 from "@clack/prompts";
64426
64433
  import * as pulumi37 from "@pulumi/pulumi";
64427
- import pc64 from "picocolors";
64434
+ import pc65 from "picocolors";
64428
64435
  init_events();
64429
64436
  init_aws();
64430
64437
  init_errors();
@@ -64437,7 +64444,7 @@ async function smsSync(options) {
64437
64444
  await ensurePulumiInstalled();
64438
64445
  const startTime = Date.now();
64439
64446
  if (!isJsonMode()) {
64440
- clack61.intro(pc64.bold("Wraps SMS Infrastructure Sync"));
64447
+ clack61.intro(pc65.bold("Wraps SMS Infrastructure Sync"));
64441
64448
  }
64442
64449
  const progress = new DeploymentProgress();
64443
64450
  const identity = await progress.execute(
@@ -64452,7 +64459,7 @@ async function smsSync(options) {
64452
64459
  clack61.log.error("No SMS infrastructure found to sync");
64453
64460
  console.log(
64454
64461
  `
64455
- Run ${pc64.cyan("wraps sms init")} to deploy SMS infrastructure first.
64462
+ Run ${pc65.cyan("wraps sms init")} to deploy SMS infrastructure first.
64456
64463
  `
64457
64464
  );
64458
64465
  process.exit(1);
@@ -64461,10 +64468,10 @@ Run ${pc64.cyan("wraps sms init")} to deploy SMS infrastructure first.
64461
64468
  const storedStackName = smsService.pulumiStackName;
64462
64469
  progress.info("Found existing SMS configuration");
64463
64470
  progress.info(
64464
- `Phone type: ${pc64.cyan(smsConfig.phoneNumberType || "simulator")}`
64471
+ `Phone type: ${pc65.cyan(smsConfig.phoneNumberType || "simulator")}`
64465
64472
  );
64466
64473
  progress.info(
64467
- `Event tracking: ${pc64.cyan(smsConfig.eventTracking?.enabled ? "enabled" : "disabled")}`
64474
+ `Event tracking: ${pc65.cyan(smsConfig.eventTracking?.enabled ? "enabled" : "disabled")}`
64468
64475
  );
64469
64476
  if (!options.yes) {
64470
64477
  const confirmed = await clack61.confirm({
@@ -64597,7 +64604,7 @@ Run ${pc64.cyan("wraps sms init")} to deploy SMS infrastructure first.
64597
64604
  return;
64598
64605
  }
64599
64606
  console.log("\n");
64600
- clack61.log.success(pc64.green("SMS infrastructure synced successfully!"));
64607
+ clack61.log.success(pc65.green("SMS infrastructure synced successfully!"));
64601
64608
  const changes = [];
64602
64609
  if (outputs.lambdaFunctions?.length) {
64603
64610
  changes.push("Lambda functions updated");
@@ -64605,13 +64612,13 @@ Run ${pc64.cyan("wraps sms init")} to deploy SMS infrastructure first.
64605
64612
  changes.push("SDK resources verified");
64606
64613
  console.log("");
64607
64614
  for (const change of changes) {
64608
- console.log(` ${pc64.green("\u2713")} ${change}`);
64615
+ console.log(` ${pc65.green("\u2713")} ${change}`);
64609
64616
  }
64610
64617
  trackCommand("sms:sync", {
64611
64618
  success: true,
64612
64619
  duration_ms: Date.now() - startTime
64613
64620
  });
64614
- clack61.outro(pc64.green("Sync complete!"));
64621
+ clack61.outro(pc65.green("Sync complete!"));
64615
64622
  }
64616
64623
 
64617
64624
  // src/commands/sms/test.ts
@@ -64627,7 +64634,7 @@ import {
64627
64634
  SendTextMessageCommand
64628
64635
  } from "@aws-sdk/client-pinpoint-sms-voice-v2";
64629
64636
  import * as clack62 from "@clack/prompts";
64630
- import pc65 from "picocolors";
64637
+ import pc66 from "picocolors";
64631
64638
 
64632
64639
  // src/utils/sms/validation.ts
64633
64640
  init_esm_shims();
@@ -64650,7 +64657,7 @@ async function smsTest(options) {
64650
64657
  const startTime = Date.now();
64651
64658
  const progress = new DeploymentProgress();
64652
64659
  if (!isJsonMode()) {
64653
- clack62.intro(pc65.bold("Wraps SMS Test"));
64660
+ clack62.intro(pc66.bold("Wraps SMS Test"));
64654
64661
  }
64655
64662
  const identity = await progress.execute(
64656
64663
  "Validating AWS credentials",
@@ -64663,7 +64670,7 @@ async function smsTest(options) {
64663
64670
  clack62.log.error("No SMS infrastructure found");
64664
64671
  console.log(
64665
64672
  `
64666
- Run ${pc65.cyan("wraps sms init")} to deploy SMS infrastructure.
64673
+ Run ${pc66.cyan("wraps sms init")} to deploy SMS infrastructure.
64667
64674
  `
64668
64675
  );
64669
64676
  process.exit(1);
@@ -64792,16 +64799,16 @@ Run ${pc65.cyan("wraps sms init")} to deploy SMS infrastructure.
64792
64799
  return;
64793
64800
  }
64794
64801
  console.log("\n");
64795
- clack62.log.success(pc65.green("Test SMS sent successfully!"));
64802
+ clack62.log.success(pc66.green("Test SMS sent successfully!"));
64796
64803
  console.log("");
64797
64804
  clack62.note(
64798
64805
  [
64799
- `${pc65.bold("Message ID:")} ${pc65.cyan(messageId || "unknown")}`,
64800
- `${pc65.bold("To:")} ${pc65.cyan(toNumber)}`,
64801
- `${pc65.bold("Message:")} ${message}`,
64802
- `${pc65.bold("Type:")} ${pc65.cyan(smsConfig?.phoneNumberType || "simulator")}`,
64806
+ `${pc66.bold("Message ID:")} ${pc66.cyan(messageId || "unknown")}`,
64807
+ `${pc66.bold("To:")} ${pc66.cyan(toNumber)}`,
64808
+ `${pc66.bold("Message:")} ${message}`,
64809
+ `${pc66.bold("Type:")} ${pc66.cyan(smsConfig?.phoneNumberType || "simulator")}`,
64803
64810
  "",
64804
- pc65.dim(
64811
+ pc66.dim(
64805
64812
  smsConfig?.phoneNumberType === "simulator" ? "Note: Simulator messages are not actually delivered" : "Check your phone for the message!"
64806
64813
  )
64807
64814
  ].join("\n"),
@@ -64810,10 +64817,10 @@ Run ${pc65.cyan("wraps sms init")} to deploy SMS infrastructure.
64810
64817
  if (smsConfig?.eventTracking?.enabled) {
64811
64818
  console.log("");
64812
64819
  clack62.log.info(
64813
- pc65.dim("Event tracking is enabled. Check DynamoDB for delivery status.")
64820
+ pc66.dim("Event tracking is enabled. Check DynamoDB for delivery status.")
64814
64821
  );
64815
64822
  }
64816
- clack62.outro(pc65.green("Test complete!"));
64823
+ clack62.outro(pc66.green("Test complete!"));
64817
64824
  } catch (error) {
64818
64825
  progress.stop();
64819
64826
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -64838,7 +64845,7 @@ Run ${pc65.cyan("wraps sms init")} to deploy SMS infrastructure.
64838
64845
  clack62.log.error("Toll-free number registration is not complete");
64839
64846
  console.log(
64840
64847
  `
64841
- Run ${pc65.cyan("wraps sms register")} to check registration status.
64848
+ Run ${pc66.cyan("wraps sms register")} to check registration status.
64842
64849
  `
64843
64850
  );
64844
64851
  } else if (errorName === "AccessDeniedException") {
@@ -64847,7 +64854,7 @@ Run ${pc65.cyan("wraps sms register")} to check registration status.
64847
64854
  );
64848
64855
  console.log(
64849
64856
  `
64850
- Run ${pc65.cyan("wraps sms upgrade")} to update IAM policies.
64857
+ Run ${pc66.cyan("wraps sms upgrade")} to update IAM policies.
64851
64858
  `
64852
64859
  );
64853
64860
  } else {
@@ -64861,7 +64868,7 @@ Run ${pc65.cyan("wraps sms upgrade")} to update IAM policies.
64861
64868
  init_esm_shims();
64862
64869
  import * as clack63 from "@clack/prompts";
64863
64870
  import * as pulumi38 from "@pulumi/pulumi";
64864
- import pc66 from "picocolors";
64871
+ import pc67 from "picocolors";
64865
64872
  init_events();
64866
64873
  init_aws();
64867
64874
  init_errors();
@@ -64876,7 +64883,7 @@ async function smsUpgrade(options) {
64876
64883
  const startTime = Date.now();
64877
64884
  let upgradeAction = "";
64878
64885
  if (!isJsonMode()) {
64879
- clack63.intro(pc66.bold("Wraps SMS Upgrade - Enhance Your SMS Infrastructure"));
64886
+ clack63.intro(pc67.bold("Wraps SMS Upgrade - Enhance Your SMS Infrastructure"));
64880
64887
  }
64881
64888
  const progress = new DeploymentProgress();
64882
64889
  const wasAutoInstalled = await progress.execute(
@@ -64890,7 +64897,7 @@ async function smsUpgrade(options) {
64890
64897
  "Validating AWS credentials",
64891
64898
  async () => validateAWSCredentials()
64892
64899
  );
64893
- progress.info(`Connected to AWS account: ${pc66.cyan(identity.accountId)}`);
64900
+ progress.info(`Connected to AWS account: ${pc67.cyan(identity.accountId)}`);
64894
64901
  const region = await resolveRegionForCommand({
64895
64902
  accountId: identity.accountId,
64896
64903
  optionRegion: options.region,
@@ -64900,34 +64907,34 @@ async function smsUpgrade(options) {
64900
64907
  const metadata = await loadConnectionMetadata(identity.accountId, region);
64901
64908
  if (!metadata) {
64902
64909
  clack63.log.error(
64903
- `No Wraps connection found for account ${pc66.cyan(identity.accountId)} in region ${pc66.cyan(region)}`
64910
+ `No Wraps connection found for account ${pc67.cyan(identity.accountId)} in region ${pc67.cyan(region)}`
64904
64911
  );
64905
64912
  clack63.log.info(
64906
- `Use ${pc66.cyan("wraps sms init")} to create new infrastructure.`
64913
+ `Use ${pc67.cyan("wraps sms init")} to create new infrastructure.`
64907
64914
  );
64908
64915
  process.exit(1);
64909
64916
  }
64910
64917
  if (!metadata.services.sms) {
64911
64918
  clack63.log.error("No SMS infrastructure found");
64912
64919
  clack63.log.info(
64913
- `Use ${pc66.cyan("wraps sms init")} to deploy SMS infrastructure.`
64920
+ `Use ${pc67.cyan("wraps sms init")} to deploy SMS infrastructure.`
64914
64921
  );
64915
64922
  process.exit(1);
64916
64923
  }
64917
64924
  progress.info(`Found existing connection created: ${metadata.timestamp}`);
64918
64925
  console.log(`
64919
- ${pc66.bold("Current Configuration:")}
64926
+ ${pc67.bold("Current Configuration:")}
64920
64927
  `);
64921
64928
  if (metadata.services.sms.preset) {
64922
- console.log(` Preset: ${pc66.cyan(metadata.services.sms.preset)}`);
64929
+ console.log(` Preset: ${pc67.cyan(metadata.services.sms.preset)}`);
64923
64930
  } else {
64924
- console.log(` Preset: ${pc66.cyan("custom")}`);
64931
+ console.log(` Preset: ${pc67.cyan("custom")}`);
64925
64932
  }
64926
64933
  const config2 = metadata.services.sms.config;
64927
64934
  if (!config2) {
64928
64935
  clack63.log.error("No SMS configuration found in metadata");
64929
64936
  clack63.log.info(
64930
- `Use ${pc66.cyan("wraps sms init")} to create new infrastructure.`
64937
+ `Use ${pc67.cyan("wraps sms init")} to create new infrastructure.`
64931
64938
  );
64932
64939
  process.exit(1);
64933
64940
  }
@@ -64939,45 +64946,45 @@ ${pc66.bold("Current Configuration:")}
64939
64946
  "short-code": "Short code ($995+/mo, 100+ MPS)"
64940
64947
  };
64941
64948
  console.log(
64942
- ` Phone Type: ${pc66.cyan(phoneTypeLabels2[config2.phoneNumberType] || config2.phoneNumberType)}`
64949
+ ` Phone Type: ${pc67.cyan(phoneTypeLabels2[config2.phoneNumberType] || config2.phoneNumberType)}`
64943
64950
  );
64944
64951
  }
64945
64952
  if (config2.tracking?.enabled) {
64946
- console.log(` ${pc66.green("\u2713")} Delivery Tracking`);
64953
+ console.log(` ${pc67.green("\u2713")} Delivery Tracking`);
64947
64954
  if (config2.tracking.linkTracking) {
64948
- console.log(` ${pc66.dim("\u2514\u2500")} Link click tracking enabled`);
64955
+ console.log(` ${pc67.dim("\u2514\u2500")} Link click tracking enabled`);
64949
64956
  }
64950
64957
  }
64951
64958
  if (config2.eventTracking?.enabled) {
64952
- console.log(` ${pc66.green("\u2713")} Event Tracking (SNS)`);
64959
+ console.log(` ${pc67.green("\u2713")} Event Tracking (SNS)`);
64953
64960
  if (config2.eventTracking.dynamoDBHistory) {
64954
64961
  console.log(
64955
- ` ${pc66.dim("\u2514\u2500")} Message History: ${pc66.cyan(config2.eventTracking.archiveRetention || "90days")}`
64962
+ ` ${pc67.dim("\u2514\u2500")} Message History: ${pc67.cyan(config2.eventTracking.archiveRetention || "90days")}`
64956
64963
  );
64957
64964
  }
64958
64965
  }
64959
64966
  if (config2.messageArchiving?.enabled) {
64960
64967
  console.log(
64961
- ` ${pc66.green("\u2713")} Message Archiving (${config2.messageArchiving.retention})`
64968
+ ` ${pc67.green("\u2713")} Message Archiving (${config2.messageArchiving.retention})`
64962
64969
  );
64963
64970
  }
64964
64971
  if (config2.optOutManagement) {
64965
- console.log(` ${pc66.green("\u2713")} Opt-out Management`);
64972
+ console.log(` ${pc67.green("\u2713")} Opt-out Management`);
64966
64973
  }
64967
64974
  if (config2.protectConfiguration?.enabled) {
64968
64975
  const countries = config2.protectConfiguration.allowedCountries?.join(", ") || "US";
64969
- console.log(` ${pc66.green("\u2713")} Fraud Protection`);
64970
- console.log(` ${pc66.dim("\u2514\u2500")} Allowed countries: ${pc66.cyan(countries)}`);
64976
+ console.log(` ${pc67.green("\u2713")} Fraud Protection`);
64977
+ console.log(` ${pc67.dim("\u2514\u2500")} Allowed countries: ${pc67.cyan(countries)}`);
64971
64978
  if (config2.protectConfiguration.aitFiltering) {
64972
- console.log(` ${pc66.dim("\u2514\u2500")} AIT filtering: ${pc66.cyan("enabled")}`);
64979
+ console.log(` ${pc67.dim("\u2514\u2500")} AIT filtering: ${pc67.cyan("enabled")}`);
64973
64980
  }
64974
64981
  } else {
64975
- console.log(` ${pc66.dim("\u25CB")} Fraud Protection (not configured)`);
64982
+ console.log(` ${pc67.dim("\u25CB")} Fraud Protection (not configured)`);
64976
64983
  }
64977
64984
  const currentCostData = calculateSMSCosts(config2, 1e4);
64978
64985
  console.log(
64979
64986
  `
64980
- Estimated Cost: ${pc66.cyan(`~${formatCost3(currentCostData.total.monthly)}/mo`)}`
64987
+ Estimated Cost: ${pc67.cyan(`~${formatCost3(currentCostData.total.monthly)}/mo`)}`
64981
64988
  );
64982
64989
  console.log("");
64983
64990
  const phoneTypeLabels = {
@@ -65084,22 +65091,22 @@ ${pc66.bold("Current Configuration:")}
65084
65091
  if (selectedType === "toll-free") {
65085
65092
  console.log(
65086
65093
  `
65087
- ${pc66.yellow("\u26A0")} ${pc66.bold("Toll-free Registration Required")}
65094
+ ${pc67.yellow("\u26A0")} ${pc67.bold("Toll-free Registration Required")}
65088
65095
  `
65089
65096
  );
65090
65097
  console.log(
65091
- pc66.dim("Toll-free numbers require carrier registration before")
65098
+ pc67.dim("Toll-free numbers require carrier registration before")
65092
65099
  );
65093
65100
  console.log(
65094
- pc66.dim("they can send messages at scale. After deployment:\n")
65101
+ pc67.dim("they can send messages at scale. After deployment:\n")
65095
65102
  );
65096
65103
  console.log(
65097
- ` 1. Run ${pc66.cyan("wraps sms register")} to start registration`
65104
+ ` 1. Run ${pc67.cyan("wraps sms register")} to start registration`
65098
65105
  );
65099
65106
  console.log(" 2. Submit your business use case information");
65100
65107
  console.log(" 3. Wait for carrier verification (1-5 business days)");
65101
65108
  console.log(
65102
- pc66.dim("\nUntil verified, sending is limited to low volume.\n")
65109
+ pc67.dim("\nUntil verified, sending is limited to low volume.\n")
65103
65110
  );
65104
65111
  const confirmTollFree = await clack63.confirm({
65105
65112
  message: "Continue with toll-free number request?",
@@ -65113,10 +65120,10 @@ ${pc66.yellow("\u26A0")} ${pc66.bold("Toll-free Registration Required")}
65113
65120
  if (selectedType === "10dlc") {
65114
65121
  console.log(
65115
65122
  `
65116
- ${pc66.yellow("\u26A0")} ${pc66.bold("10DLC Campaign Registration Required")}
65123
+ ${pc67.yellow("\u26A0")} ${pc67.bold("10DLC Campaign Registration Required")}
65117
65124
  `
65118
65125
  );
65119
- console.log(pc66.dim("10DLC requires brand and campaign registration:"));
65126
+ console.log(pc67.dim("10DLC requires brand and campaign registration:"));
65120
65127
  console.log(" \u2022 Brand registration: one-time $4 fee");
65121
65128
  console.log(" \u2022 Campaign registration: $15/mo per campaign");
65122
65129
  console.log(" \u2022 Verification takes 1-7 business days");
@@ -65349,12 +65356,12 @@ ${pc66.yellow("\u26A0")} ${pc66.bold("10DLC Campaign Registration Required")}
65349
65356
  const enableLinkTracking = !config2.tracking?.linkTracking;
65350
65357
  if (enableLinkTracking) {
65351
65358
  clack63.log.info(
65352
- pc66.dim(
65359
+ pc67.dim(
65353
65360
  "Link tracking will track clicks on URLs in your SMS messages."
65354
65361
  )
65355
65362
  );
65356
65363
  clack63.log.info(
65357
- pc66.dim("URLs will be rewritten to go through a tracking endpoint.")
65364
+ pc67.dim("URLs will be rewritten to go through a tracking endpoint.")
65358
65365
  );
65359
65366
  }
65360
65367
  const confirmed = await clack63.confirm({
@@ -65567,18 +65574,18 @@ ${pc66.yellow("\u26A0")} ${pc66.bold("10DLC Campaign Registration Required")}
65567
65574
  const newCostData = calculateSMSCosts(updatedConfig, 1e4);
65568
65575
  const costDiff = newCostData.total.monthly - currentCostData.total.monthly;
65569
65576
  console.log(`
65570
- ${pc66.bold("Cost Impact:")}`);
65577
+ ${pc67.bold("Cost Impact:")}`);
65571
65578
  console.log(
65572
- ` Current: ${pc66.cyan(`${formatCost3(currentCostData.total.monthly)}/mo`)}`
65579
+ ` Current: ${pc67.cyan(`${formatCost3(currentCostData.total.monthly)}/mo`)}`
65573
65580
  );
65574
65581
  console.log(
65575
- ` New: ${pc66.cyan(`${formatCost3(newCostData.total.monthly)}/mo`)}`
65582
+ ` New: ${pc67.cyan(`${formatCost3(newCostData.total.monthly)}/mo`)}`
65576
65583
  );
65577
65584
  if (costDiff > 0) {
65578
- console.log(` Change: ${pc66.yellow(`+${formatCost3(costDiff)}/mo`)}`);
65585
+ console.log(` Change: ${pc67.yellow(`+${formatCost3(costDiff)}/mo`)}`);
65579
65586
  } else if (costDiff < 0) {
65580
65587
  console.log(
65581
- ` Change: ${pc66.green(`-${formatCost3(Math.abs(costDiff))}/mo`)}`
65588
+ ` Change: ${pc67.green(`-${formatCost3(Math.abs(costDiff))}/mo`)}`
65582
65589
  );
65583
65590
  }
65584
65591
  console.log("");
@@ -65658,7 +65665,7 @@ ${pc66.bold("Cost Impact:")}`);
65658
65665
  commandName: "wraps sms upgrade"
65659
65666
  });
65660
65667
  clack63.outro(
65661
- pc66.green("Preview complete. Run without --preview to upgrade.")
65668
+ pc67.green("Preview complete. Run without --preview to upgrade.")
65662
65669
  );
65663
65670
  trackServiceUpgrade("sms", {
65664
65671
  region,
@@ -65763,43 +65770,43 @@ ${pc66.bold("Cost Impact:")}`);
65763
65770
  }
65764
65771
  progress.info("Connection metadata updated");
65765
65772
  console.log("\n");
65766
- clack63.log.success(pc66.green(pc66.bold("SMS infrastructure upgraded!")));
65773
+ clack63.log.success(pc67.green(pc67.bold("SMS infrastructure upgraded!")));
65767
65774
  console.log("\n");
65768
65775
  clack63.note(
65769
65776
  [
65770
- `${pc66.bold("Phone Number:")} ${pc66.cyan(outputs.phoneNumber || "Provisioning...")}`,
65771
- `${pc66.bold("Phone Type:")} ${pc66.cyan(updatedConfig.phoneNumberType || "simulator")}`,
65772
- `${pc66.bold("Config Set:")} ${pc66.cyan(outputs.configSetName || "wraps-sms-config")}`,
65773
- `${pc66.bold("Region:")} ${pc66.cyan(outputs.region)}`,
65774
- outputs.tableName ? `${pc66.bold("History Table:")} ${pc66.cyan(outputs.tableName)}` : "",
65777
+ `${pc67.bold("Phone Number:")} ${pc67.cyan(outputs.phoneNumber || "Provisioning...")}`,
65778
+ `${pc67.bold("Phone Type:")} ${pc67.cyan(updatedConfig.phoneNumberType || "simulator")}`,
65779
+ `${pc67.bold("Config Set:")} ${pc67.cyan(outputs.configSetName || "wraps-sms-config")}`,
65780
+ `${pc67.bold("Region:")} ${pc67.cyan(outputs.region)}`,
65781
+ outputs.tableName ? `${pc67.bold("History Table:")} ${pc67.cyan(outputs.tableName)}` : "",
65775
65782
  "",
65776
- pc66.dim("IAM Role:"),
65777
- pc66.dim(` ${outputs.roleArn}`)
65783
+ pc67.dim("IAM Role:"),
65784
+ pc67.dim(` ${outputs.roleArn}`)
65778
65785
  ].filter(Boolean).join("\n"),
65779
65786
  "SMS Infrastructure"
65780
65787
  );
65781
65788
  console.log(`
65782
- ${pc66.green("\u2713")} ${pc66.bold("Upgrade complete!")}
65789
+ ${pc67.green("\u2713")} ${pc67.bold("Upgrade complete!")}
65783
65790
  `);
65784
65791
  if (upgradeAction === "phone-number") {
65785
65792
  console.log(
65786
- `Upgraded to ${pc66.cyan(updatedConfig.phoneNumberType)} number (${pc66.green(`${formatCost3(newCostData.total.monthly)}/mo`)})
65793
+ `Upgraded to ${pc67.cyan(updatedConfig.phoneNumberType)} number (${pc67.green(`${formatCost3(newCostData.total.monthly)}/mo`)})
65787
65794
  `
65788
65795
  );
65789
65796
  if (updatedConfig.phoneNumberType === "toll-free") {
65790
- console.log(`${pc66.bold("Next Steps:")}`);
65797
+ console.log(`${pc67.bold("Next Steps:")}`);
65791
65798
  console.log(
65792
- ` 1. Run ${pc66.cyan("wraps sms register")} to start toll-free registration`
65799
+ ` 1. Run ${pc67.cyan("wraps sms register")} to start toll-free registration`
65793
65800
  );
65794
65801
  console.log(" 2. Submit your business information and use case");
65795
65802
  console.log(" 3. Wait for carrier verification (1-5 business days)");
65796
65803
  console.log("");
65797
65804
  console.log(
65798
- pc66.dim("Until verified, your number can only send limited messages.")
65805
+ pc67.dim("Until verified, your number can only send limited messages.")
65799
65806
  );
65800
65807
  console.log("");
65801
65808
  } else if (updatedConfig.phoneNumberType === "10dlc") {
65802
- console.log(`${pc66.bold("Next Steps:")}`);
65809
+ console.log(`${pc67.bold("Next Steps:")}`);
65803
65810
  console.log(" 1. Register your brand in the AWS Console");
65804
65811
  console.log(" 2. Create a 10DLC campaign for your use case");
65805
65812
  console.log(" 3. Wait for campaign approval (1-7 business days)");
@@ -65807,16 +65814,16 @@ ${pc66.green("\u2713")} ${pc66.bold("Upgrade complete!")}
65807
65814
  }
65808
65815
  } else if (upgradeAction === "preset" && newPreset) {
65809
65816
  console.log(
65810
- `Upgraded to ${pc66.cyan(newPreset)} preset (${pc66.green(`${formatCost3(newCostData.total.monthly)}/mo`)})
65817
+ `Upgraded to ${pc67.cyan(newPreset)} preset (${pc67.green(`${formatCost3(newCostData.total.monthly)}/mo`)})
65811
65818
  `
65812
65819
  );
65813
65820
  } else {
65814
65821
  console.log(
65815
- `Updated configuration (${pc66.green(`${formatCost3(newCostData.total.monthly)}/mo`)})
65822
+ `Updated configuration (${pc67.green(`${formatCost3(newCostData.total.monthly)}/mo`)})
65816
65823
  `
65817
65824
  );
65818
65825
  }
65819
- console.log(pc66.dim(getSMSCostSummary(updatedConfig, 1e4)));
65826
+ console.log(pc67.dim(getSMSCostSummary(updatedConfig, 1e4)));
65820
65827
  const enabledFeatures = [];
65821
65828
  if (updatedConfig.tracking?.enabled) {
65822
65829
  enabledFeatures.push("tracking");
@@ -65840,7 +65847,7 @@ ${pc66.green("\u2713")} ${pc66.bold("Upgrade complete!")}
65840
65847
  action: typeof upgradeAction === "string" ? upgradeAction : void 0,
65841
65848
  duration_ms: Date.now() - startTime
65842
65849
  });
65843
- clack63.outro(pc66.green("Upgrade complete!"));
65850
+ clack63.outro(pc67.green("Upgrade complete!"));
65844
65851
  }
65845
65852
 
65846
65853
  // src/commands/sms/verify-number.ts
@@ -65860,12 +65867,12 @@ import {
65860
65867
  VerifyDestinationNumberCommand
65861
65868
  } from "@aws-sdk/client-pinpoint-sms-voice-v2";
65862
65869
  import * as clack64 from "@clack/prompts";
65863
- import pc67 from "picocolors";
65870
+ import pc68 from "picocolors";
65864
65871
  async function smsVerifyNumber(options) {
65865
65872
  const startTime = Date.now();
65866
65873
  const progress = new DeploymentProgress();
65867
65874
  if (!isJsonMode()) {
65868
- clack64.intro(pc67.bold("Wraps SMS - Verify Destination Number"));
65875
+ clack64.intro(pc68.bold("Wraps SMS - Verify Destination Number"));
65869
65876
  }
65870
65877
  const identity = await progress.execute(
65871
65878
  "Validating AWS credentials",
@@ -65878,7 +65885,7 @@ async function smsVerifyNumber(options) {
65878
65885
  clack64.log.error("No SMS infrastructure found");
65879
65886
  console.log(
65880
65887
  `
65881
- Run ${pc67.cyan("wraps sms init")} to deploy SMS infrastructure.
65888
+ Run ${pc68.cyan("wraps sms init")} to deploy SMS infrastructure.
65882
65889
  `
65883
65890
  );
65884
65891
  process.exit(1);
@@ -65895,16 +65902,16 @@ Run ${pc67.cyan("wraps sms init")} to deploy SMS infrastructure.
65895
65902
  clack64.log.info("No verified destination numbers found");
65896
65903
  console.log(
65897
65904
  `
65898
- Run ${pc67.cyan("wraps sms verify-number")} to verify a number.
65905
+ Run ${pc68.cyan("wraps sms verify-number")} to verify a number.
65899
65906
  `
65900
65907
  );
65901
65908
  } else {
65902
65909
  console.log("\n");
65903
- clack64.log.info(pc67.bold("Verified Destination Numbers:"));
65910
+ clack64.log.info(pc68.bold("Verified Destination Numbers:"));
65904
65911
  console.log("");
65905
65912
  for (const num of response.VerifiedDestinationNumbers) {
65906
- const status2 = num.Status === "VERIFIED" ? pc67.green("\u2713 Verified") : pc67.yellow("\u29D6 Pending");
65907
- console.log(` ${pc67.cyan(num.DestinationPhoneNumber)} - ${status2}`);
65913
+ const status2 = num.Status === "VERIFIED" ? pc68.green("\u2713 Verified") : pc68.yellow("\u29D6 Pending");
65914
+ console.log(` ${pc68.cyan(num.DestinationPhoneNumber)} - ${status2}`);
65908
65915
  }
65909
65916
  console.log("");
65910
65917
  }
@@ -65922,7 +65929,7 @@ Run ${pc67.cyan("wraps sms verify-number")} to verify a number.
65922
65929
  });
65923
65930
  return;
65924
65931
  }
65925
- clack64.outro(pc67.green("Done!"));
65932
+ clack64.outro(pc68.green("Done!"));
65926
65933
  return;
65927
65934
  } catch (error) {
65928
65935
  progress.stop();
@@ -65941,7 +65948,7 @@ Run ${pc67.cyan("wraps sms verify-number")} to verify a number.
65941
65948
  clack64.log.error("Phone number is required for deletion");
65942
65949
  console.log(
65943
65950
  `
65944
- Usage: ${pc67.cyan("wraps sms verify-number --delete --phone-number +14155551234")}
65951
+ Usage: ${pc68.cyan("wraps sms verify-number --delete --phone-number +14155551234")}
65945
65952
  `
65946
65953
  );
65947
65954
  process.exit(1);
@@ -65966,7 +65973,7 @@ Usage: ${pc67.cyan("wraps sms verify-number --delete --phone-number +14155551234
65966
65973
  );
65967
65974
  });
65968
65975
  progress.stop();
65969
- clack64.log.success(`Removed ${pc67.cyan(phoneNumber2)} from verified list`);
65976
+ clack64.log.success(`Removed ${pc68.cyan(phoneNumber2)} from verified list`);
65970
65977
  trackCommand("sms:verify-number:delete", {
65971
65978
  success: true,
65972
65979
  duration_ms: Date.now() - startTime
@@ -65978,7 +65985,7 @@ Usage: ${pc67.cyan("wraps sms verify-number --delete --phone-number +14155551234
65978
65985
  });
65979
65986
  return;
65980
65987
  }
65981
- clack64.outro(pc67.green("Done!"));
65988
+ clack64.outro(pc68.green("Done!"));
65982
65989
  return;
65983
65990
  } catch (error) {
65984
65991
  progress.stop();
@@ -66050,11 +66057,11 @@ Usage: ${pc67.cyan("wraps sms verify-number --delete --phone-number +14155551234
66050
66057
  progress.stop();
66051
66058
  console.log("\n");
66052
66059
  clack64.log.success(
66053
- pc67.green(`Phone number ${pc67.cyan(phoneNumber)} verified!`)
66060
+ pc68.green(`Phone number ${pc68.cyan(phoneNumber)} verified!`)
66054
66061
  );
66055
66062
  console.log("");
66056
66063
  console.log(
66057
- `You can now send test messages to this number with ${pc67.cyan("wraps sms test")}`
66064
+ `You can now send test messages to this number with ${pc68.cyan("wraps sms test")}`
66058
66065
  );
66059
66066
  trackCommand("sms:verify-number:confirm", {
66060
66067
  success: true,
@@ -66067,7 +66074,7 @@ Usage: ${pc67.cyan("wraps sms verify-number --delete --phone-number +14155551234
66067
66074
  });
66068
66075
  return;
66069
66076
  }
66070
- clack64.outro(pc67.green("Verification complete!"));
66077
+ clack64.outro(pc68.green("Verification complete!"));
66071
66078
  return;
66072
66079
  } catch (error) {
66073
66080
  progress.stop();
@@ -66076,7 +66083,7 @@ Usage: ${pc67.cyan("wraps sms verify-number --delete --phone-number +14155551234
66076
66083
  clack64.log.error("Invalid verification code. Please try again.");
66077
66084
  console.log(
66078
66085
  `
66079
- Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`)} to get a new code.
66086
+ Run ${pc68.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`)} to get a new code.
66080
66087
  `
66081
66088
  );
66082
66089
  } else {
@@ -66112,11 +66119,11 @@ Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`
66112
66119
  );
66113
66120
  });
66114
66121
  progress.stop();
66115
- clack64.log.success(`Verification code resent to ${pc67.cyan(phoneNumber)}`);
66122
+ clack64.log.success(`Verification code resent to ${pc68.cyan(phoneNumber)}`);
66116
66123
  console.log("");
66117
66124
  console.log(
66118
66125
  `Once you receive the code, run:
66119
- ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --code YOUR_CODE`)}`
66126
+ ${pc68.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --code YOUR_CODE`)}`
66120
66127
  );
66121
66128
  trackCommand("sms:verify-number:resend", {
66122
66129
  success: true,
@@ -66129,7 +66136,7 @@ Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`
66129
66136
  });
66130
66137
  return;
66131
66138
  }
66132
- clack64.outro(pc67.green("Code sent!"));
66139
+ clack64.outro(pc68.green("Code sent!"));
66133
66140
  return;
66134
66141
  } catch (error) {
66135
66142
  progress.stop();
@@ -66158,9 +66165,9 @@ Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`
66158
66165
  return;
66159
66166
  }
66160
66167
  clack64.log.info(
66161
- `Number ${pc67.cyan(phoneNumber)} is already verified and ready to use!`
66168
+ `Number ${pc68.cyan(phoneNumber)} is already verified and ready to use!`
66162
66169
  );
66163
- clack64.outro(pc67.green("Done!"));
66170
+ clack64.outro(pc68.green("Done!"));
66164
66171
  return;
66165
66172
  }
66166
66173
  if (existingNumber?.Status === "PENDING") {
@@ -66185,14 +66192,14 @@ Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`
66185
66192
  return;
66186
66193
  }
66187
66194
  clack64.log.info(
66188
- `Verification already in progress. New code sent to ${pc67.cyan(phoneNumber)}`
66195
+ `Verification already in progress. New code sent to ${pc68.cyan(phoneNumber)}`
66189
66196
  );
66190
66197
  console.log("");
66191
66198
  console.log(
66192
66199
  `Once you receive the code, run:
66193
- ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --code YOUR_CODE`)}`
66200
+ ${pc68.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --code YOUR_CODE`)}`
66194
66201
  );
66195
- clack64.outro(pc67.green("Code sent!"));
66202
+ clack64.outro(pc68.green("Code sent!"));
66196
66203
  return;
66197
66204
  }
66198
66205
  const createResponse = await progress.execute(
@@ -66214,7 +66221,7 @@ Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`
66214
66221
  progress.stop();
66215
66222
  console.log("\n");
66216
66223
  clack64.log.success(
66217
- `Verification code sent to ${pc67.cyan(phoneNumber)} via SMS`
66224
+ `Verification code sent to ${pc68.cyan(phoneNumber)} via SMS`
66218
66225
  );
66219
66226
  console.log("");
66220
66227
  clack64.note(
@@ -66222,9 +66229,9 @@ Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`
66222
66229
  "1. Check your phone for the verification code",
66223
66230
  "",
66224
66231
  "2. Complete verification with:",
66225
- ` ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --code YOUR_CODE`)}`,
66232
+ ` ${pc68.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --code YOUR_CODE`)}`,
66226
66233
  "",
66227
- pc67.dim("The code expires in 24 hours")
66234
+ pc68.dim("The code expires in 24 hours")
66228
66235
  ].join("\n"),
66229
66236
  "Next Steps"
66230
66237
  );
@@ -66240,7 +66247,7 @@ Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`
66240
66247
  });
66241
66248
  return;
66242
66249
  }
66243
- clack64.outro(pc67.green("Verification started!"));
66250
+ clack64.outro(pc68.green("Verification started!"));
66244
66251
  } catch (error) {
66245
66252
  progress.stop();
66246
66253
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -66248,7 +66255,7 @@ Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`
66248
66255
  clack64.log.error("This number is already being verified");
66249
66256
  console.log(
66250
66257
  `
66251
- Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`)} to get a new code.
66258
+ Run ${pc68.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`)} to get a new code.
66252
66259
  `
66253
66260
  );
66254
66261
  } else {
@@ -66265,21 +66272,21 @@ Run ${pc67.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --resend`
66265
66272
  init_esm_shims();
66266
66273
  init_events();
66267
66274
  import * as clack65 from "@clack/prompts";
66268
- import pc68 from "picocolors";
66275
+ import pc69 from "picocolors";
66269
66276
  async function support() {
66270
66277
  trackCommand("support", { success: true });
66271
- clack65.intro(pc68.bold("Get Help with Wraps"));
66278
+ clack65.intro(pc69.bold("Get Help with Wraps"));
66272
66279
  console.log();
66273
- console.log(` ${pc68.bold("Email:")} ${pc68.cyan("hey@wraps.dev")}`);
66280
+ console.log(` ${pc69.bold("Email:")} ${pc69.cyan("hey@wraps.dev")}`);
66274
66281
  console.log(
66275
- ` ${pc68.bold("GitHub:")} ${pc68.cyan("https://github.com/wraps-dev/wraps/issues")}`
66282
+ ` ${pc69.bold("GitHub:")} ${pc69.cyan("https://github.com/wraps-dev/wraps/issues")}`
66276
66283
  );
66277
- console.log(` ${pc68.bold("Docs:")} ${pc68.cyan("https://wraps.dev/docs")}`);
66284
+ console.log(` ${pc69.bold("Docs:")} ${pc69.cyan("https://wraps.dev/docs")}`);
66278
66285
  console.log(
66279
- ` ${pc68.bold("AI docs:")} ${pc68.cyan("https://wraps.dev/llms-full.txt")} ${pc68.dim("(complete docs, one file)")}`
66286
+ ` ${pc69.bold("AI docs:")} ${pc69.cyan("https://wraps.dev/llms-full.txt")} ${pc69.dim("(complete docs, one file)")}`
66280
66287
  );
66281
66288
  console.log();
66282
- console.log(pc68.dim(" Response time: Usually within 24 hours"));
66289
+ console.log(pc69.dim(" Response time: Usually within 24 hours"));
66283
66290
  console.log();
66284
66291
  }
66285
66292
 
@@ -66287,7 +66294,7 @@ async function support() {
66287
66294
  init_esm_shims();
66288
66295
  init_client();
66289
66296
  import * as clack66 from "@clack/prompts";
66290
- import pc69 from "picocolors";
66297
+ import pc70 from "picocolors";
66291
66298
  async function telemetryEnable() {
66292
66299
  const client2 = getTelemetryClient();
66293
66300
  const override = client2.enable();
@@ -66295,60 +66302,60 @@ async function telemetryEnable() {
66295
66302
  clack66.log.warn(
66296
66303
  "Telemetry enabled in config, but overridden by environment"
66297
66304
  );
66298
- console.log(` Reason: ${pc69.yellow(override)}`);
66299
- console.log(` Config: ${pc69.dim(client2.getConfigPath())}`);
66305
+ console.log(` Reason: ${pc70.yellow(override)}`);
66306
+ console.log(` Config: ${pc70.dim(client2.getConfigPath())}`);
66300
66307
  console.log();
66301
66308
  } else {
66302
- clack66.log.success(pc69.green("Telemetry enabled"));
66303
- console.log(` Config: ${pc69.dim(client2.getConfigPath())}`);
66309
+ clack66.log.success(pc70.green("Telemetry enabled"));
66310
+ console.log(` Config: ${pc70.dim(client2.getConfigPath())}`);
66304
66311
  console.log(`
66305
- ${pc69.dim("Thank you for helping improve Wraps!")}
66312
+ ${pc70.dim("Thank you for helping improve Wraps!")}
66306
66313
  `);
66307
66314
  }
66308
66315
  }
66309
66316
  async function telemetryDisable() {
66310
66317
  const client2 = getTelemetryClient();
66311
66318
  client2.disable();
66312
- clack66.log.success(pc69.green("Telemetry disabled"));
66313
- console.log(` Config: ${pc69.dim(client2.getConfigPath())}`);
66319
+ clack66.log.success(pc70.green("Telemetry disabled"));
66320
+ console.log(` Config: ${pc70.dim(client2.getConfigPath())}`);
66314
66321
  console.log(
66315
66322
  `
66316
- ${pc69.dim("You can re-enable with:")} wraps telemetry enable
66323
+ ${pc70.dim("You can re-enable with:")} wraps telemetry enable
66317
66324
  `
66318
66325
  );
66319
66326
  }
66320
66327
  async function telemetryStatus() {
66321
66328
  const client2 = getTelemetryClient();
66322
- clack66.intro(pc69.bold("Telemetry Status"));
66329
+ clack66.intro(pc70.bold("Telemetry Status"));
66323
66330
  const override = client2.getEnvOverride();
66324
- const status2 = client2.isEnabled() ? pc69.green("Enabled") : pc69.red("Disabled");
66331
+ const status2 = client2.isEnabled() ? pc70.green("Enabled") : pc70.red("Disabled");
66325
66332
  console.log();
66326
- console.log(` ${pc69.bold("Status:")} ${status2}`);
66333
+ console.log(` ${pc70.bold("Status:")} ${status2}`);
66327
66334
  if (!client2.isEnabled() && override) {
66328
- console.log(` ${pc69.bold("Reason:")} ${pc69.yellow(override)}`);
66335
+ console.log(` ${pc70.bold("Reason:")} ${pc70.yellow(override)}`);
66329
66336
  }
66330
- console.log(` ${pc69.bold("Config file:")} ${pc69.dim(client2.getConfigPath())}`);
66337
+ console.log(` ${pc70.bold("Config file:")} ${pc70.dim(client2.getConfigPath())}`);
66331
66338
  if (client2.isEnabled()) {
66332
66339
  console.log();
66333
- console.log(pc69.bold(" How to opt-out:"));
66334
- console.log(` ${pc69.cyan("wraps telemetry disable")}`);
66340
+ console.log(pc70.bold(" How to opt-out:"));
66341
+ console.log(` ${pc70.cyan("wraps telemetry disable")}`);
66335
66342
  console.log(
66336
- ` ${pc69.dim("Or set:")} ${pc69.cyan("WRAPS_TELEMETRY_DISABLED=1")}`
66343
+ ` ${pc70.dim("Or set:")} ${pc70.cyan("WRAPS_TELEMETRY_DISABLED=1")}`
66337
66344
  );
66338
- console.log(` ${pc69.dim("Or set:")} ${pc69.cyan("DO_NOT_TRACK=1")}`);
66345
+ console.log(` ${pc70.dim("Or set:")} ${pc70.cyan("DO_NOT_TRACK=1")}`);
66339
66346
  } else {
66340
66347
  console.log();
66341
- console.log(pc69.bold(" How to opt-in:"));
66342
- console.log(` ${pc69.cyan("wraps telemetry enable")}`);
66348
+ console.log(pc70.bold(" How to opt-in:"));
66349
+ console.log(` ${pc70.cyan("wraps telemetry enable")}`);
66343
66350
  }
66344
66351
  console.log();
66345
- console.log(pc69.bold(" Debug mode:"));
66352
+ console.log(pc70.bold(" Debug mode:"));
66346
66353
  console.log(
66347
- ` ${pc69.dim("See what would be sent:")} ${pc69.cyan("WRAPS_TELEMETRY_DEBUG=1 wraps <command>")}`
66354
+ ` ${pc70.dim("See what would be sent:")} ${pc70.cyan("WRAPS_TELEMETRY_DEBUG=1 wraps <command>")}`
66348
66355
  );
66349
66356
  console.log();
66350
66357
  console.log(
66351
- ` ${pc69.dim("Learn more:")} ${pc69.cyan("https://wraps.dev/docs/telemetry")}`
66358
+ ` ${pc70.dim("Learn more:")} ${pc70.cyan("https://wraps.dev/docs/telemetry")}`
66352
66359
  );
66353
66360
  console.log();
66354
66361
  }
@@ -66358,7 +66365,7 @@ init_esm_shims();
66358
66365
  import { existsSync as existsSync20, mkdirSync as mkdirSync2, writeFileSync } from "fs";
66359
66366
  import { join as join25 } from "path";
66360
66367
  import * as clack67 from "@clack/prompts";
66361
- import pc70 from "picocolors";
66368
+ import pc71 from "picocolors";
66362
66369
  var EXAMPLE_CASCADE_WORKFLOW = `import {
66363
66370
  defineWorkflow,
66364
66371
  sendEmail,
@@ -66453,13 +66460,13 @@ export default defineConfig({
66453
66460
  });
66454
66461
  `;
66455
66462
  async function workflowInit(options = {}) {
66456
- clack67.intro(pc70.bgCyan(pc70.black(" wraps workflow init ")));
66463
+ clack67.intro(pc71.bgCyan(pc71.black(" wraps workflow init ")));
66457
66464
  const wrapsDir = join25(process.cwd(), "wraps");
66458
66465
  const workflowsDir = join25(wrapsDir, "workflows");
66459
66466
  const configPath = join25(wrapsDir, "wraps.config.ts");
66460
66467
  if (existsSync20(workflowsDir)) {
66461
66468
  clack67.log.info(
66462
- `Workflows directory already exists at ${pc70.cyan("wraps/workflows/")}`
66469
+ `Workflows directory already exists at ${pc71.cyan("wraps/workflows/")}`
66463
66470
  );
66464
66471
  const files = existsSync20(join25(workflowsDir, "cart-recovery.ts")) || existsSync20(join25(workflowsDir, "welcome-sequence.ts"));
66465
66472
  if (files && !options.yes) {
@@ -66494,34 +66501,34 @@ async function workflowInit(options = {}) {
66494
66501
  s2.stop("Created 2 example workflows");
66495
66502
  if (!existsSync20(configPath)) {
66496
66503
  writeFileSync(configPath, EXAMPLE_CONFIG, "utf-8");
66497
- clack67.log.info(`Created ${pc70.cyan("wraps/wraps.config.ts")}`);
66504
+ clack67.log.info(`Created ${pc71.cyan("wraps/wraps.config.ts")}`);
66498
66505
  }
66499
66506
  clack67.log.success(
66500
- `${pc70.bold("Workflows scaffolded!")} Created:
66501
- ${pc70.cyan("wraps/wraps.config.ts")} \u2014 Project config
66502
- ${pc70.cyan("wraps/workflows/cart-recovery.ts")} \u2014 Cross-channel cascade example
66503
- ${pc70.cyan("wraps/workflows/welcome-sequence.ts")} \u2014 Welcome series example`
66507
+ `${pc71.bold("Workflows scaffolded!")} Created:
66508
+ ${pc71.cyan("wraps/wraps.config.ts")} \u2014 Project config
66509
+ ${pc71.cyan("wraps/workflows/cart-recovery.ts")} \u2014 Cross-channel cascade example
66510
+ ${pc71.cyan("wraps/workflows/welcome-sequence.ts")} \u2014 Welcome series example`
66504
66511
  );
66505
66512
  showNextSteps2();
66506
- clack67.outro(pc70.green("Happy orchestrating!"));
66513
+ clack67.outro(pc71.green("Happy orchestrating!"));
66507
66514
  } catch (error) {
66508
66515
  clack67.log.error(
66509
66516
  `Failed to scaffold workflows: ${error instanceof Error ? error.message : String(error)}`
66510
66517
  );
66511
- clack67.outro(pc70.red("Scaffolding failed."));
66518
+ clack67.outro(pc71.red("Scaffolding failed."));
66512
66519
  process.exitCode = 1;
66513
66520
  }
66514
66521
  }
66515
66522
  function showNextSteps2() {
66516
66523
  clack67.log.info(
66517
- `${pc70.bold("Next steps:")}
66524
+ `${pc71.bold("Next steps:")}
66518
66525
 
66519
- 1. Edit ${pc70.cyan("wraps/wraps.config.ts")} with your org slug and domain
66520
- 2. Edit your workflows in ${pc70.cyan("wraps/workflows/")}
66521
- 3. Validate: ${pc70.cyan("wraps email workflows validate")}
66522
- 4. Push: ${pc70.cyan("wraps email workflows push")}
66526
+ 1. Edit ${pc71.cyan("wraps/wraps.config.ts")} with your org slug and domain
66527
+ 2. Edit your workflows in ${pc71.cyan("wraps/workflows/")}
66528
+ 3. Validate: ${pc71.cyan("wraps email workflows validate")}
66529
+ 4. Push: ${pc71.cyan("wraps email workflows push")}
66523
66530
 
66524
- ${pc70.dim("Docs:")} ${pc70.underline("https://wraps.dev/docs/guides/orchestration")}`
66531
+ ${pc71.dim("Docs:")} ${pc71.underline("https://wraps.dev/docs/guides/orchestration")}`
66525
66532
  );
66526
66533
  }
66527
66534
 
@@ -66728,244 +66735,244 @@ function showVersion() {
66728
66735
  process.exit(0);
66729
66736
  }
66730
66737
  function showHelp() {
66731
- clack68.intro(pc72.bold(`WRAPS CLI v${VERSION}`));
66738
+ clack68.intro(pc73.bold(`WRAPS CLI v${VERSION}`));
66732
66739
  console.log("Deploy AWS infrastructure to your account\n");
66733
66740
  console.log("Usage: wraps [service] <command> [options]\n");
66734
66741
  console.log("Services:");
66735
- console.log(` ${pc72.cyan("email")} Email infrastructure (AWS SES)`);
66742
+ console.log(` ${pc73.cyan("email")} Email infrastructure (AWS SES)`);
66736
66743
  console.log(
66737
- ` ${pc72.cyan("sms")} SMS infrastructure (AWS End User Messaging)`
66744
+ ` ${pc73.cyan("sms")} SMS infrastructure (AWS End User Messaging)`
66738
66745
  );
66739
66746
  console.log(
66740
- ` ${pc72.cyan("cdn")} CDN infrastructure (AWS S3 + CloudFront)`
66747
+ ` ${pc73.cyan("cdn")} CDN infrastructure (AWS S3 + CloudFront)`
66741
66748
  );
66742
66749
  console.log(
66743
- ` ${pc72.cyan("selfhost")} Self-hosted Wraps control plane (enterprise)`
66750
+ ` ${pc73.cyan("selfhost")} Self-hosted Wraps control plane (enterprise)`
66744
66751
  );
66745
66752
  console.log(
66746
- ` ${pc72.cyan("license")} License key management (Wraps team only)
66753
+ ` ${pc73.cyan("license")} License key management (Wraps team only)
66747
66754
  `
66748
66755
  );
66749
66756
  console.log("Email Commands:");
66750
66757
  console.log(
66751
- ` ${pc72.cyan("email init")} Deploy new email infrastructure`
66758
+ ` ${pc73.cyan("email init")} Deploy new email infrastructure`
66752
66759
  );
66753
66760
  console.log(
66754
- ` ${pc72.cyan("email check")} Check email deliverability for a domain`
66761
+ ` ${pc73.cyan("email check")} Check email deliverability for a domain`
66755
66762
  );
66756
66763
  console.log(
66757
- ` ${pc72.cyan("email connect")} Connect to existing AWS SES`
66764
+ ` ${pc73.cyan("email connect")} Connect to existing AWS SES`
66758
66765
  );
66759
66766
  console.log(
66760
- ` ${pc72.cyan("email status")} Show email infrastructure details`
66767
+ ` ${pc73.cyan("email status")} Show email infrastructure details`
66761
66768
  );
66762
66769
  console.log(
66763
- ` ${pc72.cyan("email plan")} Show SES pricing plan and cheaper options`
66770
+ ` ${pc73.cyan("email plan")} Show SES pricing plan and cheaper options`
66764
66771
  );
66765
- console.log(` ${pc72.cyan("email test")} Send a test email`);
66766
- console.log(` ${pc72.cyan("email verify")} Verify domain DNS records`);
66772
+ console.log(` ${pc73.cyan("email test")} Send a test email`);
66773
+ console.log(` ${pc73.cyan("email verify")} Verify domain DNS records`);
66767
66774
  console.log(
66768
- ` ${pc72.cyan("email sync")} Apply CLI updates to infrastructure`
66775
+ ` ${pc73.cyan("email sync")} Apply CLI updates to infrastructure`
66769
66776
  );
66770
- console.log(` ${pc72.cyan("email upgrade")} Add features`);
66777
+ console.log(` ${pc73.cyan("email upgrade")} Add features`);
66771
66778
  console.log(
66772
- ` ${pc72.cyan("email restore")} Restore original configuration`
66779
+ ` ${pc73.cyan("email restore")} Restore original configuration`
66773
66780
  );
66774
66781
  console.log(
66775
- ` ${pc72.cyan("email destroy")} Remove email infrastructure`
66782
+ ` ${pc73.cyan("email destroy")} Remove email infrastructure`
66776
66783
  );
66777
66784
  console.log(
66778
- ` ${pc72.cyan("email doctor")} Diagnose and clean up email infrastructure`
66785
+ ` ${pc73.cyan("email doctor")} Diagnose and clean up email infrastructure`
66779
66786
  );
66780
- console.log(` ${pc72.cyan("email domains add")} Add a domain to SES`);
66781
- console.log(` ${pc72.cyan("email domains list")} List all domains`);
66782
- console.log(` ${pc72.cyan("email domains remove")} Remove a domain`);
66787
+ console.log(` ${pc73.cyan("email domains add")} Add a domain to SES`);
66788
+ console.log(` ${pc73.cyan("email domains list")} List all domains`);
66789
+ console.log(` ${pc73.cyan("email domains remove")} Remove a domain`);
66783
66790
  console.log(
66784
- ` ${pc72.cyan("email inbound init")} Enable inbound email receiving`
66791
+ ` ${pc73.cyan("email inbound init")} Enable inbound email receiving`
66785
66792
  );
66786
- console.log(` ${pc72.cyan("email inbound status")} Show inbound email status`);
66793
+ console.log(` ${pc73.cyan("email inbound status")} Show inbound email status`);
66787
66794
  console.log(
66788
- ` ${pc72.cyan("email inbound verify")} Verify inbound DNS records`
66795
+ ` ${pc73.cyan("email inbound verify")} Verify inbound DNS records`
66789
66796
  );
66790
66797
  console.log(
66791
- ` ${pc72.cyan("email inbound test")} Send test email and verify receipt`
66798
+ ` ${pc73.cyan("email inbound test")} Send test email and verify receipt`
66792
66799
  );
66793
66800
  console.log(
66794
- ` ${pc72.cyan("email inbound destroy")} Remove inbound email infrastructure
66801
+ ` ${pc73.cyan("email inbound destroy")} Remove inbound email infrastructure
66795
66802
  `
66796
66803
  );
66797
66804
  console.log("Agent Commands:");
66798
66805
  console.log(
66799
- ` ${pc72.cyan("email agent create")} Create a leashed agent mailbox`
66806
+ ` ${pc73.cyan("email agent create")} Create a leashed agent mailbox`
66800
66807
  );
66801
- console.log(` ${pc72.cyan("email agent list")} List agents`);
66808
+ console.log(` ${pc73.cyan("email agent list")} List agents`);
66802
66809
  console.log(
66803
- ` ${pc72.cyan("email agent kill")} Kill an agent (revoke sending)
66810
+ ` ${pc73.cyan("email agent kill")} Kill an agent (revoke sending)
66804
66811
  `
66805
66812
  );
66806
66813
  console.log("Template Commands:");
66807
66814
  console.log(
66808
- ` ${pc72.cyan("email templates init")} Initialize templates-as-code`
66815
+ ` ${pc73.cyan("email templates init")} Initialize templates-as-code`
66809
66816
  );
66810
66817
  console.log(
66811
- ` ${pc72.cyan("email templates push")} Push templates to SES + dashboard`
66818
+ ` ${pc73.cyan("email templates push")} Push templates to SES + dashboard`
66812
66819
  );
66813
66820
  console.log(
66814
- ` ${pc72.cyan("email templates preview")} Preview templates in browser`
66821
+ ` ${pc73.cyan("email templates preview")} Preview templates in browser`
66815
66822
  );
66816
66823
  console.log(
66817
- ` ${pc72.cyan("push")} ${pc72.dim("(alias for email templates push)")}
66824
+ ` ${pc73.cyan("push")} ${pc73.dim("(alias for email templates push)")}
66818
66825
  `
66819
66826
  );
66820
66827
  console.log("Workflow Commands:");
66821
66828
  console.log(
66822
- ` ${pc72.cyan("email workflows init")} Initialize workflows-as-code`
66829
+ ` ${pc73.cyan("email workflows init")} Initialize workflows-as-code`
66823
66830
  );
66824
66831
  console.log(
66825
- ` ${pc72.cyan("email workflows validate")} Validate workflow files`
66832
+ ` ${pc73.cyan("email workflows validate")} Validate workflow files`
66826
66833
  );
66827
66834
  console.log(
66828
- ` ${pc72.cyan("email workflows push")} Push workflows to dashboard
66835
+ ` ${pc73.cyan("email workflows push")} Push workflows to dashboard
66829
66836
  `
66830
66837
  );
66831
66838
  console.log("SMS Commands:");
66832
- console.log(` ${pc72.cyan("sms init")} Deploy SMS infrastructure`);
66839
+ console.log(` ${pc73.cyan("sms init")} Deploy SMS infrastructure`);
66833
66840
  console.log(
66834
- ` ${pc72.cyan("sms status")} Show SMS infrastructure details`
66841
+ ` ${pc73.cyan("sms status")} Show SMS infrastructure details`
66835
66842
  );
66836
- console.log(` ${pc72.cyan("sms test")} Send a test SMS message`);
66843
+ console.log(` ${pc73.cyan("sms test")} Send a test SMS message`);
66837
66844
  console.log(
66838
- ` ${pc72.cyan("sms verify-number")} Verify a destination phone number`
66845
+ ` ${pc73.cyan("sms verify-number")} Verify a destination phone number`
66839
66846
  );
66840
66847
  console.log(
66841
- ` ${pc72.cyan("sms sync")} Sync infrastructure (update Lambda, etc.)`
66848
+ ` ${pc73.cyan("sms sync")} Sync infrastructure (update Lambda, etc.)`
66842
66849
  );
66843
- console.log(` ${pc72.cyan("sms upgrade")} Upgrade SMS features`);
66844
- console.log(` ${pc72.cyan("sms register")} Register toll-free number`);
66850
+ console.log(` ${pc73.cyan("sms upgrade")} Upgrade SMS features`);
66851
+ console.log(` ${pc73.cyan("sms register")} Register toll-free number`);
66845
66852
  console.log(
66846
- ` ${pc72.cyan("sms destroy")} Remove SMS infrastructure
66853
+ ` ${pc73.cyan("sms destroy")} Remove SMS infrastructure
66847
66854
  `
66848
66855
  );
66849
66856
  console.log("CDN Commands:");
66850
66857
  console.log(
66851
- ` ${pc72.cyan("cdn init")} Deploy CDN infrastructure (S3 + CloudFront)`
66858
+ ` ${pc73.cyan("cdn init")} Deploy CDN infrastructure (S3 + CloudFront)`
66852
66859
  );
66853
66860
  console.log(
66854
- ` ${pc72.cyan("cdn status")} Show CDN infrastructure details`
66861
+ ` ${pc73.cyan("cdn status")} Show CDN infrastructure details`
66855
66862
  );
66856
66863
  console.log(
66857
- ` ${pc72.cyan("cdn verify")} Check DNS and certificate status`
66864
+ ` ${pc73.cyan("cdn verify")} Check DNS and certificate status`
66858
66865
  );
66859
66866
  console.log(
66860
- ` ${pc72.cyan("cdn upgrade")} Add custom domain after cert validation`
66867
+ ` ${pc73.cyan("cdn upgrade")} Add custom domain after cert validation`
66861
66868
  );
66862
66869
  console.log(
66863
- ` ${pc72.cyan("cdn sync")} Sync infrastructure with current config`
66870
+ ` ${pc73.cyan("cdn sync")} Sync infrastructure with current config`
66864
66871
  );
66865
66872
  console.log(
66866
- ` ${pc72.cyan("cdn destroy")} Remove CDN infrastructure
66873
+ ` ${pc73.cyan("cdn destroy")} Remove CDN infrastructure
66867
66874
  `
66868
66875
  );
66869
66876
  console.log("Self-Hosted Commands:");
66870
66877
  console.log(
66871
- ` ${pc72.cyan("selfhost deploy")} Deploy Wraps API to your AWS account`
66878
+ ` ${pc73.cyan("selfhost deploy")} Deploy Wraps API to your AWS account`
66872
66879
  );
66873
66880
  console.log(
66874
- ` ${pc72.cyan("selfhost login")} Sign in to your self-hosted Wraps instance`
66881
+ ` ${pc73.cyan("selfhost login")} Sign in to your self-hosted Wraps instance`
66875
66882
  );
66876
66883
  console.log(
66877
- ` ${pc72.cyan("selfhost logout")} Sign out of your self-hosted Wraps instance`
66884
+ ` ${pc73.cyan("selfhost logout")} Sign out of your self-hosted Wraps instance`
66878
66885
  );
66879
66886
  console.log(
66880
- ` ${pc72.cyan("selfhost upgrade")} Rebuild and redeploy the self-hosted API`
66887
+ ` ${pc73.cyan("selfhost upgrade")} Rebuild and redeploy the self-hosted API`
66881
66888
  );
66882
66889
  console.log(
66883
- ` ${pc72.cyan("selfhost status")} Show self-hosted deployment details`
66890
+ ` ${pc73.cyan("selfhost status")} Show self-hosted deployment details`
66884
66891
  );
66885
66892
  console.log(
66886
- ` ${pc72.cyan("selfhost logs")} Stream logs from your self-hosted API, dashboard, and workers`
66893
+ ` ${pc73.cyan("selfhost logs")} Stream logs from your self-hosted API, dashboard, and workers`
66887
66894
  );
66888
66895
  console.log(
66889
- ` ${pc72.cyan("selfhost env")} Print env vars for hosting the dashboard yourself`
66896
+ ` ${pc73.cyan("selfhost env")} Print env vars for hosting the dashboard yourself`
66890
66897
  );
66891
66898
  console.log(
66892
- ` ${pc72.cyan("selfhost connect")} Connect your AWS account to your self-hosted instance`
66899
+ ` ${pc73.cyan("selfhost connect")} Connect your AWS account to your self-hosted instance`
66893
66900
  );
66894
66901
  console.log(
66895
- ` ${pc72.cyan("selfhost update-role")} Refresh your self-hosted console role's permissions`
66902
+ ` ${pc73.cyan("selfhost update-role")} Refresh your self-hosted console role's permissions`
66896
66903
  );
66897
66904
  console.log(
66898
- ` ${pc72.cyan("selfhost destroy")} Tear down the self-hosted deployment
66905
+ ` ${pc73.cyan("selfhost destroy")} Tear down the self-hosted deployment
66899
66906
  `
66900
66907
  );
66901
66908
  console.log("Local Development:");
66902
66909
  console.log(
66903
- ` ${pc72.cyan("console")} Start local web console
66910
+ ` ${pc73.cyan("console")} Start local web console
66904
66911
  `
66905
66912
  );
66906
66913
  console.log("Platform:");
66907
66914
  console.log(
66908
- ` ${pc72.cyan("platform")} Show platform info and pricing`
66915
+ ` ${pc73.cyan("platform")} Show platform info and pricing`
66909
66916
  );
66910
66917
  console.log(
66911
- ` ${pc72.cyan("platform connect")} Connect to Wraps Platform (events + IAM)`
66918
+ ` ${pc73.cyan("platform connect")} Connect to Wraps Platform (events + IAM)`
66912
66919
  );
66913
66920
  console.log(
66914
- ` ${pc72.cyan("platform update-role")} Update platform IAM permissions
66921
+ ` ${pc73.cyan("platform update-role")} Update platform IAM permissions
66915
66922
  `
66916
66923
  );
66917
66924
  console.log("Auth:");
66918
66925
  console.log(
66919
- ` ${pc72.cyan("auth login")} Sign in to wraps.dev (device flow)`
66926
+ ` ${pc73.cyan("auth login")} Sign in to wraps.dev (device flow)`
66920
66927
  );
66921
- console.log(` ${pc72.cyan("auth status")} Show current auth state`);
66928
+ console.log(` ${pc73.cyan("auth status")} Show current auth state`);
66922
66929
  console.log(
66923
- ` ${pc72.cyan("auth logout")} Sign out and remove stored token
66930
+ ` ${pc73.cyan("auth logout")} Sign out and remove stored token
66924
66931
  `
66925
66932
  );
66926
66933
  console.log("AWS Setup:");
66927
66934
  console.log(
66928
- ` ${pc72.cyan("aws setup")} Interactive AWS setup wizard`
66935
+ ` ${pc73.cyan("aws setup")} Interactive AWS setup wizard`
66929
66936
  );
66930
66937
  console.log(
66931
- ` ${pc72.cyan("aws doctor")} Diagnose AWS configuration issues
66938
+ ` ${pc73.cyan("aws doctor")} Diagnose AWS configuration issues
66932
66939
  `
66933
66940
  );
66934
66941
  console.log("Global Commands:");
66935
- console.log(` ${pc72.cyan("status")} Show overview of all services`);
66936
- console.log(` ${pc72.cyan("destroy")} Remove deployed infrastructure`);
66937
- console.log(` ${pc72.cyan("permissions")} Show required AWS IAM permissions`);
66938
- console.log(` ${pc72.cyan("completion")} Generate shell completion script`);
66942
+ console.log(` ${pc73.cyan("status")} Show overview of all services`);
66943
+ console.log(` ${pc73.cyan("destroy")} Remove deployed infrastructure`);
66944
+ console.log(` ${pc73.cyan("permissions")} Show required AWS IAM permissions`);
66945
+ console.log(` ${pc73.cyan("completion")} Generate shell completion script`);
66939
66946
  console.log(
66940
- ` ${pc72.cyan("telemetry")} Manage anonymous telemetry settings`
66947
+ ` ${pc73.cyan("telemetry")} Manage anonymous telemetry settings`
66941
66948
  );
66942
- console.log(` ${pc72.cyan("update")} Update CLI to latest version`);
66943
- console.log(` ${pc72.cyan("news")} Show recent Wraps updates`);
66949
+ console.log(` ${pc73.cyan("update")} Update CLI to latest version`);
66950
+ console.log(` ${pc73.cyan("news")} Show recent Wraps updates`);
66944
66951
  console.log(
66945
- ` ${pc72.cyan("support")} Get help and support contact info
66952
+ ` ${pc73.cyan("support")} Get help and support contact info
66946
66953
  `
66947
66954
  );
66948
66955
  console.log("Options:");
66949
66956
  console.log(
66950
- ` ${pc72.dim("-p, --provider")} Hosting provider (vercel, aws, railway, other)`
66957
+ ` ${pc73.dim("-p, --provider")} Hosting provider (vercel, aws, railway, other)`
66951
66958
  );
66952
- console.log(` ${pc72.dim("-r, --region")} AWS region`);
66953
- console.log(` ${pc72.dim("-d, --domain")} Domain name`);
66954
- console.log(` ${pc72.dim("--account")} AWS account ID or alias`);
66955
- console.log(` ${pc72.dim("--preset")} Configuration preset`);
66956
- console.log(` ${pc72.dim("--token")} API key or token for auth`);
66957
- console.log(` ${pc72.dim("-y, --yes")} Skip confirmation prompts`);
66958
- console.log(` ${pc72.dim("-f, --force")} Force destructive operations`);
66959
+ console.log(` ${pc73.dim("-r, --region")} AWS region`);
66960
+ console.log(` ${pc73.dim("-d, --domain")} Domain name`);
66961
+ console.log(` ${pc73.dim("--account")} AWS account ID or alias`);
66962
+ console.log(` ${pc73.dim("--preset")} Configuration preset`);
66963
+ console.log(` ${pc73.dim("--token")} API key or token for auth`);
66964
+ console.log(` ${pc73.dim("-y, --yes")} Skip confirmation prompts`);
66965
+ console.log(` ${pc73.dim("-f, --force")} Force destructive operations`);
66959
66966
  console.log(
66960
- ` ${pc72.dim("--preview")} Preview changes without deploying`
66967
+ ` ${pc73.dim("--preview")} Preview changes without deploying`
66961
66968
  );
66962
- console.log(` ${pc72.dim("-v, --version")} Show version number
66969
+ console.log(` ${pc73.dim("-v, --version")} Show version number
66963
66970
  `);
66964
66971
  console.log(
66965
- `Run ${pc72.cyan("wraps <service> <command> --help")} for more information.`
66972
+ `Run ${pc73.cyan("wraps <service> <command> --help")} for more information.`
66966
66973
  );
66967
66974
  console.log(
66968
- `AI agents: complete docs at ${pc72.cyan("https://wraps.dev/llms-full.txt")}
66975
+ `AI agents: complete docs at ${pc73.cyan("https://wraps.dev/llms-full.txt")}
66969
66976
  `
66970
66977
  );
66971
66978
  }
@@ -66987,25 +66994,25 @@ if (!primaryCommand) {
66987
66994
  const telemetry = getTelemetryClient();
66988
66995
  if (telemetry.shouldShowNotification()) {
66989
66996
  console.log();
66990
- clack68.log.info(pc72.bold("Anonymous Telemetry"));
66997
+ clack68.log.info(pc73.bold("Anonymous Telemetry"));
66991
66998
  console.log(
66992
- ` Wraps collects ${pc72.cyan("anonymous usage data")} to improve the CLI.`
66999
+ ` Wraps collects ${pc73.cyan("anonymous usage data")} to improve the CLI.`
66993
67000
  );
66994
67001
  console.log(
66995
- ` We ${pc72.bold("never")} collect: domains, AWS credentials, email content, or PII.`
67002
+ ` We ${pc73.bold("never")} collect: domains, AWS credentials, email content, or PII.`
66996
67003
  );
66997
67004
  console.log(
66998
- ` We ${pc72.bold("only")} collect: command names, success/failure, CLI version, OS.`
67005
+ ` We ${pc73.bold("only")} collect: command names, success/failure, CLI version, OS.`
66999
67006
  );
67000
67007
  console.log();
67001
- console.log(` Opt-out anytime: ${pc72.cyan("wraps telemetry disable")}`);
67002
- console.log(` Or set: ${pc72.cyan("WRAPS_TELEMETRY_DISABLED=1")}`);
67003
- console.log(` Learn more: ${pc72.cyan("https://wraps.dev/docs")}`);
67008
+ console.log(` Opt-out anytime: ${pc73.cyan("wraps telemetry disable")}`);
67009
+ console.log(` Or set: ${pc73.cyan("WRAPS_TELEMETRY_DISABLED=1")}`);
67010
+ console.log(` Learn more: ${pc73.cyan("https://wraps.dev/docs")}`);
67004
67011
  console.log();
67005
67012
  telemetry.markNotificationShown();
67006
67013
  }
67007
67014
  trackCommand("interactive:menu", { success: true, duration_ms: 0 });
67008
- clack68.intro(pc72.bold(`WRAPS CLI v${VERSION}`));
67015
+ clack68.intro(pc73.bold(`WRAPS CLI v${VERSION}`));
67009
67016
  console.log(" Deploy AWS infrastructure to your account.\n");
67010
67017
  const action = await clack68.select({
67011
67018
  message: "What would you like to do?",
@@ -67143,20 +67150,20 @@ async function run() {
67143
67150
  const telemetry = getTelemetryClient();
67144
67151
  if (telemetry.shouldShowNotification()) {
67145
67152
  console.log();
67146
- clack68.log.info(pc72.bold("Anonymous Telemetry"));
67153
+ clack68.log.info(pc73.bold("Anonymous Telemetry"));
67147
67154
  console.log(
67148
- ` Wraps collects ${pc72.cyan("anonymous usage data")} to improve the CLI.`
67155
+ ` Wraps collects ${pc73.cyan("anonymous usage data")} to improve the CLI.`
67149
67156
  );
67150
67157
  console.log(
67151
- ` We ${pc72.bold("never")} collect: domains, AWS credentials, email content, or PII.`
67158
+ ` We ${pc73.bold("never")} collect: domains, AWS credentials, email content, or PII.`
67152
67159
  );
67153
67160
  console.log(
67154
- ` We ${pc72.bold("only")} collect: command names, success/failure, CLI version, OS.`
67161
+ ` We ${pc73.bold("only")} collect: command names, success/failure, CLI version, OS.`
67155
67162
  );
67156
67163
  console.log();
67157
- console.log(` Opt-out anytime: ${pc72.cyan("wraps telemetry disable")}`);
67158
- console.log(` Or set: ${pc72.cyan("WRAPS_TELEMETRY_DISABLED=1")}`);
67159
- console.log(` Learn more: ${pc72.cyan("https://wraps.dev/docs")}`);
67164
+ console.log(` Opt-out anytime: ${pc73.cyan("wraps telemetry disable")}`);
67165
+ console.log(` Or set: ${pc73.cyan("WRAPS_TELEMETRY_DISABLED=1")}`);
67166
+ console.log(` Learn more: ${pc73.cyan("https://wraps.dev/docs")}`);
67160
67167
  console.log();
67161
67168
  telemetry.markNotificationShown();
67162
67169
  }
@@ -67253,7 +67260,7 @@ async function run() {
67253
67260
  clack68.log.error("--domain flag is required");
67254
67261
  console.log(
67255
67262
  `
67256
- Usage: ${pc72.cyan("wraps email verify --domain yourapp.com")}
67263
+ Usage: ${pc73.cyan("wraps email verify --domain yourapp.com")}
67257
67264
  `
67258
67265
  );
67259
67266
  throw new Error("Missing required flag: --domain");
@@ -67330,7 +67337,7 @@ Usage: ${pc72.cyan("wraps email verify --domain yourapp.com")}
67330
67337
  );
67331
67338
  console.log(
67332
67339
  `
67333
- Available commands: ${pc72.cyan("init")}, ${pc72.cyan("destroy")}, ${pc72.cyan("status")}, ${pc72.cyan("verify")}, ${pc72.cyan("test")}, ${pc72.cyan("add")}, ${pc72.cyan("remove")}
67340
+ Available commands: ${pc73.cyan("init")}, ${pc73.cyan("destroy")}, ${pc73.cyan("status")}, ${pc73.cyan("verify")}, ${pc73.cyan("test")}, ${pc73.cyan("add")}, ${pc73.cyan("remove")}
67334
67341
  `
67335
67342
  );
67336
67343
  throw new Error(
@@ -67372,7 +67379,7 @@ Available commands: ${pc72.cyan("init")}, ${pc72.cyan("destroy")}, ${pc72.cyan("
67372
67379
  );
67373
67380
  console.log(
67374
67381
  `
67375
- Available commands: ${pc72.cyan("create")}, ${pc72.cyan("list")}, ${pc72.cyan("kill")}
67382
+ Available commands: ${pc73.cyan("create")}, ${pc73.cyan("list")}, ${pc73.cyan("kill")}
67376
67383
  `
67377
67384
  );
67378
67385
  throw new Error(
@@ -67429,7 +67436,7 @@ Available commands: ${pc72.cyan("create")}, ${pc72.cyan("list")}, ${pc72.cyan("k
67429
67436
  );
67430
67437
  console.log(
67431
67438
  `
67432
- Available commands: ${pc72.cyan("init")}, ${pc72.cyan("rotate")}, ${pc72.cyan("status")}, ${pc72.cyan("destroy")}, ${pc72.cyan("decode")}
67439
+ Available commands: ${pc73.cyan("init")}, ${pc73.cyan("rotate")}, ${pc73.cyan("status")}, ${pc73.cyan("destroy")}, ${pc73.cyan("decode")}
67433
67440
  `
67434
67441
  );
67435
67442
  throw new Error(
@@ -67457,7 +67464,7 @@ Available commands: ${pc72.cyan("init")}, ${pc72.cyan("rotate")}, ${pc72.cyan("s
67457
67464
  clack68.log.error("--domain flag is required");
67458
67465
  console.log(
67459
67466
  `
67460
- Usage: ${pc72.cyan("wraps email domains verify --domain yourapp.com")}
67467
+ Usage: ${pc73.cyan("wraps email domains verify --domain yourapp.com")}
67461
67468
  `
67462
67469
  );
67463
67470
  throw new Error("Missing required flag: --domain");
@@ -67470,7 +67477,7 @@ Usage: ${pc72.cyan("wraps email domains verify --domain yourapp.com")}
67470
67477
  clack68.log.error("--domain flag is required");
67471
67478
  console.log(
67472
67479
  `
67473
- Usage: ${pc72.cyan("wraps email domains get-dkim --domain yourapp.com")}
67480
+ Usage: ${pc73.cyan("wraps email domains get-dkim --domain yourapp.com")}
67474
67481
  `
67475
67482
  );
67476
67483
  throw new Error("Missing required flag: --domain");
@@ -67483,7 +67490,7 @@ Usage: ${pc72.cyan("wraps email domains get-dkim --domain yourapp.com")}
67483
67490
  clack68.log.error("--domain flag is required");
67484
67491
  console.log(
67485
67492
  `
67486
- Usage: ${pc72.cyan("wraps email domains remove --domain yourapp.com --force")}
67493
+ Usage: ${pc73.cyan("wraps email domains remove --domain yourapp.com --force")}
67487
67494
  `
67488
67495
  );
67489
67496
  throw new Error("Missing required flag: --domain");
@@ -67518,7 +67525,7 @@ Usage: ${pc72.cyan("wraps email domains remove --domain yourapp.com --force")}
67518
67525
  );
67519
67526
  console.log(
67520
67527
  `
67521
- Available commands: ${pc72.cyan("add")}, ${pc72.cyan("list")}, ${pc72.cyan("verify")}, ${pc72.cyan("get-dkim")}, ${pc72.cyan("remove")}, ${pc72.cyan("config")}
67528
+ Available commands: ${pc73.cyan("add")}, ${pc73.cyan("list")}, ${pc73.cyan("verify")}, ${pc73.cyan("get-dkim")}, ${pc73.cyan("remove")}, ${pc73.cyan("config")}
67522
67529
  `
67523
67530
  );
67524
67531
  throw new Error(
@@ -67565,7 +67572,7 @@ Available commands: ${pc72.cyan("add")}, ${pc72.cyan("list")}, ${pc72.cyan("veri
67565
67572
  );
67566
67573
  console.log(
67567
67574
  `
67568
- Available commands: ${pc72.cyan("init")}, ${pc72.cyan("push")}, ${pc72.cyan("preview")}
67575
+ Available commands: ${pc73.cyan("init")}, ${pc73.cyan("push")}, ${pc73.cyan("preview")}
67569
67576
  `
67570
67577
  );
67571
67578
  throw new Error(
@@ -67609,7 +67616,7 @@ Available commands: ${pc72.cyan("init")}, ${pc72.cyan("push")}, ${pc72.cyan("pre
67609
67616
  );
67610
67617
  console.log(
67611
67618
  `
67612
- Available commands: ${pc72.cyan("init")}, ${pc72.cyan("validate")}, ${pc72.cyan("push")}
67619
+ Available commands: ${pc73.cyan("init")}, ${pc73.cyan("validate")}, ${pc73.cyan("push")}
67613
67620
  `
67614
67621
  );
67615
67622
  throw new Error(
@@ -67651,7 +67658,7 @@ Available commands: ${pc72.cyan("init")}, ${pc72.cyan("validate")}, ${pc72.cyan(
67651
67658
  );
67652
67659
  console.log(
67653
67660
  `
67654
- Available commands: ${pc72.cyan("list")}, ${pc72.cyan("get <message-id>")}
67661
+ Available commands: ${pc73.cyan("list")}, ${pc73.cyan("get <message-id>")}
67655
67662
  `
67656
67663
  );
67657
67664
  throw new Error(
@@ -67679,7 +67686,7 @@ Available commands: ${pc72.cyan("list")}, ${pc72.cyan("get <message-id>")}
67679
67686
  clack68.log.error(`Unknown email command: ${subCommand}`);
67680
67687
  console.log(
67681
67688
  `
67682
- Run ${pc72.cyan("wraps --help")} for available commands.
67689
+ Run ${pc73.cyan("wraps --help")} for available commands.
67683
67690
  `
67684
67691
  );
67685
67692
  throw new Error(`Unknown email command: ${subCommand}`);
@@ -67707,7 +67714,7 @@ Run ${pc72.cyan("wraps --help")} for available commands.
67707
67714
  clack68.log.error(`Unknown license command: ${subCommand}`);
67708
67715
  console.log(
67709
67716
  `
67710
- Run ${pc72.cyan("wraps --help")} for available commands.
67717
+ Run ${pc73.cyan("wraps --help")} for available commands.
67711
67718
  `
67712
67719
  );
67713
67720
  throw new Error(`Unknown license command: ${subCommand}`);
@@ -67809,7 +67816,7 @@ Run ${pc72.cyan("wraps --help")} for available commands.
67809
67816
  clack68.log.error(`Unknown selfhost command: ${subCommand}`);
67810
67817
  console.log(
67811
67818
  `
67812
- Run ${pc72.cyan("wraps --help")} for available commands.
67819
+ Run ${pc73.cyan("wraps --help")} for available commands.
67813
67820
  `
67814
67821
  );
67815
67822
  throw new Error(`Unknown selfhost command: ${subCommand}`);
@@ -67892,7 +67899,7 @@ Run ${pc72.cyan("wraps --help")} for available commands.
67892
67899
  clack68.log.error(`Unknown sms command: ${subCommand}`);
67893
67900
  console.log(
67894
67901
  `
67895
- Run ${pc72.cyan("wraps --help")} for available commands.
67902
+ Run ${pc73.cyan("wraps --help")} for available commands.
67896
67903
  `
67897
67904
  );
67898
67905
  throw new Error(`Unknown sms command: ${subCommand}`);
@@ -67956,7 +67963,7 @@ Run ${pc72.cyan("wraps --help")} for available commands.
67956
67963
  clack68.log.error(`Unknown cdn command: ${subCommand}`);
67957
67964
  console.log(
67958
67965
  `
67959
- Run ${pc72.cyan("wraps --help")} for available commands.
67966
+ Run ${pc73.cyan("wraps --help")} for available commands.
67960
67967
  `
67961
67968
  );
67962
67969
  throw new Error(`Unknown cdn command: ${subCommand}`);
@@ -67982,9 +67989,9 @@ Run ${pc72.cyan("wraps --help")} for available commands.
67982
67989
  `Unknown workflow command: ${subCommand || "(none)"}`
67983
67990
  );
67984
67991
  console.log(`
67985
- Available commands: ${pc72.cyan("init")}
67992
+ Available commands: ${pc73.cyan("init")}
67986
67993
  `);
67987
- console.log(`Run ${pc72.cyan("wraps --help")} for more information.
67994
+ console.log(`Run ${pc73.cyan("wraps --help")} for more information.
67988
67995
  `);
67989
67996
  throw new Error(
67990
67997
  `Unknown workflow command: ${subCommand || "(none)"}`
@@ -68029,11 +68036,11 @@ Available commands: ${pc72.cyan("init")}
68029
68036
  clack68.log.error(`Unknown platform command: ${subCommand}`);
68030
68037
  console.log(
68031
68038
  `
68032
- Available commands: ${pc72.cyan("connect")}, ${pc72.cyan("update-role")}
68039
+ Available commands: ${pc73.cyan("connect")}, ${pc73.cyan("update-role")}
68033
68040
  `
68034
68041
  );
68035
68042
  console.log(
68036
- `Run ${pc72.cyan("wraps platform")} for more information.
68043
+ `Run ${pc73.cyan("wraps platform")} for more information.
68037
68044
  `
68038
68045
  );
68039
68046
  throw new Error(`Unknown platform command: ${subCommand}`);
@@ -68061,7 +68068,7 @@ Available commands: ${pc72.cyan("connect")}, ${pc72.cyan("update-role")}
68061
68068
  clack68.log.error(`Unknown auth command: ${subCommand || "(none)"}`);
68062
68069
  console.log(
68063
68070
  `
68064
- Available commands: ${pc72.cyan("login")}, ${pc72.cyan("status")}, ${pc72.cyan("logout")}
68071
+ Available commands: ${pc73.cyan("login")}, ${pc73.cyan("status")}, ${pc73.cyan("logout")}
68065
68072
  `
68066
68073
  );
68067
68074
  throw new Error(`Unknown auth command: ${subCommand || "(none)"}`);
@@ -68082,10 +68089,10 @@ Available commands: ${pc72.cyan("login")}, ${pc72.cyan("status")}, ${pc72.cyan("
68082
68089
  clack68.log.error(`Unknown aws command: ${subCommand}`);
68083
68090
  console.log(
68084
68091
  `
68085
- Available commands: ${pc72.cyan("setup")}, ${pc72.cyan("doctor")}
68092
+ Available commands: ${pc73.cyan("setup")}, ${pc73.cyan("doctor")}
68086
68093
  `
68087
68094
  );
68088
- console.log(`Run ${pc72.cyan("wraps --help")} for more information.
68095
+ console.log(`Run ${pc73.cyan("wraps --help")} for more information.
68089
68096
  `);
68090
68097
  throw new Error(`Unknown aws command: ${subCommand}`);
68091
68098
  }
@@ -68169,7 +68176,7 @@ Available commands: ${pc72.cyan("setup")}, ${pc72.cyan("doctor")}
68169
68176
  clack68.log.error(`Unknown telemetry command: ${subCommand}`);
68170
68177
  console.log(
68171
68178
  `
68172
- Available commands: ${pc72.cyan("enable")}, ${pc72.cyan("disable")}, ${pc72.cyan("status")}
68179
+ Available commands: ${pc73.cyan("enable")}, ${pc73.cyan("disable")}, ${pc73.cyan("status")}
68173
68180
  `
68174
68181
  );
68175
68182
  throw new Error(`Unknown telemetry command: ${subCommand}`);
@@ -68196,7 +68203,7 @@ Please specify a command for ${primaryCommand} service.
68196
68203
  clack68.log.error(`Unknown command: ${primaryCommand}`);
68197
68204
  console.log(
68198
68205
  `
68199
- Run ${pc72.cyan("wraps --help")} for available commands.
68206
+ Run ${pc73.cyan("wraps --help")} for available commands.
68200
68207
  `
68201
68208
  );
68202
68209
  throw new Error(`Unknown command: ${primaryCommand}`);