@atlasauth/cli 0.7.0 → 0.9.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 +36 -0
- package/dist/args.d.ts +155 -0
- package/dist/args.js +66 -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 +56 -1
- package/dist/commands/config.js +188 -29
- 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/import-better-auth.d.ts +3 -0
- package/dist/commands/import-better-auth.js +164 -0
- package/dist/commands/import-better-auth.js.map +1 -0
- package/dist/commands/import.js +7 -0
- package/dist/commands/import.js.map +1 -1
- 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/migrate.js +40 -1
- package/dist/commands/migrate.js.map +1 -1
- 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 +198 -0
- package/dist/commands/operator.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 +13 -0
- package/dist/context.js.map +1 -1
- package/dist/help.d.ts +1 -1
- package/dist/help.js +221 -17
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/migrate/better-auth/integration.d.ts +59 -0
- package/dist/migrate/better-auth/integration.js +81 -0
- package/dist/migrate/better-auth/integration.js.map +1 -0
- package/dist/migrate/better-auth/orchestrator.d.ts +43 -0
- package/dist/migrate/better-auth/orchestrator.js +525 -0
- package/dist/migrate/better-auth/orchestrator.js.map +1 -0
- package/dist/migrate/better-auth/output.d.ts +20 -0
- package/dist/migrate/better-auth/output.js +146 -0
- package/dist/migrate/better-auth/output.js.map +1 -0
- package/dist/migrate/better-auth/translate.d.ts +77 -0
- package/dist/migrate/better-auth/translate.js +1989 -0
- package/dist/migrate/better-auth/translate.js.map +1 -0
- package/dist/run.js +14 -0
- package/dist/run.js.map +1 -1
- package/package.json +5 -4
package/dist/commands/shared.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.envApiUrl = envApiUrl;
|
|
3
4
|
exports.resolveAuth = resolveAuth;
|
|
4
5
|
exports.requireClient = requireClient;
|
|
5
6
|
exports.wantsJson = wantsJson;
|
|
@@ -8,6 +9,14 @@ exports.maskSecret = maskSecret;
|
|
|
8
9
|
const backend_1 = require("@atlasauth/backend");
|
|
9
10
|
const args_1 = require("../args");
|
|
10
11
|
const errors_1 = require("../errors");
|
|
12
|
+
/**
|
|
13
|
+
* The API base from the environment. `ATLAS_API_BASE` (the name the guides, the
|
|
14
|
+
* backend SDK and the generated env files use) and `ATLAS_API_URL` (the CLI's
|
|
15
|
+
* original name) are both accepted; the first one set wins.
|
|
16
|
+
*/
|
|
17
|
+
function envApiUrl(env) {
|
|
18
|
+
return env.ATLAS_API_BASE?.trim() || env.ATLAS_API_URL?.trim() || undefined;
|
|
19
|
+
}
|
|
11
20
|
/**
|
|
12
21
|
* Resolve which credential to use, with env overrides winning over the stored
|
|
13
22
|
* profile — the same precedence `auth0-cli` and most cloud CLIs use, so a CI
|
|
@@ -25,7 +34,7 @@ function resolveAuth(ctx, values) {
|
|
|
25
34
|
((0, args_1.str)(values, 'profile') ? ` --profile ${profile}` : '') +
|
|
26
35
|
' or set ATLAS_SECRET_KEY.');
|
|
27
36
|
}
|
|
28
|
-
const envUrl = ctx.env
|
|
37
|
+
const envUrl = envApiUrl(ctx.env);
|
|
29
38
|
const apiUrl = envUrl || stored?.api_url || backend_1.DEFAULT_API_URL;
|
|
30
39
|
return {
|
|
31
40
|
profile,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":";;AAuBA,8BAEC;AAQD,kCAyBC;AAGD,sCAMC;AAGD,8BAEC;AAGD,gCAIC;AAGD,gCAGC;AArFD,gDAAqD;AACrD,kCAA2C;AAE3C,sCAAqC;AAerC;;;;GAIG;AACH,SAAgB,SAAS,CAAC,GAAsB;IAC9C,OAAO,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,GAAe,EAAE,MAAc;IACzD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAA,UAAG,EAAC,MAAM,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,UAAU,CAAC;IAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,iBAAQ,CAChB,2BAA2B,OAAO,uBAAuB;YACvD,CAAC,IAAA,UAAG,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,2BAA2B,CAC9B,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,IAAI,MAAM,EAAE,OAAO,IAAI,yBAAe,CAAC;IAE5D,OAAO;QACL,OAAO;QACP,MAAM;QACN,SAAS;QACT,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;QACpC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACnE,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAgB,aAAa,CAAC,GAAe,EAAE,MAAc;IAI3D,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAC9F,CAAC;AAED,qCAAqC;AACrC,SAAgB,SAAS,CAAC,MAAc;IACtC,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED,sFAAsF;AACtF,SAAgB,UAAU,CAAC,WAAqB,EAAE,KAAa,EAAE,IAAY;IAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,iBAAQ,CAAC,+BAA+B,IAAI,IAAI,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kFAAkF;AAClF,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IACpC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.status = status;
|
|
4
|
+
const output_1 = require("../output");
|
|
5
|
+
const project_1 = require("../project");
|
|
6
|
+
const project_commands_1 = require("./project-commands");
|
|
7
|
+
const shared_1 = require("./shared");
|
|
8
|
+
/**
|
|
9
|
+
* `atlas status`: "is it Atlas, a service we depend on, or us?" in one look.
|
|
10
|
+
* Atlas's own components and the open incidents that concern this instance,
|
|
11
|
+
* the instance's incident subscription, and the state of every upstream status
|
|
12
|
+
* page it declared. Exits 1 when Atlas or an enabled dependency reports a
|
|
13
|
+
* partial or major outage, so a script can branch on it.
|
|
14
|
+
*/
|
|
15
|
+
const OUTAGE = new Set(['partial_outage', 'major_outage']);
|
|
16
|
+
const COMPONENT_COLUMNS = [
|
|
17
|
+
{ header: 'COMPONENT', get: (c) => c.id },
|
|
18
|
+
{ header: 'STATUS', get: (c) => c.status },
|
|
19
|
+
{ header: 'REGIONS', get: (c) => c.regions },
|
|
20
|
+
];
|
|
21
|
+
const INCIDENT_COLUMNS = [
|
|
22
|
+
{ header: 'INCIDENT', get: (i) => i.id },
|
|
23
|
+
{ header: 'STATUS', get: (i) => i.status },
|
|
24
|
+
{ header: 'IMPACT', get: (i) => (i.kind === 'maintenance' ? 'maintenance' : i.impact) },
|
|
25
|
+
{ header: 'REGIONS', get: (i) => (i.regions.length ? i.regions : 'all') },
|
|
26
|
+
{ header: 'TITLE', get: (i) => i.title },
|
|
27
|
+
];
|
|
28
|
+
const DEPENDENCY_COLUMNS = [
|
|
29
|
+
{ header: 'DEPENDENCY', get: (d) => d.name },
|
|
30
|
+
{ header: 'STATE', get: (d) => (d.enabled ? `${d.state}${d.stale ? ' (stale)' : ''}` : 'disabled') },
|
|
31
|
+
{ header: 'URL', get: (d) => d.url },
|
|
32
|
+
{ header: 'LAST ERROR', get: (d) => d.last_error ?? '' },
|
|
33
|
+
];
|
|
34
|
+
function subscriptionLine(s) {
|
|
35
|
+
if (!s.subscribed)
|
|
36
|
+
return 'Subscription: none (no incident notifications; set one up in the dashboard under Instance health, Status & upstream)';
|
|
37
|
+
if (!s.enabled)
|
|
38
|
+
return 'Subscription: disabled';
|
|
39
|
+
const regions = s.regions.length ? s.regions.join(', ') : 'all regions';
|
|
40
|
+
const components = s.component_ids.length ? s.component_ids.join(', ') : 'all components';
|
|
41
|
+
const channels = [s.email_owners ? 'email' : null, s.webhook ? 'webhook' : null, 'rss'].filter(Boolean).join(', ');
|
|
42
|
+
return `Subscription: ${regions}; ${components}; impact ≥ ${s.min_impact}${s.include_maintenance ? ' + maintenance' : ''} (${channels})`;
|
|
43
|
+
}
|
|
44
|
+
async function status(ctx, args) {
|
|
45
|
+
const http = (0, project_1.httpFor)(ctx, (0, project_commands_1.instanceCredential)(ctx, args));
|
|
46
|
+
const [service, subscription, incidents, dependencies] = await Promise.all([
|
|
47
|
+
http.get('/v1/status'),
|
|
48
|
+
http.get('/v1/instance/status_subscription'),
|
|
49
|
+
http.get('/v1/instance/status_incidents?open=true'),
|
|
50
|
+
http.get('/v1/instance/status_dependencies'),
|
|
51
|
+
]);
|
|
52
|
+
const atlasDown = service.status === 'major_outage' || (incidents.data ?? []).some((i) => i.kind === 'incident' && (i.impact === 'major' || i.impact === 'critical'));
|
|
53
|
+
const upstreamDown = (dependencies.data ?? []).some((d) => d.enabled && OUTAGE.has(d.state));
|
|
54
|
+
const code = atlasDown || upstreamDown ? 1 : 0;
|
|
55
|
+
if ((0, shared_1.wantsJson)(args.values)) {
|
|
56
|
+
(0, output_1.printJson)(ctx.io, { service, subscription, incidents: incidents.data ?? [], dependencies: dependencies.data ?? [], dependencies_state: dependencies.state });
|
|
57
|
+
return code;
|
|
58
|
+
}
|
|
59
|
+
ctx.io.out(`Atlas: ${service.status}`);
|
|
60
|
+
ctx.io.out(subscriptionLine(subscription));
|
|
61
|
+
ctx.io.out('');
|
|
62
|
+
ctx.io.out((0, output_1.renderTable)(COMPONENT_COLUMNS, service.components ?? []));
|
|
63
|
+
ctx.io.out('');
|
|
64
|
+
if ((incidents.data ?? []).length === 0)
|
|
65
|
+
ctx.io.out('No open Atlas incidents concern this instance.');
|
|
66
|
+
else
|
|
67
|
+
ctx.io.out((0, output_1.renderTable)(INCIDENT_COLUMNS, incidents.data));
|
|
68
|
+
ctx.io.out('');
|
|
69
|
+
if ((dependencies.data ?? []).length === 0)
|
|
70
|
+
ctx.io.out('No upstream status pages declared (POST /v1/instance/status_dependencies).');
|
|
71
|
+
else {
|
|
72
|
+
ctx.io.out(`Upstream: ${dependencies.state}`);
|
|
73
|
+
ctx.io.out((0, output_1.renderTable)(DEPENDENCY_COLUMNS, dependencies.data));
|
|
74
|
+
}
|
|
75
|
+
return code;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,34 @@
|
|
|
1
1
|
import { type ParsedArgs } from '../args';
|
|
2
2
|
import type { RunContext } from '../context';
|
|
3
|
+
/** One row of `GET /v1/webhook_endpoints/:id/deliveries` (and the inline result of a synchronous test). */
|
|
4
|
+
export interface Delivery {
|
|
5
|
+
id: string;
|
|
6
|
+
delivery_id?: string;
|
|
7
|
+
event_id?: string;
|
|
8
|
+
event_type?: string | null;
|
|
9
|
+
attempt_number?: number;
|
|
10
|
+
status?: string;
|
|
11
|
+
http_status?: number | null;
|
|
12
|
+
latency_ms?: number | null;
|
|
13
|
+
error?: string | null;
|
|
14
|
+
response_snippet?: string | null;
|
|
15
|
+
signature_header_sent?: string | null;
|
|
16
|
+
next_retry_at?: number | null;
|
|
17
|
+
delivered_at?: number | null;
|
|
18
|
+
created_at?: number;
|
|
19
|
+
}
|
|
20
|
+
/** `10s`, `500ms`, `2m` or a bare number of seconds → milliseconds. */
|
|
21
|
+
export declare function parseDuration(raw: string, flag: string): number;
|
|
3
22
|
/**
|
|
4
|
-
* `
|
|
5
|
-
*
|
|
23
|
+
* A `--since` / `--until` value as the ISO timestamp the API takes: an ISO date
|
|
24
|
+
* or datetime passes through, `2h` / `7d` mean "that long ago", and the
|
|
25
|
+
* keyword `failing_since` is left for the server to resolve.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseWhen(raw: string, flag: string, now?: number): string;
|
|
28
|
+
/**
|
|
29
|
+
* `atlas webhooks list | create | upsert | update | test | deliveries |
|
|
30
|
+
* redeliver | replay | rotate | reveal`. Every signing secret (create, upsert,
|
|
31
|
+
* rotate, reveal) goes to a 0600 file, never to the terminal unless
|
|
32
|
+
* --print-secret.
|
|
6
33
|
*/
|
|
7
34
|
export declare function webhooks(ctx: RunContext, args: ParsedArgs): Promise<number>;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseDuration = parseDuration;
|
|
4
|
+
exports.parseWhen = parseWhen;
|
|
3
5
|
exports.webhooks = webhooks;
|
|
4
6
|
const args_1 = require("../args");
|
|
5
7
|
const errors_1 = require("../errors");
|
|
@@ -14,16 +16,80 @@ const COLUMNS = [
|
|
|
14
16
|
{ header: 'EVENTS', get: (w) => w.enabled_events },
|
|
15
17
|
{ header: 'CREATED', get: (w) => (0, output_1.fmtTime)(w.created_at) },
|
|
16
18
|
];
|
|
19
|
+
const DELIVERY_COLUMNS = [
|
|
20
|
+
{ header: 'ID', get: (d) => d.id },
|
|
21
|
+
{ header: 'EVENT', get: (d) => d.event_type },
|
|
22
|
+
{ header: 'STATUS', get: (d) => d.status },
|
|
23
|
+
{ header: 'HTTP', get: (d) => d.http_status },
|
|
24
|
+
{ header: 'ATTEMPT', get: (d) => d.attempt_number },
|
|
25
|
+
{ header: 'ERROR', get: (d) => d.error },
|
|
26
|
+
{ header: 'CREATED', get: (d) => (0, output_1.fmtTime)(d.created_at) },
|
|
27
|
+
];
|
|
28
|
+
/** Delivery states that mean the attempt is over. */
|
|
29
|
+
const SETTLED = new Set(['delivered', 'succeeded', 'failed', 'exhausted', 'dead']);
|
|
30
|
+
/** `10s`, `500ms`, `2m` or a bare number of seconds → milliseconds. */
|
|
31
|
+
function parseDuration(raw, flag) {
|
|
32
|
+
const m = /^(\d+(?:\.\d+)?)(ms|s|m|h|d)?$/.exec(raw.trim());
|
|
33
|
+
if (!m)
|
|
34
|
+
throw new errors_1.CliError(`${flag} must be a duration like 10s, 2m, 1h or 7d (got '${raw}').`);
|
|
35
|
+
const unit = { ms: 1, s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 }[(m[2] ?? 's')];
|
|
36
|
+
return Math.round(Number(m[1]) * unit);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A `--since` / `--until` value as the ISO timestamp the API takes: an ISO date
|
|
40
|
+
* or datetime passes through, `2h` / `7d` mean "that long ago", and the
|
|
41
|
+
* keyword `failing_since` is left for the server to resolve.
|
|
42
|
+
*/
|
|
43
|
+
function parseWhen(raw, flag, now = Date.now()) {
|
|
44
|
+
if (raw === 'failing_since')
|
|
45
|
+
return raw;
|
|
46
|
+
if (/^\d+(\.\d+)?(ms|s|m|h|d)$/.test(raw))
|
|
47
|
+
return new Date(now - parseDuration(raw, flag)).toISOString();
|
|
48
|
+
const t = Date.parse(raw);
|
|
49
|
+
if (Number.isNaN(t))
|
|
50
|
+
throw new errors_1.CliError(`${flag} must be an ISO date (2026-10-01T00:00:00Z) or a relative time like 2h or 7d (got '${raw}').`);
|
|
51
|
+
return new Date(t).toISOString();
|
|
52
|
+
}
|
|
53
|
+
const endpointPath = (id) => `/v1/webhook_endpoints/${encodeURIComponent(id)}`;
|
|
54
|
+
function query(params) {
|
|
55
|
+
const q = new URLSearchParams();
|
|
56
|
+
for (const [k, v] of Object.entries(params))
|
|
57
|
+
if (v !== undefined)
|
|
58
|
+
q.set(k, v);
|
|
59
|
+
const text = q.toString();
|
|
60
|
+
return text ? `?${text}` : '';
|
|
61
|
+
}
|
|
17
62
|
/**
|
|
18
|
-
* `atlas webhooks list | create
|
|
19
|
-
*
|
|
63
|
+
* `atlas webhooks list | create | upsert | update | test | deliveries |
|
|
64
|
+
* redeliver | replay | rotate | reveal`. Every signing secret (create, upsert,
|
|
65
|
+
* rotate, reveal) goes to a 0600 file, never to the terminal unless
|
|
66
|
+
* --print-secret.
|
|
20
67
|
*/
|
|
21
68
|
async function webhooks(ctx, args) {
|
|
22
69
|
const sub = args.positionals[1];
|
|
23
70
|
const json = (0, shared_1.wantsJson)(args.values);
|
|
71
|
+
const v = args.values;
|
|
72
|
+
const deliver = (endpointId, secret, label, comment, replace = false) => {
|
|
73
|
+
const io = json ? { out: () => undefined, err: ctx.io.err } : ctx.io;
|
|
74
|
+
return ((0, secrets_1.deliverSecret)({
|
|
75
|
+
io,
|
|
76
|
+
env: ctx.env,
|
|
77
|
+
product: (0, args_1.str)(v, 'product') ?? 'atlasauth',
|
|
78
|
+
fileName: `webhook-${endpointId}.env`,
|
|
79
|
+
entries: { ATLAS_WEBHOOK_SECRET: secret },
|
|
80
|
+
label,
|
|
81
|
+
printSecret: v['print-secret'] === true,
|
|
82
|
+
force: v.force === true || replace,
|
|
83
|
+
comment,
|
|
84
|
+
}).path ?? '');
|
|
85
|
+
};
|
|
86
|
+
const api = () => {
|
|
87
|
+
const auth = (0, shared_1.resolveAuth)(ctx, v);
|
|
88
|
+
return (0, project_1.httpFor)(ctx, { secretKey: auth.secretKey, apiUrl: auth.apiUrl });
|
|
89
|
+
};
|
|
24
90
|
switch (sub) {
|
|
25
91
|
case 'list': {
|
|
26
|
-
const { client } = (0, shared_1.requireClient)(ctx,
|
|
92
|
+
const { client } = (0, shared_1.requireClient)(ctx, v);
|
|
27
93
|
const page = await client.webhooks.endpoints.list();
|
|
28
94
|
if (json)
|
|
29
95
|
(0, output_1.printJson)(ctx.io, page);
|
|
@@ -31,38 +97,205 @@ async function webhooks(ctx, args) {
|
|
|
31
97
|
ctx.io.out((0, output_1.renderTable)(COLUMNS, page.data));
|
|
32
98
|
return 0;
|
|
33
99
|
}
|
|
34
|
-
case 'create':
|
|
35
|
-
|
|
100
|
+
case 'create':
|
|
101
|
+
case 'upsert': {
|
|
102
|
+
const url = (0, args_1.str)(v, 'url');
|
|
36
103
|
if (!url)
|
|
37
|
-
throw new errors_1.CliError(
|
|
38
|
-
const events = (0, args_1.list)(
|
|
39
|
-
const
|
|
40
|
-
const
|
|
104
|
+
throw new errors_1.CliError(`webhooks ${sub} requires --url <https-url>.`);
|
|
105
|
+
const events = (0, args_1.list)(v, 'events');
|
|
106
|
+
const body = { url, ...(events.length ? { enabled_events: events } : {}) };
|
|
107
|
+
const http = api();
|
|
108
|
+
// `upsert` is the idempotent form: one endpoint per URL, secret revealed only when it is created.
|
|
109
|
+
const endpoint = sub === 'create'
|
|
110
|
+
? await http.post('/v1/webhook_endpoints', body)
|
|
111
|
+
: await http.put('/v1/webhook_endpoints/by_url', body);
|
|
41
112
|
const { secret, ...rest } = endpoint;
|
|
42
113
|
let secretFile;
|
|
43
114
|
if (secret) {
|
|
44
|
-
secretFile = (
|
|
45
|
-
io: json ? { out: () => undefined, err: ctx.io.err } : ctx.io,
|
|
46
|
-
env: ctx.env,
|
|
47
|
-
product: (0, args_1.str)(args.values, 'product') ?? 'atlasauth',
|
|
48
|
-
fileName: `webhook-${endpoint.id}.env`,
|
|
49
|
-
entries: { ATLAS_WEBHOOK_SECRET: secret },
|
|
50
|
-
label: 'The signing secret',
|
|
51
|
-
printSecret: args.values['print-secret'] === true,
|
|
52
|
-
force: args.values.force === true,
|
|
53
|
-
comment: `Signing secret for webhook endpoint ${endpoint.id} (${url}).`,
|
|
54
|
-
}).path;
|
|
115
|
+
secretFile = deliver(endpoint.id, secret, 'The signing secret', `Signing secret for webhook endpoint ${endpoint.id} (${url}).`);
|
|
55
116
|
}
|
|
56
117
|
if (json)
|
|
57
|
-
(0, output_1.printJson)(ctx.io,
|
|
58
|
-
else
|
|
118
|
+
(0, output_1.printJson)(ctx.io, v['print-secret'] === true ? endpoint : { ...rest, secret_file: secretFile ?? null });
|
|
119
|
+
else if (sub === 'create' || secret)
|
|
59
120
|
ctx.io.out(`Created webhook endpoint ${endpoint.id} → ${endpoint.url}.`);
|
|
121
|
+
else
|
|
122
|
+
ctx.io.out(`Webhook endpoint ${endpoint.id} → ${endpoint.url} already existed (updated, secret unchanged).`);
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
case 'update': {
|
|
126
|
+
const id = (0, shared_1.requireArg)(args.positionals, 2, 'endpoint-id');
|
|
127
|
+
if (v.active === true && v.inactive === true)
|
|
128
|
+
throw new errors_1.CliError('Pass --active or --inactive, not both.');
|
|
129
|
+
const body = {};
|
|
130
|
+
const url = (0, args_1.str)(v, 'url');
|
|
131
|
+
if (url)
|
|
132
|
+
body.url = url;
|
|
133
|
+
const events = (0, args_1.list)(v, 'events');
|
|
134
|
+
if (events.length)
|
|
135
|
+
body.enabled_events = events;
|
|
136
|
+
if (v.active === true)
|
|
137
|
+
body.active = true;
|
|
138
|
+
if (v.inactive === true)
|
|
139
|
+
body.active = false;
|
|
140
|
+
if (Object.keys(body).length === 0)
|
|
141
|
+
throw new errors_1.CliError('webhooks update needs at least one of --url, --events, --active, --inactive.');
|
|
142
|
+
const updated = await api().patch(endpointPath(id), body);
|
|
143
|
+
if (json)
|
|
144
|
+
(0, output_1.printJson)(ctx.io, updated);
|
|
145
|
+
else
|
|
146
|
+
ctx.io.out(`Updated webhook endpoint ${updated.id ?? id}: ${Object.keys(body).join(', ')}.`);
|
|
147
|
+
return 0;
|
|
148
|
+
}
|
|
149
|
+
case 'test': {
|
|
150
|
+
const id = (0, shared_1.requireArg)(args.positionals, 2, 'endpoint-id');
|
|
151
|
+
const http = api();
|
|
152
|
+
const timeoutMs = parseDuration((0, args_1.str)(v, 'timeout') ?? '10s', '--timeout');
|
|
153
|
+
const wait = v['no-wait'] !== true;
|
|
154
|
+
const secs = Math.max(1, Math.ceil(timeoutMs / 1000));
|
|
155
|
+
const sent = await http.post(`${endpointPath(id)}/test${wait ? `?wait=${secs}s` : ''}`, {});
|
|
156
|
+
let result = sent;
|
|
157
|
+
// An API that only queues the test answers `queued` with no HTTP status: poll the log for the outcome.
|
|
158
|
+
if (wait && !SETTLED.has(sent.status ?? '') && sent.http_status == null) {
|
|
159
|
+
const sleep = ctx.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
160
|
+
const deliveryId = sent.delivery_id ?? sent.id;
|
|
161
|
+
const deadline = Date.now() + timeoutMs;
|
|
162
|
+
for (;;) {
|
|
163
|
+
const page = await http.get(`${endpointPath(id)}/deliveries?limit=20`);
|
|
164
|
+
const row = page.data.find((d) => d.id === deliveryId);
|
|
165
|
+
if (row)
|
|
166
|
+
result = { ...sent, ...row };
|
|
167
|
+
if (row && (SETTLED.has(row.status ?? '') || row.http_status != null))
|
|
168
|
+
break;
|
|
169
|
+
if (Date.now() >= deadline)
|
|
170
|
+
break;
|
|
171
|
+
await sleep(500);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (json)
|
|
175
|
+
(0, output_1.printJson)(ctx.io, result);
|
|
176
|
+
else {
|
|
177
|
+
const ok = result.http_status != null && result.http_status >= 200 && result.http_status < 300;
|
|
178
|
+
ctx.io.out(`Test delivery ${result.delivery_id ?? result.id}: ${result.status ?? 'queued'}${result.http_status != null ? ` (HTTP ${result.http_status})` : ''}${result.latency_ms != null ? ` in ${result.latency_ms} ms` : ''}.`);
|
|
179
|
+
if (result.error)
|
|
180
|
+
ctx.io.out(`Error: ${result.error}`);
|
|
181
|
+
if (result.response_snippet)
|
|
182
|
+
ctx.io.out(`Response: ${result.response_snippet}`);
|
|
183
|
+
if (!wait)
|
|
184
|
+
ctx.io.out(`Queued. See the outcome with: atlas webhooks deliveries ${id}`);
|
|
185
|
+
else if (result.http_status == null)
|
|
186
|
+
ctx.io.out(`No result within ${secs}s. See it with: atlas webhooks deliveries ${id}`);
|
|
187
|
+
else if (!ok)
|
|
188
|
+
ctx.io.err('atlas: the endpoint did not answer with a 2xx.');
|
|
189
|
+
}
|
|
190
|
+
const ok = !wait || (result.http_status != null && result.http_status >= 200 && result.http_status < 300);
|
|
191
|
+
return ok ? 0 : 1;
|
|
192
|
+
}
|
|
193
|
+
case 'deliveries': {
|
|
194
|
+
const id = (0, shared_1.requireArg)(args.positionals, 2, 'endpoint-id');
|
|
195
|
+
const q = query({
|
|
196
|
+
status: (0, args_1.str)(v, 'status'),
|
|
197
|
+
event_type: (0, args_1.str)(v, 'event-type'),
|
|
198
|
+
since: (0, args_1.str)(v, 'since') ? parseWhen((0, args_1.str)(v, 'since'), '--since') : undefined,
|
|
199
|
+
until: (0, args_1.str)(v, 'until') ? parseWhen((0, args_1.str)(v, 'until'), '--until') : undefined,
|
|
200
|
+
starting_after: (0, args_1.str)(v, 'starting-after'),
|
|
201
|
+
limit: (0, args_1.limit)(v)?.toString(),
|
|
202
|
+
});
|
|
203
|
+
const page = await api().get(`${endpointPath(id)}/deliveries${q}`);
|
|
204
|
+
if (json)
|
|
205
|
+
(0, output_1.printJson)(ctx.io, page);
|
|
206
|
+
else {
|
|
207
|
+
ctx.io.out((0, output_1.renderTable)(DELIVERY_COLUMNS, page.data));
|
|
208
|
+
const last = page.data[page.data.length - 1];
|
|
209
|
+
if (page.has_more && (page.next_cursor ?? last?.id)) {
|
|
210
|
+
ctx.io.out('');
|
|
211
|
+
ctx.io.out(`More results: --starting-after ${page.next_cursor ?? last.id}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return 0;
|
|
215
|
+
}
|
|
216
|
+
case 'redeliver': {
|
|
217
|
+
const id = (0, shared_1.requireArg)(args.positionals, 2, 'endpoint-id');
|
|
218
|
+
const http = api();
|
|
219
|
+
const delivery = (0, args_1.str)(v, 'delivery');
|
|
220
|
+
let res;
|
|
221
|
+
if (delivery) {
|
|
222
|
+
res = await http.post(`${endpointPath(id)}/deliveries/${encodeURIComponent(delivery)}/redeliver`, {});
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
const since = (0, args_1.str)(v, 'since');
|
|
226
|
+
const until = (0, args_1.str)(v, 'until');
|
|
227
|
+
const status = (0, args_1.str)(v, 'status') ?? 'failed';
|
|
228
|
+
if (!since && !until && (0, args_1.str)(v, 'status') === undefined) {
|
|
229
|
+
throw new errors_1.CliError('webhooks redeliver needs --delivery <id> for one delivery, or --status / --since / --until for a batch.');
|
|
230
|
+
}
|
|
231
|
+
res = await http.post(`${endpointPath(id)}/redeliver`, {
|
|
232
|
+
...(since ? { since: parseWhen(since, '--since') } : {}),
|
|
233
|
+
...(until ? { until: parseWhen(until, '--until') } : {}),
|
|
234
|
+
status,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
if (json)
|
|
238
|
+
(0, output_1.printJson)(ctx.io, res);
|
|
239
|
+
else {
|
|
240
|
+
const r = res;
|
|
241
|
+
const n = r.queued;
|
|
242
|
+
ctx.io.out(n !== undefined ? `Queued ${n} redeliver${n === 1 ? 'y' : 'ies'} for ${id}.` : `Queued a redelivery${r.id ? ` (${r.id})` : ''} for ${id}.`);
|
|
243
|
+
}
|
|
244
|
+
return 0;
|
|
245
|
+
}
|
|
246
|
+
case 'replay': {
|
|
247
|
+
const id = (0, shared_1.requireArg)(args.positionals, 2, 'endpoint-id');
|
|
248
|
+
const since = (0, args_1.str)(v, 'since') ?? 'failing_since';
|
|
249
|
+
const res = await api().post(`${endpointPath(id)}/replay${query({ since: parseWhen(since, '--since') })}`, {});
|
|
250
|
+
if (json)
|
|
251
|
+
(0, output_1.printJson)(ctx.io, res);
|
|
252
|
+
else {
|
|
253
|
+
const n = res.queued;
|
|
254
|
+
ctx.io.out(n !== undefined ? `Queued ${n} held event(s) for replay on ${id}.` : `Queued a replay for ${id}.`);
|
|
255
|
+
}
|
|
256
|
+
return 0;
|
|
257
|
+
}
|
|
258
|
+
case 'rotate': {
|
|
259
|
+
const id = (0, shared_1.requireArg)(args.positionals, 2, 'endpoint-id');
|
|
260
|
+
const overlapRaw = (0, args_1.str)(v, 'overlap');
|
|
261
|
+
if (v.now === true && overlapRaw !== undefined)
|
|
262
|
+
throw new errors_1.CliError('Pass --now or --overlap, not both.');
|
|
263
|
+
let overlap;
|
|
264
|
+
if (v.now === true)
|
|
265
|
+
overlap = 0;
|
|
266
|
+
else if (overlapRaw !== undefined) {
|
|
267
|
+
const n = Number(overlapRaw);
|
|
268
|
+
if (!Number.isInteger(n) || n < 0)
|
|
269
|
+
throw new errors_1.CliError(`--overlap must be a whole number of seconds, got '${overlapRaw}'.`);
|
|
270
|
+
overlap = n;
|
|
271
|
+
}
|
|
272
|
+
const res = await api().post(`${endpointPath(id)}/rotate_secret`, overlap === undefined ? {} : { overlap_seconds: overlap });
|
|
273
|
+
const file = deliver(id, res.secret, 'The new signing secret', `Rotated signing secret for webhook endpoint ${id}.`, true);
|
|
274
|
+
if (json)
|
|
275
|
+
(0, output_1.printJson)(ctx.io, v['print-secret'] === true ? res : { ...res, secret: undefined, secret_file: file || null });
|
|
276
|
+
else {
|
|
277
|
+
const exp = res.previous_secret_expires_at;
|
|
278
|
+
if (res.overlap_seconds === 0 || exp === null)
|
|
279
|
+
ctx.io.out('The previous secret stopped signing immediately.');
|
|
280
|
+
else if (typeof exp === 'number')
|
|
281
|
+
ctx.io.out(`The previous secret keeps signing until ${new Date(exp).toISOString()}; deploy the new one before then.`);
|
|
282
|
+
if (res.warning)
|
|
283
|
+
ctx.io.out(res.warning);
|
|
284
|
+
}
|
|
285
|
+
return 0;
|
|
286
|
+
}
|
|
287
|
+
case 'reveal': {
|
|
288
|
+
const id = (0, shared_1.requireArg)(args.positionals, 2, 'endpoint-id');
|
|
289
|
+
const res = await api().post(`${endpointPath(id)}/reveal_secret`, {});
|
|
290
|
+
const file = deliver(id, res.secret, 'The revealed signing secret', `Signing secret for webhook endpoint ${id}.`, true);
|
|
291
|
+
if (json)
|
|
292
|
+
(0, output_1.printJson)(ctx.io, v['print-secret'] === true ? res : { object: 'webhook_secret', secret_file: file || null });
|
|
60
293
|
return 0;
|
|
61
294
|
}
|
|
62
295
|
default:
|
|
63
296
|
throw new errors_1.CliError(sub
|
|
64
|
-
? `Unknown subcommand 'webhooks ${sub}'. Try: list, create.`
|
|
65
|
-
: 'webhooks needs a subcommand: list, create.');
|
|
297
|
+
? `Unknown subcommand 'webhooks ${sub}'. Try: list, create, upsert, update, test, deliveries, redeliver, replay, rotate, reveal.`
|
|
298
|
+
: 'webhooks needs a subcommand: list, create, upsert, update, test, deliveries, redeliver, replay, rotate, reveal.');
|
|
66
299
|
}
|
|
67
300
|
}
|
|
68
301
|
//# sourceMappingURL=webhooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -7,6 +7,20 @@
|
|
|
7
7
|
export interface Profile {
|
|
8
8
|
api_url: string;
|
|
9
9
|
secret_key: string;
|
|
10
|
+
/** When `secret_key` is a one-hour token (from `atlas login --device`), when it expires (Unix ms). */
|
|
11
|
+
expires_at?: number;
|
|
12
|
+
/** The resource the short-lived token is bound to (`ins_…`, `app_…`, `acct_…`). */
|
|
13
|
+
resource?: string;
|
|
14
|
+
scope?: string;
|
|
15
|
+
/**
|
|
16
|
+
* The operator token from `atlas login --device` (short-lived, Unix-ms expiry):
|
|
17
|
+
* `atlas token` swaps it for resource-bound tokens. Never a long-lived key.
|
|
18
|
+
*/
|
|
19
|
+
operator?: {
|
|
20
|
+
access_token: string;
|
|
21
|
+
expires_at: number;
|
|
22
|
+
issuer: string;
|
|
23
|
+
};
|
|
10
24
|
}
|
|
11
25
|
/** The whole config file: named profiles plus which one is active. */
|
|
12
26
|
export interface ConfigFile {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAoDA,8CAGC;AAvDD,qCAA4E;AAC5E,qCAAkC;AAClC,yCAA0C;AAC1C,qCAAoC;AAyCpC,MAAM,KAAK,GAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAE3C;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACpE,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,SAAS,CAAC,CAAC;IACvE,OAAO,IAAA,gBAAI,EAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,iFAAiF;AACjF,MAAa,eAAe;IACL;IAArB,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAErC,IAAI;QACF,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;YACrD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;YAC9C,+EAA+E;YAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,iBAAQ,CAChB,kBAAkB,IAAI,CAAC,IAAI,qEAAqE,CACjG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAkB;QACrB,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,uEAAuE;QACvE,wEAAwE;QACxE,uCAAuC;QACvC,IAAA,uBAAa,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,IAAA,mBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AA9BD,0CA8BC;AAED,kFAAkF;AAClF,MAAa,iBAAiB;IACnB,IAAI,GAAG,UAAU,CAAC;IACnB,IAAI,CAAa;IACzB,YAAY,UAAsB,KAAK;QACrC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,IAAI;QACF,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,MAAkB;QACrB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AAZD,8CAYC"}
|
package/dist/context.d.ts
CHANGED
|
@@ -49,6 +49,19 @@ export interface RunContext {
|
|
|
49
49
|
fetch?: typeof fetch;
|
|
50
50
|
/** Wait between polls (`--wait`). Optional; defaults to a real timer. */
|
|
51
51
|
sleep?: (ms: number) => Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Run a program with inherited stdio and return its exit code (`atlas migrate
|
|
54
|
+
* better-auth --run-export` runs the exporter in the app). Optional; defaults
|
|
55
|
+
* to a real child process.
|
|
56
|
+
*/
|
|
57
|
+
exec?: (cmd: string, args: string[], opts: {
|
|
58
|
+
cwd: string;
|
|
59
|
+
}) => Promise<number>;
|
|
60
|
+
/**
|
|
61
|
+
* Stops a long-running command (`atlas listen`). Optional; defaults to an
|
|
62
|
+
* abort on SIGINT/SIGTERM so Ctrl-C ends the stream cleanly.
|
|
63
|
+
*/
|
|
64
|
+
signal?: AbortSignal;
|
|
52
65
|
}
|
|
53
66
|
/**
|
|
54
67
|
* The production context, with any piece overridable. Tests call this with a
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;AAqEA,wCAWC;AAhFD,qCAAuC;AACvC,gDAAyE;AACzE,qCAAgF;AAChF,+CAAkE;AAClE,6BAA0C;AAC1C,qCAA0D;AA2D1D;;;;GAIG;AACH,SAAgB,cAAc,CAAC,YAAiC,EAAE;IAChE,OAAO;QACL,EAAE,EAAE,IAAA,cAAS,GAAE;QACf,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAI,wBAAe,CAAC,IAAA,0BAAiB,GAAE,CAAC;QAChD,MAAM,EAAE,IAAA,wBAAe,GAAE;QACzB,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAA,2BAAiB,EAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAC/E,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAA,8BAAgB,EAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAC5E,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,sBAAY,EAAC,IAAI,EAAE,MAAM,CAAC;QAC9C,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|
package/dist/help.d.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* out of the handlers so the dispatch code stays about control flow and the
|
|
4
4
|
* copy can be read (and kept consistent) in one place.
|
|
5
5
|
*/
|
|
6
|
-
export declare const TOP_HELP = "atlas \u2014 manage an Atlas instance from the terminal\n\nUsage: atlas <command> [subcommand] [arguments] [options]\n\nCommands:\n login Authenticate and store a profile credential\n logout Remove a stored profile credential\n whoami Show the active profile and instance\n users list|get|create|delete\n orgs list|get|members\n api-keys list|create|revoke\n webhooks list|create\n sessions revoke\n config export|import
|
|
6
|
+
export declare const TOP_HELP = "atlas \u2014 manage an Atlas instance from the terminal\n\nUsage: atlas <command> [subcommand] [arguments] [options]\n\nCommands:\n login Authenticate and store a profile credential\n (--device: operator sign-in in the browser, no key stored)\n token --resource <id> A one-hour token for one instance/app from your operator sign-in\n keys whoami|list|create|rotate|revoke|revoke-leaked\n Scoped secret keys; new secrets go sealed into 0600 files\n logout Remove a stored profile credential\n whoami Show the active profile and instance\n users list|get|create|delete\n orgs list|get|members\n api-keys list|create|revoke\n webhooks list|create|upsert|update|test|deliveries|redeliver|replay|rotate|reveal\n listen --forward-to <url> Forward live events to your local server, signed (no tunnel)\n move-origin --from --to Move an app to a new domain in one step (--dry-run first)\n csp --framework next|express|nginx\n Print the Content Security Policy sources Atlas needs\n integrations list|get|set|remove|deliveries Identity integrations (chat, docs, consent, referrals, custom)\n sessions revoke\n config export|import|plan Config-as-code: round-trip the instance's config; plan = drift diff\n actions list|deploy|test|logs|gallery|show|install|installs|update|publish\n init Create or complete an app's setup (idempotent); secrets to 0600 files\n preflight Check an instance's setup; non-zero exit on errors (for CI)\n doctor Integration health: webhooks, logout, referrals, email, consent (exit 1 on a failure)\n env Print deploy variables: public values + secret file paths\n client rotate Rotate an OAuth client secret straight into its file\n referrals connect|backfill|status\n Connect a referral platform, backfill, check the connection\n status Atlas status, incidents that concern the instance and its\n upstream status pages; non-zero exit on an outage\n import --from <vendor> <file>\n Move users from Auth0, Clerk, Supabase, Firebase, Cognito,\n Auth.js, WorkOS or Better Auth (resumable; --dry-run first)\n migrate code --from <vendor> [path]\n Rewrite an app's auth code onto Atlas (Clerk, Auth.js,\n Supabase, Auth0, Better Auth); a dry run with a diff unless --yes\n migrate better-auth [path] Move a Better Auth app to Atlas end to end: config, users,\n sessions and code, resumable (--dry-run, --resume, --yes)\n migrate better-auth config [path]\n Translate the app's betterAuth({...}) options into Atlas\n config files plus a report (offline)\n info [path] Print the environment for a support ticket (versions, SDKs,\n instance, API latency, preflight); secrets redacted\n mcp install Add the Atlas MCP server (docs search) to Cursor, Claude Code,\n Codex or VS Code\n\nGlobal options:\n --profile <name> Use a named profile (default: active, else \"default\")\n --json Emit raw JSON instead of a human table\n --limit <n> Page size for list commands that paginate\n --starting-after <cursor> Pagination cursor (from a prior page's hint)\n -h, --help Show this help, or help for a command\n -v, --version Print the version\n\nEnvironment overrides:\n ATLAS_SECRET_KEY Secret key to use instead of the stored one\n ATLAS_API_BASE API URL to use instead of the stored one\n ATLAS_API_URL Same (the older name); ATLAS_API_BASE wins when both are set\n ATLAS_PLATFORM_KEY Platform key (psk_) for atlas init\n REFERALLI_BASE_URL Referalli base URL for atlas referrals connect\n REFERALLI_API_KEY Referalli merchant key for atlas referrals connect (never stored)\n (the old REFERALLY_BASE_URL / REFERALLY_API_KEY still work, with a notice)\n\nSecrets: a command that receives a secret writes it to a 0600 file under\n~/.config/<product>/ and prints only the path. --print-secret prints it instead.\n\nRun 'atlas <command> --help' for command-specific help.";
|
|
7
7
|
/** Per-command help, keyed by the resource word. */
|
|
8
8
|
export declare const COMMAND_HELP: Record<string, string>;
|