@wraps.dev/cli 3.8.0 → 3.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -37233,7 +37233,6 @@ Run ${pc17.cyan("wraps email init")} to deploy infrastructure first.
37233
37233
  const smsConfig = metadata.services.sms?.config;
37234
37234
  const policy = buildConsolePolicyDocument(emailConfig, smsConfig);
37235
37235
  const sendingEnabled = !emailConfig || emailConfig.sendingEnabled !== false;
37236
- const eventTracking = emailConfig?.eventTracking;
37237
37236
  const emailArchiving = emailConfig?.emailArchiving;
37238
37237
  const smsEnabled = !!smsConfig;
37239
37238
  const smsSendingEnabled = smsConfig && smsConfig.sendingEnabled !== false;
@@ -37347,9 +37346,6 @@ ${pc17.bold("Permissions:")}`);
37347
37346
  console.log(
37348
37347
  ` ${pc17.green("\u2713")} DynamoDB read access (including DescribeTable)`
37349
37348
  );
37350
- if (eventTracking?.enabled) {
37351
- console.log(` ${pc17.green("\u2713")} EventBridge and SQS access`);
37352
- }
37353
37349
  if (emailArchiving?.enabled) {
37354
37350
  console.log(` ${pc17.green("\u2713")} Mail Manager Archive access`);
37355
37351
  }
@@ -37392,6 +37388,11 @@ function buildConsolePolicyDocument(emailConfig, smsConfig) {
37392
37388
  // SES v2 API for listing/getting email identities (domains)
37393
37389
  "ses:ListEmailIdentities",
37394
37390
  "ses:GetEmailIdentity",
37391
+ // Write, deliberately. verifyOwnEmailIdentity in
37392
+ // apps/web/src/actions/ses-onboarding.ts creates the operator's own
37393
+ // address as an SES identity so a sandboxed account can complete a
37394
+ // real first send. This is the ONLY identity write the role grants.
37395
+ "ses:CreateEmailIdentity",
37395
37396
  // SES v2 API for configuration set scanning (needed by dashboard).
37396
37397
  // List is what makes Get reachable — Get takes a name only List can find.
37397
37398
  "ses:ListConfigurationSets",
@@ -37406,7 +37407,7 @@ function buildConsolePolicyDocument(emailConfig, smsConfig) {
37406
37407
  });
37407
37408
  statements.push({
37408
37409
  Effect: "Allow",
37409
- Action: ["s3:HeadBucket"],
37410
+ Action: ["s3:ListBucket"],
37410
37411
  Resource: "arn:aws:s3:::wraps-inbound-*"
37411
37412
  });
37412
37413
  statements.push({
@@ -37442,6 +37443,18 @@ function buildConsolePolicyDocument(emailConfig, smsConfig) {
37442
37443
  Resource: "*"
37443
37444
  });
37444
37445
  }
37446
+ const suppressionList = emailConfig?.suppressionList;
37447
+ if (suppressionList?.enabled !== false) {
37448
+ statements.push({
37449
+ Effect: "Allow",
37450
+ Action: [
37451
+ "ses:ListSuppressedDestinations",
37452
+ "ses:GetSuppressedDestination",
37453
+ "ses:DeleteSuppressedDestination"
37454
+ ],
37455
+ Resource: "*"
37456
+ });
37457
+ }
37445
37458
  statements.push({
37446
37459
  Effect: "Allow",
37447
37460
  Action: [
@@ -37456,26 +37469,6 @@ function buildConsolePolicyDocument(emailConfig, smsConfig) {
37456
37469
  "arn:aws:dynamodb:*:*:table/wraps-email-*/index/*"
37457
37470
  ]
37458
37471
  });
37459
- const eventTracking = emailConfig?.eventTracking;
37460
- if (eventTracking?.enabled) {
37461
- statements.push({
37462
- Effect: "Allow",
37463
- Action: ["events:PutEvents", "events:DescribeEventBus"],
37464
- Resource: "arn:aws:events:*:*:event-bus/wraps-email-*"
37465
- });
37466
- }
37467
- if (eventTracking?.enabled) {
37468
- statements.push({
37469
- Effect: "Allow",
37470
- Action: [
37471
- "sqs:SendMessage",
37472
- "sqs:ReceiveMessage",
37473
- "sqs:DeleteMessage",
37474
- "sqs:GetQueueAttributes"
37475
- ],
37476
- Resource: "arn:aws:sqs:*:*:wraps-email-*"
37477
- });
37478
- }
37479
37472
  const emailArchiving = emailConfig?.emailArchiving;
37480
37473
  if (emailArchiving?.enabled) {
37481
37474
  statements.push({
@@ -37497,12 +37490,7 @@ function buildConsolePolicyDocument(emailConfig, smsConfig) {
37497
37490
  if (inbound?.enabled) {
37498
37491
  statements.push({
37499
37492
  Effect: "Allow",
37500
- Action: [
37501
- "s3:HeadBucket",
37502
- "s3:ListBucket",
37503
- "s3:GetObject",
37504
- "s3:GetObjectTagging"
37505
- ],
37493
+ Action: ["s3:ListBucket", "s3:GetObject", "s3:GetObjectTagging"],
37506
37494
  Resource: [
37507
37495
  "arn:aws:s3:::wraps-inbound-*",
37508
37496
  "arn:aws:s3:::wraps-inbound-*/*"