@weaveprotocol/core 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +137 -44
  2. package/dist/doors/doors.d.ts +139 -0
  3. package/dist/doors/doors.d.ts.map +1 -0
  4. package/dist/doors/doors.js +210 -0
  5. package/dist/doors/doors.js.map +1 -0
  6. package/dist/doors/index.d.ts +9 -0
  7. package/dist/doors/index.d.ts.map +1 -0
  8. package/dist/doors/index.js +7 -0
  9. package/dist/doors/index.js.map +1 -0
  10. package/dist/elements/auth-styles.d.ts +1 -1
  11. package/dist/elements/auth-styles.d.ts.map +1 -1
  12. package/dist/elements/auth-styles.js +13 -0
  13. package/dist/elements/auth-styles.js.map +1 -1
  14. package/dist/elements/weave-auth.d.ts +2 -2
  15. package/dist/elements/weave-auth.d.ts.map +1 -1
  16. package/dist/elements/weave-auth.js +251 -119
  17. package/dist/elements/weave-auth.js.map +1 -1
  18. package/dist/identity/account-vault.d.ts +10 -3
  19. package/dist/identity/account-vault.d.ts.map +1 -1
  20. package/dist/identity/account-vault.js +10 -3
  21. package/dist/identity/account-vault.js.map +1 -1
  22. package/dist/identity/contact-key.d.ts +26 -0
  23. package/dist/identity/contact-key.d.ts.map +1 -1
  24. package/dist/identity/contact-key.js +52 -0
  25. package/dist/identity/contact-key.js.map +1 -1
  26. package/dist/index.d.ts +3 -3
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +2 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/network/index.d.ts +2 -0
  31. package/dist/network/index.d.ts.map +1 -1
  32. package/dist/network/index.js +1 -0
  33. package/dist/network/index.js.map +1 -1
  34. package/dist/network/mailbox.d.ts +49 -0
  35. package/dist/network/mailbox.d.ts.map +1 -0
  36. package/dist/network/mailbox.js +125 -0
  37. package/dist/network/mailbox.js.map +1 -0
  38. package/dist/node/host.d.ts +2 -2
  39. package/dist/node/host.d.ts.map +1 -1
  40. package/dist/node/index.d.ts +1 -1
  41. package/dist/node/index.d.ts.map +1 -1
  42. package/dist/node/node.d.ts.map +1 -1
  43. package/dist/node/node.js +320 -2
  44. package/dist/node/node.js.map +1 -1
  45. package/dist/node/types.d.ts +107 -1
  46. package/dist/node/types.d.ts.map +1 -1
  47. package/dist/schemas/contacts.d.ts +137 -0
  48. package/dist/schemas/contacts.d.ts.map +1 -1
  49. package/dist/schemas/contacts.js +63 -0
  50. package/dist/schemas/contacts.js.map +1 -1
  51. package/dist/schemas/index.d.ts +2 -2
  52. package/dist/schemas/index.d.ts.map +1 -1
  53. package/dist/schemas/index.js +1 -1
  54. package/dist/schemas/index.js.map +1 -1
  55. package/dist/session/auth.d.ts +39 -9
  56. package/dist/session/auth.d.ts.map +1 -1
  57. package/dist/session/auth.js +177 -70
  58. package/dist/session/auth.js.map +1 -1
  59. package/dist/session/connect.js +2 -2
  60. package/dist/session/credentials.d.ts +22 -6
  61. package/dist/session/credentials.d.ts.map +1 -1
  62. package/dist/session/credentials.js +35 -6
  63. package/dist/session/credentials.js.map +1 -1
  64. package/dist/session/hosting.d.ts +1 -1
  65. package/dist/session/index.d.ts +3 -3
  66. package/dist/session/index.d.ts.map +1 -1
  67. package/dist/session/index.js +2 -2
  68. package/dist/session/index.js.map +1 -1
  69. package/dist/space/notify.d.ts +1 -1
  70. package/dist/storage/blob/s3.js +1 -1
  71. package/package.json +54 -40
@@ -8,12 +8,20 @@
8
8
  * React hook follows it, and an app that wants its own screens can draw it
9
9
  * itself. None of them see the seed: it stays inside this object.
10
10
  *
11
- * The credential is a generated 26-character code. It is the seed, written out,
12
- * which is what makes it work on a domain that has never heard of you — there is
13
- * nothing stored for it to unlock. A password manager holds it exactly as it
14
- * holds any generated password. The passkey and the short password are
15
- * conveniences layered on top, local to one site, so the code only has to be
16
- * fetched once per site.
11
+ * Three things, each with one job:
12
+ *
13
+ * - **The recovery code** is the account: the seed, written out as 26
14
+ * characters. It needs nothing stored to work, so it restores the account on
15
+ * a device or home that has never seen it. Shown once when the account is
16
+ * made, and kept somewhere safe rather than typed every day.
17
+ * - **A passkey or a password** is the everyday way in. Each wraps the seed in
18
+ * the account's vault, so it works wherever the vault is — this browser, or
19
+ * a pod — and nowhere else. Setting one up is part of making an account.
20
+ * - **Pairing** hands the account to a new device from one already signed in.
21
+ *
22
+ * So a new account goes: name → recovery code → passkey or password → (a pod,
23
+ * if this browser can open one) → in. Where the data lives is asked only of
24
+ * people who already have something somewhere, or offered at the end.
17
25
  *
18
26
  * The identity key never signs a record. Signing in starts a node, which makes
19
27
  * a throwaway session key and asks the identity for one note saying that key
@@ -24,7 +32,7 @@ import { createLocalRootSigner } from '../identity/root-signer.js';
24
32
  import { AGENT_FACT } from '../identity/agent-note.js';
25
33
  import { accountDataPath, newAccountId, createBrowserAccountStore } from '../identity/account-store.js';
26
34
  import { createVault } from '../identity/folder-account.js';
27
- import { withWrap, wrapSeedWithDeviceKey, unwrapSeedWithDeviceKey, unwrapSeedWithPassphrase, deviceWrapsFor, deriveVaultKey, deriveVaultKeyBytes, } from '../identity/account-vault.js';
35
+ import { withWrap, wrapSeedWithDeviceKey, unwrapSeedWithDeviceKey, wrapSeedWithPassphrase, unwrapSeedWithPassphrase, deviceWrapsFor, CLI_PASSPHRASE_LABEL, deriveVaultKey, deriveVaultKeyBytes, } from '../identity/account-vault.js';
28
36
  import { deriveContactKeyBytes, deriveMemberKeyBytes } from '../identity/contact-key.js';
29
37
  import { createDeviceKey, getDeviceKey, deleteDeviceKey } from '../identity/device-key.js';
30
38
  import { registerPasskey, authenticatePasskey, hasPlatformAuthenticator, renamePasskey } from '../identity/webauthn.js';
@@ -38,6 +46,8 @@ import { deleteBrowserData, forgetPod, inspectPod, listAccounts, pickPod, recall
38
46
  import { createStaySignedIn } from './stay-signed-in.js';
39
47
  import { grantCapabilities, MAX_GRANT_DAYS } from './connect.js';
40
48
  import { clearPairingTicket, collectFromDesktop, offerToPhone as offerPairing, readPairingTicket, } from './pairing.js';
49
+ /** The shortest password `setPassword` takes. It guards a copy of the seed in a folder that may be copied. */
50
+ export const MIN_PASSWORD_LENGTH = 10;
41
51
  /** Turns a thrown value into something worth showing, ignoring a dismissed prompt. */
42
52
  function describe(error) {
43
53
  if (error instanceof DOMException && (error.name === 'NotAllowedError' || error.name === 'AbortError')) {
@@ -62,7 +72,6 @@ export function createWeaveAuth(config = {}) {
62
72
  const browserAccounts = config.browser?.accounts ?? createBrowserAccountStore;
63
73
  const browserStores = config.browser?.stores ?? ((account) => storesFor(account));
64
74
  const LAST_ACCOUNT = `${prefix}.last-account`;
65
- const BROWSER_CHOSEN = `${prefix}.storage-choice`;
66
75
  const get = (key) => {
67
76
  try {
68
77
  return storage?.getItem(key) ?? null;
@@ -87,6 +96,7 @@ export function createWeaveAuth(config = {}) {
87
96
  entry: null,
88
97
  session: null,
89
98
  freshCode: null,
99
+ setup: null,
90
100
  busy: false,
91
101
  error: null,
92
102
  folderAvailable: isFolderStorageAvailable(),
@@ -101,7 +111,7 @@ export function createWeaveAuth(config = {}) {
101
111
  for (const listener of listeners)
102
112
  listener(state);
103
113
  };
104
- /** The seed behind the open session. Never leaves this closure except as the account password. */
114
+ /** The seed behind the open session. Never leaves this closure except as the recovery code. */
105
115
  let seed = null;
106
116
  let vaultKey = null;
107
117
  let stopFollowingName = null;
@@ -221,11 +231,84 @@ export function createWeaveAuth(config = {}) {
221
231
  update({ busy: false });
222
232
  }
223
233
  }
224
- /** Runs a way in, and goes to the app when it ends in a session. */
234
+ /** Whether an account can be opened here without its recovery code. */
235
+ const hasEverydayWay = (entry) => entry !== null && (entry.shortcuts.length > 0 || entry.hasPassword);
236
+ /**
237
+ * Lands a new session: in, or on through the setup screens.
238
+ *
239
+ * With no reason to set up, or a passkey or password already here, that is
240
+ * the app. Otherwise the recovery code is shown first — a new account's for
241
+ * the first time, a restored one's as a reminder to keep it apart from the
242
+ * password about to be set, which a password manager may file in its place —
243
+ * then a way in is chosen. A paired device skips the code: it was never
244
+ * shown one, and the device it came from keeps it.
245
+ */
246
+ async function arrive(session, setup) {
247
+ const place = state.place;
248
+ const entry = place ? await openEntry(place, session.account.id) : null;
249
+ const landed = {
250
+ session,
251
+ entry,
252
+ selectedId: session.account.id,
253
+ accounts: place ? await listAccounts(place) : state.accounts,
254
+ };
255
+ if (setup === null || hasEverydayWay(entry)) {
256
+ update({ ...landed, stage: 'ready', setup: null, freshCode: null });
257
+ }
258
+ else if (setup === 'paired') {
259
+ update({ ...landed, stage: 'unlock', setup });
260
+ }
261
+ else {
262
+ update({ ...landed, stage: 'recovery', setup, freshCode: seed ? seedToRecoveryCode(seed) : null });
263
+ }
264
+ }
265
+ /** After a way in is set up: offer a pod to a new account that could use one, or go in. */
266
+ function afterUnlock() {
267
+ const offerPod = state.setup === 'new' && state.folderAvailable && state.place?.kind === 'browser';
268
+ update(offerPod ? { stage: 'pod' } : { stage: 'ready', setup: null });
269
+ }
270
+ /** Runs a way in. One that took the recovery code may lead on to setting up an everyday one. */
225
271
  const enter = (open) => run(async () => {
226
- const session = await open();
227
- update({ session, stage: 'ready' });
272
+ const { session, byCode } = await open();
273
+ await arrive(session, byCode ? 'restored' : null);
228
274
  }).then(() => undefined);
275
+ /**
276
+ * Opens an account from its recovery code, filing it here if this place has
277
+ * not seen it.
278
+ * @param code The code, as typed or filled
279
+ * @param expected The account the person meant, when they picked one
280
+ */
281
+ async function openWithCode(code, expected) {
282
+ const place = state.place;
283
+ if (!place)
284
+ throw new Error('No place to sign in to yet.');
285
+ if (!isValidRecoveryCode(code)) {
286
+ throw protocolError('VAULT_UNLOCK_FAILED', 'That is not a recovery code.', 'A recovery code is 26 letters and digits, usually in groups of four. A password only opens the account where it was ' +
287
+ 'set up — on a new device, use the recovery code, or add this device from one that is signed in.');
288
+ }
289
+ const unlocked = recoveryCodeToSeed(code);
290
+ const identity = await createIdentityManager().fromSeed(unlocked);
291
+ if (expected && identity.did !== expected.did) {
292
+ throw protocolError('VAULT_UNLOCK_FAILED', `That recovery code opens a different account, not ${expected.name}.`, `Check it is the code you kept for ${expected.name}, or restore the account it belongs to instead.`);
293
+ }
294
+ const known = (await listAccounts(place)).find((account) => account.did === identity.did);
295
+ if (known)
296
+ return begin(place, known, unlocked);
297
+ // New to this place — a new device, or a new home. File it, so there is
298
+ // somewhere to keep the passkey or password set up next.
299
+ const id = newAccountId();
300
+ const summary = {
301
+ id,
302
+ name: expected?.name ?? 'My account',
303
+ did: identity.did,
304
+ createdAt: new Date().toISOString(),
305
+ dataPath: accountDataPath(id),
306
+ };
307
+ await place.store.write(summary, createVault({ did: identity.did, label: summary.name, wraps: [] }));
308
+ return begin(place, summary, unlocked);
309
+ }
310
+ /** The account the person picked, if any */
311
+ const selectedAccount = () => state.accounts.find((account) => account.id === state.selectedId) ?? null;
229
312
  // ─── Passkeys ──────────────────────────────────────────────────────
230
313
  /**
231
314
  * Runs a passkey ceremony as a gate.
@@ -283,12 +366,14 @@ export function createWeaveAuth(config = {}) {
283
366
  update({ session: Object.freeze({ ...session, account: renamed }), accounts: await listAccounts(place) });
284
367
  return renamed;
285
368
  }
286
- /** Changes to the open account's shortcuts, then re-reads them. */
369
+ /** Changes to the open account's shortcuts, then re-reads them. During setup, moves the flow on. */
287
370
  const changeShortcut = (apply) => run(async () => {
288
371
  if (!seed)
289
372
  throw new Error('Not signed in.');
290
373
  await apply(seed);
291
374
  await refreshEntry();
375
+ if (state.stage === 'unlock' && hasEverydayWay(state.entry))
376
+ afterUnlock();
292
377
  });
293
378
  /** Connected apps are remembered per account, on this device */
294
379
  function writeConnections(connections) {
@@ -323,9 +408,10 @@ export function createWeaveAuth(config = {}) {
323
408
  update({ stage: 'pair' });
324
409
  return;
325
410
  }
326
- // Nothing here yet and the storage question never answered: ask it first.
327
- const undecided = !pod && accounts.length === 0 && state.folderAvailable && get(BROWSER_CHOSEN) !== 'browser';
328
- update({ stage: undecided ? 'where' : afterStorage(accounts) });
411
+ // Where the data lives is not asked up front: someone new has
412
+ // nothing anywhere, and someone who does finds their pod under
413
+ // "I already have an account".
414
+ update({ stage: afterStorage(accounts) });
329
415
  }
330
416
  catch (error) {
331
417
  update({ error: describe(error), stage: 'welcome' });
@@ -334,7 +420,7 @@ export function createWeaveAuth(config = {}) {
334
420
  return started;
335
421
  },
336
422
  async choosePod() {
337
- await run(async () => {
423
+ const picked = await run(async () => {
338
424
  const pod = await pickPod();
339
425
  const { session, place } = state;
340
426
  // Signed in: look before leaping. The picker needed the click, but
@@ -349,9 +435,17 @@ export function createWeaveAuth(config = {}) {
349
435
  await rememberPod(pod);
350
436
  update({ stage: afterStorage(await refresh(pod)) });
351
437
  });
438
+ // Setting up a new account there is nothing to decide: no pod has it
439
+ // yet, so it moves, and the browser copy it leaves is only a shell.
440
+ if (picked && state.stage === 'pod' && state.podChoice) {
441
+ await auth.confirmPod('combine');
442
+ if (state.podChoice)
443
+ return;
444
+ await auth.forgetBrowserCopy();
445
+ update({ stage: 'ready', setup: null });
446
+ }
352
447
  },
353
448
  async useBrowser() {
354
- set(BROWSER_CHOSEN, 'browser');
355
449
  await run(async () => {
356
450
  if (state.place?.kind === 'folder')
357
451
  await forgetPod();
@@ -359,54 +453,33 @@ export function createWeaveAuth(config = {}) {
359
453
  update({ stage: afterStorage(await refresh(place)) });
360
454
  });
361
455
  },
362
- changeStorage() {
363
- update({ error: null, stage: 'where' });
364
- },
365
456
  async select(accountId) {
366
457
  update({ selectedId: accountId, error: null });
367
458
  if (state.place)
368
459
  update({ entry: await openEntry(state.place, accountId) });
369
460
  },
370
461
  signInWithCode(code) {
371
- return enter(async () => {
372
- const place = state.place;
373
- if (!place)
374
- throw new Error('No place to sign in to yet.');
375
- if (!isValidRecoveryCode(code)) {
376
- throw protocolError('VAULT_UNLOCK_FAILED', 'That does not look like an account password.', 'It is 26 letters and digits, usually shown in groups of four.');
377
- }
378
- const unlocked = recoveryCodeToSeed(code);
379
- const identity = await createIdentityManager().fromSeed(unlocked);
380
- const expected = state.accounts.find((account) => account.id === state.selectedId);
381
- if (expected && identity.did !== expected.did) {
382
- throw protocolError('VAULT_UNLOCK_FAILED', `That password opens a different account, not ${expected.name}.`, 'With more than one account saved for this site, a password manager fills whichever it saw last ' +
383
- `unless you pick. Choose the entry named ${expected.name}, or open the account it did fill.`);
384
- }
385
- const known = (await listAccounts(place)).find((account) => account.did === identity.did);
386
- if (known)
387
- return begin(place, known, unlocked);
388
- // New to this place — the second-site case. File it, so next time there
389
- // is something to add a passkey to.
390
- const id = newAccountId();
391
- const summary = {
392
- id,
393
- name: expected?.name ?? 'My account',
394
- did: identity.did,
395
- createdAt: new Date().toISOString(),
396
- dataPath: accountDataPath(id),
397
- };
398
- await place.store.write(summary, createVault({ did: identity.did, label: summary.name, wraps: [] }));
399
- return begin(place, summary, unlocked);
400
- });
462
+ return enter(async () => ({ session: await openWithCode(code, selectedAccount()), byCode: true }));
401
463
  },
402
464
  signInWithPassword(password) {
403
465
  return enter(async () => {
404
466
  const { place, entry } = state;
405
- const wrap = entry?.vault.wraps.find((candidate) => candidate.kind === 'passphrase');
406
- if (!place || !entry || !wrap || wrap.kind !== 'passphrase') {
407
- throw protocolError('VAULT_UNLOCK_FAILED', 'No password is set for this account here.', 'Use your account password instead.');
467
+ // The account's password, and the CLI's passphrase if a pod has one: either opens it.
468
+ const wraps = (entry?.vault.wraps ?? []).filter((candidate) => candidate.kind === 'passphrase');
469
+ // Before passwords, the recovery code was this site's login, and a
470
+ // password manager still fills it here. It opens the account either way.
471
+ const code = isValidRecoveryCode(password) ? password : null;
472
+ let failed = null;
473
+ for (const wrap of place && entry ? wraps : []) {
474
+ const unlocked = await unwrapSeedWithPassphrase(wrap, password).catch((error) => ((failed = error), null));
475
+ if (unlocked)
476
+ return { session: await begin(place, entry.summary, unlocked), byCode: false };
408
477
  }
409
- return begin(place, entry.summary, await unwrapSeedWithPassphrase(wrap, password));
478
+ if (failed && !code)
479
+ throw failed;
480
+ if (code)
481
+ return { session: await openWithCode(code, entry?.summary ?? selectedAccount()), byCode: true };
482
+ throw protocolError('VAULT_UNLOCK_FAILED', 'No password is set for this account here.', 'Use your recovery code, and you can set one up afterwards.');
410
483
  });
411
484
  },
412
485
  signInWithPasskey() {
@@ -414,16 +487,16 @@ export function createWeaveAuth(config = {}) {
414
487
  const { place, entry } = state;
415
488
  const target = entry?.shortcuts[entry.shortcuts.length - 1];
416
489
  if (!place || !entry || !target) {
417
- throw protocolError('VAULT_UNLOCK_FAILED', 'No passkey on this device can open that account.', 'Use your account password, and you can set one up afterwards.');
490
+ throw protocolError('VAULT_UNLOCK_FAILED', 'No passkey on this device can open that account.', 'Use your recovery code, and you can set one up afterwards.');
418
491
  }
419
492
  // The gate first, so the key is never reached for without someone present.
420
493
  if (target.credentialId)
421
494
  await passkeyGate('get', { credentialId: target.credentialId });
422
495
  const key = await getDeviceKey(target.deviceKeyId);
423
496
  if (!key) {
424
- throw protocolError('VAULT_UNLOCK_FAILED', 'The key for that passkey is not in this browser any more.', 'Clearing site data removes it. Your account password still works, and a new passkey can be set up afterwards.');
497
+ throw protocolError('VAULT_UNLOCK_FAILED', 'The key for that passkey is not in this browser any more.', 'Clearing site data removes it. Your recovery code still works, and a new passkey can be set up afterwards.');
425
498
  }
426
- return begin(place, entry.summary, await unwrapSeedWithDeviceKey(target, key));
499
+ return { session: await begin(place, entry.summary, await unwrapSeedWithDeviceKey(target, key)), byCode: false };
427
500
  });
428
501
  },
429
502
  startCreating() {
@@ -432,13 +505,20 @@ export function createWeaveAuth(config = {}) {
432
505
  showSignIn() {
433
506
  update({ error: null, stage: 'signIn' });
434
507
  },
508
+ showWelcome() {
509
+ update({ error: null, stage: 'welcome' });
510
+ },
511
+ showExisting() {
512
+ update({ error: null, stage: 'existing' });
513
+ },
514
+ showRestore() {
515
+ update({ error: null, stage: 'restore' });
516
+ },
435
517
  async createAccount(name) {
436
518
  await run(async () => {
437
519
  const place = state.place;
438
520
  if (!place)
439
521
  throw new Error('No place to keep the account yet.');
440
- // The seed is random, and the password shown afterwards is that seed
441
- // written out — not a backup of it.
442
522
  const unlocked = generateSeed();
443
523
  const identity = await createIdentityManager().fromSeed(unlocked);
444
524
  const id = newAccountId();
@@ -449,18 +529,29 @@ export function createWeaveAuth(config = {}) {
449
529
  createdAt: new Date().toISOString(),
450
530
  dataPath: accountDataPath(id),
451
531
  };
452
- // No wraps yet: the password is the way in, and it needs none.
532
+ // No wraps yet: the passkey or password comes after the recovery code.
453
533
  await place.store.write(summary, createVault({ did: identity.did, label: summary.name, wraps: [] }));
534
+ // Kept only in this browser, the account is only as safe as the
535
+ // browser's willingness to keep it. Asking costs nothing.
536
+ if (place.kind === 'browser')
537
+ await globalThis.navigator?.storage?.persist?.().catch(() => false);
454
538
  const session = await begin(place, summary, unlocked);
455
539
  // The name travels with the account, so the next site it is opened on
456
540
  // shows it. Only at creation and on rename — never on a plain start,
457
541
  // where a device that has not synced yet would publish a stale name.
458
542
  await session.node.account.setName(summary.name).catch(() => { });
459
- update({ session, freshCode: seedToRecoveryCode(unlocked), accounts: await listAccounts(place) });
543
+ await arrive(session, 'new');
460
544
  });
461
545
  },
462
546
  codeSaved() {
463
- update({ freshCode: null, stage: 'ready' });
547
+ if (!state.session)
548
+ return;
549
+ update({ freshCode: null, stage: 'unlock' });
550
+ },
551
+ finishSetup() {
552
+ if (!state.session)
553
+ return;
554
+ update({ stage: 'ready', setup: null, error: null });
464
555
  },
465
556
  async acceptPairing() {
466
557
  const ticket = state.pairing;
@@ -468,9 +559,10 @@ export function createWeaveAuth(config = {}) {
468
559
  return;
469
560
  if (!state.place)
470
561
  update({ place: await browserPlace() });
471
- await auth.signInWithCode(ticket.code);
562
+ // The link says which account; whichever was last used here is beside the point.
563
+ const opened = await run(async () => arrive(await openWithCode(ticket.code, null), 'paired'));
472
564
  const session = state.session;
473
- if (!session)
565
+ if (!opened || !session)
474
566
  return;
475
567
  clearPairingTicket();
476
568
  await collectFromDesktop(session.node, ticket, (stage) => update({ pairingStage: stage }));
@@ -510,6 +602,17 @@ export function createWeaveAuth(config = {}) {
510
602
  for (const stale of previous)
511
603
  await deleteDeviceKey(stale.deviceKeyId);
512
604
  }),
605
+ setPassword: (password) => changeShortcut(async (unlocked) => {
606
+ if (password.length < MIN_PASSWORD_LENGTH) {
607
+ throw new Error(`Use at least ${MIN_PASSWORD_LENGTH} characters. Your password manager can make one for you.`);
608
+ }
609
+ const wrap = await wrapSeedWithPassphrase(unlocked, password, 'Password');
610
+ // One password: the new one replaces the last. The CLI's passphrase is its own, and stays.
611
+ await updateVault(async (vault) => ({
612
+ ...vault,
613
+ wraps: [...vault.wraps.filter((kept) => kept.kind !== 'passphrase' || kept.label === CLI_PASSPHRASE_LABEL), wrap],
614
+ }));
615
+ }),
513
616
  removeShortcut: (kind) => changeShortcut(async () => {
514
617
  const session = state.session;
515
618
  if (kind === 'passkey') {
@@ -517,8 +620,8 @@ export function createWeaveAuth(config = {}) {
517
620
  for (const wrap of vault ? deviceWrapsFor(vault, rpId) : [])
518
621
  await deleteDeviceKey(wrap.deviceKeyId);
519
622
  }
520
- // Removing every shortcut leaves the account as a new one starts:
521
- // openable by its password. Another site's passkey is not this one's to remove.
623
+ // Removing every shortcut leaves the account openable by its recovery
624
+ // code alone. Another site's passkey is not this one's to remove.
522
625
  await updateVault(async (vault) => ({
523
626
  ...vault,
524
627
  wraps: vault.wraps.filter((wrap) => kind === 'passkey' ? !(wrap.kind === 'device' && wrap.rpId === rpId) : wrap.kind !== 'passphrase'),
@@ -600,9 +703,12 @@ export function createWeaveAuth(config = {}) {
600
703
  dismissMoved() {
601
704
  update({ moved: null });
602
705
  },
603
- accountPassword() {
706
+ recoveryCode() {
604
707
  return seed ? seedToRecoveryCode(seed) : null;
605
708
  },
709
+ accountPassword() {
710
+ return auth.recoveryCode();
711
+ },
606
712
  offerToPhone(onStage) {
607
713
  const session = state.session;
608
714
  if (!session || !seed)
@@ -681,7 +787,8 @@ export function createWeaveAuth(config = {}) {
681
787
  scope: whole ? 'account' : 'spaces',
682
788
  spaces,
683
789
  ...(whole ? { accountKey: base64UrlEncode(await deriveVaultKeyBytes(seed)) } : {}),
684
- ...(whole || request.contacts ? { contactKey: base64UrlEncode(await deriveContactKeyBytes(seed)) } : {}),
790
+ // Never to an agent: the contact key opens contact requests and knocks on your doors.
791
+ ...(!agent && (whole || request.contacts) ? { contactKey: base64UrlEncode(await deriveContactKeyBytes(seed)) } : {}),
685
792
  ...(contactsSpace ? { contactsSpace } : {}),
686
793
  ...(config.network?.relays?.length ? { relays: [...config.network.relays] } : {}),
687
794
  expiresAt,
@@ -783,7 +890,7 @@ export function createWeaveAuth(config = {}) {
783
890
  async signOut() {
784
891
  await stay.forget();
785
892
  const leaving = state.session?.node;
786
- update({ stage: 'starting', session: null, entry: null, freshCode: null, podChoice: null, moved: null });
893
+ update({ stage: 'starting', session: null, entry: null, freshCode: null, setup: null, podChoice: null, moved: null });
787
894
  await stopNode(leaving).catch(() => { });
788
895
  const place = state.place;
789
896
  update({ stage: place ? afterStorage(await refresh(place)) : 'welcome' });
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/session/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/session/auth.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,8 @@
9
9
  * 1. Makes its own key, kept in its own site's storage, never exportable.
10
10
  * 2. Opens the home in a popup, and says what it wants: read or write, and
11
11
  * which spaces — existing ones the person picks, or new ones for it.
12
- * 3. The person unlocks at the home (a passkey, or the account password from
13
- * their password manager) and approves.
12
+ * 3. The person unlocks at the home (a passkey, or their password) and
13
+ * approves.
14
14
  * 4. The home signs a note — a UCAN — saying the app's key may write in those
15
15
  * spaces until a date, and hands back invites for them.
16
16
  * 5. The app starts a node that signs with its key under that note.