@atlasauth/cli 0.13.0 → 0.15.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 +9 -1
- package/dist/args.d.ts +9 -0
- package/dist/args.js +6 -0
- package/dist/args.js.map +1 -1
- package/dist/commands/config.js +1 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/fga.d.ts +10 -0
- package/dist/commands/fga.js +146 -0
- package/dist/commands/fga.js.map +1 -0
- package/dist/commands/mcp.js +4 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/operator.d.ts +0 -8
- package/dist/commands/operator.js +29 -1
- package/dist/commands/operator.js.map +1 -1
- package/dist/commands/resources.d.ts +44 -0
- package/dist/commands/resources.js +234 -0
- package/dist/commands/resources.js.map +1 -0
- package/dist/commands/users.js +14 -1
- package/dist/commands/users.js.map +1 -1
- package/dist/config-http.d.ts +1 -1
- package/dist/config-http.js +2 -2
- package/dist/config-http.js.map +1 -1
- package/dist/help.d.ts +1 -1
- package/dist/help.js +74 -4
- package/dist/help.js.map +1 -1
- package/dist/run.js +19 -0
- package/dist/run.js.map +1 -1
- package/github-action/fga-test/action.yml +43 -0
- package/package.json +8 -6
package/dist/help.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COMMAND_HELP = exports.TOP_HELP = void 0;
|
|
4
|
+
const resources_1 = require("./commands/resources");
|
|
2
5
|
/**
|
|
3
6
|
* All help text lives here as plain strings — the CLI's "docs" surface. Kept
|
|
4
7
|
* out of the handlers so the dispatch code stays about control flow and the
|
|
5
8
|
* copy can be read (and kept consistent) in one place.
|
|
6
9
|
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.COMMAND_HELP = exports.TOP_HELP = void 0;
|
|
9
10
|
exports.TOP_HELP = `atlas — manage an Atlas instance from the terminal
|
|
10
11
|
|
|
11
12
|
Usage: atlas <command> [subcommand] [arguments] [options]
|
|
@@ -14,19 +15,35 @@ Commands:
|
|
|
14
15
|
login Authenticate and store a profile credential
|
|
15
16
|
(--device: operator sign-in in the browser, no key stored)
|
|
16
17
|
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
|
+
keys whoami|list|create|rotate|revoke|revoke-leaked|data|op
|
|
18
19
|
Scoped secret keys; new secrets go sealed into 0600 files
|
|
19
20
|
logout Remove a stored profile credential
|
|
20
21
|
whoami Show the active profile and instance
|
|
21
|
-
users list|get|create|delete
|
|
22
|
+
users list|get|create|merge|delete
|
|
22
23
|
orgs list|get|members
|
|
23
24
|
api-keys list|create|revoke
|
|
24
25
|
webhooks list|create|upsert|update|test|deliveries|redeliver|replay|rotate|reveal
|
|
25
26
|
listen --forward-to <url> Forward live events to your local server, signed (no tunnel)
|
|
26
27
|
dev [proxy] Local in-memory Atlas (emulator) / one-origin dev proxy
|
|
27
28
|
move-origin --from --to Move an app to a new domain in one step (--dry-run first)
|
|
29
|
+
workflows list|run|resume|status|templates|approvals|decide
|
|
30
|
+
chat list|test|links|interactions Chat approval integrations
|
|
31
|
+
cloud targets|setup|login <id> Cloud access portal (AWS, Google Cloud, Azure)
|
|
32
|
+
device-sso list|show|revoke|delete Native OS single sign-on registrations
|
|
33
|
+
connection-actions catalog|list|run|define|remove
|
|
34
|
+
triggers list|get|create|set|delete Connection triggers
|
|
35
|
+
agents list|lifecycle|renew|activity|reviews|review-decide ...
|
|
36
|
+
telemetry show|set|test OTLP export of gateway and relay calls
|
|
37
|
+
pdp list|remove Local decision points
|
|
38
|
+
billing coupons|credits ... Discount codes and account credit
|
|
39
|
+
audit retention|set-retention Audit log retention
|
|
40
|
+
federation show|resolve OpenID federation
|
|
41
|
+
vc deferred|approve|deny Deferred credential issuance
|
|
28
42
|
csp --framework next|express|nginx
|
|
29
43
|
Print the Content Security Policy sources Atlas needs
|
|
44
|
+
fga test|validate|transform <file>
|
|
45
|
+
fga export|import|watch|materialize <store>
|
|
46
|
+
Run .fga.yaml test suites, validate and convert authorization models
|
|
30
47
|
integrations list|get|set|remove|deliveries Identity integrations (chat, docs, consent, referrals, custom)
|
|
31
48
|
partner-platforms list|get|set|registration|token|deliveries|remove
|
|
32
49
|
This instance as a partner platform (signed consent deliveries in)
|
|
@@ -256,6 +273,8 @@ user or a membership. Exit code 2 means some rows were reported as issues.`,
|
|
|
256
273
|
|
|
257
274
|
Usage:
|
|
258
275
|
atlas mcp install --cursor | --claude-code | --codex | --vscode [--dir <project>] [--global]
|
|
276
|
+
atlas mcp gateways | upstreams <gw> | upstream-add|upstream-test|upstream-remove | packs|pack-add|pack-remove
|
|
277
|
+
atlas mcp pins <gw> | pin-approve <gw> <tool> | pin-remove | registry|registry-add|registry-decide|registry-remove
|
|
259
278
|
|
|
260
279
|
Adds the Atlas MCP server (npx -y @atlasauth/mcp) to the client's config so the
|
|
261
280
|
agent can search and read the Atlas docs. Servers already in the file are kept.
|
|
@@ -366,6 +385,8 @@ Usage:
|
|
|
366
385
|
atlas keys list Every credential on the instance
|
|
367
386
|
atlas keys create --scopes "<scopes>" [--name n] [--owner o] [--expires-at <ISO>] [--allowed-ips <cidr,…>] [--out <file>]
|
|
368
387
|
atlas keys rotate <id> [--overlap <seconds>] [--out <file>]
|
|
388
|
+
atlas keys data status|enable|rotate|rewrap|check|shred Customer-managed data key (shred needs the instance id typed or --confirm)
|
|
389
|
+
atlas keys op list|rotate OpenID provider signing keys
|
|
369
390
|
atlas keys revoke <id>
|
|
370
391
|
atlas keys revoke-leaked [<secret>] Revoke a leaked Atlas credential (no login needed)
|
|
371
392
|
|
|
@@ -452,6 +473,22 @@ allowlist and your Sign in with Atlas apps. Shows the before and after of every
|
|
|
452
473
|
field first and asks before writing (--yes skips the question). After a real
|
|
453
474
|
move it sends a signed test delivery to each webhook endpoint that moved.
|
|
454
475
|
--dry-run prints the diff and writes nothing; running it twice changes nothing.`,
|
|
476
|
+
fga: `atlas fga — author and test authorization models
|
|
477
|
+
|
|
478
|
+
Usage:
|
|
479
|
+
atlas fga test <suite.fga.yaml> [--store <id>] [--json]
|
|
480
|
+
atlas fga validate <model.fga|model.json>
|
|
481
|
+
atlas fga transform <model.fga|model.json> [--to dsl|json]
|
|
482
|
+
atlas fga export|materializations <store>
|
|
483
|
+
atlas fga import <store> --file tuples.json [--data '{"dry_run":true}']
|
|
484
|
+
atlas fga watch <store> [--since <revision>]
|
|
485
|
+
atlas fga materialize <store> --data '{"object_type":…,"relation":…,"user_type":…}' --yes
|
|
486
|
+
atlas fga rebuild|unmaterialize <store> <id> --yes
|
|
487
|
+
|
|
488
|
+
A test file follows the OpenFGA format: model (DSL text) or model_file, tuples or tuple_file,
|
|
489
|
+
and tests, each with check, list_objects and list_users assertions. The suite runs in memory on
|
|
490
|
+
the Atlas engine; no stored tuples are read or written. Exit code 1 when any test fails, so it
|
|
491
|
+
gates CI. Prints which model relations the assertions cover.`,
|
|
455
492
|
csp: `atlas csp — the Content Security Policy sources Atlas needs
|
|
456
493
|
|
|
457
494
|
Usage: atlas csp [--framework next|express|nginx] [--shape redirect|panel|button]
|
|
@@ -704,4 +741,37 @@ publish reads a manifest {slug, name, author_name, summary, description,
|
|
|
704
741
|
category, tags, trigger, license, version, code_file, secrets, changelog},
|
|
705
742
|
creates the template or adds the version, and submits it for review.`,
|
|
706
743
|
};
|
|
744
|
+
/** Help for the table-driven resource commands, generated from their route tables. */
|
|
745
|
+
function resHelp(name, blurb, ops) {
|
|
746
|
+
const lines = Object.entries(ops).map(([sub, o]) => {
|
|
747
|
+
const args = (o.p.match(/\{\}/g) ?? []).map(() => '<id>').join(' ');
|
|
748
|
+
return ` atlas ${name} ${`${sub} ${args}`.trim().padEnd(26)} ${o.m} ${o.p.replace(/\{\}/g, '…')}${o.f?.includes('y') ? ' (--yes)' : ''}`;
|
|
749
|
+
});
|
|
750
|
+
return `atlas ${name} — ${blurb}
|
|
751
|
+
|
|
752
|
+
Usage:
|
|
753
|
+
${lines.join('\n')}
|
|
754
|
+
|
|
755
|
+
A request body is JSON from --data '<json>' or --file <path>. Anything that changes or removes
|
|
756
|
+
data needs --yes. --json prints raw JSON. Secrets the API returns once are shown once; store them
|
|
757
|
+
right away.`;
|
|
758
|
+
}
|
|
759
|
+
Object.assign(exports.COMMAND_HELP, {
|
|
760
|
+
workflows: resHelp('workflows', 'workflow runs, templates and approvals', resources_1.WORKFLOWS),
|
|
761
|
+
chat: resHelp('chat', 'chat approval integrations (test a bot, list user links)', resources_1.CHAT),
|
|
762
|
+
'saml-idp': resHelp('saml-idp', 'SAML identity provider service providers (import-metadata takes --data with url, entity_id, mdq_base_url)', resources_1.SAML_IDP),
|
|
763
|
+
provisioning: resHelp('provisioning', 'outbound provisioning connectors, preview, logs and the failure inbox', resources_1.PROVISIONING),
|
|
764
|
+
catalog: resHelp('catalog', 'app catalog requests', resources_1.CATALOG),
|
|
765
|
+
cloud: resHelp('cloud', 'cloud access portal; login prints the https launch URL for a target', resources_1.CLOUD),
|
|
766
|
+
'device-sso': resHelp('device-sso', 'native OS SSO device registrations', resources_1.DEVICE_SSO),
|
|
767
|
+
'connection-actions': resHelp('connection-actions', 'actions on a connected provider account', resources_1.CONNECTION_ACTIONS),
|
|
768
|
+
triggers: resHelp('triggers', 'connection triggers', resources_1.TRIGGERS),
|
|
769
|
+
agents: resHelp('agents', 'agent lifecycle, activity and access reviews', resources_1.AGENTS),
|
|
770
|
+
telemetry: resHelp('telemetry', 'OTLP export of gateway and relay calls', resources_1.TELEMETRY),
|
|
771
|
+
pdp: resHelp('pdp', 'local decision points', resources_1.PDP),
|
|
772
|
+
billing: resHelp('billing', 'discount codes and account credit', resources_1.BILLING),
|
|
773
|
+
audit: resHelp('audit', 'audit log retention (shortening needs confirm_deletion in --data)', resources_1.AUDIT),
|
|
774
|
+
federation: resHelp('federation', 'OpenID federation', resources_1.FEDERATION),
|
|
775
|
+
vc: resHelp('vc', 'deferred verifiable credential issuance', resources_1.VC),
|
|
776
|
+
});
|
|
707
777
|
//# sourceMappingURL=help.js.map
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
|
package/dist/run.js
CHANGED
|
@@ -13,6 +13,7 @@ const init_1 = require("./commands/init");
|
|
|
13
13
|
const import_1 = require("./commands/import");
|
|
14
14
|
const info_1 = require("./commands/info");
|
|
15
15
|
const csp_1 = require("./commands/csp");
|
|
16
|
+
const fga_1 = require("./commands/fga");
|
|
16
17
|
const dev_1 = require("./commands/dev");
|
|
17
18
|
const listen_1 = require("./commands/listen");
|
|
18
19
|
const migrate_1 = require("./commands/migrate");
|
|
@@ -29,6 +30,7 @@ const integrations_1 = require("./commands/integrations");
|
|
|
29
30
|
const id_accounts_1 = require("./commands/id-accounts");
|
|
30
31
|
const admin_1 = require("./commands/admin");
|
|
31
32
|
const partner_platforms_1 = require("./commands/partner-platforms");
|
|
33
|
+
const resources_1 = require("./commands/resources");
|
|
32
34
|
const errors_1 = require("./errors");
|
|
33
35
|
const help_1 = require("./help");
|
|
34
36
|
const version_1 = require("./version");
|
|
@@ -66,6 +68,23 @@ const COMMANDS = {
|
|
|
66
68
|
dev: dev_1.dev,
|
|
67
69
|
'move-origin': move_origin_1.moveOrigin,
|
|
68
70
|
csp: csp_1.csp,
|
|
71
|
+
fga: fga_1.fga,
|
|
72
|
+
workflows: (0, resources_1.resourceCommand)('workflows', resources_1.WORKFLOWS),
|
|
73
|
+
chat: (0, resources_1.resourceCommand)('chat', resources_1.CHAT),
|
|
74
|
+
cloud: (0, resources_1.resourceCommand)('cloud', resources_1.CLOUD),
|
|
75
|
+
'saml-idp': (0, resources_1.resourceCommand)('saml-idp', resources_1.SAML_IDP),
|
|
76
|
+
provisioning: (0, resources_1.resourceCommand)('provisioning', resources_1.PROVISIONING),
|
|
77
|
+
catalog: (0, resources_1.resourceCommand)('catalog', resources_1.CATALOG),
|
|
78
|
+
'device-sso': (0, resources_1.resourceCommand)('device-sso', resources_1.DEVICE_SSO),
|
|
79
|
+
'connection-actions': (0, resources_1.resourceCommand)('connection-actions', resources_1.CONNECTION_ACTIONS),
|
|
80
|
+
triggers: (0, resources_1.resourceCommand)('triggers', resources_1.TRIGGERS),
|
|
81
|
+
agents: (0, resources_1.resourceCommand)('agents', resources_1.AGENTS),
|
|
82
|
+
telemetry: (0, resources_1.resourceCommand)('telemetry', resources_1.TELEMETRY),
|
|
83
|
+
pdp: (0, resources_1.resourceCommand)('pdp', resources_1.PDP),
|
|
84
|
+
billing: (0, resources_1.resourceCommand)('billing', resources_1.BILLING),
|
|
85
|
+
audit: (0, resources_1.resourceCommand)('audit', resources_1.AUDIT),
|
|
86
|
+
federation: (0, resources_1.resourceCommand)('federation', resources_1.FEDERATION),
|
|
87
|
+
vc: (0, resources_1.resourceCommand)('vc', resources_1.VC),
|
|
69
88
|
};
|
|
70
89
|
/**
|
|
71
90
|
* 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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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Atlas FGA tests
|
|
2
|
+
description: Run OpenFGA-style test files (.fga.yaml) against the Atlas authorization engine and fail the job on any failing assertion.
|
|
3
|
+
inputs:
|
|
4
|
+
files:
|
|
5
|
+
description: Test files, one per line or space separated (globs allowed).
|
|
6
|
+
required: true
|
|
7
|
+
api-url:
|
|
8
|
+
description: Atlas Backend API origin.
|
|
9
|
+
required: true
|
|
10
|
+
secret-key:
|
|
11
|
+
description: A secret key with the fga:read scope.
|
|
12
|
+
required: true
|
|
13
|
+
store:
|
|
14
|
+
description: Optional store id; its latest model is used when a file has no model of its own.
|
|
15
|
+
required: false
|
|
16
|
+
default: ''
|
|
17
|
+
runs:
|
|
18
|
+
using: composite
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/setup-node@v4
|
|
21
|
+
with:
|
|
22
|
+
node-version: 22
|
|
23
|
+
- shell: bash
|
|
24
|
+
env:
|
|
25
|
+
ATLAS_API_URL: ${{ inputs.api-url }}
|
|
26
|
+
ATLAS_SECRET_KEY: ${{ inputs.secret-key }}
|
|
27
|
+
FILES: ${{ inputs.files }}
|
|
28
|
+
STORE: ${{ inputs.store }}
|
|
29
|
+
run: |
|
|
30
|
+
status=0
|
|
31
|
+
shopt -s globstar nullglob
|
|
32
|
+
for pattern in $FILES; do
|
|
33
|
+
for f in $pattern; do
|
|
34
|
+
echo "::group::$f"
|
|
35
|
+
if [ -n "$STORE" ]; then
|
|
36
|
+
npx --yes @atlasauth/cli fga test "$f" --store "$STORE" || status=1
|
|
37
|
+
else
|
|
38
|
+
npx --yes @atlasauth/cli fga test "$f" || status=1
|
|
39
|
+
fi
|
|
40
|
+
echo "::endgroup::"
|
|
41
|
+
done
|
|
42
|
+
done
|
|
43
|
+
exit $status
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlasauth/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.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"
|
|
@@ -15,12 +15,13 @@
|
|
|
15
15
|
"./package.json": "./package.json"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"
|
|
19
|
-
"@atlasauth/actions": "0.
|
|
20
|
-
"@atlasauth/
|
|
18
|
+
"yaml": "^2.6.0",
|
|
19
|
+
"@atlasauth/actions": "0.5.0",
|
|
20
|
+
"@atlasauth/backend": "0.27.0",
|
|
21
21
|
"@atlasauth/emulator": "0.1.0",
|
|
22
|
-
"@atlasauth/
|
|
23
|
-
"@atlasauth/referral-conformance": "0.1.0"
|
|
22
|
+
"@atlasauth/migrate": "0.2.0",
|
|
23
|
+
"@atlasauth/referral-conformance": "0.1.0",
|
|
24
|
+
"@atlasauth/upgrade": "0.6.0"
|
|
24
25
|
},
|
|
25
26
|
"devDependencies": {
|
|
26
27
|
"@types/node": "^22.9.0",
|
|
@@ -32,6 +33,7 @@
|
|
|
32
33
|
},
|
|
33
34
|
"files": [
|
|
34
35
|
"dist",
|
|
36
|
+
"github-action",
|
|
35
37
|
"!dist/*.tsbuildinfo",
|
|
36
38
|
"README.md",
|
|
37
39
|
"CHANGELOG.md"
|