@interop/was-react 0.1.5 → 0.1.7

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 (81) hide show
  1. package/dist/auth/loginRequest.d.ts +4 -9
  2. package/dist/auth/loginRequest.d.ts.map +1 -1
  3. package/dist/auth/loginRequest.js +2 -13
  4. package/dist/auth/loginRequest.js.map +1 -1
  5. package/dist/auth/walletRequestTypes.d.ts +3 -2
  6. package/dist/auth/walletRequestTypes.d.ts.map +1 -1
  7. package/dist/config.d.ts +22 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +5 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/grants.d.ts +10 -8
  12. package/dist/grants.d.ts.map +1 -1
  13. package/dist/grants.js +12 -9
  14. package/dist/grants.js.map +1 -1
  15. package/dist/index.d.ts +3 -3
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +4 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/mui/AdoptDialog.d.ts +12 -0
  20. package/dist/mui/AdoptDialog.d.ts.map +1 -0
  21. package/dist/mui/AdoptDialog.js +31 -0
  22. package/dist/mui/AdoptDialog.js.map +1 -0
  23. package/dist/mui/ClearDataDialog.d.ts +12 -0
  24. package/dist/mui/ClearDataDialog.d.ts.map +1 -0
  25. package/dist/mui/ClearDataDialog.js +30 -0
  26. package/dist/mui/ClearDataDialog.js.map +1 -0
  27. package/dist/mui/LogoutDialog.d.ts +12 -0
  28. package/dist/mui/LogoutDialog.d.ts.map +1 -0
  29. package/dist/mui/LogoutDialog.js +30 -0
  30. package/dist/mui/LogoutDialog.js.map +1 -0
  31. package/dist/mui/ProtectedRoute.d.ts +2 -2
  32. package/dist/mui/ProtectedRoute.d.ts.map +1 -1
  33. package/dist/mui/ProtectedRoute.js +30 -23
  34. package/dist/mui/ProtectedRoute.js.map +1 -1
  35. package/dist/mui/index.d.ts +3 -0
  36. package/dist/mui/index.d.ts.map +1 -1
  37. package/dist/mui/index.js +3 -0
  38. package/dist/mui/index.js.map +1 -1
  39. package/dist/react/WasSessionProvider.d.ts.map +1 -1
  40. package/dist/react/WasSessionProvider.js +8 -4
  41. package/dist/react/WasSessionProvider.js.map +1 -1
  42. package/dist/react/hooks.d.ts +33 -5
  43. package/dist/react/hooks.d.ts.map +1 -1
  44. package/dist/react/hooks.js +36 -6
  45. package/dist/react/hooks.js.map +1 -1
  46. package/dist/react/index.d.ts +1 -1
  47. package/dist/react/index.d.ts.map +1 -1
  48. package/dist/react/index.js +1 -1
  49. package/dist/react/index.js.map +1 -1
  50. package/dist/session/authStore.d.ts +111 -22
  51. package/dist/session/authStore.d.ts.map +1 -1
  52. package/dist/session/authStore.js +337 -81
  53. package/dist/session/authStore.js.map +1 -1
  54. package/dist/session/index.d.ts +3 -4
  55. package/dist/session/index.d.ts.map +1 -1
  56. package/dist/session/index.js +2 -3
  57. package/dist/session/index.js.map +1 -1
  58. package/dist/storage/adopt.d.ts +20 -0
  59. package/dist/storage/adopt.d.ts.map +1 -0
  60. package/dist/storage/adopt.js +78 -0
  61. package/dist/storage/adopt.js.map +1 -0
  62. package/dist/storage/entityStore.d.ts.map +1 -1
  63. package/dist/storage/entityStore.js +1 -15
  64. package/dist/storage/entityStore.js.map +1 -1
  65. package/dist/storage/localStore.d.ts +33 -3
  66. package/dist/storage/localStore.d.ts.map +1 -1
  67. package/dist/storage/localStore.js +35 -1
  68. package/dist/storage/localStore.js.map +1 -1
  69. package/dist/sync/index.d.ts +1 -1
  70. package/dist/sync/index.d.ts.map +1 -1
  71. package/dist/sync/index.js +1 -1
  72. package/dist/sync/index.js.map +1 -1
  73. package/dist/sync/lww.d.ts +12 -0
  74. package/dist/sync/lww.d.ts.map +1 -1
  75. package/dist/sync/lww.js +14 -0
  76. package/dist/sync/lww.js.map +1 -1
  77. package/package.json +1 -1
  78. package/dist/session/appReadyStore.d.ts +0 -10
  79. package/dist/session/appReadyStore.d.ts.map +0 -1
  80. package/dist/session/appReadyStore.js +0 -22
  81. package/dist/session/appReadyStore.js.map +0 -1
@@ -2,17 +2,29 @@
2
2
  * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
3
  */
4
4
  /**
5
- * The wallet-mode auth store (zustand): owns the session lifecycle -- hot
6
- * restore (zero popups), Login With Wallet, logout, and the expired-access
7
- * reconnect -- plus the open/hydrate/sync ordering.
5
+ * The session auth store (zustand): a four-state machine
6
+ * (`boot` | `local` | `connected` | `reconnect`) that owns the whole session
7
+ * lifecycle -- boot (hot restore or fall to an anonymous local replica), Login
8
+ * With Wallet, the non-CHAPI `connectWithGrants` path, logout, clear-data, and
9
+ * the expired-access reconnect -- plus the open/hydrate/sync ordering.
8
10
  *
9
- * On a successful login/restore it opens the encrypted {@link LocalStore} from
10
- * the session seed (a per-controller database name, so two wallet users on one
11
- * browser never collide), hydrates the entity stores, flips the shared
12
- * `useAppReady` gate, and starts WAS replication from the granted zcaps.
11
+ * `boot` attempts a zero-popup session restore. A restore hit opens the
12
+ * encrypted {@link LocalStore} under the session seed, hydrates the entity
13
+ * stores, starts WAS replication, and lands `connected`. A restore miss (or any
14
+ * error) opens the store under a persisted ANONYMOUS seed instead and lands
15
+ * `local`: a fully usable, encrypted, local-only replica with no remote. Both
16
+ * successors finish open+hydrate before leaving `boot`, so "app ready" is simply
17
+ * `status !== 'boot'`.
13
18
  *
14
- * `status` is the router gate: `ProtectedRoute` waits for the restore attempt to
15
- * settle before deciding between the app and the login page.
19
+ * Login (or `connectWithGrants`) tears the anonymous replica down and opens the
20
+ * connected replica under the wallet-derived seed. By default it ADOPTS the
21
+ * anonymous replica's data first (`adopt: 'merge'`): the decrypted payloads are
22
+ * collected before teardown, LWW-merged into the connected replica before its
23
+ * first hydrate/sync (so they reach the server as ordinary creates), and the
24
+ * anonymous seed + database are deleted once the activation lands. `adopt:
25
+ * 'leave'` sets the anonymous replica aside untouched instead (it returns after
26
+ * a logout). Logout returns to a fresh `local` (optionally wiping the connected
27
+ * replica); `clearLocalData` mints a brand-new anonymous seed and replica.
16
28
  *
17
29
  * The library cannot bind a module-level store to app config, so this is a
18
30
  * FACTORY: {@link createAuthStore} captures the app's {@link WasAppConfig} and
@@ -20,23 +32,28 @@
20
32
  * vanilla zustand store the hooks consume through context.
21
33
  */
22
34
  import { createStore } from 'zustand/vanilla';
23
- import { DEFAULT_DB_NAME, DEFAULT_EXPIRY_WARNING_MS, DEFAULT_EXPIRY_WATCH_MS } from '../config.js';
35
+ import { DEFAULT_DB_NAME, DEFAULT_EXPIRY_WARNING_MS, DEFAULT_EXPIRY_WATCH_MS, DEFAULT_ONBOARDING } from '../config.js';
24
36
  import { createDocumentLoader } from '../identity/documentLoader.js';
25
37
  import { initAppSession } from '../identity/initAppSession.js';
26
38
  import { createSeedStore } from '../identity/seedStore.js';
27
- import { clearAppSession, persistAppSession, restoreAppSession, isNearExpiry } from '../identity/appSession.js';
39
+ import { clearAppSession, persistAppSession, restoreAppSession, isNearExpiry, earliestExpiry } from '../identity/appSession.js';
28
40
  import { loginWithWallet, requestGrants, LoginCancelledError } from '../auth/loginFlow.js';
29
41
  import { parseGrants } from '../grants.js';
30
42
  import { LocalStore, dbNameForController } from '../storage/localStore.js';
31
43
  import { clearLocalStore, hasStore, requireStore, setLocalStore } from '../storage/storageManager.js';
32
44
  import { cancelScheduledRehydrates, clearAllEntityStores, hydrateAll, patchFromChange } from '../storage/rehydrate.js';
45
+ import { mergeAdopted } from '../storage/adopt.js';
33
46
  import { startWasSync } from '../storage/wasSync.js';
34
47
  import { errorMessage } from '../sync/index.js';
35
48
  import { createSyncController } from '../storage/syncController.js';
36
49
  import { useSyncStatusStore } from '../storage/syncStatusStore.js';
37
- import { useAppReady } from './appReadyStore.js';
38
50
  /**
39
- * Builds the wallet-mode auth store bound to an app's config and store registry.
51
+ * A nominal far-future expiry (ms) for grants minted without one (dev/test).
52
+ * Well past the near-expiry warning, so the watch never fires against them.
53
+ */
54
+ const FAR_FUTURE_EXPIRY_MS = 100 * 365 * 24 * 60 * 60 * 1000;
55
+ /**
56
+ * Builds the session auth store bound to an app's config and store registry.
40
57
  * Call once (the React provider does) and share the returned store through
41
58
  * context; the hooks read it via `useStore`.
42
59
  *
@@ -52,7 +69,12 @@ import { useAppReady } from './appReadyStore.js';
52
69
  */
53
70
  export function createAuthStore({ config, registry, seedStore, storage }) {
54
71
  const dbName = config.dbName ?? DEFAULT_DB_NAME;
72
+ const onboarding = config.onboarding ?? DEFAULT_ONBOARDING;
55
73
  const sessionStore = seedStore ?? createSeedStore({ dbName: `${dbName}-session` });
74
+ // The anonymous-seed persistence for `local` mode: only a raw 32-byte seed,
75
+ // no session record, in its own IndexedDB so it never collides with the
76
+ // wallet session or a connected replica.
77
+ const anonStore = createSeedStore({ dbName: `${dbName}-anon` });
56
78
  const documentLoader = createDocumentLoader(config.wasServerUrl !== undefined
57
79
  ? { wasServerUrl: config.wasServerUrl }
58
80
  : {});
@@ -133,7 +155,7 @@ export function createAuthStore({ config, registry, seedStore, storage }) {
133
155
  }
134
156
  /**
135
157
  * Persists the session record, kicks off background replication, and arms the
136
- * near-expiry watch. Shared by the login/restore activation and the reconnect
158
+ * near-expiry watch. Shared by the connected activation and the reconnect
137
159
  * re-grant paths (identical persist + begin-sync + arm sequence).
138
160
  *
139
161
  * @param options {object}
@@ -181,28 +203,86 @@ export function createAuthStore({ config, registry, seedStore, storage }) {
181
203
  }
182
204
  }
183
205
  /**
184
- * Opens storage + hydrates + starts sync for a validated session, persists it,
185
- * and flips the ready gate. Shared by login and restore. Any failure after the
186
- * store is installed tears the store back down (so a later login never reuses a
187
- * half-open controller's database) and surfaces the open error before
188
- * rethrowing.
206
+ * Opens the encrypted replica under `seed` (a per-controller database name),
207
+ * installs it as the process-wide store, and hydrates every entity store.
208
+ * Shared by `openLocal` and the connected activation. When `adopt` is given
209
+ * (a connected activation following a merge login), the collected anonymous
210
+ * payloads are LWW-merged in BEFORE the hydrate -- and before sync starts --
211
+ * so the entity stores and the first push both see them as ordinary rows.
212
+ *
213
+ * @param options {object}
214
+ * @param options.seed {Uint8Array}
215
+ * @param options.controllerDid {string}
216
+ * @param [options.adopt] {AdoptSource}
217
+ * @returns {Promise<void>}
218
+ */
219
+ async function openAndHydrate({ seed, controllerDid, adopt }) {
220
+ const local = await LocalStore.init({
221
+ seed,
222
+ collections: config.collections,
223
+ dbName: dbNameForController({ dbName, controllerDid }),
224
+ ...(storage && { storage })
225
+ });
226
+ setLocalStore(local);
227
+ if (adopt) {
228
+ await mergeAdopted({ store: local, entities: adopt.entities });
229
+ }
230
+ await hydrateAll(registry);
231
+ }
232
+ /**
233
+ * Loads the persisted anonymous seed, minting and persisting a fresh random
234
+ * one on first use. `created` is true only when a new seed was generated (the
235
+ * signal for the one-time `seedLocal` fixtures hook).
236
+ *
237
+ * @returns {Promise<{ seed: Uint8Array, created: boolean }>}
238
+ */
239
+ async function loadOrCreateAnonSeed() {
240
+ const existing = await anonStore.loadSeed();
241
+ if (existing) {
242
+ return { seed: existing, created: false };
243
+ }
244
+ const seed = crypto.getRandomValues(new Uint8Array(32));
245
+ await anonStore.saveSeed(seed);
246
+ return { seed, created: true };
247
+ }
248
+ /**
249
+ * Opens (or re-opens) the anonymous local replica and lands `local`. Seeds
250
+ * dev fixtures only when the anonymous seed was just minted (so they run once
251
+ * per fresh replica, never on reload).
252
+ *
253
+ * @returns {Promise<void>}
254
+ */
255
+ async function openLocal() {
256
+ const { seed, created } = await loadOrCreateAnonSeed();
257
+ const identity = await initAppSession({ seed });
258
+ await openAndHydrate({ seed, controllerDid: identity.controllerDid });
259
+ if (created && config.seedLocal) {
260
+ await config.seedLocal();
261
+ }
262
+ store.setState({
263
+ status: 'local',
264
+ controllerDid: identity.controllerDid,
265
+ expires: null,
266
+ accessExpired: false,
267
+ error: null
268
+ });
269
+ }
270
+ /**
271
+ * Opens the connected replica under the session seed, hydrates, persists the
272
+ * session, and starts sync. On any failure the store is torn back down and the
273
+ * anonymous local replica re-opened (so the app never dead-ends), then the
274
+ * error is surfaced and rethrown for the caller to finalize.
275
+ *
276
+ * @param session {ActiveSession}
277
+ * @returns {Promise<void>}
189
278
  */
190
- async function activateSession(session) {
279
+ async function activateConnected(session) {
191
280
  try {
192
- if (!hasStore()) {
193
- const local = await LocalStore.init({
194
- seed: session.seed,
195
- collections: config.collections,
196
- dbName: dbNameForController({
197
- dbName,
198
- controllerDid: session.identity.controllerDid
199
- }),
200
- ...(storage && { storage })
201
- });
202
- setLocalStore(local);
203
- }
204
- await hydrateAll(registry);
205
- // Flip the ready gate only once the session is durably persisted.
281
+ await openAndHydrate({
282
+ seed: session.seed,
283
+ controllerDid: session.identity.controllerDid,
284
+ ...(session.adopt && { adopt: session.adopt })
285
+ });
206
286
  await persistAndStartSync({
207
287
  seed: session.seed,
208
288
  identity: session.identity,
@@ -210,19 +290,22 @@ export function createAuthStore({ config, registry, seedStore, storage }) {
210
290
  grants: session.grants,
211
291
  expires: session.expires
212
292
  });
213
- useAppReady.getState().setReady();
214
293
  }
215
294
  catch (err) {
216
- await deactivateSession();
217
- const message = errorMessage(err);
218
- useAppReady.getState().setError(message);
295
+ await deactivateStore();
296
+ await openLocal();
297
+ store.setState({ error: errorMessage(err) });
219
298
  throw err;
220
299
  }
221
300
  }
222
301
  /**
223
- * Tears down storage + sync + entity stores (logout and re-login paths).
302
+ * Tears down the live replica + sync + entity stores WITHOUT touching either
303
+ * persisted seed (the anonymous seed and the session record survive). Closes
304
+ * the database; use {@link resetToFreshLocal} to delete it.
305
+ *
306
+ * @returns {Promise<void>}
224
307
  */
225
- async function deactivateSession() {
308
+ async function deactivateStore() {
226
309
  disarmExpiryWatch();
227
310
  cancelScheduledRehydrates();
228
311
  await stopController();
@@ -237,49 +320,149 @@ export function createAuthStore({ config, registry, seedStore, storage }) {
237
320
  }
238
321
  clearAllEntityStores(registry);
239
322
  useSyncStatusStore.getState().reset();
240
- useAppReady.getState().reset();
323
+ }
324
+ /**
325
+ * Tears the current replica down and re-opens a fresh `local` replica. `wipe`
326
+ * (via `deleteDb`) deletes the current database rather than closing it (the
327
+ * logout-wipe and clear-data paths); `discardAnonSeed` drops the persisted
328
+ * anonymous seed BEFORE the re-open so `openLocal` mints a brand-new anonymous
329
+ * seed/DID + database (the clear-data path).
330
+ *
331
+ * @param options {object}
332
+ * @param options.deleteDb {boolean}
333
+ * @param [options.discardAnonSeed] {boolean}
334
+ * @returns {Promise<void>}
335
+ */
336
+ async function resetToFreshLocal({ deleteDb, discardAnonSeed = false }) {
337
+ disarmExpiryWatch();
338
+ cancelScheduledRehydrates();
339
+ await stopController();
340
+ if (hasStore()) {
341
+ try {
342
+ if (deleteDb) {
343
+ await requireStore().remove();
344
+ }
345
+ else {
346
+ await requireStore().close();
347
+ }
348
+ }
349
+ catch (err) {
350
+ console.warn('Error tearing down the local store:', err);
351
+ }
352
+ clearLocalStore();
353
+ }
354
+ clearAllEntityStores(registry);
355
+ useSyncStatusStore.getState().reset();
356
+ if (discardAnonSeed) {
357
+ await anonStore.clearSeedStore();
358
+ }
359
+ await openLocal();
360
+ }
361
+ /**
362
+ * Reads every decrypted payload out of the anonymous replica ahead of its
363
+ * teardown (adoption is a copy: the anonymous and connected replicas derive
364
+ * their ciphers from different seeds, so envelopes cannot move across).
365
+ * Returns null when there is nothing to adopt -- not in `local`, or every
366
+ * collection empty -- in which case the anonymous replica is simply left
367
+ * intact, exactly as an `adopt: 'leave'` login leaves it.
368
+ *
369
+ * Reads through a FRESH handle on the anonymous database (re-derived from
370
+ * the persisted anonymous seed), not the process-wide holder: a StrictMode
371
+ * double-boot can leave the holder as a closed duplicate (`closeDuplicates`),
372
+ * and this read must not be able to abort the connect.
373
+ *
374
+ * @returns {Promise<AdoptSource | null>}
375
+ */
376
+ async function collectAdoptable() {
377
+ const { status, controllerDid } = store.getState();
378
+ if (status !== 'local' || controllerDid === null) {
379
+ return null;
380
+ }
381
+ const seed = await anonStore.loadSeed();
382
+ if (!seed) {
383
+ return null;
384
+ }
385
+ const anonLocal = await LocalStore.init({
386
+ seed,
387
+ collections: config.collections,
388
+ dbName: dbNameForController({ dbName, controllerDid }),
389
+ ...(storage && { storage })
390
+ });
391
+ try {
392
+ const entities = {};
393
+ let total = 0;
394
+ for (const { key } of config.collections) {
395
+ const payloads = await anonLocal.listEntities(key);
396
+ if (payloads.length > 0) {
397
+ entities[key] = payloads;
398
+ total += payloads.length;
399
+ }
400
+ }
401
+ return total > 0 ? { controllerDid, entities } : null;
402
+ }
403
+ finally {
404
+ await anonLocal.close();
405
+ }
406
+ }
407
+ /**
408
+ * Deletes the adopted anonymous replica -- its persisted seed and its
409
+ * per-controller database -- so the data lives on only in the connected
410
+ * replica and a later logout lands in a genuinely fresh `local`. Called only
411
+ * after the connected activation has succeeded; any earlier failure leaves
412
+ * the anonymous replica intact for the fallback to re-open.
413
+ *
414
+ * @param controllerDid {string} the anonymous controller DID
415
+ * @returns {Promise<void>}
416
+ */
417
+ async function discardAnonReplica(controllerDid) {
418
+ await anonStore.clearSeedStore();
419
+ await LocalStore.removeDatabase({
420
+ dbName: dbNameForController({ dbName, controllerDid }),
421
+ ...(storage && { storage })
422
+ });
241
423
  }
242
424
  // Declared last so `prefer-const` is satisfied; the lifecycle closures above
243
425
  // only dereference `store` at call time, by which point it is assigned.
244
426
  const store = createStore()((set, get) => ({
245
- status: 'idle',
427
+ status: 'boot',
428
+ onboarding,
429
+ authenticating: false,
246
430
  phase: null,
247
431
  error: null,
248
432
  controllerDid: null,
249
433
  expires: null,
250
434
  accessExpired: false,
251
435
  reconnecting: false,
252
- restore: async () => {
253
- if (get().status !== 'idle') {
436
+ boot: async () => {
437
+ if (get().status !== 'boot') {
254
438
  return;
255
439
  }
256
- set({ status: 'restoring' });
257
440
  try {
258
441
  const restored = await restoreAppSession({ store: sessionStore });
259
442
  if (!restored) {
260
- set({ status: 'unauthenticated' });
443
+ await openLocal();
261
444
  return;
262
445
  }
263
446
  const identity = await initAppSession({ seed: restored.seed });
264
447
  if (identity.controllerDid !== restored.controllerDid) {
265
- // A corrupt record; treat as logged out.
448
+ // A corrupt record; treat as logged out and fall to local.
266
449
  await clearAppSession({ store: sessionStore });
267
- set({ status: 'unauthenticated' });
450
+ await openLocal();
268
451
  return;
269
452
  }
270
453
  const parsed = parseGrants(restored.grants);
271
454
  if (config.wasServerUrl !== undefined &&
272
455
  parsed.serverUrl !== config.wasServerUrl) {
273
456
  await clearAppSession({ store: sessionStore });
274
- set({ status: 'unauthenticated' });
457
+ await openLocal();
275
458
  return;
276
459
  }
277
460
  // Unlike login/reconnect (which run `checkGrants`), a hot restore trusts
278
461
  // the persisted grants; re-check that they still cover every configured
279
- // collection so a partially-covered grant set raises the reconnect banner
280
- // proactively rather than waiting for a per-collection 403 mid-session.
462
+ // collection so a partially-covered grant set raises the reconnect
463
+ // banner proactively rather than waiting for a per-collection 403.
281
464
  const uncovered = config.collections.filter(collection => parsed.byCollectionId[collection.id] === undefined);
282
- await activateSession({
465
+ await activateConnected({
283
466
  seed: restored.seed,
284
467
  identity,
285
468
  parsed,
@@ -287,7 +470,7 @@ export function createAuthStore({ config, registry, seedStore, storage }) {
287
470
  expires: restored.expires
288
471
  });
289
472
  set({
290
- status: 'authenticated',
473
+ status: uncovered.length > 0 ? 'reconnect' : 'connected',
291
474
  controllerDid: identity.controllerDid,
292
475
  expires: restored.expires,
293
476
  error: null,
@@ -295,30 +478,56 @@ export function createAuthStore({ config, registry, seedStore, storage }) {
295
478
  });
296
479
  }
297
480
  catch (err) {
298
- console.warn('Session restore failed:', err);
299
- set({ status: 'unauthenticated' });
481
+ console.warn('Session boot failed:', err);
482
+ // `activateConnected` already re-opens local on its own failure; only
483
+ // open local here for an earlier failure that never reached it.
484
+ if (get().status === 'boot') {
485
+ try {
486
+ await openLocal();
487
+ }
488
+ catch (localErr) {
489
+ // Even the anonymous local replica could not be opened: a genuine
490
+ // storage failure, the only case that leaves `status` at `boot`
491
+ // with an `error`. Surfacing it here (rather than a login/reconnect
492
+ // failure, which only ever sets `error` after `status` has left
493
+ // `boot`) is what lets `ProtectedRoute` scope its fatal alert to
494
+ // boot/storage failures alone.
495
+ set({ error: errorMessage(localErr) });
496
+ }
497
+ }
300
498
  }
301
499
  },
302
- login: async () => {
303
- const { status } = get();
304
- if (status === 'authenticating' || status === 'authenticated') {
500
+ login: async ({ adopt = 'merge' } = {}) => {
501
+ if (get().authenticating || get().status === 'connected') {
305
502
  return;
306
503
  }
307
- set({ status: 'authenticating', error: null, phase: 'probing' });
504
+ set({ authenticating: true, error: null, phase: 'probing' });
308
505
  try {
309
506
  const outcome = await loginWithWallet({
310
507
  config: loginConfig,
311
508
  onPhase: phase => set({ phase })
312
509
  });
313
- await activateSession({
510
+ // The wallet succeeded: collect the anonymous replica's payloads (merge
511
+ // only), then -- only now -- tear it down (a cancel above leaves
512
+ // `local` intact). The anonymous seed and database are deleted only
513
+ // after the activation lands, so a failure below still falls back to an
514
+ // intact `local`.
515
+ const source = adopt === 'merge' ? await collectAdoptable() : null;
516
+ await deactivateStore();
517
+ await activateConnected({
314
518
  seed: outcome.seed,
315
519
  identity: outcome.identity,
316
520
  parsed: outcome.parsed,
317
521
  grants: outcome.grants,
318
- expires: outcome.expires
522
+ expires: outcome.expires,
523
+ ...(source && { adopt: source })
319
524
  });
525
+ if (source) {
526
+ await discardAnonReplica(source.controllerDid);
527
+ }
320
528
  set({
321
- status: 'authenticated',
529
+ status: 'connected',
530
+ authenticating: false,
322
531
  controllerDid: outcome.identity.controllerDid,
323
532
  expires: outcome.expires,
324
533
  phase: null,
@@ -332,12 +541,38 @@ export function createAuthStore({ config, registry, seedStore, storage }) {
332
541
  : err instanceof Error
333
542
  ? `Login failed: ${err.message}`
334
543
  : 'Login failed.';
335
- set({ status: 'unauthenticated', phase: null, error: message });
544
+ set({ authenticating: false, phase: null, error: message });
336
545
  }
337
546
  },
547
+ connectWithGrants: async ({ seed, grants, adopt = 'merge' }) => {
548
+ const identity = await initAppSession({ seed });
549
+ const parsed = parseGrants(grants);
550
+ const expires = earliestExpiry(grants) ??
551
+ new Date(Date.now() + FAR_FUTURE_EXPIRY_MS).toISOString();
552
+ const source = adopt === 'merge' ? await collectAdoptable() : null;
553
+ await deactivateStore();
554
+ await activateConnected({
555
+ seed,
556
+ identity,
557
+ parsed,
558
+ grants,
559
+ expires,
560
+ ...(source && { adopt: source })
561
+ });
562
+ if (source) {
563
+ await discardAnonReplica(source.controllerDid);
564
+ }
565
+ set({
566
+ status: 'connected',
567
+ controllerDid: identity.controllerDid,
568
+ expires,
569
+ error: null,
570
+ accessExpired: false
571
+ });
572
+ },
338
573
  reconnect: async () => {
339
574
  const { reconnecting, status } = get();
340
- if (reconnecting || status !== 'authenticated') {
575
+ if (reconnecting || status !== 'reconnect') {
341
576
  return;
342
577
  }
343
578
  set({ reconnecting: true, error: null });
@@ -362,6 +597,7 @@ export function createAuthStore({ config, registry, seedStore, storage }) {
362
597
  expires: checked.expires
363
598
  });
364
599
  set({
600
+ status: 'connected',
365
601
  accessExpired: false,
366
602
  expires: checked.expires,
367
603
  reconnecting: false
@@ -372,32 +608,52 @@ export function createAuthStore({ config, registry, seedStore, storage }) {
372
608
  set({ reconnecting: false, error: message });
373
609
  }
374
610
  },
375
- logout: async () => {
376
- await deactivateSession();
611
+ logout: async ({ wipe = false } = {}) => {
612
+ await resetToFreshLocal({ deleteDb: wipe });
377
613
  await clearAppSession({ store: sessionStore });
378
- set({
379
- status: 'unauthenticated',
380
- phase: null,
381
- error: null,
382
- controllerDid: null,
383
- expires: null,
384
- accessExpired: false,
385
- reconnecting: false
386
- });
614
+ // `resetToFreshLocal` already landed `local` (fresh anon replica); clear
615
+ // the remaining transients.
616
+ set({ phase: null, reconnecting: false });
617
+ },
618
+ clearLocalData: async () => {
619
+ await resetToFreshLocal({ deleteDb: true, discardAnonSeed: true });
620
+ set({ phase: null, reconnecting: false });
621
+ },
622
+ hasLocalData: async () => {
623
+ if (get().status !== 'local' || !hasStore()) {
624
+ return false;
625
+ }
626
+ try {
627
+ for (const { key } of config.collections) {
628
+ if ((await requireStore().countEntities(key)) > 0) {
629
+ return true;
630
+ }
631
+ }
632
+ }
633
+ catch {
634
+ // The holder can be a closed duplicate after a StrictMode double-boot;
635
+ // false only skips the adoption prompt, and login's `'merge'` default
636
+ // still collects (through a fresh handle) whatever exists.
637
+ return false;
638
+ }
639
+ return false;
387
640
  },
388
641
  notifyAccessExpired: () => {
389
- if (!get().accessExpired) {
390
- set({ accessExpired: true });
642
+ if (get().status === 'connected') {
643
+ set({ status: 'reconnect', accessExpired: true });
391
644
  }
392
645
  },
393
646
  destroy: async () => {
394
- await deactivateSession();
395
- // Back to `idle` (not `unauthenticated`) and the record left intact: a
396
- // StrictMode remount's `restore()` re-opens the same session from disk.
647
+ await deactivateStore();
648
+ // Back to `boot` (not `local`) and both persisted seeds left intact: a
649
+ // StrictMode remount's `boot()` re-opens the same session (or local).
397
650
  set({
398
- status: 'idle',
651
+ status: 'boot',
652
+ authenticating: false,
399
653
  phase: null,
400
654
  error: null,
655
+ controllerDid: null,
656
+ expires: null,
401
657
  accessExpired: false,
402
658
  reconnecting: false
403
659
  });
@@ -1 +1 @@
1
- {"version":3,"file":"authStore.js","sourceRoot":"","sources":["../../src/session/authStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authStore.js","sourceRoot":"","sources":["../../src/session/authStore.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,8 @@
2
2
  * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
3
  */
4
4
  /**
5
- * The session lifecycle layer: the wallet-mode auth store factory and the shared
6
- * app-ready gate.
5
+ * The session lifecycle layer: the session auth store factory (the four-state
6
+ * `boot` | `local` | `connected` | `reconnect` machine).
7
7
  */
8
- export { createAuthStore, type AuthStatus, type AuthState, type WasAuthStore } from './authStore.js';
9
- export { useAppReady } from './appReadyStore.js';
8
+ export { createAuthStore, type SessionStatus, type AuthState, type WasAuthStore } from './authStore.js';
10
9
  //# sourceMappingURL=index.d.ts.map