@atlasauth/cli 0.8.0 → 0.10.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/CHANGELOG.md +27 -0
- package/dist/args.d.ts +146 -0
- package/dist/args.js +63 -1
- package/dist/args.js.map +1 -1
- package/dist/commands/auth.js +5 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/config.d.ts +15 -0
- package/dist/commands/config.js +76 -6
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/csp.d.ts +32 -0
- package/dist/commands/csp.js +180 -0
- package/dist/commands/csp.js.map +1 -0
- package/dist/commands/info.js +1 -1
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.js +26 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/integrations.d.ts +8 -0
- package/dist/commands/integrations.js +112 -0
- package/dist/commands/integrations.js.map +1 -0
- package/dist/commands/listen.d.ts +17 -0
- package/dist/commands/listen.js +223 -0
- package/dist/commands/listen.js.map +1 -0
- package/dist/commands/move-origin.d.ts +11 -0
- package/dist/commands/move-origin.js +95 -0
- package/dist/commands/move-origin.js.map +1 -0
- package/dist/commands/operator.d.ts +26 -0
- package/dist/commands/operator.js +210 -0
- package/dist/commands/operator.js.map +1 -0
- package/dist/commands/partner-platforms.d.ts +10 -0
- package/dist/commands/partner-platforms.js +157 -0
- package/dist/commands/partner-platforms.js.map +1 -0
- package/dist/commands/project-commands.d.ts +12 -0
- package/dist/commands/project-commands.js +130 -30
- package/dist/commands/project-commands.js.map +1 -1
- package/dist/commands/referrals.d.ts +4 -4
- package/dist/commands/referrals.js +203 -33
- package/dist/commands/referrals.js.map +1 -1
- package/dist/commands/shared.d.ts +6 -0
- package/dist/commands/shared.js +10 -1
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.js +77 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/webhooks.d.ts +29 -2
- package/dist/commands/webhooks.js +257 -24
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/config.d.ts +14 -0
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +5 -0
- package/dist/context.js.map +1 -1
- package/dist/help.d.ts +1 -1
- package/dist/help.js +202 -16
- package/dist/help.js.map +1 -1
- package/dist/run.js +16 -0
- package/dist/run.js.map +1 -1
- package/package.json +5 -3
package/dist/help.js
CHANGED
|
@@ -12,21 +12,35 @@ Usage: atlas <command> [subcommand] [arguments] [options]
|
|
|
12
12
|
|
|
13
13
|
Commands:
|
|
14
14
|
login Authenticate and store a profile credential
|
|
15
|
+
(--device: operator sign-in in the browser, no key stored)
|
|
16
|
+
token --resource <id> A one-hour token for one instance/app from your operator sign-in
|
|
17
|
+
keys whoami|list|create|rotate|revoke|revoke-leaked
|
|
18
|
+
Scoped secret keys; new secrets go sealed into 0600 files
|
|
15
19
|
logout Remove a stored profile credential
|
|
16
20
|
whoami Show the active profile and instance
|
|
17
21
|
users list|get|create|delete
|
|
18
22
|
orgs list|get|members
|
|
19
23
|
api-keys list|create|revoke
|
|
20
|
-
webhooks list|create
|
|
24
|
+
webhooks list|create|upsert|update|test|deliveries|redeliver|replay|rotate|reveal
|
|
25
|
+
listen --forward-to <url> Forward live events to your local server, signed (no tunnel)
|
|
26
|
+
move-origin --from --to Move an app to a new domain in one step (--dry-run first)
|
|
27
|
+
csp --framework next|express|nginx
|
|
28
|
+
Print the Content Security Policy sources Atlas needs
|
|
29
|
+
integrations list|get|set|remove|deliveries Identity integrations (chat, docs, consent, referrals, custom)
|
|
30
|
+
partner-platforms list|get|set|registration|token|deliveries|remove
|
|
31
|
+
This instance as a partner platform (signed consent deliveries in)
|
|
21
32
|
sessions revoke
|
|
22
|
-
config export|import
|
|
33
|
+
config export|import|plan Config-as-code: round-trip the instance's config; plan = drift diff
|
|
23
34
|
actions list|deploy|test|logs|gallery|show|install|installs|update|publish
|
|
24
35
|
init Create or complete an app's setup (idempotent); secrets to 0600 files
|
|
25
36
|
preflight Check an instance's setup; non-zero exit on errors (for CI)
|
|
37
|
+
doctor Integration health: webhooks, logout, referrals, email, consent (exit 1 on a failure)
|
|
26
38
|
env Print deploy variables: public values + secret file paths
|
|
27
39
|
client rotate Rotate an OAuth client secret straight into its file
|
|
28
40
|
referrals connect|backfill|status
|
|
29
41
|
Connect a referral platform, backfill, check the connection
|
|
42
|
+
status Atlas status, incidents that concern the instance and its
|
|
43
|
+
upstream status pages; non-zero exit on an outage
|
|
30
44
|
import --from <vendor> <file>
|
|
31
45
|
Move users from Auth0, Clerk, Supabase, Firebase, Cognito,
|
|
32
46
|
Auth.js, WorkOS or Better Auth (resumable; --dry-run first)
|
|
@@ -53,10 +67,12 @@ Global options:
|
|
|
53
67
|
|
|
54
68
|
Environment overrides:
|
|
55
69
|
ATLAS_SECRET_KEY Secret key to use instead of the stored one
|
|
56
|
-
|
|
70
|
+
ATLAS_API_BASE API URL to use instead of the stored one
|
|
71
|
+
ATLAS_API_URL Same (the older name); ATLAS_API_BASE wins when both are set
|
|
57
72
|
ATLAS_PLATFORM_KEY Platform key (psk_) for atlas init
|
|
58
|
-
|
|
59
|
-
|
|
73
|
+
REFERALLI_BASE_URL Referalli base URL for atlas referrals connect
|
|
74
|
+
REFERALLI_API_KEY Referalli merchant key for atlas referrals connect (never stored)
|
|
75
|
+
(the old REFERALLY_BASE_URL / REFERALLY_API_KEY still work, with a notice)
|
|
60
76
|
|
|
61
77
|
Secrets: a command that receives a secret writes it to a 0600 file under
|
|
62
78
|
~/.config/<product>/ and prints only the path. --print-secret prints it instead.
|
|
@@ -104,6 +120,10 @@ Vendors:
|
|
|
104
120
|
Supabase client itself stays for your database
|
|
105
121
|
auth0 @auth0/auth0-react, @auth0/nextjs-auth0 (v3 and v4), @auth0/auth0-spa-js
|
|
106
122
|
better-auth better-auth (client, server, Next.js handler, cookies)
|
|
123
|
+
openid-client openid-client (Issuer.discover, authorizationUrl, callback, endSessionUrl)
|
|
124
|
+
jose jose used to verify OIDC ID tokens (jwtVerify + createRemoteJWKSet)
|
|
125
|
+
generic-oidc a hand-rolled relying party (discovery, PKCE, code exchange, JWKS) found
|
|
126
|
+
by its code; replaced by oidc.start / oidc.callback / oidc.logoutUrl
|
|
107
127
|
|
|
108
128
|
What it rewrites: imports, providers, hooks, server session helpers, middleware,
|
|
109
129
|
sign-in/out calls and env var names, onto native Atlas APIs and the drop-in
|
|
@@ -181,20 +201,47 @@ agent can search and read the Atlas docs. Servers already in the file are kept.
|
|
|
181
201
|
|
|
182
202
|
No key is written. To also manage your instance from the agent, add
|
|
183
203
|
ATLAS_SECRET_KEY to the server's env yourself.`,
|
|
204
|
+
status: `atlas status — is it Atlas, a service you depend on, or you?
|
|
205
|
+
|
|
206
|
+
Usage:
|
|
207
|
+
atlas status [--json]
|
|
208
|
+
|
|
209
|
+
Shows Atlas's components (with their regions), the open Atlas incidents that
|
|
210
|
+
concern this instance (its status subscription's regions, components and
|
|
211
|
+
minimum impact), the subscription itself, and the state of every upstream
|
|
212
|
+
status page the instance declared (POST /v1/instance/status_dependencies).
|
|
213
|
+
|
|
214
|
+
Exit code 1 when Atlas reports a major outage or an open major / critical
|
|
215
|
+
incident concerns the instance, or an enabled upstream status page reports a
|
|
216
|
+
partial or major outage; 0 otherwise.`,
|
|
184
217
|
referrals: `atlas referrals — referral attribution
|
|
185
218
|
|
|
186
219
|
Usage:
|
|
187
|
-
atlas referrals connect --provider
|
|
188
|
-
[--
|
|
220
|
+
atlas referrals connect --provider referalli --program <prg_…> --base-url <url>
|
|
221
|
+
[--referalli-key-file <path|-> | --referalli-key <rk_…>]
|
|
189
222
|
[--auto-enroll] [--destination <url>] [--tracking-token <token>] [--enable]
|
|
190
223
|
[--no-sync] [--allow-mode-mismatch]
|
|
224
|
+
atlas referrals connect --oauth [--preset <id>] [--enable] (default preset: referalli)
|
|
191
225
|
atlas referrals connect --provider webhook --endpoint <https-url>
|
|
192
226
|
[--secret-file <path|->] [--program <id>] [--auto-enroll] [--enable]
|
|
193
227
|
atlas referrals backfill --since <YYYY-MM-DD> [--map <file.csv>]
|
|
194
228
|
[--metadata-path public_metadata.referral_code] [--wait]
|
|
195
229
|
atlas referrals status
|
|
230
|
+
atlas referrals conformance [--protocol webhook|connection] [--base-url <url>] [--connection-id <id>] --secret-file <path|->
|
|
231
|
+
[--only <case ids or areas>] [--simulate]
|
|
232
|
+
|
|
233
|
+
connect --provider referalli --oauth is one-click: it prints a Referalli link, you choose the
|
|
234
|
+
organization and program there, and Referalli hands Atlas the connection secret directly (nothing to
|
|
235
|
+
copy). It needs no key, --program or --base-url, and waits until the connection appears. Where the
|
|
236
|
+
deployment does not offer it yet, use a key as below.
|
|
196
237
|
|
|
197
|
-
|
|
238
|
+
conformance runs the referral protocol conformance suite (@atlasauth/referral-conformance) against
|
|
239
|
+
any platform (--protocol webhook: the generic Atlas referral protocol; connection: the Referalli dialect): signed calls with the answers a conforming server must give (401 for a bad signature,
|
|
240
|
+
an empty export for an unknown customer, nulls accepted, …). It defaults to the connected Referalli;
|
|
241
|
+
the secret is read from --secret-file because Atlas never shows it. --simulate also sends Atlas's own
|
|
242
|
+
simulated sign-up. It exits 1 on any failed case.
|
|
243
|
+
|
|
244
|
+
connect --provider referalli creates the Atlas connection on Referalli with
|
|
198
245
|
your merchant key (bring your own key: used for this one call, never stored or
|
|
199
246
|
printed), saves the connection id and secret on the instance, and runs a ping.
|
|
200
247
|
It requires v2 signatures on the connection from the start and registers a
|
|
@@ -202,9 +249,10 @@ Referalli webhook that sends referral changes (voided, approved, reassigned…)
|
|
|
202
249
|
back to Atlas; --no-sync skips the webhook. A test key (rk_test_) belongs with a
|
|
203
250
|
development instance and a live key with production: a mismatch is refused
|
|
204
251
|
unless --allow-mode-mismatch. --auto-enroll and --destination are passed to
|
|
205
|
-
Referalli. --enable turns referrals on when the ping passes. Prefer --
|
|
206
|
-
|
|
207
|
-
your shell history.
|
|
252
|
+
Referalli. --enable turns referrals on when the ping passes. Prefer --referalli-key-file (or
|
|
253
|
+
REFERALLI_API_KEY) to --referalli-key: a key on the command line can end up in
|
|
254
|
+
your shell history. The old names (--provider referally, --referally-key-file,
|
|
255
|
+
--referally-key, REFERALLY_*) still work and print a notice.
|
|
208
256
|
|
|
209
257
|
connect --provider webhook points the instance at a platform that speaks the
|
|
210
258
|
Atlas referral protocol. Without --secret-file, a signing secret is generated
|
|
@@ -223,7 +271,40 @@ Usage: atlas login [--profile <name>] [--url <api-url>] [--secret-key <sk_...>]
|
|
|
223
271
|
|
|
224
272
|
Prompts for an API URL and a secret key, validates the key with one Backend
|
|
225
273
|
call, then stores it (0600) under the profile. --url / --secret-key skip the
|
|
226
|
-
prompts for non-interactive setup
|
|
274
|
+
prompts for non-interactive setup.
|
|
275
|
+
|
|
276
|
+
Operator sign-in (no key on disk):
|
|
277
|
+
atlas login --device [--resource <ins_…|app_…>] [--scope "<scopes>"]
|
|
278
|
+
Opens Atlas's sign-in (passkey, multi-factor) with a device code. Only
|
|
279
|
+
short-lived tokens are stored: the operator token, and with --resource a
|
|
280
|
+
one-hour token bound to that instance or app (scope "read" by default).
|
|
281
|
+
Creating apps or instances and minting keys need a multi-factor sign-in
|
|
282
|
+
within the last 5 minutes.
|
|
283
|
+
|
|
284
|
+
An operator token for another product that trusts Atlas operators:
|
|
285
|
+
atlas login --device --audience <id> [--json]
|
|
286
|
+
<id> is one of the audiences GET /v1/operator lists. The token carries
|
|
287
|
+
aud=<id>, auth_time, amr/acr and your verified email; it is printed (for
|
|
288
|
+
that product's own token exchange), never stored, and Atlas refuses it.`,
|
|
289
|
+
token: `atlas token — a one-hour token bound to one instance or app
|
|
290
|
+
|
|
291
|
+
Usage: atlas token --resource <ins_…|app_…|acct_…> [--scope "<scopes>"] [--json]
|
|
292
|
+
|
|
293
|
+
Swaps your operator sign-in (atlas login --device) for an Atlas token (RFC 8693
|
|
294
|
+
token exchange). "read" = every read scope.`,
|
|
295
|
+
keys: `atlas keys — the instance's secret keys
|
|
296
|
+
|
|
297
|
+
Usage:
|
|
298
|
+
atlas keys whoami What the current key is and can do
|
|
299
|
+
atlas keys list Every credential on the instance
|
|
300
|
+
atlas keys create --scopes "<scopes>" [--name n] [--owner o] [--expires-at <ISO>] [--allowed-ips <cidr,…>] [--out <file>]
|
|
301
|
+
atlas keys rotate <id> [--overlap <seconds>] [--out <file>]
|
|
302
|
+
atlas keys revoke <id>
|
|
303
|
+
atlas keys revoke-leaked [<secret>] Revoke a leaked Atlas credential (no login needed)
|
|
304
|
+
|
|
305
|
+
New secrets come back sealed to a key pair made on this machine and are
|
|
306
|
+
written to a 0600 file (default .atlas/secret-key-<id>.env); --print-secret
|
|
307
|
+
prints them instead.`,
|
|
227
308
|
logout: `atlas logout — remove a stored profile credential
|
|
228
309
|
|
|
229
310
|
Usage: atlas logout [--profile <name>]`,
|
|
@@ -255,8 +336,93 @@ Usage:
|
|
|
255
336
|
Usage:
|
|
256
337
|
atlas webhooks list [--json]
|
|
257
338
|
atlas webhooks create --url <https-url> [--events a,b] [--product <name>] [--print-secret] [--json]
|
|
339
|
+
atlas webhooks upsert --url <https-url> [--events a,b] one endpoint per URL; idempotent
|
|
340
|
+
atlas webhooks update <id> [--url <u>] [--events a,b] [--active | --inactive]
|
|
341
|
+
atlas webhooks test <id> [--timeout 10s] [--no-wait] [--json]
|
|
342
|
+
atlas webhooks deliveries <id> [--status failed] [--event-type user.created]
|
|
343
|
+
[--since <iso|2h|7d>] [--until <iso>] [--limit <n>] [--starting-after <id>] [--json]
|
|
344
|
+
atlas webhooks redeliver <id> --delivery <delivery-id>
|
|
345
|
+
atlas webhooks redeliver <id> --since <iso|2h|7d> [--until <iso>] [--status failed]
|
|
346
|
+
atlas webhooks replay <id> [--since failing_since] re-send what a disabled endpoint missed
|
|
347
|
+
atlas webhooks rotate <id> [--now | --overlap <seconds>]
|
|
348
|
+
atlas webhooks reveal <id>
|
|
349
|
+
|
|
350
|
+
create, upsert, rotate and reveal write the signing secret to a 0600 file and
|
|
351
|
+
print only its path (--print-secret prints it instead; --force replaces a file).
|
|
352
|
+
test sends a signed webhook.test event and waits for your endpoint's answer;
|
|
353
|
+
the exit code is 1 when it did not answer 2xx. rotate --overlap keeps the old
|
|
354
|
+
secret signing alongside the new one for that many seconds.`,
|
|
355
|
+
listen: `atlas listen — forward live events to your local server
|
|
356
|
+
|
|
357
|
+
Usage:
|
|
358
|
+
atlas listen --forward-to <url> [--events user.*,session.created] [--count <n>] [--timeout <dur>] [--json]
|
|
359
|
+
atlas listen --no-forward [--events ...] only print events
|
|
360
|
+
|
|
361
|
+
Opens a signed event stream from your instance and POSTs each event to
|
|
362
|
+
--forward-to with the same atlas-id, atlas-timestamp and atlas-signature headers a
|
|
363
|
+
real delivery carries, then prints the status your server returned. No tunnel
|
|
364
|
+
and no second endpoint. The signing secret belongs to this session only and is
|
|
365
|
+
written to a 0600 file (webhook-listen.env): point your verifier at it. --events
|
|
366
|
+
takes names or patterns (user.*, *.created). The session lasts up to an hour;
|
|
367
|
+
Ctrl-C stops it. --count n exits after n events (exit 1 if any forward failed).`,
|
|
368
|
+
'move-origin': `atlas move-origin — move an app to a new domain
|
|
369
|
+
|
|
370
|
+
Usage: atlas move-origin --from <origin> --to <origin> [--dry-run] [--yes] [--json]
|
|
371
|
+
|
|
372
|
+
Rewrites every field that points at the old origin: allowed origins, branding
|
|
373
|
+
links, OAuth client redirect and logout URIs, webhook URLs, the redirect-URL
|
|
374
|
+
allowlist and your Sign in with Atlas apps. Shows the before and after of every
|
|
375
|
+
field first and asks before writing (--yes skips the question). After a real
|
|
376
|
+
move it sends a signed test delivery to each webhook endpoint that moved.
|
|
377
|
+
--dry-run prints the diff and writes nothing; running it twice changes nothing.`,
|
|
378
|
+
csp: `atlas csp — the Content Security Policy sources Atlas needs
|
|
379
|
+
|
|
380
|
+
Usage: atlas csp [--framework next|express|nginx] [--shape redirect|panel|button]
|
|
381
|
+
[--instance <id> | --product <name> [--instance-env <env>]] [--origin <url>]
|
|
382
|
+
[--manifest <url|file>]... [--no-atlas] [--json]
|
|
383
|
+
|
|
384
|
+
Reads your instance's embed manifest (including a custom Frontend API host) and
|
|
385
|
+
prints the script-src, connect-src, img-src and frame-src sources for your
|
|
386
|
+
setup, as a next.config.ts headers() block, a helmet() config or an nginx
|
|
387
|
+
add_header line. Read-only. --shape redirect (hosted sign-in) needs none.
|
|
388
|
+
With --origin, warns when that origin is not one of the instance's allowed origins.
|
|
389
|
+
|
|
390
|
+
Any provider that publishes the open embed-manifest format ({surfaces:{name:{csp:{directive:[sources]}}}},
|
|
391
|
+
usually at /.well-known/atlas-embed.json) can be merged in with --manifest <url|file>
|
|
392
|
+
(repeatable): a consent platform, chat widget, captcha or analytics vendor. --no-atlas
|
|
393
|
+
skips the Atlas instance and uses only the manifests you list.`,
|
|
394
|
+
'partner-platforms': `atlas partner-platforms — this instance as a partner platform of another product
|
|
395
|
+
|
|
396
|
+
Usage:
|
|
397
|
+
atlas partner-platforms list [--json]
|
|
398
|
+
atlas partner-platforms get <partner>
|
|
399
|
+
atlas partner-platforms set <partner> [--platform-id <id>] [--jwks-url <url>] [--signature-header <name>]
|
|
400
|
+
[--allowed-source <site id>]... [--disable] [--json]
|
|
401
|
+
atlas partner-platforms registration <partner> [--json]
|
|
402
|
+
atlas partner-platforms token <partner> --token-file <path|-> [--rotate] [--base-url <partner api>]
|
|
403
|
+
atlas partner-platforms deliveries <partner> [--limit <n>] [--json]
|
|
404
|
+
atlas partner-platforms remove <partner> [--json]
|
|
405
|
+
|
|
406
|
+
<partner> is a preset (cookiemunch) or your own id (then --platform-id, --jwks-url
|
|
407
|
+
and --signature-header are required). "registration" prints what to send the
|
|
408
|
+
partner; the partner registers the receiver and hands back a partner token once.
|
|
409
|
+
"token" stores it encrypted (from a file, stdin with -, or ATLAS_PARTNER_TOKEN);
|
|
410
|
+
it is never printed or shown again.`,
|
|
411
|
+
integrations: `atlas integrations — identity integrations (presets and custom)
|
|
258
412
|
|
|
259
|
-
|
|
413
|
+
Usage:
|
|
414
|
+
atlas integrations list [--json]
|
|
415
|
+
atlas integrations get <id>
|
|
416
|
+
atlas integrations set <id> --audience <aud> [--name <n>] [--events-url <url|none>]
|
|
417
|
+
[--backchannel-logout-url <url|none>] [--oauth-client-id <client_id|none>]
|
|
418
|
+
[--disable] [--dry-run] [--json]
|
|
419
|
+
atlas integrations remove <id> [--json]
|
|
420
|
+
atlas integrations deliveries <id> [--trace <id>] [--json]
|
|
421
|
+
|
|
422
|
+
<id> is a preset (chatly, forumulate, cookiemunch, referalli) or your own id.
|
|
423
|
+
--oauth-client-id names the first-party OAuth client the service signs users in
|
|
424
|
+
with: while no --backchannel-logout-url is set, its backchannel_logout_uri is the
|
|
425
|
+
integration's back-channel receiver.`,
|
|
260
426
|
init: `atlas init — create or complete an app's setup, idempotently
|
|
261
427
|
|
|
262
428
|
Usage:
|
|
@@ -266,13 +432,16 @@ Usage:
|
|
|
266
432
|
[--email managed|development|none] [--email-from <address>]
|
|
267
433
|
[--email-provider resend|brevo --email-key-file <path|->]
|
|
268
434
|
[--client-redirect <url>]... [--webhook-url <url>]
|
|
435
|
+
[--backchannel <url>]
|
|
269
436
|
[--yes] [--force] [--rotate-secret] [--json]
|
|
270
437
|
|
|
271
438
|
Needs a platform key (ATLAS_PLATFORM_KEY, or a psk_ profile from atlas login).
|
|
272
439
|
Finds the app by name and environment, or creates it, then sets strategies, the
|
|
273
440
|
email sender, the custom domain (auth.<domain> unless --auth-host; prints the
|
|
274
441
|
CNAME), a first-party OAuth client and a webhook. Re-running only fills what is
|
|
275
|
-
missing.
|
|
442
|
+
missing. --backchannel <url> sets the client's back-channel logout URI (your
|
|
443
|
+
route that ends the app session when Atlas ends one; @atlasauth/backend has
|
|
444
|
+
ready-made handlers).
|
|
276
445
|
|
|
277
446
|
Email always goes through YOUR provider account (Atlas lends none):
|
|
278
447
|
managed Atlas sets your domain up on your Resend or Brevo account and
|
|
@@ -293,14 +462,26 @@ Usage: atlas preflight [--instance <id> | --product <name> [--instance-env <env>
|
|
|
293
462
|
|
|
294
463
|
Prints every finding (severity, code, message, fix). Exits 1 when there is an
|
|
295
464
|
error, or with --fail-on warning also on a warning.`,
|
|
465
|
+
doctor: `atlas doctor — integration health (a CI / deploy gate)
|
|
466
|
+
|
|
467
|
+
Usage: atlas doctor [--instance <id> | --product <name> [--instance-env <env>]]
|
|
468
|
+
[--only <source,...>] [--no-probe] [--json]
|
|
469
|
+
|
|
470
|
+
Prints every check: setup findings, webhook receivers (with the failing hop:
|
|
471
|
+
dns, tls, http, challenge or auth), back-channel logout, the referral
|
|
472
|
+
platform, email, the consent manager and SDK versions. Exits 1 when a check
|
|
473
|
+
fails. --no-probe uses recorded deliveries only (no live calls).`,
|
|
296
474
|
env: `atlas env — print deploy variables without secrets
|
|
297
475
|
|
|
298
|
-
Usage: atlas env --product <name> [--instance-env <env>] [--format dotenv|coolify|vercel] [--json]
|
|
476
|
+
Usage: atlas env [--product <name> [--instance-env <env>]] [--format dotenv|coolify|vercel|k8s] [--json]
|
|
299
477
|
|
|
300
478
|
Public values (publishable key, Frontend API, issuer, discovery and JWKS URLs,
|
|
301
479
|
OAuth client id) are printed as-is. Secrets are printed as references to their
|
|
302
480
|
0600 files: *_FILE=<path> (dotenv), KEY=@<path> (coolify), or a vercel env add
|
|
303
|
-
command that pipes the value from the file (vercel)
|
|
481
|
+
command that pipes the value from the file (vercel). k8s prints a ConfigMap plus
|
|
482
|
+
kubectl create secret commands that read each file. Without --product it reads
|
|
483
|
+
the public values from the instance your key belongs to (no secret references).
|
|
484
|
+
Both ATLAS_API_BASE and ATLAS_API_URL are printed.`,
|
|
304
485
|
client: `atlas client — OAuth clients
|
|
305
486
|
|
|
306
487
|
Usage: atlas client rotate <client-id> [--now | --overlap <seconds>]
|
|
@@ -319,6 +500,7 @@ Usage:
|
|
|
319
500
|
Usage:
|
|
320
501
|
atlas config export [--dir <path>] [--format json|yaml]
|
|
321
502
|
atlas config import [--dir <path>] [--format json|yaml] [--dry-run] [--prune]
|
|
503
|
+
atlas config plan [--dir <path>] [--format json|yaml] [--prune] [--exit-code] [--json]
|
|
322
504
|
|
|
323
505
|
export Read the instance's current config (instance/auth config, OAuth clients
|
|
324
506
|
and providers, SSO connections, resource servers, JWT templates, roles,
|
|
@@ -333,6 +515,10 @@ import Diff the directory against live config and apply creates/updates
|
|
|
333
515
|
--dir config directory (default: ./atlas-config)
|
|
334
516
|
--format json (default) or yaml
|
|
335
517
|
|
|
518
|
+
plan A Terraform-style, read-only diff of the directory against the live
|
|
519
|
+
instance: field-by-field before -> after for updates. --exit-code exits 2
|
|
520
|
+
when there is drift (for CI); --json for tooling.
|
|
521
|
+
|
|
336
522
|
Secrets never live on disk. Inject a credential at import with a \${ENV_VAR}
|
|
337
523
|
placeholder in a file (e.g. a provider "client_secret": "\${GOOGLE_SECRET}").`,
|
|
338
524
|
actions: `atlas actions — manage Actions (tenant code run in the auth pipeline)
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEU,QAAA,QAAQ,GAAG
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEU,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDAuEgC,CAAC;AAEzD,oDAAoD;AACvC,QAAA,YAAY,GAA2B;IAClD,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAyDmC;IAC5C,IAAI,EAAE;;;;;;;;;;gEAUwD;IAC9D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2EAmCiE;IACzE,GAAG,EAAE;;;;;;;;;;;;;;;+CAewC;IAC7C,MAAM,EAAE;;;;;;;;;;;;sCAY4B;IACpC,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yEAkD4D;IAEvE,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;wEAoB+D;IAEtE,KAAK,EAAE;;;;;4CAKmC;IAE1C,IAAI,EAAE;;;;;;;;;;;;qBAYa;IAEnB,MAAM,EAAE;;uCAE6B;IAErC,MAAM,EAAE;;gDAEsC;IAE9C,KAAK,EAAE;;;;;;wCAM+B;IAEtC,IAAI,EAAE;;;;;uCAK+B;IAErC,UAAU,EAAE;;;;;;8CAMgC;IAE5C,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;4DAoBgD;IAC1D,MAAM,EAAE;;;;;;;;;;;;gFAYsE;IAC9E,aAAa,EAAE;;;;;;;;;gFAS+D;IAC9E,GAAG,EAAE;;;;;;;;;;;;;;;+DAewD;IAE7D,mBAAmB,EAAE;;;;;;;;;;;;;;;;oCAgBa;IAElC,YAAY,EAAE;;;;;;;;;;;;;;qCAcqB;IAEnC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yEA+BiE;IAEvE,SAAS,EAAE;;;;;;oDAMuC;IAElD,MAAM,EAAE;;;;;;;;iEAQuD;IAE/D,GAAG,EAAE;;;;;;;;;;mDAU4C;IAEjD,MAAM,EAAE;;;;;;;;wDAQ8C;IAEtD,QAAQ,EAAE;;;8CAGkC;IAE5C,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;8EAyBoE;IAC5E,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;qEA0B0D;CACpE,CAAC"}
|
package/dist/run.js
CHANGED
|
@@ -6,18 +6,25 @@ const args_1 = require("./args");
|
|
|
6
6
|
const actions_1 = require("./commands/actions");
|
|
7
7
|
const api_keys_1 = require("./commands/api-keys");
|
|
8
8
|
const auth_1 = require("./commands/auth");
|
|
9
|
+
const operator_1 = require("./commands/operator");
|
|
9
10
|
const config_1 = require("./commands/config");
|
|
10
11
|
const init_1 = require("./commands/init");
|
|
11
12
|
const import_1 = require("./commands/import");
|
|
12
13
|
const info_1 = require("./commands/info");
|
|
14
|
+
const csp_1 = require("./commands/csp");
|
|
15
|
+
const listen_1 = require("./commands/listen");
|
|
13
16
|
const migrate_1 = require("./commands/migrate");
|
|
17
|
+
const move_origin_1 = require("./commands/move-origin");
|
|
14
18
|
const mcp_1 = require("./commands/mcp");
|
|
15
19
|
const project_commands_1 = require("./commands/project-commands");
|
|
16
20
|
const orgs_1 = require("./commands/orgs");
|
|
17
21
|
const referrals_1 = require("./commands/referrals");
|
|
18
22
|
const sessions_1 = require("./commands/sessions");
|
|
23
|
+
const status_1 = require("./commands/status");
|
|
19
24
|
const users_1 = require("./commands/users");
|
|
20
25
|
const webhooks_1 = require("./commands/webhooks");
|
|
26
|
+
const integrations_1 = require("./commands/integrations");
|
|
27
|
+
const partner_platforms_1 = require("./commands/partner-platforms");
|
|
21
28
|
const errors_1 = require("./errors");
|
|
22
29
|
const help_1 = require("./help");
|
|
23
30
|
const version_1 = require("./version");
|
|
@@ -26,22 +33,31 @@ const COMMANDS = {
|
|
|
26
33
|
login: auth_1.login,
|
|
27
34
|
logout: auth_1.logout,
|
|
28
35
|
whoami: auth_1.whoami,
|
|
36
|
+
token: operator_1.token,
|
|
37
|
+
keys: operator_1.keys,
|
|
29
38
|
users: users_1.users,
|
|
30
39
|
orgs: orgs_1.orgs,
|
|
31
40
|
'api-keys': api_keys_1.apiKeys,
|
|
32
41
|
webhooks: webhooks_1.webhooks,
|
|
42
|
+
integrations: integrations_1.integrations,
|
|
43
|
+
'partner-platforms': partner_platforms_1.partnerPlatforms,
|
|
33
44
|
sessions: sessions_1.sessions,
|
|
34
45
|
config: config_1.config,
|
|
35
46
|
actions: actions_1.actions,
|
|
36
47
|
init: init_1.init,
|
|
37
48
|
preflight: project_commands_1.preflight,
|
|
49
|
+
doctor: project_commands_1.doctor,
|
|
38
50
|
env: project_commands_1.envCommand,
|
|
39
51
|
client: project_commands_1.client,
|
|
40
52
|
referrals: referrals_1.referrals,
|
|
53
|
+
status: status_1.status,
|
|
41
54
|
import: import_1.importUsers,
|
|
42
55
|
migrate: migrate_1.migrate,
|
|
43
56
|
info: info_1.info,
|
|
44
57
|
mcp: mcp_1.mcp,
|
|
58
|
+
listen: listen_1.listen,
|
|
59
|
+
'move-origin': move_origin_1.moveOrigin,
|
|
60
|
+
csp: csp_1.csp,
|
|
45
61
|
};
|
|
46
62
|
/**
|
|
47
63
|
* The CLI's whole control flow, as a pure function of (argv, context) → exit
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlasauth/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "atlas — manage an Atlas instance from the terminal via the Backend API.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"atlas": "dist/cli.js"
|
|
@@ -16,8 +16,9 @@
|
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@atlasauth/actions": "0.3.0",
|
|
19
|
-
"@atlasauth/backend": "0.
|
|
20
|
-
"@atlasauth/
|
|
19
|
+
"@atlasauth/backend": "0.21.0",
|
|
20
|
+
"@atlasauth/referral-conformance": "0.1.0",
|
|
21
|
+
"@atlasauth/upgrade": "0.4.0"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
23
24
|
"@types/node": "^22.9.0",
|
|
@@ -29,6 +30,7 @@
|
|
|
29
30
|
},
|
|
30
31
|
"files": [
|
|
31
32
|
"dist",
|
|
33
|
+
"!dist/*.tsbuildinfo",
|
|
32
34
|
"README.md",
|
|
33
35
|
"CHANGELOG.md"
|
|
34
36
|
],
|