@wraps.dev/cli 2.12.3 → 2.13.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 +295 -282
- package/dist/cli.js +702 -192
- package/dist/cli.js.map +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/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# Wraps CLI
|
|
2
2
|
|
|
3
|
-
> Deploy email
|
|
3
|
+
> Deploy email, SMS, and CDN infrastructure to your AWS account.
|
|
4
4
|
|
|
5
5
|
## What It Creates
|
|
6
6
|
|
|
7
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
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
|
-
|
|
77
|
-
|
|
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
|
-
####
|
|
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
|
-
|
|
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
|
-
|
|
229
|
+
#### Domain Commands
|
|
203
230
|
|
|
204
|
-
|
|
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
|
-
|
|
207
|
-
- `-d, --domain <domain>` - Domain to add
|
|
239
|
+
#### Inbound Email Commands
|
|
208
240
|
|
|
209
|
-
|
|
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
|
-
|
|
212
|
-
wraps email domains add --domain myapp.com
|
|
213
|
-
```
|
|
249
|
+
#### Template Commands
|
|
214
250
|
|
|
215
|
-
|
|
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
|
-
|
|
257
|
+
#### Workflow Commands
|
|
218
258
|
|
|
219
|
-
|
|
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
|
-
|
|
222
|
-
wraps email domains list
|
|
223
|
-
```
|
|
264
|
+
### SMS Commands
|
|
224
265
|
|
|
225
|
-
|
|
266
|
+
#### `wraps sms init`
|
|
226
267
|
|
|
227
|
-
|
|
268
|
+
Deploy SMS infrastructure to your AWS account.
|
|
228
269
|
|
|
229
270
|
**Options:**
|
|
230
|
-
- `-
|
|
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
|
-
**
|
|
276
|
+
**Examples:**
|
|
233
277
|
|
|
234
278
|
```bash
|
|
235
|
-
|
|
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
|
-
|
|
282
|
+
# Preview what would be deployed
|
|
283
|
+
wraps sms init --preview
|
|
246
284
|
|
|
247
|
-
|
|
248
|
-
wraps
|
|
285
|
+
# With flags
|
|
286
|
+
wraps sms init --provider vercel --region us-east-1
|
|
249
287
|
```
|
|
250
288
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
Remove a domain from SES.
|
|
289
|
+
#### Other SMS Commands
|
|
254
290
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
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
|
-
|
|
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
|
|
303
|
+
#### `wraps cdn init`
|
|
267
304
|
|
|
268
|
-
|
|
305
|
+
Deploy CDN infrastructure (S3 + CloudFront) to your AWS account.
|
|
269
306
|
|
|
270
307
|
**Options:**
|
|
271
|
-
- `-
|
|
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
|
-
**
|
|
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
|
-
|
|
367
|
-
wraps
|
|
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
|
-
|
|
320
|
+
# Preview what would be deployed
|
|
321
|
+
wraps cdn init --preview
|
|
383
322
|
|
|
384
|
-
|
|
385
|
-
wraps
|
|
323
|
+
# With flags
|
|
324
|
+
wraps cdn init --provider vercel --region us-east-1 --domain cdn.myapp.com
|
|
386
325
|
```
|
|
387
326
|
|
|
388
|
-
|
|
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
|
-
|
|
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
|
-
|
|
337
|
+
### Auth Commands
|
|
398
338
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
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
|
-
|
|
404
|
-
|
|
405
|
-
```bash
|
|
406
|
-
wraps console
|
|
407
|
-
wraps console --port 3000 --no-open
|
|
408
|
-
```
|
|
345
|
+
### AWS Commands
|
|
409
346
|
|
|
410
|
-
|
|
347
|
+
| Command | Description |
|
|
348
|
+
|---------|-------------|
|
|
349
|
+
| `wraps aws setup` | Interactive AWS credentials setup wizard |
|
|
350
|
+
| `wraps aws doctor` | Diagnose AWS configuration issues |
|
|
411
351
|
|
|
412
|
-
|
|
352
|
+
### Platform Commands
|
|
413
353
|
|
|
414
|
-
|
|
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
|
-
|
|
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
|
-
|
|
361
|
+
These commands work across all services:
|
|
431
362
|
|
|
432
|
-
|
|
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
|
-
|
|
374
|
+
### Telemetry Commands
|
|
435
375
|
|
|
436
|
-
|
|
437
|
-
|
|
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`, `
|
|
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
|
-
│ │ │
|
|
617
|
-
│ │ ├──
|
|
618
|
-
│ │ ├──
|
|
619
|
-
│ │ ├──
|
|
620
|
-
│ │
|
|
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 #
|
|
628
|
-
│ │ ├── lambda.ts #
|
|
629
|
-
│ │ ├── sqs.ts #
|
|
630
|
-
│ │
|
|
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
|
|
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
|
-
###
|
|
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
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
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
|
-
|
|
832
|
-
- [
|
|
833
|
-
|
|
834
|
-
|
|
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
|