@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/README.md +6 -6
- package/dist/api-lambda.zip +0 -0
- package/dist/cli.js +387 -380
- package/dist/cli.js.map +1 -1
- package/dist/lambda/agent-enforcer/.bundled +1 -1
- package/dist/lambda/event-processor/.bundled +1 -1
- package/dist/lambda/inbound-processor/.bundled +1 -1
- package/dist/lambda/sms-event-processor/.bundled +1 -1
- package/dist/selfhost-migrations/0067_empty_ultimo.sql +1 -0
- package/dist/selfhost-migrations/0068_abandoned_mephisto.sql +1 -0
- package/dist/selfhost-migrations/0069_abnormal_zuras.sql +1 -0
- package/dist/selfhost-migrations/meta/0067_snapshot.json +7688 -0
- package/dist/selfhost-migrations/meta/0068_snapshot.json +7694 -0
- package/dist/selfhost-migrations/meta/0069_snapshot.json +7700 -0
- package/dist/selfhost-migrations/meta/_journal.json +21 -0
- package/package.json +3 -3
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 {
|
|
6522
|
+
pc10.dim(" import { WrapsEmail } from '@wraps.dev/email';"),
|
|
6523
6523
|
pc10.dim(""),
|
|
6524
|
-
pc10.dim(" const
|
|
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
|
|
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
|
|
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. ${
|
|
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
|
|
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(
|
|
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 ${
|
|
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: ${
|
|
31454
|
-
Latest version: ${
|
|
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
|
-
${
|
|
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 ${
|
|
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
|
|
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
|
|
62834
|
-
if (!(
|
|
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:
|
|
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 =
|
|
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
|
|
62941
|
-
if (!(
|
|
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:
|
|
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:
|
|
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
|
|
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(
|
|
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: ${
|
|
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 ${
|
|
63772
|
+
`SMS already configured for account ${pc62.cyan(identity.accountId)} in region ${pc62.cyan(region)}`
|
|
63759
63773
|
);
|
|
63760
|
-
clack58.log.info(`Use ${
|
|
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
|
-
${
|
|
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
|
-
${
|
|
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
|
-
${
|
|
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
|
-
|
|
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 ${
|
|
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 ${
|
|
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 ${
|
|
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(
|
|
64053
|
+
clack58.log.success(pc62.green(pc62.bold("SMS infrastructure deployed!")));
|
|
64040
64054
|
console.log("\n");
|
|
64041
64055
|
clack58.note(
|
|
64042
64056
|
[
|
|
64043
|
-
`${
|
|
64044
|
-
`${
|
|
64045
|
-
`${
|
|
64046
|
-
`${
|
|
64047
|
-
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
|
-
|
|
64050
|
-
|
|
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
|
-
`${
|
|
64071
|
+
`${pc62.cyan("wraps sms register")} - Submit toll-free registration (required before sending)`
|
|
64058
64072
|
);
|
|
64059
64073
|
}
|
|
64060
64074
|
nextSteps.push(
|
|
64061
|
-
`${
|
|
64075
|
+
`${pc62.cyan("wraps sms test --to +1234567890")} - Send a test message`
|
|
64062
64076
|
);
|
|
64063
|
-
nextSteps.push(`${
|
|
64077
|
+
nextSteps.push(`${pc62.cyan("wraps sms status")} - View SMS configuration`);
|
|
64064
64078
|
console.log("\n");
|
|
64065
|
-
clack58.log.info(
|
|
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(
|
|
64071
|
-
|
|
64072
|
-
|
|
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
|
|
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(
|
|
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 ${
|
|
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
|
-
`${
|
|
64212
|
+
`${pc63.bold("Phone Number:")} ${pc63.cyan(phoneDetails.phoneNumber)}`
|
|
64206
64213
|
);
|
|
64207
|
-
console.log(`${
|
|
64214
|
+
console.log(`${pc63.bold("Type:")} ${pc63.cyan(phoneDetails.type)}`);
|
|
64208
64215
|
console.log(
|
|
64209
|
-
`${
|
|
64216
|
+
`${pc63.bold("Status:")} ${phoneDetails.status === "ACTIVE" ? pc63.green(phoneDetails.status) : pc63.yellow(phoneDetails.status)}`
|
|
64210
64217
|
);
|
|
64211
64218
|
if (registrationStatus) {
|
|
64212
|
-
console.log(`${
|
|
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(
|
|
64237
|
+
console.log(pc63.bold("Toll-Free Registration Required"));
|
|
64231
64238
|
console.log("");
|
|
64232
64239
|
console.log(
|
|
64233
|
-
|
|
64240
|
+
pc63.dim("To send SMS at scale, you must register your toll-free number.")
|
|
64234
64241
|
);
|
|
64235
|
-
console.log(
|
|
64242
|
+
console.log(pc63.dim("This process typically takes 1-15 business days."));
|
|
64236
64243
|
console.log("");
|
|
64237
|
-
console.log(
|
|
64238
|
-
console.log(` ${
|
|
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
|
-
` ${
|
|
64247
|
+
` ${pc63.dim("\u2022")} Use case description (what messages you're sending)`
|
|
64241
64248
|
);
|
|
64242
|
-
console.log(` ${
|
|
64243
|
-
console.log(` ${
|
|
64244
|
-
console.log(` ${
|
|
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
|
-
${
|
|
64276
|
+
${pc63.cyan(consoleUrl)}
|
|
64270
64277
|
`);
|
|
64271
64278
|
}
|
|
64272
64279
|
}
|
|
64273
64280
|
console.log("");
|
|
64274
|
-
console.log(
|
|
64281
|
+
console.log(pc63.bold("Next Steps:"));
|
|
64275
64282
|
console.log(
|
|
64276
|
-
` 1. Click ${
|
|
64283
|
+
` 1. Click ${pc63.cyan("Create registration")} in the AWS Console`
|
|
64277
64284
|
);
|
|
64278
|
-
console.log(` 2. Select ${
|
|
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
|
-
|
|
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(` ${
|
|
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(
|
|
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
|
|
64317
|
+
import pc64 from "picocolors";
|
|
64311
64318
|
function displaySMSStatus(options) {
|
|
64312
64319
|
const lines = [];
|
|
64313
|
-
lines.push(
|
|
64320
|
+
lines.push(pc64.bold(pc64.green("SMS Infrastructure Active")));
|
|
64314
64321
|
lines.push("");
|
|
64315
|
-
lines.push(
|
|
64322
|
+
lines.push(pc64.bold("Phone Number"));
|
|
64316
64323
|
if (options.phoneNumber) {
|
|
64317
|
-
lines.push(` Number: ${
|
|
64324
|
+
lines.push(` Number: ${pc64.cyan(options.phoneNumber)}`);
|
|
64318
64325
|
} else {
|
|
64319
|
-
lines.push(` Number: ${
|
|
64326
|
+
lines.push(` Number: ${pc64.yellow("Provisioning...")}`);
|
|
64320
64327
|
}
|
|
64321
|
-
lines.push(` Type: ${
|
|
64328
|
+
lines.push(` Type: ${pc64.cyan(options.phoneNumberType || "simulator")}`);
|
|
64322
64329
|
lines.push("");
|
|
64323
|
-
lines.push(
|
|
64324
|
-
lines.push(` Region: ${
|
|
64330
|
+
lines.push(pc64.bold("Configuration"));
|
|
64331
|
+
lines.push(` Region: ${pc64.cyan(options.region)}`);
|
|
64325
64332
|
if (options.preset) {
|
|
64326
|
-
lines.push(` Preset: ${
|
|
64333
|
+
lines.push(` Preset: ${pc64.cyan(options.preset)}`);
|
|
64327
64334
|
}
|
|
64328
64335
|
if (options.configSetName) {
|
|
64329
|
-
lines.push(` Config Set: ${
|
|
64336
|
+
lines.push(` Config Set: ${pc64.cyan(options.configSetName)}`);
|
|
64330
64337
|
}
|
|
64331
64338
|
lines.push("");
|
|
64332
|
-
lines.push(
|
|
64339
|
+
lines.push(pc64.bold("Features"));
|
|
64333
64340
|
lines.push(
|
|
64334
|
-
` Event Tracking: ${options.eventTracking ?
|
|
64341
|
+
` Event Tracking: ${options.eventTracking ? pc64.green("Enabled") : pc64.dim("Disabled")}`
|
|
64335
64342
|
);
|
|
64336
64343
|
if (options.tableName) {
|
|
64337
|
-
lines.push(` Message History: ${
|
|
64338
|
-
lines.push(` Table: ${
|
|
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: ${
|
|
64348
|
+
lines.push(` Event Queue: ${pc64.green("Enabled")}`);
|
|
64342
64349
|
}
|
|
64343
64350
|
lines.push("");
|
|
64344
64351
|
if (options.roleArn) {
|
|
64345
|
-
lines.push(
|
|
64346
|
-
lines.push(` ${
|
|
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(
|
|
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 ${
|
|
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(
|
|
64416
|
+
clack60.log.info(pc64.bold("Commands:"));
|
|
64410
64417
|
console.log(
|
|
64411
|
-
` ${
|
|
64418
|
+
` ${pc64.cyan("wraps sms test --to +1234567890")} - Send a test message`
|
|
64412
64419
|
);
|
|
64413
|
-
console.log(` ${
|
|
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(
|
|
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
|
|
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(
|
|
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 ${
|
|
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: ${
|
|
64471
|
+
`Phone type: ${pc65.cyan(smsConfig.phoneNumberType || "simulator")}`
|
|
64465
64472
|
);
|
|
64466
64473
|
progress.info(
|
|
64467
|
-
`Event tracking: ${
|
|
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(
|
|
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(` ${
|
|
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(
|
|
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
|
|
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(
|
|
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 ${
|
|
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(
|
|
64802
|
+
clack62.log.success(pc66.green("Test SMS sent successfully!"));
|
|
64796
64803
|
console.log("");
|
|
64797
64804
|
clack62.note(
|
|
64798
64805
|
[
|
|
64799
|
-
`${
|
|
64800
|
-
`${
|
|
64801
|
-
`${
|
|
64802
|
-
`${
|
|
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
|
-
|
|
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
|
-
|
|
64820
|
+
pc66.dim("Event tracking is enabled. Check DynamoDB for delivery status.")
|
|
64814
64821
|
);
|
|
64815
64822
|
}
|
|
64816
|
-
clack62.outro(
|
|
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 ${
|
|
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 ${
|
|
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
|
|
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(
|
|
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: ${
|
|
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 ${
|
|
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 ${
|
|
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 ${
|
|
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
|
-
${
|
|
64926
|
+
${pc67.bold("Current Configuration:")}
|
|
64920
64927
|
`);
|
|
64921
64928
|
if (metadata.services.sms.preset) {
|
|
64922
|
-
console.log(` Preset: ${
|
|
64929
|
+
console.log(` Preset: ${pc67.cyan(metadata.services.sms.preset)}`);
|
|
64923
64930
|
} else {
|
|
64924
|
-
console.log(` Preset: ${
|
|
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 ${
|
|
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: ${
|
|
64949
|
+
` Phone Type: ${pc67.cyan(phoneTypeLabels2[config2.phoneNumberType] || config2.phoneNumberType)}`
|
|
64943
64950
|
);
|
|
64944
64951
|
}
|
|
64945
64952
|
if (config2.tracking?.enabled) {
|
|
64946
|
-
console.log(` ${
|
|
64953
|
+
console.log(` ${pc67.green("\u2713")} Delivery Tracking`);
|
|
64947
64954
|
if (config2.tracking.linkTracking) {
|
|
64948
|
-
console.log(` ${
|
|
64955
|
+
console.log(` ${pc67.dim("\u2514\u2500")} Link click tracking enabled`);
|
|
64949
64956
|
}
|
|
64950
64957
|
}
|
|
64951
64958
|
if (config2.eventTracking?.enabled) {
|
|
64952
|
-
console.log(` ${
|
|
64959
|
+
console.log(` ${pc67.green("\u2713")} Event Tracking (SNS)`);
|
|
64953
64960
|
if (config2.eventTracking.dynamoDBHistory) {
|
|
64954
64961
|
console.log(
|
|
64955
|
-
` ${
|
|
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
|
-
` ${
|
|
64968
|
+
` ${pc67.green("\u2713")} Message Archiving (${config2.messageArchiving.retention})`
|
|
64962
64969
|
);
|
|
64963
64970
|
}
|
|
64964
64971
|
if (config2.optOutManagement) {
|
|
64965
|
-
console.log(` ${
|
|
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(` ${
|
|
64970
|
-
console.log(` ${
|
|
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(` ${
|
|
64979
|
+
console.log(` ${pc67.dim("\u2514\u2500")} AIT filtering: ${pc67.cyan("enabled")}`);
|
|
64973
64980
|
}
|
|
64974
64981
|
} else {
|
|
64975
|
-
console.log(` ${
|
|
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: ${
|
|
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
|
-
${
|
|
65094
|
+
${pc67.yellow("\u26A0")} ${pc67.bold("Toll-free Registration Required")}
|
|
65088
65095
|
`
|
|
65089
65096
|
);
|
|
65090
65097
|
console.log(
|
|
65091
|
-
|
|
65098
|
+
pc67.dim("Toll-free numbers require carrier registration before")
|
|
65092
65099
|
);
|
|
65093
65100
|
console.log(
|
|
65094
|
-
|
|
65101
|
+
pc67.dim("they can send messages at scale. After deployment:\n")
|
|
65095
65102
|
);
|
|
65096
65103
|
console.log(
|
|
65097
|
-
` 1. Run ${
|
|
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
|
-
|
|
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
|
-
${
|
|
65123
|
+
${pc67.yellow("\u26A0")} ${pc67.bold("10DLC Campaign Registration Required")}
|
|
65117
65124
|
`
|
|
65118
65125
|
);
|
|
65119
|
-
console.log(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
${
|
|
65577
|
+
${pc67.bold("Cost Impact:")}`);
|
|
65571
65578
|
console.log(
|
|
65572
|
-
` Current: ${
|
|
65579
|
+
` Current: ${pc67.cyan(`${formatCost3(currentCostData.total.monthly)}/mo`)}`
|
|
65573
65580
|
);
|
|
65574
65581
|
console.log(
|
|
65575
|
-
` New: ${
|
|
65582
|
+
` New: ${pc67.cyan(`${formatCost3(newCostData.total.monthly)}/mo`)}`
|
|
65576
65583
|
);
|
|
65577
65584
|
if (costDiff > 0) {
|
|
65578
|
-
console.log(` Change: ${
|
|
65585
|
+
console.log(` Change: ${pc67.yellow(`+${formatCost3(costDiff)}/mo`)}`);
|
|
65579
65586
|
} else if (costDiff < 0) {
|
|
65580
65587
|
console.log(
|
|
65581
|
-
` Change: ${
|
|
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
|
-
|
|
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(
|
|
65773
|
+
clack63.log.success(pc67.green(pc67.bold("SMS infrastructure upgraded!")));
|
|
65767
65774
|
console.log("\n");
|
|
65768
65775
|
clack63.note(
|
|
65769
65776
|
[
|
|
65770
|
-
`${
|
|
65771
|
-
`${
|
|
65772
|
-
`${
|
|
65773
|
-
`${
|
|
65774
|
-
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
|
-
|
|
65777
|
-
|
|
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
|
-
${
|
|
65789
|
+
${pc67.green("\u2713")} ${pc67.bold("Upgrade complete!")}
|
|
65783
65790
|
`);
|
|
65784
65791
|
if (upgradeAction === "phone-number") {
|
|
65785
65792
|
console.log(
|
|
65786
|
-
`Upgraded to ${
|
|
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(`${
|
|
65797
|
+
console.log(`${pc67.bold("Next Steps:")}`);
|
|
65791
65798
|
console.log(
|
|
65792
|
-
` 1. Run ${
|
|
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
|
-
|
|
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(`${
|
|
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 ${
|
|
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 (${
|
|
65822
|
+
`Updated configuration (${pc67.green(`${formatCost3(newCostData.total.monthly)}/mo`)})
|
|
65816
65823
|
`
|
|
65817
65824
|
);
|
|
65818
65825
|
}
|
|
65819
|
-
console.log(
|
|
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(
|
|
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
|
|
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(
|
|
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 ${
|
|
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 ${
|
|
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(
|
|
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" ?
|
|
65907
|
-
console.log(` ${
|
|
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(
|
|
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: ${
|
|
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 ${
|
|
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(
|
|
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
|
-
|
|
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 ${
|
|
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(
|
|
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 ${
|
|
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 ${
|
|
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
|
-
${
|
|
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(
|
|
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 ${
|
|
66168
|
+
`Number ${pc68.cyan(phoneNumber)} is already verified and ready to use!`
|
|
66162
66169
|
);
|
|
66163
|
-
clack64.outro(
|
|
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 ${
|
|
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
|
-
${
|
|
66200
|
+
${pc68.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --code YOUR_CODE`)}`
|
|
66194
66201
|
);
|
|
66195
|
-
clack64.outro(
|
|
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 ${
|
|
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
|
-
` ${
|
|
66232
|
+
` ${pc68.cyan(`wraps sms verify-number --phone-number ${phoneNumber} --code YOUR_CODE`)}`,
|
|
66226
66233
|
"",
|
|
66227
|
-
|
|
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(
|
|
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 ${
|
|
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
|
|
66275
|
+
import pc69 from "picocolors";
|
|
66269
66276
|
async function support() {
|
|
66270
66277
|
trackCommand("support", { success: true });
|
|
66271
|
-
clack65.intro(
|
|
66278
|
+
clack65.intro(pc69.bold("Get Help with Wraps"));
|
|
66272
66279
|
console.log();
|
|
66273
|
-
console.log(` ${
|
|
66280
|
+
console.log(` ${pc69.bold("Email:")} ${pc69.cyan("hey@wraps.dev")}`);
|
|
66274
66281
|
console.log(
|
|
66275
|
-
` ${
|
|
66282
|
+
` ${pc69.bold("GitHub:")} ${pc69.cyan("https://github.com/wraps-dev/wraps/issues")}`
|
|
66276
66283
|
);
|
|
66277
|
-
console.log(` ${
|
|
66284
|
+
console.log(` ${pc69.bold("Docs:")} ${pc69.cyan("https://wraps.dev/docs")}`);
|
|
66278
66285
|
console.log(
|
|
66279
|
-
` ${
|
|
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(
|
|
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
|
|
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: ${
|
|
66299
|
-
console.log(` Config: ${
|
|
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(
|
|
66303
|
-
console.log(` Config: ${
|
|
66309
|
+
clack66.log.success(pc70.green("Telemetry enabled"));
|
|
66310
|
+
console.log(` Config: ${pc70.dim(client2.getConfigPath())}`);
|
|
66304
66311
|
console.log(`
|
|
66305
|
-
${
|
|
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(
|
|
66313
|
-
console.log(` Config: ${
|
|
66319
|
+
clack66.log.success(pc70.green("Telemetry disabled"));
|
|
66320
|
+
console.log(` Config: ${pc70.dim(client2.getConfigPath())}`);
|
|
66314
66321
|
console.log(
|
|
66315
66322
|
`
|
|
66316
|
-
${
|
|
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(
|
|
66329
|
+
clack66.intro(pc70.bold("Telemetry Status"));
|
|
66323
66330
|
const override = client2.getEnvOverride();
|
|
66324
|
-
const status2 = client2.isEnabled() ?
|
|
66331
|
+
const status2 = client2.isEnabled() ? pc70.green("Enabled") : pc70.red("Disabled");
|
|
66325
66332
|
console.log();
|
|
66326
|
-
console.log(` ${
|
|
66333
|
+
console.log(` ${pc70.bold("Status:")} ${status2}`);
|
|
66327
66334
|
if (!client2.isEnabled() && override) {
|
|
66328
|
-
console.log(` ${
|
|
66335
|
+
console.log(` ${pc70.bold("Reason:")} ${pc70.yellow(override)}`);
|
|
66329
66336
|
}
|
|
66330
|
-
console.log(` ${
|
|
66337
|
+
console.log(` ${pc70.bold("Config file:")} ${pc70.dim(client2.getConfigPath())}`);
|
|
66331
66338
|
if (client2.isEnabled()) {
|
|
66332
66339
|
console.log();
|
|
66333
|
-
console.log(
|
|
66334
|
-
console.log(` ${
|
|
66340
|
+
console.log(pc70.bold(" How to opt-out:"));
|
|
66341
|
+
console.log(` ${pc70.cyan("wraps telemetry disable")}`);
|
|
66335
66342
|
console.log(
|
|
66336
|
-
` ${
|
|
66343
|
+
` ${pc70.dim("Or set:")} ${pc70.cyan("WRAPS_TELEMETRY_DISABLED=1")}`
|
|
66337
66344
|
);
|
|
66338
|
-
console.log(` ${
|
|
66345
|
+
console.log(` ${pc70.dim("Or set:")} ${pc70.cyan("DO_NOT_TRACK=1")}`);
|
|
66339
66346
|
} else {
|
|
66340
66347
|
console.log();
|
|
66341
|
-
console.log(
|
|
66342
|
-
console.log(` ${
|
|
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(
|
|
66352
|
+
console.log(pc70.bold(" Debug mode:"));
|
|
66346
66353
|
console.log(
|
|
66347
|
-
` ${
|
|
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
|
-
` ${
|
|
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
|
|
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(
|
|
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 ${
|
|
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 ${
|
|
66504
|
+
clack67.log.info(`Created ${pc71.cyan("wraps/wraps.config.ts")}`);
|
|
66498
66505
|
}
|
|
66499
66506
|
clack67.log.success(
|
|
66500
|
-
`${
|
|
66501
|
-
${
|
|
66502
|
-
${
|
|
66503
|
-
${
|
|
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(
|
|
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(
|
|
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
|
-
`${
|
|
66524
|
+
`${pc71.bold("Next steps:")}
|
|
66518
66525
|
|
|
66519
|
-
1. Edit ${
|
|
66520
|
-
2. Edit your workflows in ${
|
|
66521
|
-
3. Validate: ${
|
|
66522
|
-
4. 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
|
-
${
|
|
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(
|
|
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(` ${
|
|
66742
|
+
console.log(` ${pc73.cyan("email")} Email infrastructure (AWS SES)`);
|
|
66736
66743
|
console.log(
|
|
66737
|
-
` ${
|
|
66744
|
+
` ${pc73.cyan("sms")} SMS infrastructure (AWS End User Messaging)`
|
|
66738
66745
|
);
|
|
66739
66746
|
console.log(
|
|
66740
|
-
` ${
|
|
66747
|
+
` ${pc73.cyan("cdn")} CDN infrastructure (AWS S3 + CloudFront)`
|
|
66741
66748
|
);
|
|
66742
66749
|
console.log(
|
|
66743
|
-
` ${
|
|
66750
|
+
` ${pc73.cyan("selfhost")} Self-hosted Wraps control plane (enterprise)`
|
|
66744
66751
|
);
|
|
66745
66752
|
console.log(
|
|
66746
|
-
` ${
|
|
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
|
-
` ${
|
|
66758
|
+
` ${pc73.cyan("email init")} Deploy new email infrastructure`
|
|
66752
66759
|
);
|
|
66753
66760
|
console.log(
|
|
66754
|
-
` ${
|
|
66761
|
+
` ${pc73.cyan("email check")} Check email deliverability for a domain`
|
|
66755
66762
|
);
|
|
66756
66763
|
console.log(
|
|
66757
|
-
` ${
|
|
66764
|
+
` ${pc73.cyan("email connect")} Connect to existing AWS SES`
|
|
66758
66765
|
);
|
|
66759
66766
|
console.log(
|
|
66760
|
-
` ${
|
|
66767
|
+
` ${pc73.cyan("email status")} Show email infrastructure details`
|
|
66761
66768
|
);
|
|
66762
66769
|
console.log(
|
|
66763
|
-
` ${
|
|
66770
|
+
` ${pc73.cyan("email plan")} Show SES pricing plan and cheaper options`
|
|
66764
66771
|
);
|
|
66765
|
-
console.log(` ${
|
|
66766
|
-
console.log(` ${
|
|
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
|
-
` ${
|
|
66775
|
+
` ${pc73.cyan("email sync")} Apply CLI updates to infrastructure`
|
|
66769
66776
|
);
|
|
66770
|
-
console.log(` ${
|
|
66777
|
+
console.log(` ${pc73.cyan("email upgrade")} Add features`);
|
|
66771
66778
|
console.log(
|
|
66772
|
-
` ${
|
|
66779
|
+
` ${pc73.cyan("email restore")} Restore original configuration`
|
|
66773
66780
|
);
|
|
66774
66781
|
console.log(
|
|
66775
|
-
` ${
|
|
66782
|
+
` ${pc73.cyan("email destroy")} Remove email infrastructure`
|
|
66776
66783
|
);
|
|
66777
66784
|
console.log(
|
|
66778
|
-
` ${
|
|
66785
|
+
` ${pc73.cyan("email doctor")} Diagnose and clean up email infrastructure`
|
|
66779
66786
|
);
|
|
66780
|
-
console.log(` ${
|
|
66781
|
-
console.log(` ${
|
|
66782
|
-
console.log(` ${
|
|
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
|
-
` ${
|
|
66791
|
+
` ${pc73.cyan("email inbound init")} Enable inbound email receiving`
|
|
66785
66792
|
);
|
|
66786
|
-
console.log(` ${
|
|
66793
|
+
console.log(` ${pc73.cyan("email inbound status")} Show inbound email status`);
|
|
66787
66794
|
console.log(
|
|
66788
|
-
` ${
|
|
66795
|
+
` ${pc73.cyan("email inbound verify")} Verify inbound DNS records`
|
|
66789
66796
|
);
|
|
66790
66797
|
console.log(
|
|
66791
|
-
` ${
|
|
66798
|
+
` ${pc73.cyan("email inbound test")} Send test email and verify receipt`
|
|
66792
66799
|
);
|
|
66793
66800
|
console.log(
|
|
66794
|
-
` ${
|
|
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
|
-
` ${
|
|
66806
|
+
` ${pc73.cyan("email agent create")} Create a leashed agent mailbox`
|
|
66800
66807
|
);
|
|
66801
|
-
console.log(` ${
|
|
66808
|
+
console.log(` ${pc73.cyan("email agent list")} List agents`);
|
|
66802
66809
|
console.log(
|
|
66803
|
-
` ${
|
|
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
|
-
` ${
|
|
66815
|
+
` ${pc73.cyan("email templates init")} Initialize templates-as-code`
|
|
66809
66816
|
);
|
|
66810
66817
|
console.log(
|
|
66811
|
-
` ${
|
|
66818
|
+
` ${pc73.cyan("email templates push")} Push templates to SES + dashboard`
|
|
66812
66819
|
);
|
|
66813
66820
|
console.log(
|
|
66814
|
-
` ${
|
|
66821
|
+
` ${pc73.cyan("email templates preview")} Preview templates in browser`
|
|
66815
66822
|
);
|
|
66816
66823
|
console.log(
|
|
66817
|
-
` ${
|
|
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
|
-
` ${
|
|
66829
|
+
` ${pc73.cyan("email workflows init")} Initialize workflows-as-code`
|
|
66823
66830
|
);
|
|
66824
66831
|
console.log(
|
|
66825
|
-
` ${
|
|
66832
|
+
` ${pc73.cyan("email workflows validate")} Validate workflow files`
|
|
66826
66833
|
);
|
|
66827
66834
|
console.log(
|
|
66828
|
-
` ${
|
|
66835
|
+
` ${pc73.cyan("email workflows push")} Push workflows to dashboard
|
|
66829
66836
|
`
|
|
66830
66837
|
);
|
|
66831
66838
|
console.log("SMS Commands:");
|
|
66832
|
-
console.log(` ${
|
|
66839
|
+
console.log(` ${pc73.cyan("sms init")} Deploy SMS infrastructure`);
|
|
66833
66840
|
console.log(
|
|
66834
|
-
` ${
|
|
66841
|
+
` ${pc73.cyan("sms status")} Show SMS infrastructure details`
|
|
66835
66842
|
);
|
|
66836
|
-
console.log(` ${
|
|
66843
|
+
console.log(` ${pc73.cyan("sms test")} Send a test SMS message`);
|
|
66837
66844
|
console.log(
|
|
66838
|
-
` ${
|
|
66845
|
+
` ${pc73.cyan("sms verify-number")} Verify a destination phone number`
|
|
66839
66846
|
);
|
|
66840
66847
|
console.log(
|
|
66841
|
-
` ${
|
|
66848
|
+
` ${pc73.cyan("sms sync")} Sync infrastructure (update Lambda, etc.)`
|
|
66842
66849
|
);
|
|
66843
|
-
console.log(` ${
|
|
66844
|
-
console.log(` ${
|
|
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
|
-
` ${
|
|
66853
|
+
` ${pc73.cyan("sms destroy")} Remove SMS infrastructure
|
|
66847
66854
|
`
|
|
66848
66855
|
);
|
|
66849
66856
|
console.log("CDN Commands:");
|
|
66850
66857
|
console.log(
|
|
66851
|
-
` ${
|
|
66858
|
+
` ${pc73.cyan("cdn init")} Deploy CDN infrastructure (S3 + CloudFront)`
|
|
66852
66859
|
);
|
|
66853
66860
|
console.log(
|
|
66854
|
-
` ${
|
|
66861
|
+
` ${pc73.cyan("cdn status")} Show CDN infrastructure details`
|
|
66855
66862
|
);
|
|
66856
66863
|
console.log(
|
|
66857
|
-
` ${
|
|
66864
|
+
` ${pc73.cyan("cdn verify")} Check DNS and certificate status`
|
|
66858
66865
|
);
|
|
66859
66866
|
console.log(
|
|
66860
|
-
` ${
|
|
66867
|
+
` ${pc73.cyan("cdn upgrade")} Add custom domain after cert validation`
|
|
66861
66868
|
);
|
|
66862
66869
|
console.log(
|
|
66863
|
-
` ${
|
|
66870
|
+
` ${pc73.cyan("cdn sync")} Sync infrastructure with current config`
|
|
66864
66871
|
);
|
|
66865
66872
|
console.log(
|
|
66866
|
-
` ${
|
|
66873
|
+
` ${pc73.cyan("cdn destroy")} Remove CDN infrastructure
|
|
66867
66874
|
`
|
|
66868
66875
|
);
|
|
66869
66876
|
console.log("Self-Hosted Commands:");
|
|
66870
66877
|
console.log(
|
|
66871
|
-
` ${
|
|
66878
|
+
` ${pc73.cyan("selfhost deploy")} Deploy Wraps API to your AWS account`
|
|
66872
66879
|
);
|
|
66873
66880
|
console.log(
|
|
66874
|
-
` ${
|
|
66881
|
+
` ${pc73.cyan("selfhost login")} Sign in to your self-hosted Wraps instance`
|
|
66875
66882
|
);
|
|
66876
66883
|
console.log(
|
|
66877
|
-
` ${
|
|
66884
|
+
` ${pc73.cyan("selfhost logout")} Sign out of your self-hosted Wraps instance`
|
|
66878
66885
|
);
|
|
66879
66886
|
console.log(
|
|
66880
|
-
` ${
|
|
66887
|
+
` ${pc73.cyan("selfhost upgrade")} Rebuild and redeploy the self-hosted API`
|
|
66881
66888
|
);
|
|
66882
66889
|
console.log(
|
|
66883
|
-
` ${
|
|
66890
|
+
` ${pc73.cyan("selfhost status")} Show self-hosted deployment details`
|
|
66884
66891
|
);
|
|
66885
66892
|
console.log(
|
|
66886
|
-
` ${
|
|
66893
|
+
` ${pc73.cyan("selfhost logs")} Stream logs from your self-hosted API, dashboard, and workers`
|
|
66887
66894
|
);
|
|
66888
66895
|
console.log(
|
|
66889
|
-
` ${
|
|
66896
|
+
` ${pc73.cyan("selfhost env")} Print env vars for hosting the dashboard yourself`
|
|
66890
66897
|
);
|
|
66891
66898
|
console.log(
|
|
66892
|
-
` ${
|
|
66899
|
+
` ${pc73.cyan("selfhost connect")} Connect your AWS account to your self-hosted instance`
|
|
66893
66900
|
);
|
|
66894
66901
|
console.log(
|
|
66895
|
-
` ${
|
|
66902
|
+
` ${pc73.cyan("selfhost update-role")} Refresh your self-hosted console role's permissions`
|
|
66896
66903
|
);
|
|
66897
66904
|
console.log(
|
|
66898
|
-
` ${
|
|
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
|
-
` ${
|
|
66910
|
+
` ${pc73.cyan("console")} Start local web console
|
|
66904
66911
|
`
|
|
66905
66912
|
);
|
|
66906
66913
|
console.log("Platform:");
|
|
66907
66914
|
console.log(
|
|
66908
|
-
` ${
|
|
66915
|
+
` ${pc73.cyan("platform")} Show platform info and pricing`
|
|
66909
66916
|
);
|
|
66910
66917
|
console.log(
|
|
66911
|
-
` ${
|
|
66918
|
+
` ${pc73.cyan("platform connect")} Connect to Wraps Platform (events + IAM)`
|
|
66912
66919
|
);
|
|
66913
66920
|
console.log(
|
|
66914
|
-
` ${
|
|
66921
|
+
` ${pc73.cyan("platform update-role")} Update platform IAM permissions
|
|
66915
66922
|
`
|
|
66916
66923
|
);
|
|
66917
66924
|
console.log("Auth:");
|
|
66918
66925
|
console.log(
|
|
66919
|
-
` ${
|
|
66926
|
+
` ${pc73.cyan("auth login")} Sign in to wraps.dev (device flow)`
|
|
66920
66927
|
);
|
|
66921
|
-
console.log(` ${
|
|
66928
|
+
console.log(` ${pc73.cyan("auth status")} Show current auth state`);
|
|
66922
66929
|
console.log(
|
|
66923
|
-
` ${
|
|
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
|
-
` ${
|
|
66935
|
+
` ${pc73.cyan("aws setup")} Interactive AWS setup wizard`
|
|
66929
66936
|
);
|
|
66930
66937
|
console.log(
|
|
66931
|
-
` ${
|
|
66938
|
+
` ${pc73.cyan("aws doctor")} Diagnose AWS configuration issues
|
|
66932
66939
|
`
|
|
66933
66940
|
);
|
|
66934
66941
|
console.log("Global Commands:");
|
|
66935
|
-
console.log(` ${
|
|
66936
|
-
console.log(` ${
|
|
66937
|
-
console.log(` ${
|
|
66938
|
-
console.log(` ${
|
|
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
|
-
` ${
|
|
66947
|
+
` ${pc73.cyan("telemetry")} Manage anonymous telemetry settings`
|
|
66941
66948
|
);
|
|
66942
|
-
console.log(` ${
|
|
66943
|
-
console.log(` ${
|
|
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
|
-
` ${
|
|
66952
|
+
` ${pc73.cyan("support")} Get help and support contact info
|
|
66946
66953
|
`
|
|
66947
66954
|
);
|
|
66948
66955
|
console.log("Options:");
|
|
66949
66956
|
console.log(
|
|
66950
|
-
` ${
|
|
66957
|
+
` ${pc73.dim("-p, --provider")} Hosting provider (vercel, aws, railway, other)`
|
|
66951
66958
|
);
|
|
66952
|
-
console.log(` ${
|
|
66953
|
-
console.log(` ${
|
|
66954
|
-
console.log(` ${
|
|
66955
|
-
console.log(` ${
|
|
66956
|
-
console.log(` ${
|
|
66957
|
-
console.log(` ${
|
|
66958
|
-
console.log(` ${
|
|
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
|
-
` ${
|
|
66967
|
+
` ${pc73.dim("--preview")} Preview changes without deploying`
|
|
66961
66968
|
);
|
|
66962
|
-
console.log(` ${
|
|
66969
|
+
console.log(` ${pc73.dim("-v, --version")} Show version number
|
|
66963
66970
|
`);
|
|
66964
66971
|
console.log(
|
|
66965
|
-
`Run ${
|
|
66972
|
+
`Run ${pc73.cyan("wraps <service> <command> --help")} for more information.`
|
|
66966
66973
|
);
|
|
66967
66974
|
console.log(
|
|
66968
|
-
`AI agents: complete docs at ${
|
|
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(
|
|
66997
|
+
clack68.log.info(pc73.bold("Anonymous Telemetry"));
|
|
66991
66998
|
console.log(
|
|
66992
|
-
` Wraps collects ${
|
|
66999
|
+
` Wraps collects ${pc73.cyan("anonymous usage data")} to improve the CLI.`
|
|
66993
67000
|
);
|
|
66994
67001
|
console.log(
|
|
66995
|
-
` We ${
|
|
67002
|
+
` We ${pc73.bold("never")} collect: domains, AWS credentials, email content, or PII.`
|
|
66996
67003
|
);
|
|
66997
67004
|
console.log(
|
|
66998
|
-
` We ${
|
|
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: ${
|
|
67002
|
-
console.log(` Or set: ${
|
|
67003
|
-
console.log(` Learn more: ${
|
|
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(
|
|
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(
|
|
67153
|
+
clack68.log.info(pc73.bold("Anonymous Telemetry"));
|
|
67147
67154
|
console.log(
|
|
67148
|
-
` Wraps collects ${
|
|
67155
|
+
` Wraps collects ${pc73.cyan("anonymous usage data")} to improve the CLI.`
|
|
67149
67156
|
);
|
|
67150
67157
|
console.log(
|
|
67151
|
-
` We ${
|
|
67158
|
+
` We ${pc73.bold("never")} collect: domains, AWS credentials, email content, or PII.`
|
|
67152
67159
|
);
|
|
67153
67160
|
console.log(
|
|
67154
|
-
` We ${
|
|
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: ${
|
|
67158
|
-
console.log(` Or set: ${
|
|
67159
|
-
console.log(` Learn more: ${
|
|
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: ${
|
|
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: ${
|
|
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: ${
|
|
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: ${
|
|
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: ${
|
|
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: ${
|
|
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: ${
|
|
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: ${
|
|
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: ${
|
|
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: ${
|
|
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: ${
|
|
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 ${
|
|
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 ${
|
|
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 ${
|
|
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 ${
|
|
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 ${
|
|
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: ${
|
|
67992
|
+
Available commands: ${pc73.cyan("init")}
|
|
67986
67993
|
`);
|
|
67987
|
-
console.log(`Run ${
|
|
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: ${
|
|
68039
|
+
Available commands: ${pc73.cyan("connect")}, ${pc73.cyan("update-role")}
|
|
68033
68040
|
`
|
|
68034
68041
|
);
|
|
68035
68042
|
console.log(
|
|
68036
|
-
`Run ${
|
|
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: ${
|
|
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: ${
|
|
68092
|
+
Available commands: ${pc73.cyan("setup")}, ${pc73.cyan("doctor")}
|
|
68086
68093
|
`
|
|
68087
68094
|
);
|
|
68088
|
-
console.log(`Run ${
|
|
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: ${
|
|
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 ${
|
|
68206
|
+
Run ${pc73.cyan("wraps --help")} for available commands.
|
|
68200
68207
|
`
|
|
68201
68208
|
);
|
|
68202
68209
|
throw new Error(`Unknown command: ${primaryCommand}`);
|