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.
Files changed (110) hide show
  1. package/README.md +9 -3
  2. package/assets/skill/skills/primitive-platform/SKILL.md +12 -6
  3. package/dist/src/commands/apps-children.d.ts +1 -1
  4. package/dist/src/commands/apps-children.js +172 -28
  5. package/dist/src/commands/apps-children.js.map +1 -1
  6. package/dist/src/commands/auth.js +147 -38
  7. package/dist/src/commands/auth.js.map +1 -1
  8. package/dist/src/commands/config.js +43 -4
  9. package/dist/src/commands/config.js.map +1 -1
  10. package/dist/src/commands/database-types.js +313 -13
  11. package/dist/src/commands/database-types.js.map +1 -1
  12. package/dist/src/commands/databases.js +143 -54
  13. package/dist/src/commands/databases.js.map +1 -1
  14. package/dist/src/commands/documents.js +70 -11
  15. package/dist/src/commands/documents.js.map +1 -1
  16. package/dist/src/commands/init.d.ts +7 -0
  17. package/dist/src/commands/init.js +9 -1
  18. package/dist/src/commands/init.js.map +1 -1
  19. package/dist/src/commands/llm.js +6 -9
  20. package/dist/src/commands/llm.js.map +1 -1
  21. package/dist/src/commands/settings.d.ts +9 -12
  22. package/dist/src/commands/settings.js +79 -31
  23. package/dist/src/commands/settings.js.map +1 -1
  24. package/dist/src/commands/sync-app-settings.d.ts +12 -2
  25. package/dist/src/commands/sync-app-settings.js +35 -10
  26. package/dist/src/commands/sync-app-settings.js.map +1 -1
  27. package/dist/src/commands/sync.d.ts +118 -6
  28. package/dist/src/commands/sync.js +638 -65
  29. package/dist/src/commands/sync.js.map +1 -1
  30. package/dist/src/lib/api-client.d.ts +25 -6
  31. package/dist/src/lib/api-client.js +106 -72
  32. package/dist/src/lib/api-client.js.map +1 -1
  33. package/dist/src/lib/app-settings-descriptor.d.ts +38 -0
  34. package/dist/src/lib/app-settings-descriptor.js +96 -4
  35. package/dist/src/lib/app-settings-descriptor.js.map +1 -1
  36. package/dist/src/lib/child-apps-local.d.ts +45 -21
  37. package/dist/src/lib/child-apps-local.js +68 -30
  38. package/dist/src/lib/child-apps-local.js.map +1 -1
  39. package/dist/src/lib/credentials-home.d.ts +51 -0
  40. package/dist/src/lib/credentials-home.js +169 -0
  41. package/dist/src/lib/credentials-home.js.map +1 -0
  42. package/dist/src/lib/credentials-lock.d.ts +80 -0
  43. package/dist/src/lib/credentials-lock.js +222 -0
  44. package/dist/src/lib/credentials-lock.js.map +1 -0
  45. package/dist/src/lib/credentials-store.d.ts +92 -5
  46. package/dist/src/lib/credentials-store.js +377 -53
  47. package/dist/src/lib/credentials-store.js.map +1 -1
  48. package/dist/src/lib/env-resolver-core.d.ts +1 -1
  49. package/dist/src/lib/env-resolver-core.js.map +1 -1
  50. package/dist/src/lib/function-bundle.d.ts +38 -18
  51. package/dist/src/lib/function-bundle.js +60 -35
  52. package/dist/src/lib/function-bundle.js.map +1 -1
  53. package/dist/src/lib/function-collect.d.ts +1 -1
  54. package/dist/src/lib/function-collect.js +4 -0
  55. package/dist/src/lib/function-collect.js.map +1 -1
  56. package/dist/src/lib/function-document-types.d.ts +5 -3
  57. package/dist/src/lib/function-document-types.js +10 -14
  58. package/dist/src/lib/function-document-types.js.map +1 -1
  59. package/dist/src/lib/function-source-roots.d.ts +67 -0
  60. package/dist/src/lib/function-source-roots.js +148 -0
  61. package/dist/src/lib/function-source-roots.js.map +1 -0
  62. package/dist/src/lib/function-sync.d.ts +27 -0
  63. package/dist/src/lib/function-sync.js +16 -3
  64. package/dist/src/lib/function-sync.js.map +1 -1
  65. package/dist/src/lib/function-triggers.d.ts +3 -15
  66. package/dist/src/lib/function-triggers.js +10 -72
  67. package/dist/src/lib/function-triggers.js.map +1 -1
  68. package/dist/src/lib/function-typecheck.d.ts +37 -2
  69. package/dist/src/lib/function-typecheck.js +210 -28
  70. package/dist/src/lib/function-typecheck.js.map +1 -1
  71. package/dist/src/lib/generated-config-surfaces.d.ts +148 -0
  72. package/dist/src/lib/generated-config-surfaces.js +229 -35
  73. package/dist/src/lib/generated-config-surfaces.js.map +1 -1
  74. package/dist/src/lib/generated-sdk-types.d.ts +1 -1
  75. package/dist/src/lib/generated-sdk-types.js +1 -1
  76. package/dist/src/lib/generated-sdk-types.js.map +1 -1
  77. package/dist/src/lib/local-state.d.ts +21 -6
  78. package/dist/src/lib/local-state.js +78 -34
  79. package/dist/src/lib/local-state.js.map +1 -1
  80. package/dist/src/lib/login-scope-lines.d.ts +1 -1
  81. package/dist/src/lib/login-scope-lines.js +1 -1
  82. package/dist/src/lib/login-scope-lines.js.map +1 -1
  83. package/dist/src/lib/project-config.d.ts +7 -0
  84. package/dist/src/lib/project-config.js +22 -1
  85. package/dist/src/lib/project-config.js.map +1 -1
  86. package/dist/src/lib/push-failure-report.d.ts +45 -0
  87. package/dist/src/lib/push-failure-report.js +57 -0
  88. package/dist/src/lib/push-failure-report.js.map +1 -0
  89. package/dist/src/lib/root-import-decision.d.ts +9 -4
  90. package/dist/src/lib/root-import-decision.js +24 -3
  91. package/dist/src/lib/root-import-decision.js.map +1 -1
  92. package/dist/src/lib/scope-request.d.ts +8 -5
  93. package/dist/src/lib/scope-request.js +17 -8
  94. package/dist/src/lib/scope-request.js.map +1 -1
  95. package/dist/src/lib/sync-selectors.d.ts +5 -1
  96. package/dist/src/lib/sync-selectors.js +23 -13
  97. package/dist/src/lib/sync-selectors.js.map +1 -1
  98. package/dist/src/lib/transient-retry.d.ts +9 -0
  99. package/dist/src/lib/transient-retry.js +37 -0
  100. package/dist/src/lib/transient-retry.js.map +1 -1
  101. package/dist/src/lib/vars-override.d.ts +105 -0
  102. package/dist/src/lib/vars-override.js +143 -0
  103. package/dist/src/lib/vars-override.js.map +1 -0
  104. package/package.json +2 -2
  105. package/dist/src/lib/generated-workflow-model-fields.d.ts +0 -20
  106. package/dist/src/lib/generated-workflow-model-fields.js +0 -53
  107. package/dist/src/lib/generated-workflow-model-fields.js.map +0 -1
  108. package/dist/src/lib/workflow-field-descriptor.d.ts +0 -91
  109. package/dist/src/lib/workflow-field-descriptor.js +0 -153
  110. 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 join(env.projectRoot, PROJECT_LOCAL_DIR, PROJECT_CREDENTIALS_FILENAME);
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 = join(projectRoot, PROJECT_LOCAL_DIR, PROJECT_CREDENTIALS_FILENAME);
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
- function writeProjectCredentialsFile(projectRoot, file) {
194
- const dir = join(projectRoot, PROJECT_LOCAL_DIR);
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 path = join(dir, PROJECT_CREDENTIALS_FILENAME);
197
- writeFileSync(path, JSON.stringify(file, null, 2), { mode: 0o600 });
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
- chmodSync(path, 0o600);
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
- // Best-effort on Windows / weird filesystems
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 stored = file.environments[env.name];
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: env.config.apiUrl,
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
- * The serverUrl on the incoming Credentials is used as-is for legacy
289
- * mode, and ignored in project mode (the env's apiUrl is canonical).
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 file = loadProjectCredentialsFile(env.projectRoot);
306
- file.environments[env.name] = {
307
- accessToken: credentials.accessToken,
308
- refreshToken: credentials.refreshToken,
309
- expiresAt: credentials.expiresAt,
310
- adminId: credentials.adminId,
311
- email: credentials.email,
312
- role: credentials.role,
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
- delete file.environments[env.name];
338
- writeProjectCredentialsFile(env.projectRoot, file);
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
- const file = loadProjectCredentialsFile(projectRoot);
363
- if (!file.environments[envName])
685
+ if (!loadProjectCredentialsFile(projectRoot).environments[envName])
364
686
  return false;
365
- delete file.environments[envName];
366
- writeProjectCredentialsFile(projectRoot, file);
367
- return true;
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 file = loadProjectCredentialsFile(projectRoot);
378
- file.environments[envName] = {
379
- accessToken: credentials.accessToken,
380
- refreshToken: credentials.refreshToken,
381
- expiresAt: credentials.expiresAt,
382
- adminId: credentials.adminId,
383
- email: credentials.email,
384
- role: credentials.role,
385
- name: credentials.name,
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;