@wraps.dev/cli 2.12.4 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,11 +1,10 @@
1
1
  # Wraps CLI
2
2
 
3
- > Deploy email infrastructure (SES, DynamoDB, Lambda, EventBridge) to your AWS account.
3
+ > Deploy email, SMS, and CDN infrastructure to your AWS account.
4
4
 
5
5
  ## What It Creates
6
6
 
7
- Running `wraps email init` deploys these AWS resources to your account:
8
-
7
+ ### Email (`wraps email init`)
9
8
  - **IAM Role** with OIDC trust policy (for Vercel) or instance profile (for AWS-native)
10
9
  - **SES Configuration Set** with event tracking rules
11
10
  - **EventBridge Rule** to capture SES events
@@ -13,7 +12,20 @@ Running `wraps email init` deploys these AWS resources to your account:
13
12
  - **Lambda Function** to process events and write to DynamoDB
14
13
  - **DynamoDB Table** for email history storage
15
14
 
16
- All resources are tagged with `ManagedBy: wraps-cli` and prefixed with `wraps-email-`.
15
+ ### SMS (`wraps sms init`)
16
+ - **IAM Role** with scoped permissions for End User Messaging
17
+ - **Phone Pool** with toll-free number via AWS End User Messaging
18
+ - **Lambda Function** to process delivery receipts
19
+ - **DynamoDB Table** for message history storage
20
+ - **EventBridge Rule** to capture SMS events
21
+
22
+ ### CDN (`wraps cdn init`)
23
+ - **IAM Role** with scoped permissions for S3 and CloudFront
24
+ - **S3 Bucket** with private access and origin access control
25
+ - **CloudFront Distribution** with global edge caching
26
+ - **ACM Certificate** with automatic DNS validation
27
+
28
+ All resources are tagged with `ManagedBy: wraps-cli` and prefixed with `wraps-{service}-`.
17
29
 
18
30
  ## Features
19
31
 
@@ -49,32 +61,39 @@ npm install -g @wraps.dev/cli
49
61
  # or
50
62
  pnpm add -g @wraps.dev/cli
51
63
  # or use npx (no installation required)
52
- npx @wraps.dev/cli init
64
+ npx @wraps.dev/cli email init
53
65
  ```
54
66
 
55
67
  ## Quick Start
56
68
 
57
- ### 1. Deploy New Email Infrastructure
69
+ ### 1. Deploy Infrastructure
58
70
 
59
71
  ```bash
72
+ # Email
60
73
  wraps email init
74
+
75
+ # SMS
76
+ wraps sms init
77
+
78
+ # CDN
79
+ wraps cdn init
61
80
  ```
62
81
 
63
- This will:
64
- - Validate your AWS credentials
65
- - Prompt for configuration preset (Starter, Production, Enterprise, or Custom)
66
- - Show estimated monthly costs based on your volume
67
- - Deploy infrastructure (IAM roles, SES, DynamoDB, Lambda, EventBridge, SQS)
68
- - Display next steps with role ARN and DNS records
82
+ Each command will:
83
+ - Validate your AWS credentials
84
+ - Prompt for configuration options
85
+ - Show estimated monthly costs
86
+ - Deploy infrastructure via Pulumi
87
+ - Display next steps with role ARN and any DNS records
69
88
 
70
89
  ### 2. Install the SDK
71
90
 
72
- After deploying, install the TypeScript SDK to send emails:
73
-
74
91
  ```bash
92
+ # Email SDK
75
93
  npm install @wraps.dev/email
76
- # or
77
- pnpm add @wraps.dev/email
94
+
95
+ # SMS SDK (coming soon to npm)
96
+ npm install @wraps.dev/sms
78
97
  ```
79
98
 
80
99
  **Send your first email:**
@@ -92,6 +111,19 @@ await wraps.emails.send({
92
111
  });
93
112
  ```
94
113
 
114
+ **Send your first SMS:**
115
+
116
+ ```typescript
117
+ import { Wraps } from '@wraps.dev/sms';
118
+
119
+ const wraps = new Wraps();
120
+
121
+ await wraps.sms.send({
122
+ to: '+14155551234',
123
+ message: 'Your code is 123456',
124
+ });
125
+ ```
126
+
95
127
  Learn more: [SDK Documentation](https://github.com/wraps-team/wraps-js) | [npm](https://www.npmjs.com/package/@wraps.dev/email)
96
128
 
97
129
  ### 3. Check Status
@@ -100,12 +132,7 @@ Learn more: [SDK Documentation](https://github.com/wraps-team/wraps-js) | [npm](
100
132
  wraps status
101
133
  ```
102
134
 
103
- Shows:
104
- - Active features and configuration across all services
105
- - AWS region and account
106
- - Verified domains
107
- - Deployed resources
108
- - Links to dashboard
135
+ Shows active features and configuration across all services, AWS region and account, verified domains, deployed resources, and links to dashboard.
109
136
 
110
137
  ## Global Options
111
138
 
@@ -185,257 +212,172 @@ wraps email init --preview
185
212
  wraps email init --provider vercel --region us-east-1 --domain myapp.com --preset production
186
213
  ```
187
214
 
188
- #### `wraps email connect`
189
-
190
- Connect to existing AWS SES infrastructure and add Wraps features.
191
-
192
- **Example:**
193
-
194
- ```bash
195
- wraps email connect
196
- ```
197
-
198
- #### `wraps email domains`
215
+ #### Other Email Commands
199
216
 
200
- Manage SES domains (add, list, verify, get DKIM tokens, remove).
217
+ | Command | Description |
218
+ |---------|-------------|
219
+ | `wraps email connect` | Connect to existing AWS SES infrastructure |
220
+ | `wraps email test` | Send a test email to verify your setup |
221
+ | `wraps email check` | Check email deliverability for a domain |
222
+ | `wraps email config` | Apply CLI config updates to infrastructure (alias: `sync`) |
223
+ | `wraps email status` | Show email infrastructure details |
224
+ | `wraps email upgrade` | Add features incrementally (presets, tracking domain, SMTP, dedicated IP, etc.) |
225
+ | `wraps email verify` | Verify domain DNS records (DKIM, SPF, DMARC) |
226
+ | `wraps email restore` | Restore infrastructure from saved metadata |
227
+ | `wraps email destroy` | Remove all email infrastructure |
201
228
 
202
- ##### `wraps email domains add`
229
+ #### Domain Commands
203
230
 
204
- Add a new domain to SES with DKIM signing.
231
+ | Command | Description |
232
+ |---------|-------------|
233
+ | `wraps email domains add` | Add a new domain to SES with DKIM signing |
234
+ | `wraps email domains list` | List all SES domains with verification status |
235
+ | `wraps email domains get-dkim` | Get DKIM tokens for a domain |
236
+ | `wraps email domains verify` | Verify domain DNS records |
237
+ | `wraps email domains remove` | Remove a domain from SES |
205
238
 
206
- **Options:**
207
- - `-d, --domain <domain>` - Domain to add
239
+ #### Inbound Email Commands
208
240
 
209
- **Example:**
241
+ | Command | Description |
242
+ |---------|-------------|
243
+ | `wraps email inbound init` | Enable inbound email receiving |
244
+ | `wraps email inbound status` | Show inbound email configuration |
245
+ | `wraps email inbound verify` | Verify inbound DNS records |
246
+ | `wraps email inbound test` | Send a test inbound email |
247
+ | `wraps email inbound destroy` | Remove inbound email infrastructure |
210
248
 
211
- ```bash
212
- wraps email domains add --domain myapp.com
213
- ```
249
+ #### Template Commands
214
250
 
215
- ##### `wraps email domains list`
251
+ | Command | Description |
252
+ |---------|-------------|
253
+ | `wraps email templates init` | Initialize templates-as-code in your project |
254
+ | `wraps email templates push` | Push templates to SES and the dashboard |
255
+ | `wraps email templates preview` | Preview templates in your browser |
216
256
 
217
- List all SES domains with verification status.
257
+ #### Workflow Commands
218
258
 
219
- **Example:**
259
+ | Command | Description |
260
+ |---------|-------------|
261
+ | `wraps email workflows validate` | Validate workflow configuration files |
262
+ | `wraps email workflows push` | Push workflows to the dashboard |
220
263
 
221
- ```bash
222
- wraps email domains list
223
- ```
264
+ ### SMS Commands
224
265
 
225
- ##### `wraps email domains get-dkim`
266
+ #### `wraps sms init`
226
267
 
227
- Get DKIM tokens for a domain (for DNS configuration).
268
+ Deploy SMS infrastructure to your AWS account.
228
269
 
229
270
  **Options:**
230
- - `-d, --domain <domain>` - Domain to get DKIM tokens for
271
+ - `-p, --provider <provider>` - Hosting provider (vercel, aws, railway, other)
272
+ - `-r, --region <region>` - AWS region (default: us-east-1)
273
+ - `-y, --yes` - Skip confirmation prompts
274
+ - `--preview` - Preview changes without deploying
231
275
 
232
- **Example:**
276
+ **Examples:**
233
277
 
234
278
  ```bash
235
- wraps email domains get-dkim --domain myapp.com
236
- ```
237
-
238
- ##### `wraps email domains verify`
239
-
240
- Verify domain DNS records (DKIM, SPF, DMARC, MX).
241
-
242
- **Options:**
243
- - `-d, --domain <domain>` - Domain to verify
279
+ # Interactive mode (recommended)
280
+ wraps sms init
244
281
 
245
- **Example:**
282
+ # Preview what would be deployed
283
+ wraps sms init --preview
246
284
 
247
- ```bash
248
- wraps email domains verify --domain myapp.com
285
+ # With flags
286
+ wraps sms init --provider vercel --region us-east-1
249
287
  ```
250
288
 
251
- ##### `wraps email domains remove`
252
-
253
- Remove a domain from SES.
289
+ #### Other SMS Commands
254
290
 
255
- **Options:**
256
- - `-d, --domain <domain>` - Domain to remove
257
- - `-f, --force` - Skip confirmation prompt
258
-
259
- **Example:**
291
+ | Command | Description |
292
+ |---------|-------------|
293
+ | `wraps sms status` | Show SMS infrastructure details |
294
+ | `wraps sms test` | Send a test SMS message |
295
+ | `wraps sms verify-number` | Verify a destination phone number |
296
+ | `wraps sms sync` | Sync infrastructure with current config |
297
+ | `wraps sms upgrade` | Upgrade SMS features |
298
+ | `wraps sms register` | Register a toll-free number |
299
+ | `wraps sms destroy` | Remove all SMS infrastructure |
260
300
 
261
- ```bash
262
- wraps email domains remove --domain myapp.com
263
- wraps email domains remove --domain myapp.com --force # Skip confirmation
264
- ```
301
+ ### CDN Commands
265
302
 
266
- #### `wraps email upgrade`
303
+ #### `wraps cdn init`
267
304
 
268
- Add features to existing infrastructure incrementally without redeployment.
305
+ Deploy CDN infrastructure (S3 + CloudFront) to your AWS account.
269
306
 
270
307
  **Options:**
271
- - `-r, --region <region>` - AWS region (uses saved connection if not specified)
308
+ - `-p, --provider <provider>` - Hosting provider (vercel, aws, railway, other)
309
+ - `-r, --region <region>` - AWS region (default: us-east-1)
310
+ - `-d, --domain <domain>` - Custom domain for the CDN
272
311
  - `-y, --yes` - Skip confirmation prompts
273
312
  - `--preview` - Preview changes without deploying
274
313
 
275
- **Example:**
276
-
277
- ```bash
278
- wraps email upgrade
279
-
280
- # Preview upgrade changes before applying
281
- wraps email upgrade --preview
282
- ```
283
-
284
- Interactive wizard allows you to add:
285
-
286
- **Configuration Presets:**
287
- - Upgrade to a higher preset (Starter → Production → Enterprise)
288
- - Each preset includes additional features with transparent cost estimates
289
-
290
- **Domain Configuration:**
291
- - **MAIL FROM Domain** - Custom MAIL FROM domain for better DMARC alignment
292
- - Default: `mail.{yourdomain.com}`
293
- - Requires MX and SPF DNS records
294
- - Improves email deliverability and sender reputation
295
-
296
- - **Custom Tracking Domain** - Branded tracking domain for opens/clicks
297
- - Use your own domain instead of AWS default (`r.{region}.awstrack.me`)
298
- - Requires single CNAME DNS record
299
- - Improves email appearance and trust
300
- - **Note:** Currently uses HTTP (not HTTPS). CloudFront + SSL support coming in v1.1.0
301
-
302
- **Event Tracking:**
303
- - Customize tracked SES event types (SEND, DELIVERY, OPEN, CLICK, BOUNCE, COMPLAINT, etc.)
304
- - Select specific events to reduce processing costs
305
- - Full control over what gets stored in DynamoDB
306
-
307
- **Email History:**
308
- - Change retention period (7 days, 30 days, 90 days, 1 year)
309
- - Adjust based on compliance requirements
310
- - Transparent DynamoDB storage cost updates
311
-
312
- **Advanced Features:**
313
- - **Dedicated IP Address** - Reserved IP for high-volume sending
314
- - Improves sender reputation control
315
- - Required for 50,000+ emails/day
316
- - Additional AWS charges apply (~$24.95/month)
317
-
318
- - **SMTP Credentials** - Generate SMTP username/password for legacy systems
319
- - Works with PHP mail(), PHPMailer, WordPress, Nodemailer, and any SMTP client
320
- - Creates IAM user with `ses:SendRawEmail` permission (scoped to your config set)
321
- - Credentials shown once after creation - save them immediately!
322
- - Supports rotation (invalidates old credentials) and disabling
323
- - No additional AWS charges (uses existing SES pricing)
324
-
325
- **SMTP Connection Details:**
326
- ```
327
- Server: email-smtp.{region}.amazonaws.com
328
- Port: 587 (STARTTLS) or 465 (TLS)
329
- Encryption: TLS/STARTTLS required
330
- ```
331
-
332
- **Example - WordPress (WP Mail SMTP plugin):**
333
- ```
334
- SMTP Host: email-smtp.us-east-1.amazonaws.com
335
- SMTP Port: 587
336
- Encryption: TLS
337
- SMTP Username: (from wraps email upgrade)
338
- SMTP Password: (from wraps email upgrade)
339
- ```
340
-
341
- **Example - Nodemailer:**
342
- ```javascript
343
- const transporter = nodemailer.createTransport({
344
- host: 'email-smtp.us-east-1.amazonaws.com',
345
- port: 587,
346
- secure: false, // STARTTLS
347
- auth: {
348
- user: process.env.SMTP_USER,
349
- pass: process.env.SMTP_PASS,
350
- },
351
- });
352
- ```
353
-
354
- #### `wraps email restore`
355
-
356
- Restore infrastructure from saved metadata.
357
-
358
- **Options:**
359
- - `-r, --region <region>` - AWS region to restore from
360
- - `-f, --force` - Force restore without confirmation (destructive)
361
- - `--preview` - Preview what would be removed without making changes
362
-
363
- **Example:**
314
+ **Examples:**
364
315
 
365
316
  ```bash
366
- wraps email restore
367
- wraps email restore --preview # Preview what would be removed
368
- wraps email restore --region us-west-2 --force # Skip confirmation
369
- ```
370
-
371
- ### Global Commands
372
-
373
- These commands work across all services (email, SMS when available):
374
-
375
- #### `wraps status`
376
-
377
- Show infrastructure status across all services.
378
-
379
- **Options:**
380
- - `--account <account>` - Filter by AWS account ID or alias
317
+ # Interactive mode (recommended)
318
+ wraps cdn init
381
319
 
382
- **Example:**
320
+ # Preview what would be deployed
321
+ wraps cdn init --preview
383
322
 
384
- ```bash
385
- wraps status
323
+ # With flags
324
+ wraps cdn init --provider vercel --region us-east-1 --domain cdn.myapp.com
386
325
  ```
387
326
 
388
- Shows:
389
- - Active services and their configurations
390
- - AWS region and account
391
- - Verified domains
392
- - Deployed resources
393
- - Links to dashboard
327
+ #### Other CDN Commands
394
328
 
395
- #### `wraps console`
329
+ | Command | Description |
330
+ |---------|-------------|
331
+ | `wraps cdn status` | Show CDN infrastructure details |
332
+ | `wraps cdn verify` | Check DNS and certificate validation status |
333
+ | `wraps cdn upgrade` | Add a custom domain after certificate validation |
334
+ | `wraps cdn sync` | Sync infrastructure with current config |
335
+ | `wraps cdn destroy` | Remove all CDN infrastructure |
396
336
 
397
- Launch local web console for monitoring all services.
337
+ ### Auth Commands
398
338
 
399
- **Options:**
400
- - `--port <port>` - Port to run console on (default: 5555)
401
- - `--no-open` - Don't automatically open browser
339
+ | Command | Description |
340
+ |---------|-------------|
341
+ | `wraps auth login` | Sign in to wraps.dev (device flow) |
342
+ | `wraps auth status` | Show current authentication state |
343
+ | `wraps auth logout` | Sign out and remove stored token |
402
344
 
403
- **Example:**
404
-
405
- ```bash
406
- wraps console
407
- wraps console --port 3000 --no-open
408
- ```
345
+ ### AWS Commands
409
346
 
410
- Opens at `http://localhost:5555` with real-time tracking for email activity, delivery rates, bounces, complaints, and more.
347
+ | Command | Description |
348
+ |---------|-------------|
349
+ | `wraps aws setup` | Interactive AWS credentials setup wizard |
350
+ | `wraps aws doctor` | Diagnose AWS configuration issues |
411
351
 
412
- **Note:** The `wraps dashboard` command is deprecated. Use `wraps console` instead.
352
+ ### Platform Commands
413
353
 
414
- #### `wraps destroy`
354
+ | Command | Description |
355
+ |---------|-------------|
356
+ | `wraps platform connect` | Connect to Wraps Platform (events + IAM) |
357
+ | `wraps platform update-role` | Update platform IAM permissions |
415
358
 
416
- Remove all deployed infrastructure across all services.
417
-
418
- **Options:**
419
- - `-f, --force` - Force destroy without confirmation (destructive)
420
- - `--preview` - Preview what would be destroyed without making changes
421
-
422
- **Example:**
423
-
424
- ```bash
425
- wraps destroy
426
- wraps destroy --preview # Preview what would be destroyed
427
- wraps destroy --force # Skip confirmation
428
- ```
359
+ ### Global Commands
429
360
 
430
- #### `wraps completion`
361
+ These commands work across all services:
431
362
 
432
- Generate shell completion script.
363
+ | Command | Description |
364
+ |---------|-------------|
365
+ | `wraps status` | Show infrastructure status across all services |
366
+ | `wraps console` | Launch local web console for monitoring |
367
+ | `wraps destroy` | Remove all deployed infrastructure |
368
+ | `wraps push` | Push templates to SES and dashboard (alias for `email templates push`) |
369
+ | `wraps completion` | Generate shell completion script |
370
+ | `wraps permissions` | Show required AWS IAM permissions (`--json` for policy output) |
371
+ | `wraps news` | Show recent Wraps updates |
372
+ | `wraps support` | Get help and support contact info |
433
373
 
434
- **Example:**
374
+ ### Telemetry Commands
435
375
 
436
- ```bash
437
- wraps completion
438
- ```
376
+ | Command | Description |
377
+ |---------|-------------|
378
+ | `wraps telemetry enable` | Enable anonymous usage telemetry |
379
+ | `wraps telemetry disable` | Disable anonymous usage telemetry |
380
+ | `wraps telemetry status` | Show current telemetry setting |
439
381
 
440
382
  ### Legacy Commands (Deprecated)
441
383
 
@@ -448,7 +390,7 @@ wraps verify # → Use 'wraps email domains verify'
448
390
  wraps upgrade # → Use 'wraps email upgrade'
449
391
  ```
450
392
 
451
- **Note:** `status`, `dashboard`, and `destroy` are now global commands that work across all services.
393
+ **Note:** `status`, `console`, and `destroy` are now global commands that work across all services.
452
394
 
453
395
  ## Configuration Presets
454
396
 
@@ -536,7 +478,7 @@ Add these DNS records to your DNS provider:
536
478
  Uses OIDC federation - your Vercel deployment assumes an IAM role directly, no AWS credentials stored:
537
479
 
538
480
  ```bash
539
- wraps init --provider vercel
481
+ wraps email init --provider vercel
540
482
  ```
541
483
 
542
484
  You'll be prompted for:
@@ -548,7 +490,7 @@ You'll be prompted for:
548
490
  For Lambda, ECS, or EC2 deployments - uses IAM roles automatically:
549
491
 
550
492
  ```bash
551
- wraps init --provider aws
493
+ wraps email init --provider aws
552
494
  ```
553
495
 
554
496
  ### Other Providers
@@ -556,7 +498,7 @@ wraps init --provider aws
556
498
  For Railway, Render, or other platforms:
557
499
 
558
500
  ```bash
559
- wraps init --provider other
501
+ wraps email init --provider other
560
502
  ```
561
503
 
562
504
  Note: Will require AWS access keys as environment variables.
@@ -608,26 +550,82 @@ packages/cli/
608
550
  │ │ ├── email/ # Email service commands
609
551
  │ │ │ ├── init.ts # Deploy email infrastructure
610
552
  │ │ │ ├── connect.ts # Connect existing SES
553
+ │ │ │ ├── test.ts # Send test email
554
+ │ │ │ ├── check.ts # Deliverability check
555
+ │ │ │ ├── config.ts # Apply CLI updates (sync)
611
556
  │ │ │ ├── console.ts # Email dashboard
612
557
  │ │ │ ├── status.ts # Show email setup
613
558
  │ │ │ ├── verify.ts # DNS verification
614
559
  │ │ │ ├── upgrade.ts # Add email features
615
560
  │ │ │ ├── restore.ts # Restore from metadata
616
- │ │ │ └── destroy.ts # Remove email infrastructure
617
- │ │ ├── sms/ # SMS service commands (coming soon)
618
- │ │ ├── init.ts # Legacy command (deprecated)
619
- │ │ ├── status.ts # Legacy command (deprecated)
620
- │ │ └── ... # Other legacy commands
561
+ │ │ │ ├── destroy.ts # Remove email infrastructure
562
+ │ │ ├── domains.ts # Domain management (add, list, verify, get-dkim, remove)
563
+ │ │ ├── inbound.ts # Inbound email (init, status, verify, test, destroy)
564
+ │ │ ├── templates/ # Templates-as-code
565
+ │ │ │ │ ├── init.ts # Initialize templates
566
+ │ │ │ │ ├── push.ts # Push templates to SES
567
+ │ │ │ │ └── preview.ts # Preview in browser
568
+ │ │ │ └── workflows/ # Workflow automation
569
+ │ │ │ ├── validate.ts # Validate workflow files
570
+ │ │ │ └── push.ts # Push workflows
571
+ │ │ ├── sms/ # SMS service commands
572
+ │ │ │ ├── init.ts # Deploy SMS infrastructure
573
+ │ │ │ ├── status.ts # Show SMS setup
574
+ │ │ │ ├── test.ts # Send test SMS
575
+ │ │ │ ├── verify-number.ts # Verify phone number
576
+ │ │ │ ├── sync.ts # Sync infrastructure
577
+ │ │ │ ├── upgrade.ts # Upgrade features
578
+ │ │ │ ├── register.ts # Register toll-free number
579
+ │ │ │ └── destroy.ts # Remove SMS infrastructure
580
+ │ │ ├── cdn/ # CDN service commands
581
+ │ │ │ ├── init.ts # Deploy CDN (S3 + CloudFront)
582
+ │ │ │ ├── status.ts # Show CDN setup
583
+ │ │ │ ├── verify.ts # Check DNS & certs
584
+ │ │ │ ├── upgrade.ts # Add custom domain
585
+ │ │ │ ├── sync.ts # Sync infrastructure
586
+ │ │ │ └── destroy.ts # Remove CDN infrastructure
587
+ │ │ ├── auth/ # Authentication
588
+ │ │ │ ├── login.ts # Sign in (device flow)
589
+ │ │ │ ├── status.ts # Show auth state
590
+ │ │ │ └── logout.ts # Sign out
591
+ │ │ ├── aws/ # AWS helpers
592
+ │ │ │ ├── setup.ts # AWS setup wizard
593
+ │ │ │ └── doctor.ts # Diagnose AWS config
594
+ │ │ ├── platform/ # Wraps Platform
595
+ │ │ │ ├── connect.ts # Connect to Platform
596
+ │ │ │ └── update-role.ts # Update IAM permissions
597
+ │ │ ├── shared/ # Cross-service commands
598
+ │ │ │ ├── status.ts # Status across all services
599
+ │ │ │ ├── destroy.ts # Destroy all infrastructure
600
+ │ │ │ └── dashboard.ts # Local web console
601
+ │ │ ├── telemetry.ts # Telemetry management
602
+ │ │ ├── permissions.ts # IAM permissions
603
+ │ │ ├── news.ts # Recent updates
604
+ │ │ └── support.ts # Help & support
621
605
  │ ├── infrastructure/ # Pulumi stacks
622
606
  │ │ ├── email-stack.ts # Email infrastructure stack
607
+ │ │ ├── sms-stack.ts # SMS infrastructure stack
608
+ │ │ ├── cdn-stack.ts # CDN infrastructure stack
623
609
  │ │ ├── vercel-oidc.ts # Vercel OIDC provider setup
610
+ │ │ ├── shared/ # Shared infrastructure
611
+ │ │ │ ├── iam.ts # IAM roles and policies
612
+ │ │ │ └── resource-checks.ts
624
613
  │ │ └── resources/ # Resource definitions
625
- │ │ ├── iam.ts # IAM roles and policies
626
614
  │ │ ├── ses.ts # SES configuration
627
- │ │ ├── dynamodb.ts # Email history storage
628
- │ │ ├── lambda.ts # Event processing
629
- │ │ ├── sqs.ts # Event queues + DLQ
630
- │ │ └── eventbridge.ts # SES event routing
615
+ │ │ ├── dynamodb.ts # DynamoDB tables
616
+ │ │ ├── lambda.ts # Lambda functions
617
+ │ │ ├── sqs.ts # SQS queues + DLQ
618
+ │ │ ├── eventbridge.ts # SES event routing
619
+ │ │ ├── s3-cdn.ts # S3 bucket for CDN
620
+ │ │ ├── cloudfront.ts # CloudFront distribution
621
+ │ │ ├── acm.ts # ACM certificates
622
+ │ │ ├── s3-inbound.ts # S3 for inbound emails
623
+ │ │ ├── lambda-inbound.ts # Inbound processing
624
+ │ │ ├── sqs-inbound.ts # Inbound queue
625
+ │ │ ├── eventbridge-inbound.ts
626
+ │ │ ├── mail-manager.ts # Mail manager
627
+ │ │ ├── smtp-credentials.ts
628
+ │ │ └── alerting.ts # CloudWatch alerting
631
629
  │ ├── console/ # Web dashboard (React)
632
630
  │ ├── lambda/ # Lambda function source
633
631
  │ │ └── event-processor/ # SQS → DynamoDB processor
@@ -645,7 +643,7 @@ packages/cli/
645
643
  │ │ ├── presets.ts # Config presets
646
644
  │ │ └── route53.ts # DNS helpers
647
645
  │ └── types/
648
- │ ├── index.ts # Type exports with backwards compat
646
+ │ ├── index.ts # Type exports
649
647
  │ ├── shared.ts # Shared types
650
648
  │ ├── email.ts # Email-specific types
651
649
  │ └── sms.ts # SMS-specific types
@@ -796,42 +794,74 @@ wraps status
796
794
 
797
795
  # To redeploy, destroy the existing stack first
798
796
  wraps destroy
799
- wraps init
797
+ wraps email init
800
798
  ```
801
799
 
802
800
  ## What's Included
803
801
 
804
- ### Global Commands
802
+ ### Global Commands
805
803
  - [x] `wraps status` - Show infrastructure status (all services)
806
804
  - [x] `wraps console` - Local web console (all services)
807
805
  - [x] `wraps destroy` - Remove all infrastructure (all services)
806
+ - [x] `wraps push` - Push templates (alias for `email templates push`)
808
807
  - [x] `wraps completion` - Shell completion
808
+ - [x] `wraps permissions` - Show required AWS IAM permissions
809
+ - [x] `wraps news` - Show recent updates
810
+ - [x] `wraps support` - Get help and support info
809
811
 
810
- ### Platform Commands
812
+ ### Auth Commands
813
+ - [x] `wraps auth login` - Sign in to wraps.dev
814
+ - [x] `wraps auth status` - Show auth state
815
+ - [x] `wraps auth logout` - Sign out
816
+
817
+ ### AWS Commands
818
+ - [x] `wraps aws setup` - Interactive AWS setup wizard
819
+ - [x] `wraps aws doctor` - Diagnose AWS configuration
820
+
821
+ ### Platform Commands
822
+ - [x] `wraps platform connect` - Connect to Wraps Platform
811
823
  - [x] `wraps platform update-role` - Update platform IAM permissions
812
824
 
813
- ### Email Commands
825
+ ### Email Commands
814
826
  - [x] `wraps email init` - Deploy new infrastructure
815
827
  - [x] `wraps email connect` - Connect existing SES
816
- - [x] `wraps email domains` - Domain management
817
- - [x] `wraps email domains add` - Add domain to SES
818
- - [x] `wraps email domains list` - List all domains
819
- - [x] `wraps email domains get-dkim` - Get DKIM tokens
820
- - [x] `wraps email domains verify` - Verify DNS records
821
- - [x] `wraps email domains remove` - Remove domain
822
- - [x] `wraps email upgrade` - Incrementally add features:
823
- - Configuration preset upgrades (Starter → Production → Enterprise)
824
- - MAIL FROM domain for DMARC alignment
825
- - Custom tracking domain for branded links
826
- - Event type customization
827
- - Email history retention periods
828
- - Dedicated IP addresses
828
+ - [x] `wraps email test` - Send a test email
829
+ - [x] `wraps email check` - Check email deliverability
830
+ - [x] `wraps email config` - Apply CLI updates to infrastructure (alias: `sync`)
831
+ - [x] `wraps email status` - Show email infrastructure details
832
+ - [x] `wraps email upgrade` - Add features incrementally
833
+ - [x] `wraps email verify` - Verify domain DNS records
829
834
  - [x] `wraps email restore` - Restore from metadata
830
-
831
- ### SMS Commands 🚧 (Coming Soon)
832
- - [ ] `wraps sms init` - Deploy SMS infrastructure
833
-
834
- ### Features
835
+ - [x] `wraps email destroy` - Remove email infrastructure
836
+ - [x] `wraps email domains` - Domain management (add, list, verify, get-dkim, remove)
837
+ - [x] `wraps email inbound` - Inbound email (init, status, verify, test, destroy)
838
+ - [x] `wraps email templates` - Templates-as-code (init, push, preview)
839
+ - [x] `wraps email workflows` - Workflow automation (validate, push)
840
+
841
+ ### SMS Commands
842
+ - [x] `wraps sms init` - Deploy SMS infrastructure
843
+ - [x] `wraps sms status` - Show SMS infrastructure details
844
+ - [x] `wraps sms test` - Send a test SMS
845
+ - [x] `wraps sms verify-number` - Verify a destination phone number
846
+ - [x] `wraps sms sync` - Sync infrastructure
847
+ - [x] `wraps sms upgrade` - Upgrade SMS features
848
+ - [x] `wraps sms register` - Register toll-free number
849
+ - [x] `wraps sms destroy` - Remove SMS infrastructure
850
+
851
+ ### CDN Commands
852
+ - [x] `wraps cdn init` - Deploy CDN infrastructure (S3 + CloudFront)
853
+ - [x] `wraps cdn status` - Show CDN infrastructure details
854
+ - [x] `wraps cdn verify` - Check DNS and certificate status
855
+ - [x] `wraps cdn upgrade` - Add custom domain
856
+ - [x] `wraps cdn sync` - Sync infrastructure
857
+ - [x] `wraps cdn destroy` - Remove CDN infrastructure
858
+
859
+ ### Telemetry Commands
860
+ - [x] `wraps telemetry enable` - Enable anonymous telemetry
861
+ - [x] `wraps telemetry disable` - Disable anonymous telemetry
862
+ - [x] `wraps telemetry status` - Show telemetry setting
863
+
864
+ ### Features
835
865
  - [x] Preview mode (`--preview`) for all deployment commands
836
866
  - [x] Configuration presets (Starter, Production, Enterprise, Custom)
837
867
  - [x] Cost estimation based on AWS pricing
@@ -845,29 +875,12 @@ wraps init
845
875
  - [x] Event pipeline: EventBridge → SQS → Lambda → DynamoDB
846
876
  - [x] Domain management (add, list, verify, remove)
847
877
  - [x] Suppression list for bounces/complaints
878
+ - [x] Inbound email receiving and processing
879
+ - [x] Templates-as-code with browser preview
880
+ - [x] Workflow automation
848
881
  - [x] Non-destructive (never modifies existing resources)
849
882
  - [x] Built with @clack/prompts
850
883
 
851
- ### Coming Soon
852
-
853
- #### v1.1.0 - Q1 2025
854
- - [ ] **HTTPS Custom Tracking Domains**
855
- - [ ] Automatic CloudFront distribution creation
856
- - [ ] ACM certificate provisioning and validation
857
- - [ ] HTTPS enforcement for tracking links
858
- - [ ] Seamless upgrade path from HTTP tracking domains
859
-
860
- #### Future Releases
861
- - [ ] **SMS Service** (`wraps sms`)
862
- - [ ] AWS End User Messaging integration
863
- - [ ] Multi-channel communication support
864
-
865
- - [ ] **Hosted App**
866
- - [ ] Advanced analytics dashboard
867
- - [ ] Email templates
868
- - [ ] Bulk sending tools
869
- - [ ] Tenant management
870
-
871
884
  ## License
872
885
 
873
886
  AGPLv3