primitive-admin 1.2.0-alpha.6 → 1.2.0-alpha.8
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 +9 -3
- package/assets/skill/skills/primitive-platform/SKILL.md +12 -6
- package/dist/src/commands/apps-children.d.ts +1 -1
- package/dist/src/commands/apps-children.js +172 -28
- package/dist/src/commands/apps-children.js.map +1 -1
- package/dist/src/commands/auth.js +147 -38
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/config.js +43 -4
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/database-types.js +313 -13
- package/dist/src/commands/database-types.js.map +1 -1
- package/dist/src/commands/databases.js +143 -54
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.js +70 -11
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/init.d.ts +7 -0
- package/dist/src/commands/init.js +9 -1
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/llm.js +6 -9
- package/dist/src/commands/llm.js.map +1 -1
- package/dist/src/commands/settings.d.ts +9 -12
- package/dist/src/commands/settings.js +79 -31
- package/dist/src/commands/settings.js.map +1 -1
- package/dist/src/commands/sync-app-settings.d.ts +12 -2
- package/dist/src/commands/sync-app-settings.js +35 -10
- package/dist/src/commands/sync-app-settings.js.map +1 -1
- package/dist/src/commands/sync.d.ts +118 -6
- package/dist/src/commands/sync.js +638 -65
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/lib/api-client.d.ts +25 -6
- package/dist/src/lib/api-client.js +106 -72
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +38 -0
- package/dist/src/lib/app-settings-descriptor.js +96 -4
- package/dist/src/lib/app-settings-descriptor.js.map +1 -1
- package/dist/src/lib/child-apps-local.d.ts +45 -21
- package/dist/src/lib/child-apps-local.js +68 -30
- package/dist/src/lib/child-apps-local.js.map +1 -1
- package/dist/src/lib/credentials-home.d.ts +51 -0
- package/dist/src/lib/credentials-home.js +169 -0
- package/dist/src/lib/credentials-home.js.map +1 -0
- package/dist/src/lib/credentials-lock.d.ts +80 -0
- package/dist/src/lib/credentials-lock.js +222 -0
- package/dist/src/lib/credentials-lock.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +92 -5
- package/dist/src/lib/credentials-store.js +377 -53
- package/dist/src/lib/credentials-store.js.map +1 -1
- package/dist/src/lib/env-resolver-core.d.ts +1 -1
- package/dist/src/lib/env-resolver-core.js.map +1 -1
- package/dist/src/lib/function-bundle.d.ts +38 -18
- package/dist/src/lib/function-bundle.js +60 -35
- package/dist/src/lib/function-bundle.js.map +1 -1
- package/dist/src/lib/function-collect.d.ts +1 -1
- package/dist/src/lib/function-collect.js +4 -0
- package/dist/src/lib/function-collect.js.map +1 -1
- package/dist/src/lib/function-document-types.d.ts +5 -3
- package/dist/src/lib/function-document-types.js +10 -14
- package/dist/src/lib/function-document-types.js.map +1 -1
- package/dist/src/lib/function-source-roots.d.ts +67 -0
- package/dist/src/lib/function-source-roots.js +148 -0
- package/dist/src/lib/function-source-roots.js.map +1 -0
- package/dist/src/lib/function-sync.d.ts +27 -0
- package/dist/src/lib/function-sync.js +16 -3
- package/dist/src/lib/function-sync.js.map +1 -1
- package/dist/src/lib/function-triggers.d.ts +3 -15
- package/dist/src/lib/function-triggers.js +10 -72
- package/dist/src/lib/function-triggers.js.map +1 -1
- package/dist/src/lib/function-typecheck.d.ts +37 -2
- package/dist/src/lib/function-typecheck.js +210 -28
- package/dist/src/lib/function-typecheck.js.map +1 -1
- package/dist/src/lib/generated-config-surfaces.d.ts +148 -0
- package/dist/src/lib/generated-config-surfaces.js +229 -35
- 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/local-state.d.ts +21 -6
- package/dist/src/lib/local-state.js +78 -34
- package/dist/src/lib/local-state.js.map +1 -1
- package/dist/src/lib/login-scope-lines.d.ts +1 -1
- package/dist/src/lib/login-scope-lines.js +1 -1
- package/dist/src/lib/login-scope-lines.js.map +1 -1
- package/dist/src/lib/project-config.d.ts +7 -0
- package/dist/src/lib/project-config.js +22 -1
- package/dist/src/lib/project-config.js.map +1 -1
- package/dist/src/lib/push-failure-report.d.ts +45 -0
- package/dist/src/lib/push-failure-report.js +57 -0
- package/dist/src/lib/push-failure-report.js.map +1 -0
- package/dist/src/lib/root-import-decision.d.ts +9 -4
- package/dist/src/lib/root-import-decision.js +24 -3
- package/dist/src/lib/root-import-decision.js.map +1 -1
- package/dist/src/lib/scope-request.d.ts +8 -5
- package/dist/src/lib/scope-request.js +17 -8
- package/dist/src/lib/scope-request.js.map +1 -1
- package/dist/src/lib/sync-selectors.d.ts +5 -1
- package/dist/src/lib/sync-selectors.js +23 -13
- package/dist/src/lib/sync-selectors.js.map +1 -1
- package/dist/src/lib/transient-retry.d.ts +9 -0
- package/dist/src/lib/transient-retry.js +37 -0
- package/dist/src/lib/transient-retry.js.map +1 -1
- package/dist/src/lib/vars-override.d.ts +105 -0
- package/dist/src/lib/vars-override.js +143 -0
- package/dist/src/lib/vars-override.js.map +1 -0
- package/package.json +2 -2
- package/dist/src/lib/generated-workflow-model-fields.d.ts +0 -20
- package/dist/src/lib/generated-workflow-model-fields.js +0 -53
- package/dist/src/lib/generated-workflow-model-fields.js.map +0 -1
- package/dist/src/lib/workflow-field-descriptor.d.ts +0 -91
- package/dist/src/lib/workflow-field-descriptor.js +0 -153
- package/dist/src/lib/workflow-field-descriptor.js.map +0 -1
|
@@ -37,13 +37,36 @@
|
|
|
37
37
|
* `primitive login` reach the same line, so there is no flag shape for a
|
|
38
38
|
* pre-parse to miss. And it only PERMITS the global file — inside a project
|
|
39
39
|
* all four still use the per-environment slots.
|
|
40
|
+
*
|
|
41
|
+
* A child environment (#4511) — a machine-local environment on the server of
|
|
42
|
+
* the committed environment whose tree it shares — has no slot of its own: it
|
|
43
|
+
* reads and writes its parent's, so one login and one logout cover the parent
|
|
44
|
+
* and all of its children.
|
|
45
|
+
*
|
|
46
|
+
* A slot records the server that issued it (#4492). A slot is keyed by
|
|
47
|
+
* environment name while the environment's `apiUrl` is committed, so a branch
|
|
48
|
+
* switch can point `dev` at another server than the one its stored tokens
|
|
49
|
+
* came from. A slot recording another server than the invoking environment's
|
|
50
|
+
* is never used (its tokens are not sent), and credentials from another server
|
|
51
|
+
* than the slot's environment's are never stored. A slot written before this
|
|
52
|
+
* records no server; it is read against the environment's `apiUrl`, and its
|
|
53
|
+
* next write records one.
|
|
54
|
+
*
|
|
55
|
+
* In a linked git worktree the project's file is the main worktree's
|
|
56
|
+
* (#4492, `credentials-home.ts`), so one login serves every worktree of the
|
|
57
|
+
* repository that holds the project. Every project-mode write is a locked
|
|
58
|
+
* read-modify-write with an atomic replace (`credentials-lock.ts`), because
|
|
59
|
+
* several processes — one per worktree — write that one file.
|
|
40
60
|
*/
|
|
41
61
|
import { chmodSync, existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync, } from "fs";
|
|
42
62
|
import { homedir } from "os";
|
|
43
|
-
import { join } from "path";
|
|
44
|
-
import { getCurrentEnvironment, getProjectConfig } from "./env-resolver.js";
|
|
45
|
-
import { missingConfigMessage, PrimitiveEnvError } from "./env-resolver-core.js";
|
|
63
|
+
import { dirname, join } from "path";
|
|
64
|
+
import { getCurrentEnvironment, getProjectConfig, } from "./env-resolver.js";
|
|
65
|
+
import { missingConfigMessage, PROJECT_CONFIG_FILENAME, PROJECT_TREE_DIR, PrimitiveEnvError, readLocalState, } from "./env-resolver-core.js";
|
|
46
66
|
import { DEFAULT_SERVER_URL } from "./constants.js";
|
|
67
|
+
import { credentialsRootFor, ignoredLocalCredentialsFile, oldGitHint, sharedWorktreeCount, } from "./credentials-home.js";
|
|
68
|
+
import { acquireCredentialsLock, fileVersion, replaceFileUnderLock } from "./credentials-lock.js";
|
|
69
|
+
import { sessionIdOfToken } from "./session-id.js";
|
|
47
70
|
export const PROJECT_LOCAL_DIR = ".primitive";
|
|
48
71
|
export const PROJECT_CREDENTIALS_FILENAME = "credentials.json";
|
|
49
72
|
/**
|
|
@@ -87,11 +110,18 @@ export function isProjectMode() {
|
|
|
87
110
|
*/
|
|
88
111
|
export function getCredentialsFilePath() {
|
|
89
112
|
const env = resolveCurrentEnvironment();
|
|
90
|
-
if (env)
|
|
91
|
-
return
|
|
92
|
-
}
|
|
113
|
+
if (env)
|
|
114
|
+
return credentialsFileForProject(env.projectRoot);
|
|
93
115
|
return getLegacyCredentialsFile();
|
|
94
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* The credentials file of the project at `projectRoot`: its own
|
|
119
|
+
* `.primitive/credentials.json`, or in a linked git worktree the main
|
|
120
|
+
* worktree's for the same project (#4492).
|
|
121
|
+
*/
|
|
122
|
+
export function credentialsFileForProject(projectRoot) {
|
|
123
|
+
return join(credentialsRootFor(projectRoot), PROJECT_LOCAL_DIR, PROJECT_CREDENTIALS_FILENAME);
|
|
124
|
+
}
|
|
95
125
|
/**
|
|
96
126
|
* Set by the four actions that may read or write the global credentials file
|
|
97
127
|
* with no project in scope. Process-wide, because one invocation runs one
|
|
@@ -178,7 +208,7 @@ function legacyCredentialsRecord(credentials) {
|
|
|
178
208
|
* an empty shape when the file is missing or unreadable.
|
|
179
209
|
*/
|
|
180
210
|
function loadProjectCredentialsFile(projectRoot) {
|
|
181
|
-
const path =
|
|
211
|
+
const path = credentialsFileForProject(projectRoot);
|
|
182
212
|
const data = readJsonFile(path);
|
|
183
213
|
if (!data || typeof data !== "object" || !data.environments) {
|
|
184
214
|
return { environments: {} };
|
|
@@ -190,16 +220,174 @@ function loadProjectCredentialsFile(projectRoot) {
|
|
|
190
220
|
}
|
|
191
221
|
return data;
|
|
192
222
|
}
|
|
193
|
-
|
|
194
|
-
|
|
223
|
+
/**
|
|
224
|
+
* The one way a project's credentials file is written: take the lock, read
|
|
225
|
+
* the file, apply `mutate`, and — when it reports a change — replace the file
|
|
226
|
+
* atomically while still holding the lock. Throws when the lock stays held by
|
|
227
|
+
* another writer, or is lost or overtaken by another writer's commit before
|
|
228
|
+
* this one; the file is then unchanged.
|
|
229
|
+
*/
|
|
230
|
+
function updateProjectCredentialsFile(projectRoot, mutate) {
|
|
231
|
+
const path = credentialsFileForProject(projectRoot);
|
|
232
|
+
const dir = dirname(path);
|
|
195
233
|
ensureDir(dir);
|
|
196
|
-
const
|
|
197
|
-
|
|
234
|
+
const lock = acquireCredentialsLock(dir);
|
|
235
|
+
try {
|
|
236
|
+
const readVersion = fileVersion(path);
|
|
237
|
+
const file = loadProjectCredentialsFile(projectRoot);
|
|
238
|
+
if (mutate(file))
|
|
239
|
+
replaceFileUnderLock(lock, path, JSON.stringify(file, null, 2), readVersion);
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
lock.release();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
const trimSlash = (url) => url.replace(/\/+$/, "");
|
|
246
|
+
/**
|
|
247
|
+
* Whether two server URLs name the same server: scheme and host compare
|
|
248
|
+
* case-insensitively and the path with trailing slashes removed. A URL that
|
|
249
|
+
* does not parse compares as its trailing-slash-trimmed string.
|
|
250
|
+
*/
|
|
251
|
+
export function sameServer(a, b) {
|
|
198
252
|
try {
|
|
199
|
-
|
|
253
|
+
const x = new URL(a);
|
|
254
|
+
const y = new URL(b);
|
|
255
|
+
return (x.protocol.toLowerCase() === y.protocol.toLowerCase() &&
|
|
256
|
+
x.host.toLowerCase() === y.host.toLowerCase() &&
|
|
257
|
+
trimSlash(x.pathname) === trimSlash(y.pathname));
|
|
200
258
|
}
|
|
201
259
|
catch {
|
|
202
|
-
|
|
260
|
+
return trimSlash(a) === trimSlash(b);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/** The refusal of credentials issued by another server than the slot's environment's. */
|
|
264
|
+
function writeMismatch(envName, incoming, configured) {
|
|
265
|
+
return new PrimitiveEnvError("server-mismatch", `These credentials were issued by ${incoming}, but the "${envName}" login is for ${configured}; ` +
|
|
266
|
+
`nothing was stored. Run 'primitive -e ${envName} login' to sign in to ${configured}, or run ` +
|
|
267
|
+
`this command outside a project or from an environment that points at ${incoming}.`);
|
|
268
|
+
}
|
|
269
|
+
/** Whether a stored slot records a server other than `apiUrl`. */
|
|
270
|
+
function recordsOtherServer(stored, apiUrl) {
|
|
271
|
+
return stored.serverUrl !== undefined && !sameServer(stored.serverUrl, apiUrl);
|
|
272
|
+
}
|
|
273
|
+
/** The slot record for `credentials`, recording the server that issued them. */
|
|
274
|
+
function storedRecord(credentials) {
|
|
275
|
+
return {
|
|
276
|
+
serverUrl: credentials.serverUrl,
|
|
277
|
+
accessToken: credentials.accessToken,
|
|
278
|
+
refreshToken: credentials.refreshToken,
|
|
279
|
+
expiresAt: credentials.expiresAt,
|
|
280
|
+
adminId: credentials.adminId,
|
|
281
|
+
email: credentials.email,
|
|
282
|
+
role: credentials.role,
|
|
283
|
+
name: credentials.name,
|
|
284
|
+
globalAdminAppId: credentials.globalAdminAppId,
|
|
285
|
+
stepUp: credentials.stepUp,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* The slot holding `env`'s login (#4511). A child environment uses its
|
|
290
|
+
* parent's slot, and the children of a slot are the machine-local entries of
|
|
291
|
+
* its tree on its server. A machine-local entry on another server is not a
|
|
292
|
+
* child: a login for one server says nothing about another, so it keeps a slot
|
|
293
|
+
* of its own.
|
|
294
|
+
*/
|
|
295
|
+
function loginSlotOf(env) {
|
|
296
|
+
const own = { slot: env.name, children: [], serverUrl: env.config.apiUrl };
|
|
297
|
+
const project = getProjectConfig();
|
|
298
|
+
const parent = project?.environments[env.tree];
|
|
299
|
+
if (!project || !parent)
|
|
300
|
+
return own;
|
|
301
|
+
const onParentServer = (apiUrl) => sameServer(apiUrl, parent.apiUrl);
|
|
302
|
+
if (env.local && !onParentServer(env.config.apiUrl))
|
|
303
|
+
return own;
|
|
304
|
+
const children = Object.entries(readLocalState(env.projectConfigPath, project).environments)
|
|
305
|
+
.filter(([, entry]) => entry.tree === env.tree && onParentServer(entry.apiUrl))
|
|
306
|
+
.map(([name]) => name);
|
|
307
|
+
return { slot: env.tree, children, serverUrl: parent.apiUrl };
|
|
308
|
+
}
|
|
309
|
+
/** Whether two stored logins hold the same server session. */
|
|
310
|
+
function sameSession(a, b) {
|
|
311
|
+
const sid = sessionIdOfToken(a.accessToken);
|
|
312
|
+
if (sid !== undefined)
|
|
313
|
+
return sid === sessionIdOfToken(b.accessToken);
|
|
314
|
+
return Boolean(a.accessToken) && a.accessToken === b.accessToken;
|
|
315
|
+
}
|
|
316
|
+
/** The expiry (`exp`, in seconds) a JWT carries, or undefined. */
|
|
317
|
+
function expiryOfToken(token) {
|
|
318
|
+
if (!token)
|
|
319
|
+
return undefined;
|
|
320
|
+
try {
|
|
321
|
+
const payload = JSON.parse(Buffer.from(token.split(".")[1] ?? "", "base64url").toString("utf-8"));
|
|
322
|
+
return typeof payload?.exp === "number" ? payload.exp : undefined;
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
return undefined;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Whether `slot`'s refresh token may outlive `login`'s: a copy refreshed in
|
|
330
|
+
* the child since it was made. It can still revoke the session after the
|
|
331
|
+
* parent's token has expired, so it is not thrown away unrevoked. Only an
|
|
332
|
+
* identical token, or one known to expire no later, is said not to.
|
|
333
|
+
*/
|
|
334
|
+
function outlivesRefresh(slot, login) {
|
|
335
|
+
if (slot.refreshToken === login.refreshToken)
|
|
336
|
+
return false;
|
|
337
|
+
const mine = expiryOfToken(slot.refreshToken);
|
|
338
|
+
const theirs = expiryOfToken(login.refreshToken);
|
|
339
|
+
return mine === undefined || theirs === undefined || mine > theirs;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Whether `slot` holds a live step-up `login` does not: one a `login --scope
|
|
343
|
+
* admin` in the child stored beside the copied login. A step-up is a session
|
|
344
|
+
* of its own, which revoking the login's does not end.
|
|
345
|
+
*/
|
|
346
|
+
function ownStepUp(slot, login) {
|
|
347
|
+
const stepUp = slot.stepUp;
|
|
348
|
+
if (!stepUp || new Date(stepUp.expiresAt).getTime() <= Date.now())
|
|
349
|
+
return false;
|
|
350
|
+
const sessionOf = (s) => s.sessionId || sessionIdOfToken(s.accessToken) || s.accessToken;
|
|
351
|
+
return !login.stepUp || sessionOf(stepUp) !== sessionOf(login.stepUp);
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* The child slots that are mere copies of `login`: written when a child was
|
|
355
|
+
* registered before children used their parent's login, holding its session
|
|
356
|
+
* and nothing a logout could still need. A child slot holding another
|
|
357
|
+
* session, a step-up of its own, or a refresh token that may outlive the
|
|
358
|
+
* parent's is not one: it stays (it is never read) until `logout` revokes it.
|
|
359
|
+
*/
|
|
360
|
+
function copiedChildSlots(file, login, children) {
|
|
361
|
+
return children.filter((name) => {
|
|
362
|
+
const slot = file.environments[name];
|
|
363
|
+
return (slot !== undefined &&
|
|
364
|
+
sameSession(slot, login) &&
|
|
365
|
+
!outlivesRefresh(slot, login) &&
|
|
366
|
+
!ownStepUp(slot, login));
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Removes the {@link copiedChildSlots} of the login in `slot`, deciding again
|
|
371
|
+
* under the lock against the file as it is then. Best-effort, so a read never
|
|
372
|
+
* fails on a file it cannot rewrite or a lock it cannot take.
|
|
373
|
+
*/
|
|
374
|
+
function dropCopiedChildSlots(projectRoot, file, slot, children) {
|
|
375
|
+
const login = file.environments[slot];
|
|
376
|
+
if (!login || copiedChildSlots(file, login, children).length === 0)
|
|
377
|
+
return;
|
|
378
|
+
try {
|
|
379
|
+
updateProjectCredentialsFile(projectRoot, (current) => {
|
|
380
|
+
const currentLogin = current.environments[slot];
|
|
381
|
+
if (!currentLogin)
|
|
382
|
+
return false;
|
|
383
|
+
const copies = copiedChildSlots(current, currentLogin, children);
|
|
384
|
+
for (const name of copies)
|
|
385
|
+
delete current.environments[name];
|
|
386
|
+
return copies.length > 0;
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
// The copies are ignored either way; the next read tries again.
|
|
203
391
|
}
|
|
204
392
|
}
|
|
205
393
|
/** The variable a CI job puts its admin token in (#3890). */
|
|
@@ -250,7 +438,8 @@ function assertStorable(credentials) {
|
|
|
250
438
|
*
|
|
251
439
|
* In project mode, we blend the per-env stored creds with the serverUrl
|
|
252
440
|
* and appId from primitive/config.json to produce the Credentials the rest of
|
|
253
|
-
* the CLI expects.
|
|
441
|
+
* the CLI expects. A child environment reads its parent's slot (#4511), and
|
|
442
|
+
* any child slot found to be a copy of that login is removed.
|
|
254
443
|
*
|
|
255
444
|
* `PRIMITIVE_TOKEN` (#3890), when set, takes precedence over any stored
|
|
256
445
|
* login and no file is read. It does not loosen the outside-a-project
|
|
@@ -265,11 +454,36 @@ export function loadCredentialsStore() {
|
|
|
265
454
|
return loadLegacyCredentials();
|
|
266
455
|
}
|
|
267
456
|
const file = loadProjectCredentialsFile(env.projectRoot);
|
|
268
|
-
const
|
|
457
|
+
const { slot, children } = loginSlotOf(env);
|
|
458
|
+
const stored = file.environments[slot];
|
|
269
459
|
if (!stored)
|
|
270
460
|
return null;
|
|
461
|
+
if (recordsOtherServer(stored, env.config.apiUrl)) {
|
|
462
|
+
throw new PrimitiveEnvError("server-mismatch", `The "${env.name}" login in ${getCredentialsFilePath()} was issued by ${stored.serverUrl}, ` +
|
|
463
|
+
`but "${env.name}" now points at ${env.config.apiUrl}; its tokens were not sent. ` +
|
|
464
|
+
`Run 'primitive -e ${env.name} login' to sign in there.`);
|
|
465
|
+
}
|
|
466
|
+
dropCopiedChildSlots(env.projectRoot, file, slot, children);
|
|
467
|
+
return storedCredentials(env.config.apiUrl, stored);
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* The current environment's stored login when its slot records another server
|
|
471
|
+
* than the environment's, blended with the server it RECORDS; null otherwise.
|
|
472
|
+
* For `logout` alone, which revokes such a login at the server that issued it
|
|
473
|
+
* and so never sends its tokens anywhere else.
|
|
474
|
+
*/
|
|
475
|
+
export function mismatchedLogin() {
|
|
476
|
+
const env = resolveCurrentEnvironment();
|
|
477
|
+
if (!env || environmentToken())
|
|
478
|
+
return null;
|
|
479
|
+
const stored = loadProjectCredentialsFile(env.projectRoot).environments[loginSlotOf(env).slot];
|
|
480
|
+
if (!stored || !recordsOtherServer(stored, env.config.apiUrl))
|
|
481
|
+
return null;
|
|
482
|
+
return storedCredentials(stored.serverUrl, stored);
|
|
483
|
+
}
|
|
484
|
+
function storedCredentials(serverUrl, stored) {
|
|
271
485
|
return {
|
|
272
|
-
serverUrl
|
|
486
|
+
serverUrl,
|
|
273
487
|
accessToken: stored.accessToken,
|
|
274
488
|
refreshToken: stored.refreshToken,
|
|
275
489
|
expiresAt: stored.expiresAt,
|
|
@@ -281,12 +495,88 @@ export function loadCredentialsStore() {
|
|
|
281
495
|
...(stored.stepUp ? { stepUp: stored.stepUp } : {}),
|
|
282
496
|
};
|
|
283
497
|
}
|
|
498
|
+
/**
|
|
499
|
+
* The environments that share the current environment's login (#4511): the
|
|
500
|
+
* one whose slot holds it, and its child environments on this machine. Null
|
|
501
|
+
* outside a project, where there is one global login.
|
|
502
|
+
*/
|
|
503
|
+
export function loginEnvironments() {
|
|
504
|
+
const env = resolveCurrentEnvironment();
|
|
505
|
+
if (!env)
|
|
506
|
+
return null;
|
|
507
|
+
const { slot, children } = loginSlotOf(env);
|
|
508
|
+
return { parent: slot, children };
|
|
509
|
+
}
|
|
510
|
+
/** The current project's root, or null outside a project or when it cannot be resolved. */
|
|
511
|
+
function currentProjectRoot() {
|
|
512
|
+
try {
|
|
513
|
+
return getCurrentEnvironment()?.projectRoot ?? null;
|
|
514
|
+
}
|
|
515
|
+
catch {
|
|
516
|
+
return null;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* What a login, logout or not-logged-in refusal adds about a linked git
|
|
521
|
+
* worktree (#4492). Each is null when it has nothing to say: outside a
|
|
522
|
+
* project, and where the project's login is its own.
|
|
523
|
+
*/
|
|
524
|
+
export const worktreeLoginNotes = {
|
|
525
|
+
/** After a login stored in another worktree's file: where it went. */
|
|
526
|
+
storedElsewhere() {
|
|
527
|
+
const root = currentProjectRoot();
|
|
528
|
+
if (!root || credentialsRootFor(root) === root)
|
|
529
|
+
return null;
|
|
530
|
+
return `Stored in ${credentialsFileForProject(root)}, shared with every git worktree of this repository that holds this project.`;
|
|
531
|
+
},
|
|
532
|
+
/** After a logout of `slot`'s login, when more than one worktree uses it. */
|
|
533
|
+
sharedLogout(slot) {
|
|
534
|
+
const root = currentProjectRoot();
|
|
535
|
+
if (!root || sharedWorktreeCount(root) < 2)
|
|
536
|
+
return null;
|
|
537
|
+
return `The ${slot} login is shared by every git worktree of this repository that holds this project, so all of them are signed out.`;
|
|
538
|
+
},
|
|
539
|
+
/** A linked worktree's own credentials file, which is never read. */
|
|
540
|
+
ignoredFile() {
|
|
541
|
+
const root = currentProjectRoot();
|
|
542
|
+
const ignored = root ? ignoredLocalCredentialsFile(root) : null;
|
|
543
|
+
if (!root || !ignored)
|
|
544
|
+
return null;
|
|
545
|
+
return `Ignored ${ignored}: this worktree uses the shared login in ${credentialsFileForProject(root)}. You can delete the ignored file.`;
|
|
546
|
+
},
|
|
547
|
+
/** After "not logged in", when git is why a linked worktree has no login. */
|
|
548
|
+
notLoggedIn() {
|
|
549
|
+
const root = currentProjectRoot();
|
|
550
|
+
return root ? oldGitHint(root) : null;
|
|
551
|
+
},
|
|
552
|
+
};
|
|
553
|
+
/**
|
|
554
|
+
* The logins still held in the slots of the current login's child
|
|
555
|
+
* environments: sessions signed in to a child before children used their
|
|
556
|
+
* parent's login, and copies of the parent's that kept a step-up or a refresh
|
|
557
|
+
* token of their own. No command reads them; `logout` revokes them before
|
|
558
|
+
* {@link clearLeftoverChildLogins} removes them. Empty outside a project.
|
|
559
|
+
*/
|
|
560
|
+
export function leftoverChildLogins() {
|
|
561
|
+
const env = resolveCurrentEnvironment();
|
|
562
|
+
if (!env)
|
|
563
|
+
return [];
|
|
564
|
+
const file = loadProjectCredentialsFile(env.projectRoot);
|
|
565
|
+
return loginSlotOf(env)
|
|
566
|
+
.children.filter((name) => file.environments[name] !== undefined)
|
|
567
|
+
.map((name) => {
|
|
568
|
+
const stored = file.environments[name];
|
|
569
|
+
return storedCredentials(stored.serverUrl ?? env.config.apiUrl, stored);
|
|
570
|
+
});
|
|
571
|
+
}
|
|
284
572
|
/**
|
|
285
573
|
* Saves credentials. In project mode, writes to the per-env slot in the
|
|
286
574
|
* project credentials file. In legacy mode, writes the global file.
|
|
287
575
|
*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
576
|
+
* In project mode the slot records the incoming `serverUrl`, which must be
|
|
577
|
+
* the same server as the slot's environment's `apiUrl`: credentials from
|
|
578
|
+
* another server are refused with `server-mismatch` and nothing is written
|
|
579
|
+
* (#4492). In a child environment the parent's slot is written (#4511).
|
|
290
580
|
*/
|
|
291
581
|
export function saveCredentialsStore(credentials) {
|
|
292
582
|
assertStorable(credentials);
|
|
@@ -302,23 +592,23 @@ export function saveCredentialsStore(credentials) {
|
|
|
302
592
|
}
|
|
303
593
|
return;
|
|
304
594
|
}
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
name: credentials.name,
|
|
314
|
-
globalAdminAppId: credentials.globalAdminAppId,
|
|
315
|
-
stepUp: credentials.stepUp,
|
|
316
|
-
};
|
|
317
|
-
writeProjectCredentialsFile(env.projectRoot, file);
|
|
595
|
+
const { slot, serverUrl } = loginSlotOf(env);
|
|
596
|
+
if (!sameServer(credentials.serverUrl, serverUrl)) {
|
|
597
|
+
throw writeMismatch(env.name, credentials.serverUrl, serverUrl);
|
|
598
|
+
}
|
|
599
|
+
updateProjectCredentialsFile(env.projectRoot, (file) => {
|
|
600
|
+
file.environments[slot] = storedRecord(credentials);
|
|
601
|
+
return true;
|
|
602
|
+
});
|
|
318
603
|
}
|
|
319
604
|
/**
|
|
320
605
|
* Clears credentials for the current environment (project mode) or
|
|
321
|
-
* deletes the legacy file (legacy mode).
|
|
606
|
+
* deletes the legacy file (legacy mode). In project mode that is the slot
|
|
607
|
+
* holding the environment's login, whichever environment of the tree is
|
|
608
|
+
* current, and the child slots holding only that login's session (#4511),
|
|
609
|
+
* which its caller has just revoked. A child slot holding another session or
|
|
610
|
+
* a step-up of its own stays for `logout` to revoke
|
|
611
|
+
* ({@link clearLeftoverChildLogins}).
|
|
322
612
|
*/
|
|
323
613
|
export function clearCredentialsStore() {
|
|
324
614
|
const env = resolveCurrentEnvironment();
|
|
@@ -333,9 +623,42 @@ export function clearCredentialsStore() {
|
|
|
333
623
|
}
|
|
334
624
|
return;
|
|
335
625
|
}
|
|
626
|
+
if (!existsSync(credentialsFileForProject(env.projectRoot)))
|
|
627
|
+
return;
|
|
628
|
+
const { slot, children } = loginSlotOf(env);
|
|
629
|
+
updateProjectCredentialsFile(env.projectRoot, (file) => {
|
|
630
|
+
const login = file.environments[slot];
|
|
631
|
+
if (!login)
|
|
632
|
+
return false;
|
|
633
|
+
for (const name of children) {
|
|
634
|
+
const child = file.environments[name];
|
|
635
|
+
if (child && sameSession(child, login) && !ownStepUp(child, login)) {
|
|
636
|
+
delete file.environments[name];
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
delete file.environments[slot];
|
|
640
|
+
return true;
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* Removes every slot the current login's child environments kept, once
|
|
645
|
+
* `logout` has revoked the logins {@link leftoverChildLogins} returned. No-op
|
|
646
|
+
* outside a project.
|
|
647
|
+
*/
|
|
648
|
+
export function clearLeftoverChildLogins() {
|
|
649
|
+
const env = resolveCurrentEnvironment();
|
|
650
|
+
if (!env)
|
|
651
|
+
return;
|
|
652
|
+
const { children } = loginSlotOf(env);
|
|
336
653
|
const file = loadProjectCredentialsFile(env.projectRoot);
|
|
337
|
-
|
|
338
|
-
|
|
654
|
+
if (!children.some((name) => file.environments[name]))
|
|
655
|
+
return;
|
|
656
|
+
updateProjectCredentialsFile(env.projectRoot, (current) => {
|
|
657
|
+
const kept = children.filter((name) => current.environments[name]);
|
|
658
|
+
for (const name of kept)
|
|
659
|
+
delete current.environments[name];
|
|
660
|
+
return kept.length > 0;
|
|
661
|
+
});
|
|
339
662
|
}
|
|
340
663
|
/**
|
|
341
664
|
* Removes the credentials slot for the named environment in a specific
|
|
@@ -359,34 +682,35 @@ export function clearCredentialsForEnvInProject(projectRoot, envName) {
|
|
|
359
682
|
* must not lose track of a login can tell the two apart.
|
|
360
683
|
*/
|
|
361
684
|
export function removeCredentialsSlotInProject(projectRoot, envName) {
|
|
362
|
-
|
|
363
|
-
if (!file.environments[envName])
|
|
685
|
+
if (!loadProjectCredentialsFile(projectRoot).environments[envName])
|
|
364
686
|
return false;
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
687
|
+
let removed = false;
|
|
688
|
+
updateProjectCredentialsFile(projectRoot, (file) => {
|
|
689
|
+
removed = file.environments[envName] !== undefined;
|
|
690
|
+
delete file.environments[envName];
|
|
691
|
+
return removed;
|
|
692
|
+
});
|
|
693
|
+
return removed;
|
|
368
694
|
}
|
|
369
695
|
/**
|
|
370
696
|
* Writes the credentials slot for the named environment in a specific
|
|
371
697
|
* project's credentials file. Used by `primitive init` to carry the session
|
|
372
698
|
* it just authenticated into the freshly scaffolded project, so the first
|
|
373
|
-
* in-project CLI command works without a second `primitive login`.
|
|
699
|
+
* in-project CLI command works without a second `primitive login`. The slot
|
|
700
|
+
* records the credentials' server, which must be the named environment's
|
|
701
|
+
* `apiUrl` in the project's config (#4492).
|
|
374
702
|
*/
|
|
375
703
|
export function seedCredentialsForEnvInProject(projectRoot, envName, credentials) {
|
|
376
704
|
assertStorable(credentials);
|
|
377
|
-
const
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
globalAdminAppId: credentials.globalAdminAppId,
|
|
387
|
-
stepUp: credentials.stepUp,
|
|
388
|
-
};
|
|
389
|
-
writeProjectCredentialsFile(projectRoot, file);
|
|
705
|
+
const config = readJsonFile(join(projectRoot, PROJECT_TREE_DIR, PROJECT_CONFIG_FILENAME));
|
|
706
|
+
const apiUrl = config?.environments?.[envName]?.apiUrl;
|
|
707
|
+
if (typeof apiUrl === "string" && !sameServer(credentials.serverUrl, apiUrl)) {
|
|
708
|
+
throw writeMismatch(envName, credentials.serverUrl, apiUrl);
|
|
709
|
+
}
|
|
710
|
+
updateProjectCredentialsFile(projectRoot, (file) => {
|
|
711
|
+
file.environments[envName] = storedRecord(credentials);
|
|
712
|
+
return true;
|
|
713
|
+
});
|
|
390
714
|
}
|
|
391
715
|
/**
|
|
392
716
|
* Lists all environments that have stored credentials in project mode.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials-store.js","sourceRoot":"","sources":["../../../src/lib/credentials-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"credentials-store.js","sourceRoot":"","sources":["../../../src/lib/credentials-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,7 +88,7 @@ export declare function missingConfigMessage(where: string): string;
|
|
|
88
88
|
* Error kinds callers branch on. Every failure is one of these — no reader is
|
|
89
89
|
* ever left guessing what a broken config meant.
|
|
90
90
|
*/
|
|
91
|
-
export type PrimitiveEnvErrorKind = "missing-config" | "malformed-config" | "unsupported-version" | "corrupt-local-state" | "unknown-environment" | "no-selection" | "missing-app-id" | "stale-layout";
|
|
91
|
+
export type PrimitiveEnvErrorKind = "missing-config" | "malformed-config" | "unsupported-version" | "corrupt-local-state" | "unknown-environment" | "no-selection" | "missing-app-id" | "stale-layout" | "server-mismatch";
|
|
92
92
|
export declare class PrimitiveEnvError extends Error {
|
|
93
93
|
readonly kind: PrimitiveEnvErrorKind;
|
|
94
94
|
readonly path?: string;
|