@usenaive-sdk/cli 0.15.1 → 1.0.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/README.md +43 -402
- package/dist/index.js +51796 -502
- package/package.json +22 -18
- package/dist/client.d.ts +0 -108
- package/dist/client.js +0 -458
- package/dist/client.js.map +0 -1
- package/dist/commands/account-kits.d.ts +0 -2
- package/dist/commands/account-kits.js +0 -71
- package/dist/commands/account-kits.js.map +0 -1
- package/dist/commands/aeo.d.ts +0 -2
- package/dist/commands/aeo.js +0 -451
- package/dist/commands/aeo.js.map +0 -1
- package/dist/commands/agent-profiles.d.ts +0 -11
- package/dist/commands/agent-profiles.js +0 -120
- package/dist/commands/agent-profiles.js.map +0 -1
- package/dist/commands/agents.d.ts +0 -2
- package/dist/commands/agents.js +0 -916
- package/dist/commands/agents.js.map +0 -1
- package/dist/commands/app-data.d.ts +0 -2
- package/dist/commands/app-data.js +0 -445
- package/dist/commands/app-data.js.map +0 -1
- package/dist/commands/approvals.d.ts +0 -2
- package/dist/commands/approvals.js +0 -242
- package/dist/commands/approvals.js.map +0 -1
- package/dist/commands/apps.d.ts +0 -9
- package/dist/commands/apps.js +0 -844
- package/dist/commands/apps.js.map +0 -1
- package/dist/commands/audio.d.ts +0 -9
- package/dist/commands/audio.js +0 -391
- package/dist/commands/audio.js.map +0 -1
- package/dist/commands/auth.d.ts +0 -31
- package/dist/commands/auth.js +0 -428
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/billing.d.ts +0 -2
- package/dist/commands/billing.js +0 -250
- package/dist/commands/billing.js.map +0 -1
- package/dist/commands/brain.d.ts +0 -2
- package/dist/commands/brain.js +0 -1300
- package/dist/commands/brain.js.map +0 -1
- package/dist/commands/browser.d.ts +0 -2
- package/dist/commands/browser.js +0 -378
- package/dist/commands/browser.js.map +0 -1
- package/dist/commands/business.d.ts +0 -2
- package/dist/commands/business.js +0 -566
- package/dist/commands/business.js.map +0 -1
- package/dist/commands/cards.d.ts +0 -2
- package/dist/commands/cards.js +0 -419
- package/dist/commands/cards.js.map +0 -1
- package/dist/commands/ceo.d.ts +0 -2
- package/dist/commands/ceo.js +0 -369
- package/dist/commands/ceo.js.map +0 -1
- package/dist/commands/clone.d.ts +0 -2
- package/dist/commands/clone.js +0 -203
- package/dist/commands/clone.js.map +0 -1
- package/dist/commands/companies.d.ts +0 -10
- package/dist/commands/companies.js +0 -283
- package/dist/commands/companies.js.map +0 -1
- package/dist/commands/company-data.d.ts +0 -2
- package/dist/commands/company-data.js +0 -168
- package/dist/commands/company-data.js.map +0 -1
- package/dist/commands/compute.d.ts +0 -2
- package/dist/commands/compute.js +0 -498
- package/dist/commands/compute.js.map +0 -1
- package/dist/commands/config.d.ts +0 -2
- package/dist/commands/config.js +0 -36
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/connections.d.ts +0 -8
- package/dist/commands/connections.js +0 -137
- package/dist/commands/connections.js.map +0 -1
- package/dist/commands/cron-jobs.d.ts +0 -2
- package/dist/commands/cron-jobs.js +0 -245
- package/dist/commands/cron-jobs.js.map +0 -1
- package/dist/commands/domains.d.ts +0 -2
- package/dist/commands/domains.js +0 -474
- package/dist/commands/domains.js.map +0 -1
- package/dist/commands/ecommerce.d.ts +0 -2
- package/dist/commands/ecommerce.js +0 -277
- package/dist/commands/ecommerce.js.map +0 -1
- package/dist/commands/email.d.ts +0 -2
- package/dist/commands/email.js +0 -336
- package/dist/commands/email.js.map +0 -1
- package/dist/commands/employees.d.ts +0 -2
- package/dist/commands/employees.js +0 -190
- package/dist/commands/employees.js.map +0 -1
- package/dist/commands/env.d.ts +0 -7
- package/dist/commands/env.js +0 -112
- package/dist/commands/env.js.map +0 -1
- package/dist/commands/formation.d.ts +0 -2
- package/dist/commands/formation.js +0 -273
- package/dist/commands/formation.js.map +0 -1
- package/dist/commands/identity.d.ts +0 -2
- package/dist/commands/identity.js +0 -110
- package/dist/commands/identity.js.map +0 -1
- package/dist/commands/images.d.ts +0 -2
- package/dist/commands/images.js +0 -371
- package/dist/commands/images.js.map +0 -1
- package/dist/commands/init.d.ts +0 -5
- package/dist/commands/init.js +0 -43
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/jobs.d.ts +0 -2
- package/dist/commands/jobs.js +0 -144
- package/dist/commands/jobs.js.map +0 -1
- package/dist/commands/keys.d.ts +0 -2
- package/dist/commands/keys.js +0 -156
- package/dist/commands/keys.js.map +0 -1
- package/dist/commands/legacy-auth.d.ts +0 -27
- package/dist/commands/legacy-auth.js +0 -64
- package/dist/commands/legacy-auth.js.map +0 -1
- package/dist/commands/llm.d.ts +0 -2
- package/dist/commands/llm.js +0 -125
- package/dist/commands/llm.js.map +0 -1
- package/dist/commands/login.d.ts +0 -2
- package/dist/commands/login.js +0 -65
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -7
- package/dist/commands/logout.js +0 -55
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -42
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/loops.d.ts +0 -2
- package/dist/commands/loops.js +0 -260
- package/dist/commands/loops.js.map +0 -1
- package/dist/commands/media.d.ts +0 -2
- package/dist/commands/media.js +0 -183
- package/dist/commands/media.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -2
- package/dist/commands/memory.js +0 -151
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/mobile.d.ts +0 -4
- package/dist/commands/mobile.js +0 -382
- package/dist/commands/mobile.js.map +0 -1
- package/dist/commands/module.d.ts +0 -8
- package/dist/commands/module.js +0 -48
- package/dist/commands/module.js.map +0 -1
- package/dist/commands/objectives.d.ts +0 -2
- package/dist/commands/objectives.js +0 -243
- package/dist/commands/objectives.js.map +0 -1
- package/dist/commands/payments.d.ts +0 -2
- package/dist/commands/payments.js +0 -131
- package/dist/commands/payments.js.map +0 -1
- package/dist/commands/people.d.ts +0 -2
- package/dist/commands/people.js +0 -197
- package/dist/commands/people.js.map +0 -1
- package/dist/commands/phone.d.ts +0 -2
- package/dist/commands/phone.js +0 -289
- package/dist/commands/phone.js.map +0 -1
- package/dist/commands/projects.d.ts +0 -13
- package/dist/commands/projects.js +0 -220
- package/dist/commands/projects.js.map +0 -1
- package/dist/commands/queue.d.ts +0 -2
- package/dist/commands/queue.js +0 -121
- package/dist/commands/queue.js.map +0 -1
- package/dist/commands/register.d.ts +0 -2
- package/dist/commands/register.js +0 -88
- package/dist/commands/register.js.map +0 -1
- package/dist/commands/report.d.ts +0 -17
- package/dist/commands/report.js +0 -109
- package/dist/commands/report.js.map +0 -1
- package/dist/commands/sandbox.d.ts +0 -2
- package/dist/commands/sandbox.js +0 -558
- package/dist/commands/sandbox.js.map +0 -1
- package/dist/commands/search.d.ts +0 -2
- package/dist/commands/search.js +0 -223
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/seo.d.ts +0 -2
- package/dist/commands/seo.js +0 -528
- package/dist/commands/seo.js.map +0 -1
- package/dist/commands/sessions.d.ts +0 -6
- package/dist/commands/sessions.js +0 -109
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/social-data.d.ts +0 -2
- package/dist/commands/social-data.js +0 -245
- package/dist/commands/social-data.js.map +0 -1
- package/dist/commands/social.d.ts +0 -2
- package/dist/commands/social.js +0 -407
- package/dist/commands/social.js.map +0 -1
- package/dist/commands/status.d.ts +0 -2
- package/dist/commands/status.js +0 -79
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/support.d.ts +0 -2
- package/dist/commands/support.js +0 -134
- package/dist/commands/support.js.map +0 -1
- package/dist/commands/tasks.d.ts +0 -2
- package/dist/commands/tasks.js +0 -409
- package/dist/commands/tasks.js.map +0 -1
- package/dist/commands/teams.d.ts +0 -69
- package/dist/commands/teams.js +0 -503
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/trading.d.ts +0 -2
- package/dist/commands/trading.js +0 -333
- package/dist/commands/trading.js.map +0 -1
- package/dist/commands/up.d.ts +0 -551
- package/dist/commands/up.js +0 -1149
- package/dist/commands/up.js.map +0 -1
- package/dist/commands/usage.d.ts +0 -2
- package/dist/commands/usage.js +0 -73
- package/dist/commands/usage.js.map +0 -1
- package/dist/commands/use.d.ts +0 -12
- package/dist/commands/use.js +0 -96
- package/dist/commands/use.js.map +0 -1
- package/dist/commands/users.d.ts +0 -10
- package/dist/commands/users.js +0 -82
- package/dist/commands/users.js.map +0 -1
- package/dist/commands/vault.d.ts +0 -2
- package/dist/commands/vault.js +0 -101
- package/dist/commands/vault.js.map +0 -1
- package/dist/commands/verification.d.ts +0 -2
- package/dist/commands/verification.js +0 -152
- package/dist/commands/verification.js.map +0 -1
- package/dist/commands/verify-email.d.ts +0 -19
- package/dist/commands/verify-email.js +0 -130
- package/dist/commands/verify-email.js.map +0 -1
- package/dist/commands/video.d.ts +0 -2
- package/dist/commands/video.js +0 -417
- package/dist/commands/video.js.map +0 -1
- package/dist/commands/voice.d.ts +0 -2
- package/dist/commands/voice.js +0 -516
- package/dist/commands/voice.js.map +0 -1
- package/dist/commands/wallet.d.ts +0 -2
- package/dist/commands/wallet.js +0 -244
- package/dist/commands/wallet.js.map +0 -1
- package/dist/commands/webhooks.d.ts +0 -13
- package/dist/commands/webhooks.js +0 -119
- package/dist/commands/webhooks.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.js +0 -53
- package/dist/commands/whoami.js.map +0 -1
- package/dist/config.d.ts +0 -42
- package/dist/config.js +0 -83
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/lib/brain-select.d.ts +0 -193
- package/dist/lib/brain-select.js +0 -403
- package/dist/lib/brain-select.js.map +0 -1
- package/dist/lib/cli-validation.d.ts +0 -12
- package/dist/lib/cli-validation.js +0 -46
- package/dist/lib/cli-validation.js.map +0 -1
- package/dist/lib/config-errors.d.ts +0 -4
- package/dist/lib/config-errors.js +0 -13
- package/dist/lib/config-errors.js.map +0 -1
- package/dist/lib/deprecation.d.ts +0 -158
- package/dist/lib/deprecation.js +0 -140
- package/dist/lib/deprecation.js.map +0 -1
- package/dist/lib/duration.d.ts +0 -8
- package/dist/lib/duration.js +0 -11
- package/dist/lib/duration.js.map +0 -1
- package/dist/lib/http-response.d.ts +0 -11
- package/dist/lib/http-response.js +0 -96
- package/dist/lib/http-response.js.map +0 -1
- package/dist/lib/llm-paywall.d.ts +0 -82
- package/dist/lib/llm-paywall.js +0 -231
- package/dist/lib/llm-paywall.js.map +0 -1
- package/dist/lib/pricing.d.ts +0 -132
- package/dist/lib/pricing.js +0 -148
- package/dist/lib/pricing.js.map +0 -1
- package/dist/lib/starter-config.d.ts +0 -13
- package/dist/lib/starter-config.js +0 -71
- package/dist/lib/starter-config.js.map +0 -1
- package/dist/lib/stream-frames.d.ts +0 -114
- package/dist/lib/stream-frames.js +0 -169
- package/dist/lib/stream-frames.js.map +0 -1
- package/dist/lib/teams-catalog.d.ts +0 -141
- package/dist/lib/teams-catalog.js +0 -841
- package/dist/lib/teams-catalog.js.map +0 -1
- package/dist/lib/unknown-command.d.ts +0 -71
- package/dist/lib/unknown-command.js +0 -132
- package/dist/lib/unknown-command.js.map +0 -1
- package/dist/lib/version-check.d.ts +0 -26
- package/dist/lib/version-check.js +0 -21
- package/dist/lib/version-check.js.map +0 -1
- package/dist/output.d.ts +0 -246
- package/dist/output.js +0 -539
- package/dist/output.js.map +0 -1
- package/dist/prompt.d.ts +0 -17
- package/dist/prompt.js +0 -70
- package/dist/prompt.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.js +0 -14
- package/dist/version.js.map +0 -1
package/dist/commands/domains.js
DELETED
|
@@ -1,474 +0,0 @@
|
|
|
1
|
-
import { Command, Option, InvalidArgumentError } from "commander";
|
|
2
|
-
import { apiRequest, handleApiError, handlePendingApproval } from "../client.js";
|
|
3
|
-
import { agentOutput } from "../output.js";
|
|
4
|
-
function parsePositiveInt(label, min, max) {
|
|
5
|
-
return (raw) => {
|
|
6
|
-
const n = parseInt(raw, 10);
|
|
7
|
-
if (!Number.isFinite(n) || n < min || n > max) {
|
|
8
|
-
throw new InvalidArgumentError(`${label} must be an integer between ${min} and ${max}.`);
|
|
9
|
-
}
|
|
10
|
-
return n;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export const domainsCmd = new Command("domains")
|
|
14
|
-
.description("Manage email domains — list, connect, verify, search, purchase, edit DNS")
|
|
15
|
-
.addHelpText("after", `
|
|
16
|
-
Subcommands:
|
|
17
|
-
naive domains List all domains for your company
|
|
18
|
-
naive domains connect Connect a custom domain (BYOD)
|
|
19
|
-
naive domains setup-records Show the Resend email-provider setup records to add at your registrar
|
|
20
|
-
(alias: dns-records)
|
|
21
|
-
naive domains verify Trigger DNS verification for a domain
|
|
22
|
-
naive domains search Check if a domain is available for purchase
|
|
23
|
-
naive domains purchase Purchase a domain via checkout
|
|
24
|
-
naive domains zone-records List every DNS record in the live Vercel zone (with provider record IDs)
|
|
25
|
-
naive domains set-record Create or replace a DNS record on the zone
|
|
26
|
-
naive domains delete-record Delete a DNS record from the zone
|
|
27
|
-
|
|
28
|
-
Two DNS surfaces (don't mix them up):
|
|
29
|
-
setup-records → Resend email-provider records the customer must add at their registrar to pass
|
|
30
|
-
email verification (read-only). Equivalent: GET /v1/domains/:id/dns-records.
|
|
31
|
-
zone-records → Every record currently in the live Vercel zone, with provider record IDs needed
|
|
32
|
-
for delete-record. Equivalent: GET /v1/domains/:id/zone-records.
|
|
33
|
-
|
|
34
|
-
Domain types:
|
|
35
|
-
System domain Auto-provisioned on registration ({slug}.usenaive.ai); read-only for DNS edits
|
|
36
|
-
Custom domain Your own domain connected via 'domains connect'
|
|
37
|
-
Purchased domain Bought through Naive via domain registrar
|
|
38
|
-
|
|
39
|
-
Workflow for custom domains:
|
|
40
|
-
1. naive domains connect --domain mycompany.com → get DNS records
|
|
41
|
-
2. Add DNS records at your registrar (e.g., Cloudflare, Namecheap)
|
|
42
|
-
3. naive domains verify <domain_id> → verify DNS propagation
|
|
43
|
-
4. naive email create --local-part support → create inboxes
|
|
44
|
-
|
|
45
|
-
Workflow for purchasing a new domain:
|
|
46
|
-
1. naive domains search example.com → check availability + price
|
|
47
|
-
2. naive domains purchase example.com → get checkout URL
|
|
48
|
-
3. Complete payment at checkout URL
|
|
49
|
-
4. naive domains → verify domain is active
|
|
50
|
-
|
|
51
|
-
Workflow for editing DNS on a connected domain:
|
|
52
|
-
1. naive domains zone-records <domain_id> → list current records, copy provider IDs
|
|
53
|
-
2. naive domains set-record <domain_id> --type CNAME --name www --value shops.myshopify.com
|
|
54
|
-
3. naive domains delete-record <domain_id> <record_id> (use --acknowledge-unowned for non-Naive records)
|
|
55
|
-
|
|
56
|
-
System domains ({slug}.usenaive.ai):
|
|
57
|
-
Auto-provisioned on registration with status=active. Two independent tracks:
|
|
58
|
-
dns_status → Resend EMAIL readiness (pending_verification | provisioned)
|
|
59
|
-
app_connect_status → app HTTP attach (null | pending_dns | connected |
|
|
60
|
-
agent_managed_pending | agent_managed)
|
|
61
|
-
Do NOT treat dns_status=pending_verification as "app domain broken".
|
|
62
|
-
App attach: naive apps domains connect / verify-dns (platform writes zone DNS).
|
|
63
|
-
Email ready: naive domains verify <id> when dns_status is still pending_verification.
|
|
64
|
-
|
|
65
|
-
DNS edit safety (server-enforced):
|
|
66
|
-
- Allowed types only: A, AAAA, CNAME, MX, TXT, CAA
|
|
67
|
-
- DMARC, DKIM, and inbound MX/TXT records are protected (returns 403 PROTECTED_RECORD)
|
|
68
|
-
- System domains: zone-records list is allowed; set/delete return 403 SYSTEM_DOMAIN
|
|
69
|
-
- Wildcards ('*' or '*.foo') and CNAME at apex are rejected
|
|
70
|
-
- CAA values must use an allowed CA (ssl.com, letsencrypt.org, digicert.com,
|
|
71
|
-
sectigo.com, globalsign.com, amazon.com, pki.goog, google.com)
|
|
72
|
-
- Per-company rate limit: 5 mutations/min, 20/hr — honor the Retry-After header on 429
|
|
73
|
-
|
|
74
|
-
Examples:
|
|
75
|
-
$ naive domains
|
|
76
|
-
$ naive domains connect --domain mycompany.com
|
|
77
|
-
$ naive domains setup-records <domain-uuid>
|
|
78
|
-
$ naive domains verify <domain-uuid>
|
|
79
|
-
$ naive domains search coolstartup.ai
|
|
80
|
-
$ naive domains purchase coolstartup.ai
|
|
81
|
-
$ naive domains zone-records <domain-uuid>
|
|
82
|
-
$ naive domains set-record <domain-uuid> --type A --name @ --value 76.76.21.21
|
|
83
|
-
$ naive domains delete-record <domain-uuid> <record-id>
|
|
84
|
-
`);
|
|
85
|
-
domainsCmd
|
|
86
|
-
.command("list", { isDefault: true })
|
|
87
|
-
.description("List all domains for your company")
|
|
88
|
-
.action(async () => {
|
|
89
|
-
const resp = await apiRequest("GET", "/v1/domains");
|
|
90
|
-
handleApiError("domains.list", resp);
|
|
91
|
-
const data = resp.data;
|
|
92
|
-
const count = data.domains?.length ?? 0;
|
|
93
|
-
const active = data.domains?.filter((d) => d.status === "active").length ?? 0;
|
|
94
|
-
const pendingByod = data.domains?.filter((d) => d.status === "pending_dns").length ?? 0;
|
|
95
|
-
const emailPending = data.domains?.filter((d) => d.dns_status === "pending_verification" || d.dns_status === "provisioning").length ?? 0;
|
|
96
|
-
const appPending = data.domains?.filter((d) => d.app_connect_status === "pending_dns").length ?? 0;
|
|
97
|
-
const appConnected = data.domains?.filter((d) => d.app_connect_status === "connected").length ?? 0;
|
|
98
|
-
agentOutput({
|
|
99
|
-
action: "domains.list",
|
|
100
|
-
result: resp.data,
|
|
101
|
-
next_steps: [
|
|
102
|
-
...(emailPending > 0
|
|
103
|
-
? [{ command: "naive domains verify <domain_id>", description: "Re-check Resend EMAIL dns_status (not app HTTP)" }]
|
|
104
|
-
: []),
|
|
105
|
-
...(pendingByod > 0
|
|
106
|
-
? [{ command: "naive domains setup-records <domain_id>", description: "View Resend setup records to add for BYOD pending domains" }]
|
|
107
|
-
: []),
|
|
108
|
-
...(appPending > 0
|
|
109
|
-
? [{ command: "naive apps domains verify-dns <appId> <domainId>", description: "Finish app HTTP attach (app_connect_status=pending_dns)" }]
|
|
110
|
-
: []),
|
|
111
|
-
{ command: "naive domains connect --domain <your-domain.com>", description: "Connect a custom domain" },
|
|
112
|
-
...(active > 0
|
|
113
|
-
? [
|
|
114
|
-
{ command: "naive email create --local-part <name>", description: "Create an inbox on an active domain" },
|
|
115
|
-
{ command: "naive domains zone-records <domain_id>", description: "Inspect every record on the live Vercel zone (for DNS edits)" },
|
|
116
|
-
]
|
|
117
|
-
: []),
|
|
118
|
-
],
|
|
119
|
-
hints: [
|
|
120
|
-
`${count} domain${count !== 1 ? "s" : ""} total (${active} active, ${pendingByod} BYOD pending_dns)`,
|
|
121
|
-
`Tracks: email dns_status pending=${emailPending}; app_connect pending_dns=${appPending}, connected=${appConnected}`,
|
|
122
|
-
"System domains: status=active on register. dns_status=email (Resend); app_connect_status=app HTTP (Vercel). Do not conflate them.",
|
|
123
|
-
"Custom domains require DNS record setup before they can be used for email",
|
|
124
|
-
],
|
|
125
|
-
related_commands: [
|
|
126
|
-
"naive domains connect",
|
|
127
|
-
"naive domains verify",
|
|
128
|
-
"naive domains zone-records",
|
|
129
|
-
"naive apps domains connect",
|
|
130
|
-
"naive apps domains verify-dns",
|
|
131
|
-
"naive email inboxes",
|
|
132
|
-
"naive email create",
|
|
133
|
-
],
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
domainsCmd
|
|
137
|
-
.command("connect")
|
|
138
|
-
.description("Connect a custom domain (BYOD) to your company for email")
|
|
139
|
-
.requiredOption("--domain <domain>", "Domain to connect (e.g., 'mycompany.com')")
|
|
140
|
-
.addHelpText("after", `
|
|
141
|
-
Examples:
|
|
142
|
-
$ naive domains connect --domain mycompany.com
|
|
143
|
-
$ naive domains connect --domain mail.mycompany.com
|
|
144
|
-
|
|
145
|
-
What this does:
|
|
146
|
-
1. Registers the domain with the email provider
|
|
147
|
-
2. Returns DNS records (MX, TXT, CNAME) you must add at your registrar
|
|
148
|
-
3. Sets domain status to 'pending_dns' until verified
|
|
149
|
-
|
|
150
|
-
After connecting:
|
|
151
|
-
1. Add the returned DNS records at your domain registrar
|
|
152
|
-
2. Wait for DNS propagation (usually 5-60 minutes)
|
|
153
|
-
3. Run 'naive domains verify <domain_id>' to check
|
|
154
|
-
4. Once verified, create inboxes with 'naive email create'
|
|
155
|
-
`)
|
|
156
|
-
.action(async (opts) => {
|
|
157
|
-
const resp = await apiRequest("POST", "/v1/domains/connect", { domain: opts.domain });
|
|
158
|
-
handleApiError("domains.connect", resp);
|
|
159
|
-
const data = resp.data;
|
|
160
|
-
agentOutput({
|
|
161
|
-
action: "domains.connect",
|
|
162
|
-
result: resp.data,
|
|
163
|
-
next_steps: [
|
|
164
|
-
{ command: `naive domains setup-records ${data.id}`, description: "View setup records to add (in case you need them again)" },
|
|
165
|
-
{ command: `naive domains verify ${data.id}`, description: "Verify DNS after adding records", when: "After adding DNS records at your registrar" },
|
|
166
|
-
],
|
|
167
|
-
hints: [
|
|
168
|
-
`Domain '${data.domain}' registered — add the DNS records shown above at your registrar`,
|
|
169
|
-
`${data.dns_records?.length ?? 0} DNS record(s) to add`,
|
|
170
|
-
"DNS propagation typically takes 5-60 minutes",
|
|
171
|
-
`Domain ID: ${data.id}`,
|
|
172
|
-
],
|
|
173
|
-
related_commands: ["naive domains setup-records", "naive domains verify", "naive domains"],
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
domainsCmd
|
|
177
|
-
.command("setup-records <domain_id>")
|
|
178
|
-
.alias("dns-records")
|
|
179
|
-
.description("Show the Resend email-provider setup records the customer must add at their registrar to pass verification (read-only)")
|
|
180
|
-
.addHelpText("after", `
|
|
181
|
-
Examples:
|
|
182
|
-
$ naive domains setup-records 550e8400-e29b-41d4-a716-446655440000
|
|
183
|
-
$ naive domains dns-records 550e8400-e29b-41d4-a716-446655440000 # alias
|
|
184
|
-
|
|
185
|
-
Returns the DNS records you need to add at your domain registrar to pass
|
|
186
|
-
email-domain verification:
|
|
187
|
-
- MX records for email receiving
|
|
188
|
-
- TXT records for SPF verification
|
|
189
|
-
- CNAME records for DKIM signing
|
|
190
|
-
|
|
191
|
-
Each record includes its current verification status.
|
|
192
|
-
|
|
193
|
-
This is read-only and informational. To inspect or edit the live Vercel zone
|
|
194
|
-
(every record, not just the Resend setup records), use:
|
|
195
|
-
- naive domains zone-records <id>
|
|
196
|
-
- naive domains set-record <id> --type ... --name ... --value ...
|
|
197
|
-
- naive domains delete-record <id> <record_id>
|
|
198
|
-
`)
|
|
199
|
-
.action(async (domainId) => {
|
|
200
|
-
const resp = await apiRequest("GET", `/v1/domains/${domainId}/dns-records`);
|
|
201
|
-
handleApiError("domains.dns-records", resp);
|
|
202
|
-
const data = resp.data;
|
|
203
|
-
const verified = data.records?.filter((r) => r.status === "verified").length ?? 0;
|
|
204
|
-
const total = data.records?.length ?? 0;
|
|
205
|
-
agentOutput({
|
|
206
|
-
action: "domains.setup-records",
|
|
207
|
-
result: resp.data,
|
|
208
|
-
next_steps: [
|
|
209
|
-
...(verified < total
|
|
210
|
-
? [
|
|
211
|
-
{ command: `naive domains verify ${data.domain_id}`, description: "Trigger verification after adding records" },
|
|
212
|
-
]
|
|
213
|
-
: [
|
|
214
|
-
{ command: `naive email create --local-part support --domain-id ${data.domain_id}`, description: "Create an inbox on this domain" },
|
|
215
|
-
{ command: `naive domains zone-records ${data.domain_id}`, description: "Inspect every record on the live Vercel zone (for DNS edits)" },
|
|
216
|
-
]),
|
|
217
|
-
],
|
|
218
|
-
hints: [
|
|
219
|
-
`${verified}/${total} records verified for ${data.domain}`,
|
|
220
|
-
...(verified < total ? ["Add the unverified records at your DNS registrar, then run verify"] : ["All records verified — domain is ready for email"]),
|
|
221
|
-
"These are Resend's setup records (read-only). Use 'naive domains zone-records' to see/edit every record on the live Vercel zone.",
|
|
222
|
-
],
|
|
223
|
-
related_commands: ["naive domains verify", "naive domains", "naive domains zone-records", "naive email create"],
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
domainsCmd
|
|
227
|
-
.command("verify <domain_id>")
|
|
228
|
-
.description("Trigger DNS verification for a custom domain")
|
|
229
|
-
.addHelpText("after", `
|
|
230
|
-
Examples:
|
|
231
|
-
$ naive domains verify 550e8400-e29b-41d4-a716-446655440000
|
|
232
|
-
|
|
233
|
-
What this does:
|
|
234
|
-
1. Asks the email provider to re-check your DNS records
|
|
235
|
-
2. Returns current verification status for each record
|
|
236
|
-
3. If all records verify, the domain status changes to 'active'
|
|
237
|
-
4. Active domains can be used to create email inboxes
|
|
238
|
-
|
|
239
|
-
Note: DNS propagation can take 5-60 minutes after adding records.
|
|
240
|
-
If verification fails, wait and try again.
|
|
241
|
-
`)
|
|
242
|
-
.action(async (domainId) => {
|
|
243
|
-
const resp = await apiRequest("POST", `/v1/domains/${domainId}/verify`);
|
|
244
|
-
handleApiError("domains.verify", resp);
|
|
245
|
-
const data = resp.data;
|
|
246
|
-
agentOutput({
|
|
247
|
-
action: "domains.verify",
|
|
248
|
-
result: resp.data,
|
|
249
|
-
next_steps: data.verified
|
|
250
|
-
? [
|
|
251
|
-
{ command: `naive email create --local-part support --domain-id ${data.domain_id}`, description: "Create an inbox on this domain" },
|
|
252
|
-
{ command: "naive email inboxes", description: "List all inboxes" },
|
|
253
|
-
]
|
|
254
|
-
: [
|
|
255
|
-
{ command: `naive domains dns-records ${data.domain_id}`, description: "Check which records still need to be added" },
|
|
256
|
-
{ command: `naive domains verify ${data.domain_id}`, description: "Try again after DNS propagation", when: "Wait 5-10 minutes" },
|
|
257
|
-
],
|
|
258
|
-
hints: data.verified
|
|
259
|
-
? [`Domain '${data.domain}' is now verified and active!`, "You can create email inboxes on this domain"]
|
|
260
|
-
: [`Domain '${data.domain}' is not yet verified`, "Ensure all DNS records are added and allow time for propagation"],
|
|
261
|
-
related_commands: ["naive domains dns-records", "naive domains", "naive email create"],
|
|
262
|
-
});
|
|
263
|
-
});
|
|
264
|
-
domainsCmd
|
|
265
|
-
.command("search <domain>")
|
|
266
|
-
.description("Check if a domain is available for purchase and get its price")
|
|
267
|
-
.addHelpText("after", `
|
|
268
|
-
Examples:
|
|
269
|
-
$ naive domains search coolstartup.ai
|
|
270
|
-
$ naive domains search mybrand.com
|
|
271
|
-
|
|
272
|
-
Returns availability status and price (if available).
|
|
273
|
-
If available, use 'naive domains purchase <domain>' to buy.
|
|
274
|
-
`)
|
|
275
|
-
.action(async (domain) => {
|
|
276
|
-
const resp = await apiRequest("GET", `/v1/domains/search?domain=${encodeURIComponent(domain)}`);
|
|
277
|
-
handleApiError("domains.search", resp);
|
|
278
|
-
const data = resp.data;
|
|
279
|
-
agentOutput({
|
|
280
|
-
action: "domains.search",
|
|
281
|
-
result: resp.data,
|
|
282
|
-
next_steps: data.available
|
|
283
|
-
? [{ command: `naive domains purchase ${data.domain}`, description: `Purchase for $${data.price}` }]
|
|
284
|
-
: [{ command: `naive domains search <other-domain>`, description: "Try a different domain" }],
|
|
285
|
-
hints: data.available
|
|
286
|
-
? [`${data.domain} is available for $${data.price}!`]
|
|
287
|
-
: [`${data.domain} is not available for purchase`],
|
|
288
|
-
related_commands: ["naive domains purchase", "naive domains"],
|
|
289
|
-
});
|
|
290
|
-
});
|
|
291
|
-
domainsCmd
|
|
292
|
-
.command("zone-records <domain_id>")
|
|
293
|
-
.description("List every DNS record on a domain's live Vercel zone (with provider record IDs)")
|
|
294
|
-
.addHelpText("after", `
|
|
295
|
-
Examples:
|
|
296
|
-
$ naive domains zone-records 550e8400-e29b-41d4-a716-446655440000
|
|
297
|
-
|
|
298
|
-
Returns every DNS record in the zone (A, AAAA, CNAME, MX, TXT, NS, CAA),
|
|
299
|
-
including the provider record ID needed for delete-record.
|
|
300
|
-
|
|
301
|
-
Differs from 'dns-records' (which shows only the Resend setup records).
|
|
302
|
-
`)
|
|
303
|
-
.action(async (domainId) => {
|
|
304
|
-
const resp = await apiRequest("GET", `/v1/domains/${domainId}/zone-records`);
|
|
305
|
-
handleApiError("domains.zone-records", resp);
|
|
306
|
-
const data = resp.data;
|
|
307
|
-
// Authoritative — the server decides this, not the hostname shape.
|
|
308
|
-
const isSystem = (data.registrar ?? "").trim().toLowerCase() === "system";
|
|
309
|
-
agentOutput({
|
|
310
|
-
action: "domains.zone-records",
|
|
311
|
-
result: resp.data,
|
|
312
|
-
next_steps: isSystem
|
|
313
|
-
? [
|
|
314
|
-
{
|
|
315
|
-
command: "naive apps domains connect <appId> <domainId>",
|
|
316
|
-
description: "Attach this system domain to an app (the platform writes the HTTP DNS)",
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
command: "naive apps domains verify-dns <appId> <domainId>",
|
|
320
|
-
description: "Re-check the app HTTP attach after connect",
|
|
321
|
-
},
|
|
322
|
-
]
|
|
323
|
-
: [
|
|
324
|
-
{ command: `naive domains set-record ${data.domain_id} --type A --name www --value 76.76.21.21`, description: "Create or replace a DNS record" },
|
|
325
|
-
...(data.records.length > 0
|
|
326
|
-
? [{ command: `naive domains delete-record ${data.domain_id} ${data.records[0].id}`, description: "Delete a DNS record by its provider record ID" }]
|
|
327
|
-
: []),
|
|
328
|
-
],
|
|
329
|
-
hints: [
|
|
330
|
-
`${data.records.length} record(s) on ${data.domain}`,
|
|
331
|
-
...(isSystem
|
|
332
|
-
? [
|
|
333
|
-
"System domain: zone-records is inspect-only. set/delete → 403 SYSTEM_DOMAIN.",
|
|
334
|
-
"App HTTP DNS is written by `naive apps domains connect` / `verify-dns`, not by you.",
|
|
335
|
-
]
|
|
336
|
-
: []),
|
|
337
|
-
...(data.mock ? ["mock: true — no real Vercel writes occurred (DOMAIN_MOCK or no VERCEL_REGISTRAR_TOKEN)"] : []),
|
|
338
|
-
],
|
|
339
|
-
related_commands: isSystem
|
|
340
|
-
? ["naive apps domains connect", "naive apps domains verify-dns", "naive domains"]
|
|
341
|
-
: ["naive domains set-record", "naive domains delete-record", "naive domains"],
|
|
342
|
-
});
|
|
343
|
-
});
|
|
344
|
-
domainsCmd
|
|
345
|
-
.command("set-record <domain_id>")
|
|
346
|
-
.description("Create or replace a DNS record on a domain's Vercel zone")
|
|
347
|
-
.addOption(new Option("--type <type>", "Record type").choices(["A", "AAAA", "CNAME", "MX", "TXT", "CAA"]).makeOptionMandatory())
|
|
348
|
-
.requiredOption("--value <value>", "Record value (e.g. an IPv4, hostname, TXT string, or '0 issue \"letsencrypt.org\"')")
|
|
349
|
-
.option("--name <name>", "Record name; '@' or omit for apex, 'www' for www subdomain", "@")
|
|
350
|
-
.option("--ttl <ttl>", "TTL in seconds (60-86400)", parsePositiveInt("--ttl", 60, 86400))
|
|
351
|
-
.option("--priority <priority>", "MX priority (required for MX)", parsePositiveInt("--priority", 0, 65535))
|
|
352
|
-
.addOption(new Option("--mode <mode>", "replace (default) updates the existing record at this name+type; append always creates a new row").choices(["replace", "append"]).default("replace"))
|
|
353
|
-
.option("--acknowledge-unowned", "Overwrite a record that wasn't created by Naive")
|
|
354
|
-
.addHelpText("after", `
|
|
355
|
-
Examples:
|
|
356
|
-
$ naive domains set-record <id> --type A --name @ --value 76.76.21.21
|
|
357
|
-
$ naive domains set-record <id> --type CNAME --name www --value shops.myshopify.com
|
|
358
|
-
$ naive domains set-record <id> --type MX --name @ --value mx1.example.com --priority 10
|
|
359
|
-
$ naive domains set-record <id> --type CAA --name @ --value '0 issue "letsencrypt.org"'
|
|
360
|
-
|
|
361
|
-
Safety rules:
|
|
362
|
-
- System domains (registrar=system): zone-records list is allowed; set/delete are forbidden.
|
|
363
|
-
- DMARC/DKIM/inbound MX & TXT records are protected.
|
|
364
|
-
- Wildcard names ('*' or '*.foo') are rejected.
|
|
365
|
-
- CAA values must use an allowed CA.
|
|
366
|
-
- Per-company rate limit: 5/min, 20/hr.
|
|
367
|
-
`)
|
|
368
|
-
.action(async (domainId, opts) => {
|
|
369
|
-
const body = {
|
|
370
|
-
type: opts.type,
|
|
371
|
-
name: opts.name,
|
|
372
|
-
value: opts.value,
|
|
373
|
-
mode: opts.mode,
|
|
374
|
-
};
|
|
375
|
-
if (opts.ttl !== undefined)
|
|
376
|
-
body.ttl = opts.ttl;
|
|
377
|
-
if (opts.priority !== undefined)
|
|
378
|
-
body.priority = opts.priority;
|
|
379
|
-
if (opts.acknowledgeUnowned)
|
|
380
|
-
body.acknowledge_unowned = true;
|
|
381
|
-
const resp = await apiRequest("POST", `/v1/domains/${domainId}/zone-records`, body);
|
|
382
|
-
handleApiError("domains.set-record", resp);
|
|
383
|
-
const data = resp.data;
|
|
384
|
-
agentOutput({
|
|
385
|
-
action: "domains.set-record",
|
|
386
|
-
result: resp.data,
|
|
387
|
-
next_steps: [
|
|
388
|
-
{ command: `naive domains zone-records ${domainId}`, description: "Confirm the record is present" },
|
|
389
|
-
],
|
|
390
|
-
hints: [
|
|
391
|
-
`Wrote ${data.record.type} record at '${data.record.name || "@"}' (id: ${data.record.id})`,
|
|
392
|
-
...(data.replaced_count > 0 ? [`Replaced ${data.replaced_count} existing record(s) via ${data.path}`] : []),
|
|
393
|
-
...(data.ownership === "unowned-acknowledged" ? ["Overwrote a record that was not created by Naive (acknowledge_unowned=true)"] : []),
|
|
394
|
-
...(data.mock ? ["mock: true — no real Vercel write occurred"] : []),
|
|
395
|
-
],
|
|
396
|
-
related_commands: ["naive domains zone-records", "naive domains delete-record"],
|
|
397
|
-
});
|
|
398
|
-
});
|
|
399
|
-
domainsCmd
|
|
400
|
-
.command("delete-record <domain_id> <record_id>")
|
|
401
|
-
.description("Delete a DNS record from a domain's Vercel zone (use zone-records to find the record_id)")
|
|
402
|
-
.option("--acknowledge-unowned", "Delete a record that wasn't created by Naive")
|
|
403
|
-
.addHelpText("after", `
|
|
404
|
-
Examples:
|
|
405
|
-
$ naive domains delete-record <domain-uuid> <record-id>
|
|
406
|
-
$ naive domains delete-record <domain-uuid> <record-id> --acknowledge-unowned
|
|
407
|
-
|
|
408
|
-
Run 'naive domains zone-records <domain_id>' first to discover record IDs.
|
|
409
|
-
|
|
410
|
-
Protected records (DMARC, DKIM, inbound MX/TXT) and system domains cannot be deleted.
|
|
411
|
-
`)
|
|
412
|
-
.action(async (domainId, recordId, opts) => {
|
|
413
|
-
const path = opts.acknowledgeUnowned
|
|
414
|
-
? `/v1/domains/${domainId}/zone-records/${recordId}?acknowledge_unowned=true`
|
|
415
|
-
: `/v1/domains/${domainId}/zone-records/${recordId}`;
|
|
416
|
-
const resp = await apiRequest("DELETE", path);
|
|
417
|
-
handleApiError("domains.delete-record", resp);
|
|
418
|
-
const data = resp.data;
|
|
419
|
-
agentOutput({
|
|
420
|
-
action: "domains.delete-record",
|
|
421
|
-
result: resp.data,
|
|
422
|
-
next_steps: [
|
|
423
|
-
{ command: `naive domains zone-records ${domainId}`, description: "Confirm the record is gone" },
|
|
424
|
-
],
|
|
425
|
-
hints: [
|
|
426
|
-
"DNS record deleted",
|
|
427
|
-
...(data.ownership === "unowned-acknowledged" ? ["Deleted a record that was not created by Naive (acknowledge_unowned=true)"] : []),
|
|
428
|
-
...(data.mock ? ["mock: true — no real Vercel delete occurred"] : []),
|
|
429
|
-
],
|
|
430
|
-
related_commands: ["naive domains zone-records", "naive domains set-record"],
|
|
431
|
-
});
|
|
432
|
-
});
|
|
433
|
-
domainsCmd
|
|
434
|
-
.command("purchase <domain>")
|
|
435
|
-
.description("Purchase a domain via checkout")
|
|
436
|
-
.addHelpText("after", `
|
|
437
|
-
Examples:
|
|
438
|
-
$ naive domains purchase coolstartup.ai
|
|
439
|
-
|
|
440
|
-
What this does:
|
|
441
|
-
1. Checks domain availability and price
|
|
442
|
-
2. Creates a checkout session
|
|
443
|
-
3. Returns a URL to complete payment
|
|
444
|
-
4. After payment, the domain is registered automatically
|
|
445
|
-
|
|
446
|
-
Limits:
|
|
447
|
-
Maximum 3 purchased domains per company.
|
|
448
|
-
|
|
449
|
-
Governance:
|
|
450
|
-
Purchasing a domain is SENSITIVE (spends money) and may require human
|
|
451
|
-
approval. If so the response has status "pending_approval" and the purchase
|
|
452
|
-
runs only after 'naive approvals approve <id>'.
|
|
453
|
-
`)
|
|
454
|
-
.action(async (domain) => {
|
|
455
|
-
const resp = await apiRequest("POST", "/v1/domains/purchase", { domain });
|
|
456
|
-
handleApiError("domains.purchase", resp);
|
|
457
|
-
if (handlePendingApproval("domains.purchase", resp))
|
|
458
|
-
return;
|
|
459
|
-
const data = resp.data;
|
|
460
|
-
agentOutput({
|
|
461
|
-
action: "domains.purchase",
|
|
462
|
-
result: resp.data,
|
|
463
|
-
next_steps: [
|
|
464
|
-
{ command: "naive domains", description: "Check domain status after payment" },
|
|
465
|
-
],
|
|
466
|
-
hints: [
|
|
467
|
-
`Open this URL to complete payment: ${data.checkout_url}`,
|
|
468
|
-
`Domain: ${data.domain} — Price: ${data.price}`,
|
|
469
|
-
"After payment, the domain will be registered and DNS provisioned automatically",
|
|
470
|
-
],
|
|
471
|
-
related_commands: ["naive domains", "naive domains search"],
|
|
472
|
-
});
|
|
473
|
-
});
|
|
474
|
-
//# sourceMappingURL=domains.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/commands/domains.ts"],"names":[],"mappings":"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"}
|