primitive-admin 1.2.0-alpha.0 → 1.2.0-alpha.2
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 +6 -4
- package/dist/bin/primitive.js +22 -24
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/agent-sessions.d.ts +20 -0
- package/dist/src/commands/agent-sessions.js +275 -0
- package/dist/src/commands/agent-sessions.js.map +1 -0
- package/dist/src/commands/apps-children.d.ts +54 -0
- package/dist/src/commands/apps-children.js +578 -0
- package/dist/src/commands/apps-children.js.map +1 -0
- package/dist/src/commands/apps.js +88 -9
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth-sessions.d.ts +3 -3
- package/dist/src/commands/auth-sessions.js +117 -23
- package/dist/src/commands/auth-sessions.js.map +1 -1
- package/dist/src/commands/auth.js +248 -15
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/connections.js +1 -5
- package/dist/src/commands/connections.js.map +1 -1
- package/dist/src/commands/databases.js +7 -109
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +29 -0
- package/dist/src/commands/documents.js +676 -191
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/env.d.ts +9 -1
- package/dist/src/commands/env.js +158 -45
- package/dist/src/commands/env.js.map +1 -1
- package/dist/src/commands/functions.js +7 -1
- package/dist/src/commands/functions.js.map +1 -1
- package/dist/src/commands/init.js +2 -1
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.js +14 -2
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/prompts.js +4 -0
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/scripts.js +1 -1
- package/dist/src/commands/scripts.js.map +1 -1
- package/dist/src/commands/sessions.js +3 -8
- package/dist/src/commands/sessions.js.map +1 -1
- package/dist/src/commands/sync-app-settings.d.ts +25 -7
- package/dist/src/commands/sync-app-settings.js +81 -20
- package/dist/src/commands/sync-app-settings.js.map +1 -1
- package/dist/src/commands/sync.d.ts +183 -12
- package/dist/src/commands/sync.js +974 -452
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.js +1 -6
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.js +77 -2
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/lib/api-client.d.ts +161 -35
- package/dist/src/lib/api-client.js +210 -86
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +9 -1
- package/dist/src/lib/app-settings-descriptor.js +22 -10
- package/dist/src/lib/app-settings-descriptor.js.map +1 -1
- package/dist/src/lib/auth-flow.d.ts +41 -1
- package/dist/src/lib/auth-flow.js +45 -16
- package/dist/src/lib/auth-flow.js.map +1 -1
- package/dist/src/lib/child-apps-local.d.ts +184 -0
- package/dist/src/lib/child-apps-local.js +282 -0
- package/dist/src/lib/child-apps-local.js.map +1 -0
- package/dist/src/lib/ci-session-request.d.ts +22 -0
- package/dist/src/lib/ci-session-request.js +51 -0
- package/dist/src/lib/ci-session-request.js.map +1 -0
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +4 -1
- package/dist/src/lib/codegen-shared/generatedFiles.js +19 -13
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -1
- package/dist/src/lib/config-object-descriptor.js +5 -5
- package/dist/src/lib/config-object-descriptor.js.map +1 -1
- package/dist/src/lib/config-payload.js +2 -3
- package/dist/src/lib/config-payload.js.map +1 -1
- package/dist/src/lib/config-surface.d.ts +2 -1
- package/dist/src/lib/config-surface.js +7 -28
- package/dist/src/lib/config-surface.js.map +1 -1
- package/dist/src/lib/credentials-store.d.ts +17 -2
- package/dist/src/lib/credentials-store.js +72 -6
- package/dist/src/lib/credentials-store.js.map +1 -1
- package/dist/src/lib/document-export-lookups.d.ts +31 -0
- package/dist/src/lib/document-export-lookups.js +53 -0
- package/dist/src/lib/document-export-lookups.js.map +1 -0
- package/dist/src/lib/document-export-permissions.d.ts +7 -5
- package/dist/src/lib/document-export-permissions.js +7 -5
- package/dist/src/lib/document-export-permissions.js.map +1 -1
- package/dist/src/lib/env-resolver-core.d.ts +69 -1
- package/dist/src/lib/env-resolver-core.js +137 -20
- package/dist/src/lib/env-resolver-core.js.map +1 -1
- package/dist/src/lib/env-resolver.d.ts +14 -2
- package/dist/src/lib/env-resolver.js +32 -10
- package/dist/src/lib/env-resolver.js.map +1 -1
- package/dist/src/lib/function-run.d.ts +4 -1
- package/dist/src/lib/function-run.js +24 -4
- package/dist/src/lib/function-run.js.map +1 -1
- package/dist/src/lib/function-sync.d.ts +5 -2
- package/dist/src/lib/function-sync.js +7 -4
- package/dist/src/lib/function-sync.js.map +1 -1
- package/dist/src/lib/generated-config-surfaces.d.ts +49 -50
- package/dist/src/lib/generated-config-surfaces.js +283 -166
- package/dist/src/lib/generated-config-surfaces.js.map +1 -1
- package/dist/src/lib/generated-sdk-types.d.ts +1 -1
- package/dist/src/lib/generated-sdk-types.js +1 -1
- package/dist/src/lib/generated-sdk-types.js.map +1 -1
- package/dist/src/lib/init-adopt.js +12 -3
- package/dist/src/lib/init-adopt.js.map +1 -1
- package/dist/src/lib/local-state.d.ts +17 -1
- package/dist/src/lib/local-state.js +94 -15
- package/dist/src/lib/local-state.js.map +1 -1
- package/dist/src/lib/local-test-cases.d.ts +5 -2
- package/dist/src/lib/local-test-cases.js +7 -4
- package/dist/src/lib/local-test-cases.js.map +1 -1
- package/dist/src/lib/log-inspection.d.ts +25 -0
- package/dist/src/lib/log-inspection.js +24 -0
- package/dist/src/lib/log-inspection.js.map +1 -1
- package/dist/src/lib/logout-admin-session.d.ts +2 -1
- package/dist/src/lib/logout-admin-session.js +7 -1
- package/dist/src/lib/logout-admin-session.js.map +1 -1
- package/dist/src/lib/pull-write.d.ts +31 -0
- package/dist/src/lib/pull-write.js +49 -0
- package/dist/src/lib/pull-write.js.map +1 -0
- package/dist/src/lib/root-import-decision.d.ts +59 -0
- package/dist/src/lib/root-import-decision.js +95 -0
- package/dist/src/lib/root-import-decision.js.map +1 -0
- package/dist/src/lib/scope-request.d.ts +69 -0
- package/dist/src/lib/scope-request.js +188 -0
- package/dist/src/lib/scope-request.js.map +1 -0
- package/dist/src/lib/session-id.d.ts +9 -0
- package/dist/src/lib/session-id.js +28 -0
- package/dist/src/lib/session-id.js.map +1 -0
- package/dist/src/lib/snapshots.d.ts +17 -1
- package/dist/src/lib/snapshots.js +50 -2
- package/dist/src/lib/snapshots.js.map +1 -1
- package/dist/src/lib/sync-paths.d.ts +35 -0
- package/dist/src/lib/sync-paths.js +57 -5
- package/dist/src/lib/sync-paths.js.map +1 -1
- package/dist/src/lib/transient-retry.d.ts +34 -0
- package/dist/src/lib/transient-retry.js +57 -0
- package/dist/src/lib/transient-retry.js.map +1 -0
- package/dist/src/types/index.d.ts +21 -4
- package/package.json +4 -3
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { ApiClient } from "../lib/api-client.js";
|
|
1
|
+
import { ApiClient, ApiError } from "../lib/api-client.js";
|
|
2
2
|
import { loadCredentials, resolveAppId } from "../lib/config.js";
|
|
3
|
-
import { success, error, keyValue, result as printResult, formatTable, formatId, json, } from "../lib/output.js";
|
|
3
|
+
import { success, error, info, warn, keyValue, result as printResult, formatTable, formatId, json, } from "../lib/output.js";
|
|
4
4
|
import { renderAppSettings } from "./sync-app-settings.js";
|
|
5
5
|
import { pageCursorOption, pageLimitOption, parsePageLimit, printEmptyPage, printPageHint, } from "../lib/list-options.js";
|
|
6
6
|
import { normalizeCliListEnvelope } from "../lib/paginate.js";
|
|
7
|
+
import { findProjectConfigPath } from "../lib/project-config.js";
|
|
8
|
+
import { drainChildren } from "../lib/child-apps-local.js";
|
|
9
|
+
import { registerAppsChildrenCommands, removeLocalStateAfterDelete, } from "./apps-children.js";
|
|
7
10
|
export function registerAppsCommands(program) {
|
|
8
11
|
const apps = program
|
|
9
12
|
.command("apps")
|
|
10
13
|
.description("Create, update, and manage applications")
|
|
11
14
|
.addHelpText("after", `
|
|
12
15
|
Examples:
|
|
13
|
-
$ primitive apps list
|
|
16
|
+
$ primitive apps list # parent apps; --all adds child apps
|
|
14
17
|
$ primitive apps create "My New App"
|
|
15
18
|
$ primitive apps get # details + server settings
|
|
16
19
|
$ primitive config set app auth.mode=invite-only # app settings live in app.toml
|
|
@@ -19,15 +22,22 @@ Examples:
|
|
|
19
22
|
// List apps
|
|
20
23
|
apps
|
|
21
24
|
.command("list")
|
|
22
|
-
.description("List
|
|
25
|
+
.description("List the apps you have access to (parent apps; --all adds child apps)")
|
|
23
26
|
.addOption(pageLimitOption())
|
|
24
27
|
.addOption(pageCursorOption())
|
|
28
|
+
.option("--all", "Include child apps")
|
|
25
29
|
.option("--json", "Output as JSON")
|
|
26
30
|
.action(async (options) => {
|
|
27
31
|
const limit = parsePageLimit(options.limit);
|
|
28
32
|
const client = new ApiClient();
|
|
29
33
|
try {
|
|
30
|
-
|
|
34
|
+
// Child apps are listed with their parent (`apps children list`);
|
|
35
|
+
// `--all` lists every app you are assigned to.
|
|
36
|
+
const page = normalizeCliListEnvelope(await client.listAppsPage({
|
|
37
|
+
limit,
|
|
38
|
+
cursor: options.cursor,
|
|
39
|
+
kind: options.all ? undefined : "parent",
|
|
40
|
+
}));
|
|
31
41
|
const appsList = page.items;
|
|
32
42
|
if (options.json) {
|
|
33
43
|
json(page);
|
|
@@ -37,10 +47,16 @@ Examples:
|
|
|
37
47
|
printEmptyPage(page, "apps");
|
|
38
48
|
return;
|
|
39
49
|
}
|
|
40
|
-
console.log(formatTable(
|
|
50
|
+
console.log(formatTable(options.all
|
|
51
|
+
? appsList.map((app) => ({
|
|
52
|
+
...app,
|
|
53
|
+
kind: app.parentAppId ? `child (${app.childSlug})` : "parent",
|
|
54
|
+
}))
|
|
55
|
+
: appsList, [
|
|
41
56
|
{ header: "ID", key: "id", format: formatId },
|
|
42
57
|
{ header: "NAME", key: "name" },
|
|
43
58
|
{ header: "ROLE", key: "role" },
|
|
59
|
+
...(options.all ? [{ header: "KIND", key: "kind" }] : []),
|
|
44
60
|
]));
|
|
45
61
|
printPageHint(page);
|
|
46
62
|
}
|
|
@@ -64,7 +80,9 @@ Examples:
|
|
|
64
80
|
if (options.adminEmail) {
|
|
65
81
|
payload.initialAdminEmail = options.adminEmail;
|
|
66
82
|
}
|
|
67
|
-
else if (credentials?.email) {
|
|
83
|
+
else if (credentials?.email && credentials.source !== "env") {
|
|
84
|
+
// Under PRIMITIVE_TOKEN (#3890) there is no stored identity to
|
|
85
|
+
// name: only --admin-email sets the initial admin.
|
|
68
86
|
payload.initialAdminEmail = credentials.email;
|
|
69
87
|
}
|
|
70
88
|
const result = await client.createApp(payload);
|
|
@@ -152,9 +170,19 @@ Examples:
|
|
|
152
170
|
});
|
|
153
171
|
apps
|
|
154
172
|
.command("delete")
|
|
155
|
-
.description("Delete an app (super-admin
|
|
173
|
+
.description("Delete an app (its console owner or a super-admin)")
|
|
156
174
|
.argument("<app-id>", "App ID to delete")
|
|
157
175
|
.option("--confirm <name>", "Skip interactive prompt by providing app name")
|
|
176
|
+
.option("--with-children", "Delete the app's child apps first, then the app")
|
|
177
|
+
.addHelpText("after", `
|
|
178
|
+
An app with child apps cannot be deleted until they are. --with-children
|
|
179
|
+
deletes them one at a time, then the app, and stops before the app at the
|
|
180
|
+
first child it cannot delete; running the command again finishes the job.
|
|
181
|
+
|
|
182
|
+
Examples:
|
|
183
|
+
$ primitive apps delete 01HXY... --confirm "My App"
|
|
184
|
+
$ primitive apps delete 01HXY... --confirm "My App" --with-children
|
|
185
|
+
`)
|
|
158
186
|
.action(async (appId, options) => {
|
|
159
187
|
const client = new ApiClient();
|
|
160
188
|
// Fetch app details first to get the name
|
|
@@ -167,10 +195,26 @@ Examples:
|
|
|
167
195
|
error(`Failed to fetch app: ${err.message}`);
|
|
168
196
|
process.exit(1);
|
|
169
197
|
}
|
|
198
|
+
let children = [];
|
|
199
|
+
if (options.withChildren) {
|
|
200
|
+
try {
|
|
201
|
+
children = await drainChildren(client, appId);
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
error(`Failed to list the app's child apps: ${err.message}`);
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
170
208
|
// Show app details
|
|
171
209
|
console.log();
|
|
172
210
|
keyValue("App ID", appId);
|
|
173
211
|
keyValue("App Name", appName);
|
|
212
|
+
if (options.withChildren) {
|
|
213
|
+
keyValue("Child apps", children.length);
|
|
214
|
+
for (const child of children) {
|
|
215
|
+
console.error(` ${child.childSlug} ${child.appId} ${child.name}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
174
218
|
console.log();
|
|
175
219
|
if (options.confirm) {
|
|
176
220
|
// Non-interactive: verify the provided name matches
|
|
@@ -194,14 +238,49 @@ Examples:
|
|
|
194
238
|
process.exit(1);
|
|
195
239
|
}
|
|
196
240
|
}
|
|
241
|
+
const configPath = findProjectConfigPath();
|
|
242
|
+
const deleted = [];
|
|
243
|
+
for (const child of children) {
|
|
244
|
+
try {
|
|
245
|
+
await client.deleteApp(child.appId);
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
// Already gone — deleted elsewhere, or by an earlier run.
|
|
249
|
+
if (!(err instanceof ApiError && err.statusCode === 404)) {
|
|
250
|
+
error(`Could not delete child app "${child.childSlug}" (${child.appId}): ${err.message}`);
|
|
251
|
+
error(`Deleted ${deleted.length} of ${children.length} child apps${deleted.length ? ` (${deleted.map((c) => c.childSlug).join(", ")})` : ""}; "${appName}" (${appId}) was not deleted. Fix the problem and run the command again to finish.`);
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
deleted.push(child);
|
|
256
|
+
success(`Child app "${child.childSlug}" (${child.appId}) deleted.`);
|
|
257
|
+
removeLocalStateAfterDelete(configPath, child.appId);
|
|
258
|
+
}
|
|
197
259
|
try {
|
|
198
260
|
await client.deleteApp(appId);
|
|
199
|
-
success(`App "${appName}" (${appId}) deleted.`);
|
|
200
261
|
}
|
|
201
262
|
catch (err) {
|
|
202
263
|
error(err.message);
|
|
264
|
+
if (err instanceof ApiError && (err.code === "APP_HAS_CHILDREN" || err.statusCode === 409)) {
|
|
265
|
+
await printChildrenOf(client, appId);
|
|
266
|
+
info(`Delete them first, or run 'primitive apps delete ${appId} --with-children' to delete them and then the app.`);
|
|
267
|
+
}
|
|
203
268
|
process.exit(1);
|
|
204
269
|
}
|
|
270
|
+
success(`App "${appName}" (${appId}) deleted.`);
|
|
271
|
+
removeLocalStateAfterDelete(configPath, appId);
|
|
205
272
|
});
|
|
273
|
+
registerAppsChildrenCommands(apps);
|
|
274
|
+
}
|
|
275
|
+
/** Lists an app's child apps after a refusal that names them. */
|
|
276
|
+
async function printChildrenOf(client, appId) {
|
|
277
|
+
try {
|
|
278
|
+
for (const child of await drainChildren(client, appId)) {
|
|
279
|
+
console.error(` ${child.childSlug} ${child.appId} ${child.name}`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
warn(`Could not list the app's child apps: ${err.message}`);
|
|
284
|
+
}
|
|
206
285
|
}
|
|
207
286
|
//# sourceMappingURL=apps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../../src/commands/apps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../../src/commands/apps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
/**
|
|
3
|
-
* `primitive auth sessions list|revoke` — the admin sessions behind
|
|
4
|
-
* web-admin logins (#3885). Each admin manages their own;
|
|
5
|
-
* name any admin with `--admin-id`.
|
|
3
|
+
* `primitive auth sessions list|revoke|create` — the admin sessions behind
|
|
4
|
+
* CLI, web-admin and CI logins (#3885, #3890). Each admin manages their own;
|
|
5
|
+
* a super-admin may name any admin with `--admin-id`.
|
|
6
6
|
*/
|
|
7
7
|
export declare function registerAuthSessionsCommands(program: Command): void;
|
|
@@ -1,26 +1,88 @@
|
|
|
1
1
|
import { ApiClient } from "../lib/api-client.js";
|
|
2
|
+
import { browserLogin } from "../lib/auth-flow.js";
|
|
3
|
+
import { requestCiProof } from "../lib/ci-session-request.js";
|
|
2
4
|
import { clearCredentials, loadCredentials } from "../lib/config.js";
|
|
3
5
|
import { confirmPrompt } from "../lib/confirm-prompt.js";
|
|
4
|
-
import {
|
|
6
|
+
import { environmentToken } from "../lib/credentials-store.js";
|
|
7
|
+
import { divider, error, info, keyValue, success, formatTable, formatDate, json, } from "../lib/output.js";
|
|
5
8
|
import { normalizeCliListEnvelope } from "../lib/paginate.js";
|
|
6
9
|
import { parsePageLimit } from "../lib/list-options.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
import { buildScopeRequest } from "../lib/scope-request.js";
|
|
11
|
+
import { sessionIdOfToken } from "../lib/session-id.js";
|
|
12
|
+
/**
|
|
13
|
+
* `primitive auth sessions create` (#3890): a CI session, approved in the
|
|
14
|
+
* browser from the stored login, whose opaque token is printed once.
|
|
15
|
+
*/
|
|
16
|
+
async function createCiSession(options) {
|
|
17
|
+
if (environmentToken()) {
|
|
18
|
+
error("CI sessions are created from a browser login. Unset PRIMITIVE_TOKEN and run `primitive login` first.");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const credentials = loadCredentials();
|
|
22
|
+
const built = buildScopeRequest({
|
|
23
|
+
command: "sessions",
|
|
24
|
+
name: options.name,
|
|
25
|
+
scope: options.scope,
|
|
26
|
+
app: options.app,
|
|
27
|
+
ttl: options.ttl,
|
|
28
|
+
login: credentials ? { refreshToken: credentials.refreshToken } : null,
|
|
29
|
+
});
|
|
30
|
+
if ("message" in built) {
|
|
31
|
+
error(built.message);
|
|
32
|
+
process.exit(1);
|
|
15
33
|
}
|
|
16
|
-
|
|
17
|
-
|
|
34
|
+
const login = credentials;
|
|
35
|
+
const query = built.query;
|
|
36
|
+
const proof = await requestCiProof(login.serverUrl, login.refreshToken, login.globalAdminAppId);
|
|
37
|
+
if ("message" in proof) {
|
|
38
|
+
error(proof.message);
|
|
39
|
+
process.exit(1);
|
|
18
40
|
}
|
|
41
|
+
info("Approve the CI session in the browser.");
|
|
42
|
+
const result = await browserLogin(login.serverUrl, {
|
|
43
|
+
query: { ...query, proof: proof.proof },
|
|
44
|
+
...(login.globalAdminAppId ? { partition: login.globalAdminAppId } : {}),
|
|
45
|
+
save: false,
|
|
46
|
+
});
|
|
47
|
+
const exchange = result.exchange;
|
|
48
|
+
if (!result.success || !exchange?.token) {
|
|
49
|
+
error(`CI session not created: ${result.error || "the server returned no CI token"}`);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
const created = {
|
|
53
|
+
token: exchange.token,
|
|
54
|
+
sessionId: exchange.sessionId ?? "",
|
|
55
|
+
name: exchange.name ?? query.name,
|
|
56
|
+
scope: exchange.scope ?? query.scope.split(","),
|
|
57
|
+
apps: exchange.apps ?? query.apps.split(","),
|
|
58
|
+
expiresAt: exchange.expiresAt,
|
|
59
|
+
};
|
|
60
|
+
if (options.json) {
|
|
61
|
+
json(created);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
success("CI session created.");
|
|
65
|
+
console.log();
|
|
66
|
+
console.log("⚠️ Save this token securely - it won't be shown again:");
|
|
67
|
+
console.log();
|
|
68
|
+
console.log(` ${created.token}`);
|
|
69
|
+
console.log();
|
|
70
|
+
divider();
|
|
71
|
+
keyValue("Session ID", created.sessionId);
|
|
72
|
+
keyValue("Name", created.name);
|
|
73
|
+
keyValue("Scope", created.scope.join(", "));
|
|
74
|
+
keyValue("Apps", created.apps.join(", "));
|
|
75
|
+
keyValue("Expires", formatDate(created.expiresAt));
|
|
76
|
+
divider();
|
|
77
|
+
console.log();
|
|
78
|
+
info("Run the CLI with it, with no credentials file, inside a project:");
|
|
79
|
+
console.log(" PRIMITIVE_TOKEN=<the token above> primitive apps get");
|
|
80
|
+
info(`Revoke it with: primitive auth sessions revoke ${created.sessionId}`);
|
|
19
81
|
}
|
|
20
82
|
/**
|
|
21
|
-
* `primitive auth sessions list|revoke` — the admin sessions behind
|
|
22
|
-
* web-admin logins (#3885). Each admin manages their own;
|
|
23
|
-
* name any admin with `--admin-id`.
|
|
83
|
+
* `primitive auth sessions list|revoke|create` — the admin sessions behind
|
|
84
|
+
* CLI, web-admin and CI logins (#3885, #3890). Each admin manages their own;
|
|
85
|
+
* a super-admin may name any admin with `--admin-id`.
|
|
24
86
|
*/
|
|
25
87
|
export function registerAuthSessionsCommands(program) {
|
|
26
88
|
const auth = program
|
|
@@ -30,14 +92,21 @@ export function registerAuthSessionsCommands(program) {
|
|
|
30
92
|
.command("sessions")
|
|
31
93
|
.description("List and revoke admin sessions")
|
|
32
94
|
.addHelpText("after", `
|
|
33
|
-
An admin session is one sign-in: a CLI login, a web-admin login,
|
|
34
|
-
bootstrap login. Revoking one makes its refresh fail; an
|
|
35
|
-
already issued keeps working until it expires (at most an
|
|
95
|
+
An admin session is one sign-in: a CLI login, a web-admin login, a
|
|
96
|
+
bootstrap login, or a CI session. Revoking one makes its refresh fail; an
|
|
97
|
+
access token it already issued keeps working until it expires (at most an
|
|
98
|
+
hour). A CI session's token fails on its next request.
|
|
99
|
+
|
|
100
|
+
A CI session is a named, pinned token for a CI job, approved in the browser
|
|
101
|
+
from your CLI login and shown once. It never holds admin, lives 90 days unless
|
|
102
|
+
--ttl says otherwise, and at most 1 year. Run the CLI with it in
|
|
103
|
+
PRIMITIVE_TOKEN; no credentials file is needed.
|
|
36
104
|
|
|
37
105
|
Examples:
|
|
38
106
|
$ primitive auth sessions list
|
|
39
107
|
$ primitive auth sessions list --json
|
|
40
108
|
$ primitive auth sessions revoke 01J9Z... --yes
|
|
109
|
+
$ primitive auth sessions create --name deploys --scope read,write --app 01J9Z...
|
|
41
110
|
`);
|
|
42
111
|
sessions
|
|
43
112
|
.command("list")
|
|
@@ -67,6 +136,11 @@ Examples:
|
|
|
67
136
|
console.log(formatTable(items, [
|
|
68
137
|
{ header: "SESSION", key: "sessionId" },
|
|
69
138
|
{ header: "KIND", key: "kind" },
|
|
139
|
+
{
|
|
140
|
+
header: "NAME",
|
|
141
|
+
key: "name",
|
|
142
|
+
format: (v) => (typeof v === "string" && v ? v : "—"),
|
|
143
|
+
},
|
|
70
144
|
{
|
|
71
145
|
header: "SCOPE",
|
|
72
146
|
key: "scope",
|
|
@@ -104,14 +178,20 @@ Examples:
|
|
|
104
178
|
.option("--json", "Output as JSON")
|
|
105
179
|
.action(async (sessionId, options) => {
|
|
106
180
|
const client = new ApiClient();
|
|
107
|
-
const
|
|
181
|
+
const credentials = loadCredentials();
|
|
182
|
+
// #3890 — under PRIMITIVE_TOKEN the token is the variable's, not a
|
|
183
|
+
// stored login: revoking its session never clears a stored login.
|
|
184
|
+
const fromEnvironment = credentials?.source === "env";
|
|
185
|
+
const current = sessionIdOfToken(credentials?.accessToken);
|
|
108
186
|
const isCurrent = current !== undefined && current === sessionId;
|
|
109
187
|
if (!options.yes) {
|
|
110
188
|
let confirm;
|
|
111
189
|
try {
|
|
112
|
-
confirm = await confirmPrompt(isCurrent
|
|
113
|
-
? `Revoke session ${sessionId}? It is
|
|
114
|
-
:
|
|
190
|
+
confirm = await confirmPrompt(isCurrent && fromEnvironment
|
|
191
|
+
? `Revoke session ${sessionId}? It is the session of the token in PRIMITIVE_TOKEN, which stops working.`
|
|
192
|
+
: isCurrent
|
|
193
|
+
? `Revoke session ${sessionId}? It is this login's own session; you will need to run 'primitive login' again.`
|
|
194
|
+
: `Revoke session ${sessionId}? Its refresh fails from now on.`);
|
|
115
195
|
}
|
|
116
196
|
catch (err) {
|
|
117
197
|
error(err.message);
|
|
@@ -124,14 +204,17 @@ Examples:
|
|
|
124
204
|
}
|
|
125
205
|
try {
|
|
126
206
|
const result = await client.revokeAdminSession(sessionId);
|
|
127
|
-
if (isCurrent)
|
|
207
|
+
if (isCurrent && !fromEnvironment)
|
|
128
208
|
clearCredentials();
|
|
129
209
|
if (options.json) {
|
|
130
210
|
json({ ...result, current: isCurrent });
|
|
131
211
|
return;
|
|
132
212
|
}
|
|
133
213
|
success(`Session ${sessionId} revoked.`);
|
|
134
|
-
if (isCurrent) {
|
|
214
|
+
if (isCurrent && fromEnvironment) {
|
|
215
|
+
info("The token in PRIMITIVE_TOKEN is now revoked: replace it, with a new one from 'primitive auth sessions create'.");
|
|
216
|
+
}
|
|
217
|
+
else if (isCurrent) {
|
|
135
218
|
info("That was this login's own session, so its local credentials were cleared. Run 'primitive login' to sign in again.");
|
|
136
219
|
}
|
|
137
220
|
}
|
|
@@ -140,5 +223,16 @@ Examples:
|
|
|
140
223
|
process.exit(1);
|
|
141
224
|
}
|
|
142
225
|
});
|
|
226
|
+
sessions
|
|
227
|
+
.command("create")
|
|
228
|
+
.description("Create a CI session: a named token pinned to apps, approved in the browser and shown once")
|
|
229
|
+
.option("--name <name>", "A name for the session, shown in 'auth sessions list' (required)")
|
|
230
|
+
.option("--scope <list>", "Scopes: read, write, data:read, data:write (never admin; required)")
|
|
231
|
+
.option("--app <ids>", "Pin the session to these app ids, comma-separated (required)")
|
|
232
|
+
.option("--ttl <d>", "Lifetime, such as 30d, 6mo or 1y (default 90d, at most 1y)")
|
|
233
|
+
.option("--json", "Output as JSON")
|
|
234
|
+
.action(async (options) => {
|
|
235
|
+
await createCiSession(options);
|
|
236
|
+
});
|
|
143
237
|
}
|
|
144
238
|
//# sourceMappingURL=auth-sessions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-sessions.js","sourceRoot":"","sources":["../../../src/commands/auth-sessions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,WAAW,EACX,UAAU,EACV,IAAI,GACL,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-sessions.js","sourceRoot":"","sources":["../../../src/commands/auth-sessions.ts"],"names":[],"mappings":"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"}
|