@interop/wallet-core 0.19.0 → 0.21.0

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 CHANGED
@@ -44,7 +44,8 @@ The subpaths:
44
44
  apps must perform byte-for-byte identically: `agentsFromSecret` /
45
45
  `agentsFromSeed` (controller secret or 32-byte seed to the did:key
46
46
  `CapabilityAgent`, `ZcapClient`, X25519 key agreement key, and single-key
47
- resolver, under the fixed bootstrap handle / key name) and
47
+ resolver, under the fixed bootstrap handle / key name), `agentsFromKeyAgent`
48
+ (the same assembly from a `CapabilityAgent` an app derived itself), and
48
49
  `singleKeyResolver`.
49
50
 
50
51
  - **`@interop/wallet-core/request`** -- wallet-request / exchange protocol
@@ -65,4 +65,20 @@ export declare function agentsFromSeed({ seed }: {
65
65
  export declare function agentsFromSecret({ secret }: {
66
66
  secret: string;
67
67
  }): Promise<ProfileAgents>;
68
+ /**
69
+ * Assembles the derived agents -- signer, `ZcapClient`, key agreement key (the
70
+ * Ed25519-to-X25519 Montgomery conversion), and single-key resolver -- from an
71
+ * already-derived `CapabilityAgent`. The shared tail of both derivations here,
72
+ * and exported because downstream packages derive their own `CapabilityAgent`
73
+ * (from an app seed, under their own handle / key name) and then need this same
74
+ * assembly: keeping it in one place means the Montgomery conversion that every
75
+ * encrypted collection is read with has exactly one implementation.
76
+ *
77
+ * @param options {object}
78
+ * @param options.keyAgent {CapabilityAgent} the derived signing agent
79
+ * @returns {ProfileAgents}
80
+ */
81
+ export declare function agentsFromKeyAgent({ keyAgent }: {
82
+ keyAgent: CapabilityAgent;
83
+ }): ProfileAgents;
68
84
  //# sourceMappingURL=agents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/identity/agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,8BAA8B,CAAA;AAGrC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAC3C,eAAO,MAAM,kBAAkB,iBAAiB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,eAAe,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,eAAe,EAAE,gBAAgB,CAAA;IACjC,WAAW,EAAE,YAAY,CAAA;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,EACnC,IAAI,EACL,EAAE;IACD,IAAI,EAAE,UAAU,CAAA;CACjB,GAAG,OAAO,CAAC,aAAa,CAAC,CAOzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EACP,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC,aAAa,CAAC,CAOzB"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/identity/agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,8BAA8B,CAAA;AAGrC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAC3C,eAAO,MAAM,kBAAkB,iBAAiB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,eAAe,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,eAAe,EAAE,gBAAgB,CAAA;IACjC,WAAW,EAAE,YAAY,CAAA;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,EACnC,IAAI,EACL,EAAE;IACD,IAAI,EAAE,UAAU,CAAA;CACjB,GAAG,OAAO,CAAC,aAAa,CAAC,CAOzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EACP,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC,aAAa,CAAC,CAOzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACT,EAAE;IACD,QAAQ,EAAE,eAAe,CAAA;CAC1B,GAAG,aAAa,CAyBhB"}
@@ -66,10 +66,19 @@ export async function agentsFromSecret({ secret }) {
66
66
  return agentsFromKeyAgent({ keyAgent });
67
67
  }
68
68
  /**
69
- * The shared tail of both derivations: ZcapClient + KAK + resolver from the
70
- * bootstrap CapabilityAgent.
69
+ * Assembles the derived agents -- signer, `ZcapClient`, key agreement key (the
70
+ * Ed25519-to-X25519 Montgomery conversion), and single-key resolver -- from an
71
+ * already-derived `CapabilityAgent`. The shared tail of both derivations here,
72
+ * and exported because downstream packages derive their own `CapabilityAgent`
73
+ * (from an app seed, under their own handle / key name) and then need this same
74
+ * assembly: keeping it in one place means the Montgomery conversion that every
75
+ * encrypted collection is read with has exactly one implementation.
76
+ *
77
+ * @param options {object}
78
+ * @param options.keyAgent {CapabilityAgent} the derived signing agent
79
+ * @returns {ProfileAgents}
71
80
  */
72
- function agentsFromKeyAgent({ keyAgent }) {
81
+ export function agentsFromKeyAgent({ keyAgent }) {
73
82
  const signer = keyAgent.getSigner();
74
83
  const zcapClient = new ZcapClient({
75
84
  SuiteClass: Ed25519Signature2020,
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/identity/agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAK7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAA;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAA;AAehD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,IAAI,EAGL;IACC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC;QAC9C,IAAI;QACJ,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAA;IACF,OAAO,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,MAAM,EAGP;IACC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC;QAChD,MAAM;QACN,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAA;IACF,OAAO,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,EAC1B,QAAQ,EAGT;IACC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA;IACnC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,UAAU,EAAE,oBAAoB;QAChC,gBAAgB,EAAE,MAAM;QACxB,sEAAsE;QACtE,WAAW;QACX,gBAAgB,EAAE,MAAM;KACzB,CAAC,CAAA;IAEF,MAAM,eAAe,GACnB,yBAAyB,CAAC,8BAA8B,CAAC;QACvD,OAAO,EAAE,QAAQ,CAAC,sBAAsB,EAAE;KAC3C,CAAC,CAAA;IACJ,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC,CAAA;IAE1D,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,EAAE;QAC1B,QAAQ;QACR,UAAU;QACV,mEAAmE;QACnE,iEAAiE;QACjE,eAAe,EAAE,eAAmC;QACpD,WAAW;KACZ,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/identity/agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAK7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAA;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAA;AAehD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,IAAI,EAGL;IACC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC;QAC9C,IAAI;QACJ,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAA;IACF,OAAO,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,MAAM,EAGP;IACC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC;QAChD,MAAM;QACN,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAA;IACF,OAAO,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EAGT;IACC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA;IACnC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,UAAU,EAAE,oBAAoB;QAChC,gBAAgB,EAAE,MAAM;QACxB,sEAAsE;QACtE,WAAW;QACX,gBAAgB,EAAE,MAAM;KACzB,CAAC,CAAA;IAEF,MAAM,eAAe,GACnB,yBAAyB,CAAC,8BAA8B,CAAC;QACvD,OAAO,EAAE,QAAQ,CAAC,sBAAsB,EAAE;KAC3C,CAAC,CAAA;IACJ,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC,CAAA;IAE1D,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,EAAE;QAC1B,QAAQ;QACR,UAAU;QACV,mEAAmE;QACnE,iEAAiE;QACjE,eAAe,EAAE,eAAmC;QACpD,WAAW;KACZ,CAAA;AACH,CAAC"}
@@ -8,13 +8,15 @@
8
8
  * - `agentsFromSecret` / `agentsFromSeed` -- controller secret or 32-byte seed
9
9
  * to `ProfileAgents` (did:key CapabilityAgent, ZcapClient, X25519 KAK,
10
10
  * single-key resolver) under the fixed bootstrap handle / key name.
11
+ * - `agentsFromKeyAgent` -- the same assembly from a CapabilityAgent an app
12
+ * derived itself, so the Montgomery conversion has one implementation.
11
13
  * - `singleKeyResolver` -- the one-key `IKeyResolver` factory (also used by
12
14
  * app-side derivations such as a keyring unlock identity).
13
15
  *
14
16
  * Kept out of the root export: this subpath pulls the webkms-client / ezcap /
15
17
  * x25519 dependency graph (the same isolation pattern as `./request`).
16
18
  */
17
- export { BOOTSTRAP_HANDLE, BOOTSTRAP_KEY_NAME, agentsFromSecret, agentsFromSeed } from './agents.js';
19
+ export { BOOTSTRAP_HANDLE, BOOTSTRAP_KEY_NAME, agentsFromKeyAgent, agentsFromSecret, agentsFromSeed } from './agents.js';
18
20
  export type { ProfileAgents } from './agents.js';
19
21
  export { singleKeyResolver } from './keyResolver.js';
20
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACf,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACf,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -8,12 +8,14 @@
8
8
  * - `agentsFromSecret` / `agentsFromSeed` -- controller secret or 32-byte seed
9
9
  * to `ProfileAgents` (did:key CapabilityAgent, ZcapClient, X25519 KAK,
10
10
  * single-key resolver) under the fixed bootstrap handle / key name.
11
+ * - `agentsFromKeyAgent` -- the same assembly from a CapabilityAgent an app
12
+ * derived itself, so the Montgomery conversion has one implementation.
11
13
  * - `singleKeyResolver` -- the one-key `IKeyResolver` factory (also used by
12
14
  * app-side derivations such as a keyring unlock identity).
13
15
  *
14
16
  * Kept out of the root export: this subpath pulls the webkms-client / ezcap /
15
17
  * x25519 dependency graph (the same isolation pattern as `./request`).
16
18
  */
17
- export { BOOTSTRAP_HANDLE, BOOTSTRAP_KEY_NAME, agentsFromSecret, agentsFromSeed } from './agents.js';
19
+ export { BOOTSTRAP_HANDLE, BOOTSTRAP_KEY_NAME, agentsFromKeyAgent, agentsFromSecret, agentsFromSeed } from './agents.js';
18
20
  export { singleKeyResolver } from './keyResolver.js';
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -1,20 +1,9 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
1
  /**
5
- * The shared wallet Space layout: the collection ids and descriptive specs both
6
- * wallet replicas provision, so a credential written by one is found and read by
7
- * the other. Both replicas MUST agree on every field here -- `collectionId`
8
- * decides where a document lands on the server, `idDerivation` and `mutable`
9
- * decide whether it is overwritten in place or only appended, and `encryption` /
10
- * `isPublic` decide how it is stored and who can read it. A disagreement splits
11
- * the feed into separate or incompatibly-shaped collections that never converge.
12
- *
13
- * The contacts collections (`contacts`, `contacts-history`) are NOT declared
14
- * here: their ids and specs live in `@interop/social-core`
15
- * (`CONTACTS_COLLECTION_SPEC` / `CONTACTS_HISTORY_COLLECTION_SPEC`), which apps
16
- * import directly. The field vocabulary below mirrors that spec.
2
+ * The app-neutral display name every wallet passes when provisioning the
3
+ * shared Space (`space.configure({ name })` re-runs on provisioning, so a
4
+ * per-app name would flip to whichever wallet provisioned last).
17
5
  */
6
+ export declare const WALLET_SPACE_NAME = "Wallet Space";
18
7
  /**
19
8
  * The immutable, content-addressed, EDV-encrypted credential replica.
20
9
  */
@@ -28,27 +17,37 @@ export declare const PUBLIC_CREDENTIALS_COLLECTION = "public-credentials";
28
17
  */
29
18
  export declare const WALLET_ACTIVITY_COLLECTION = "wallet-activity";
30
19
  /**
31
- * A declarative descriptor of a synced wallet Space collection, aligned with
32
- * `@interop/social-core`'s `CONTACTS_COLLECTION_SPEC` vocabulary and extended
33
- * with the storage attributes the wallet Space needs:
20
+ * What provisioning a wallet Space collection needs: the collection id, the
21
+ * friendly display name both wallets pass as the server-side collection name,
22
+ * and the storage attributes --
34
23
  *
35
- * - `idDerivation` -- `'content'` for an append-only, content-addressed log (the
36
- * id IS the hash of the stored body) or `'random'` for a mutable head (a
37
- * stable id whose body is overwritten).
38
- * - `mutable` -- whether a document is overwritten in place (`true`) or only
39
- * ever appended (`false`).
40
24
  * - `encryption` -- `'edv'` stores each document as an EDV envelope; `'plaintext'`
41
25
  * stores it verbatim.
42
26
  * - `isPublic` -- whether the collection is granted collection-level world read
43
27
  * on the server.
44
28
  */
45
- export interface SpaceCollectionSpec {
29
+ export interface SpaceProvisionSpec {
46
30
  collectionId: string;
47
- idDerivation: 'content' | 'random';
48
- mutable: boolean;
31
+ name: string;
49
32
  encryption: 'edv' | 'plaintext';
50
33
  isPublic: boolean;
51
34
  }
35
+ /**
36
+ * A declarative descriptor of a synced wallet Space collection: the
37
+ * provisioning attributes plus the document-identity contract the replication
38
+ * engines need, aligned with `@interop/social-core`'s
39
+ * `CONTACTS_COLLECTION_SPEC` vocabulary --
40
+ *
41
+ * - `idDerivation` -- `'content'` for an append-only, content-addressed log (the
42
+ * id IS the hash of the stored body) or `'random'` for a mutable head (a
43
+ * stable id whose body is overwritten).
44
+ * - `mutable` -- whether a document is overwritten in place (`true`) or only
45
+ * ever appended (`false`).
46
+ */
47
+ export interface SpaceCollectionSpec extends SpaceProvisionSpec {
48
+ idDerivation: 'content' | 'random';
49
+ mutable: boolean;
50
+ }
52
51
  /**
53
52
  * The immutable credential replica: each credential stored as an EDV envelope,
54
53
  * addressed by the envelope's content hash, never overwritten, never public.
@@ -67,9 +66,19 @@ export declare const PUBLIC_CREDENTIALS_COLLECTION_SPEC: SpaceCollectionSpec;
67
66
  */
68
67
  export declare const WALLET_ACTIVITY_COLLECTION_SPEC: SpaceCollectionSpec;
69
68
  /**
70
- * The wallet Space's own (non-contacts) collection specs, in provision order.
69
+ * The contacts head collection as it sits in the wallet Space: the identity
70
+ * contract (`collectionId`, `idDerivation`, `mutable`) spread from
71
+ * `@interop/social-core`'s `CONTACTS_COLLECTION_SPEC` (which stays its owner),
72
+ * plus the storage attributes that are wallet-Space layout -- each contact a
73
+ * mutable EDV envelope, never public.
71
74
  */
72
- export declare const WALLET_SPACE_COLLECTION_SPECS: SpaceCollectionSpec[];
75
+ export declare const CONTACTS_SPACE_COLLECTION_SPEC: SpaceCollectionSpec;
76
+ /**
77
+ * The contacts history log in the wallet Space: identity contract spread from
78
+ * `@interop/social-core`'s `CONTACTS_HISTORY_COLLECTION_SPEC`, stored as
79
+ * append-only, content-addressed EDV envelopes, never public.
80
+ */
81
+ export declare const CONTACTS_HISTORY_SPACE_COLLECTION_SPEC: SpaceCollectionSpec;
73
82
  /**
74
83
  * The system collections and resource names that carry an account's identity
75
84
  * and key material. They sit deliberately OUTSIDE the synced collection specs
@@ -100,6 +109,37 @@ export declare const KEYRING_COLLECTION: {
100
109
  id: string;
101
110
  name: string;
102
111
  };
112
+ /**
113
+ * The `id` collection's provisioning attributes: plaintext (it holds only
114
+ * world-readable DID artifacts) with a collection-level public-read grant.
115
+ */
116
+ export declare const ID_COLLECTION_SPEC: SpaceProvisionSpec;
117
+ /**
118
+ * The `key-map` collection's provisioning attributes: plaintext (its resources
119
+ * are wrap-sets and key-id maps, protected by capability, not by an EDV
120
+ * envelope) and capability-only -- never public, exactly so `id` can be
121
+ * world-readable without exposing key material.
122
+ */
123
+ export declare const KEY_MAP_COLLECTION_SPEC: SpaceProvisionSpec;
124
+ /**
125
+ * The synced wallet Space collections, in provision order: the feeds a wallet
126
+ * both provisions and replicates (each gets a local replica and a sync engine).
127
+ */
128
+ export declare const WALLET_SPACE_SYNCED_SPECS: SpaceCollectionSpec[];
129
+ /**
130
+ * The provisioned-but-not-synced system collections: part of every wallet
131
+ * Space's layout, but no wallet mints a replication feed for them -- their
132
+ * resources (`did.json`, `keys.json`, `user-key.json`, ...) are read and
133
+ * written directly. `keyring` is deliberately absent: it lives in the separate
134
+ * unlock Space, never in the wallet data Space this roster lays out.
135
+ */
136
+ export declare const WALLET_SPACE_SYSTEM_SPECS: SpaceProvisionSpec[];
137
+ /**
138
+ * The full wallet Space layout -- every collection the provisioning wallet
139
+ * ensures, synced feeds first. A Space provisioned from this roster is
140
+ * identical no matter which wallet app created it.
141
+ */
142
+ export declare const WALLET_SPACE_PROVISION_ROSTER: SpaceProvisionSpec[];
103
143
  /**
104
144
  * The world-readable DID document, served as `application/did+json`.
105
145
  */
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/space/collections.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,eAAO,MAAM,8BAA8B,wBAAwB,CAAA;AACnE;;GAEG;AACH,eAAO,MAAM,6BAA6B,uBAAuB,CAAA;AACjE;;GAEG;AACH,eAAO,MAAM,0BAA0B,oBAAoB,CAAA;AAE3D;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,KAAK,GAAG,WAAW,CAAA;IAC/B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC,EAAE,mBAMjD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,EAAE,mBAMhD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,EAAE,mBAM7C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAI9D,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa;;;CAAiC,CAAA;AAC3D,eAAO,MAAM,kBAAkB;;;CAAqC,CAAA;AACpE,eAAO,MAAM,kBAAkB;;;CAAqC,CAAA;AAEpE;;GAEG;AACH,eAAO,MAAM,qBAAqB,aAAa,CAAA;AAC/C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAC3C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,kBAAkB,CAAA;AACvD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAC1D;;GAEG;AACH,eAAO,MAAM,gBAAgB,iBAAiB,CAAA"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/space/collections.ts"],"names":[],"mappings":"AAyBA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,8BAA8B,wBAAwB,CAAA;AACnE;;GAEG;AACH,eAAO,MAAM,6BAA6B,uBAAuB,CAAA;AACjE;;GAEG;AACH,eAAO,MAAM,0BAA0B,oBAAoB,CAAA;AAE3D;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,KAAK,GAAG,WAAW,CAAA;IAC/B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC,EAAE,mBAOjD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,EAAE,mBAOhD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,EAAE,mBAO7C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,mBAK5C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,EAAE,mBAKpD,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa;;;CAAiC,CAAA;AAC3D,eAAO,MAAM,kBAAkB;;;CAAqC,CAAA;AACpE,eAAO,MAAM,kBAAkB;;;CAAqC,CAAA;AAEpE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAKhC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,kBAKrC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,mBAAmB,EAM1D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,EAGzD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,EAG7D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,aAAa,CAAA;AAC/C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAC3C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,kBAAkB,CAAA;AACvD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAC1D;;GAEG;AACH,eAAO,MAAM,gBAAgB,iBAAiB,CAAA"}
@@ -10,11 +10,21 @@
10
10
  * `isPublic` decide how it is stored and who can read it. A disagreement splits
11
11
  * the feed into separate or incompatibly-shaped collections that never converge.
12
12
  *
13
- * The contacts collections (`contacts`, `contacts-history`) are NOT declared
14
- * here: their ids and specs live in `@interop/social-core`
15
- * (`CONTACTS_COLLECTION_SPEC` / `CONTACTS_HISTORY_COLLECTION_SPEC`), which apps
16
- * import directly. The field vocabulary below mirrors that spec.
13
+ * The contacts collections (`contacts`, `contacts-history`) keep their identity
14
+ * contract (`collectionId`, `idDerivation`, `mutable`) in `@interop/social-core`
15
+ * (`CONTACTS_COLLECTION_SPEC` / `CONTACTS_HISTORY_COLLECTION_SPEC`) -- the field
16
+ * vocabulary below mirrors that spec. This module does not redeclare those
17
+ * fields; the wallet-Space rosters spread them in and add only the storage
18
+ * attributes that are wallet-Space layout (display name, `encryption`,
19
+ * `isPublic`).
20
+ */
21
+ import { CONTACTS_COLLECTION_SPEC, CONTACTS_HISTORY_COLLECTION_SPEC } from '@interop/social-core';
22
+ /**
23
+ * The app-neutral display name every wallet passes when provisioning the
24
+ * shared Space (`space.configure({ name })` re-runs on provisioning, so a
25
+ * per-app name would flip to whichever wallet provisioned last).
17
26
  */
27
+ export const WALLET_SPACE_NAME = 'Wallet Space';
18
28
  /**
19
29
  * The immutable, content-addressed, EDV-encrypted credential replica.
20
30
  */
@@ -33,6 +43,7 @@ export const WALLET_ACTIVITY_COLLECTION = 'wallet-activity';
33
43
  */
34
44
  export const PRIVATE_CREDENTIALS_COLLECTION_SPEC = {
35
45
  collectionId: PRIVATE_CREDENTIALS_COLLECTION,
46
+ name: 'Verifiable Credentials',
36
47
  idDerivation: 'content',
37
48
  mutable: false,
38
49
  encryption: 'edv',
@@ -45,6 +56,7 @@ export const PRIVATE_CREDENTIALS_COLLECTION_SPEC = {
45
56
  */
46
57
  export const PUBLIC_CREDENTIALS_COLLECTION_SPEC = {
47
58
  collectionId: PUBLIC_CREDENTIALS_COLLECTION,
59
+ name: 'Verifiable Credentials (Publicly Shared)',
48
60
  idDerivation: 'content',
49
61
  mutable: false,
50
62
  encryption: 'plaintext',
@@ -57,19 +69,36 @@ export const PUBLIC_CREDENTIALS_COLLECTION_SPEC = {
57
69
  */
58
70
  export const WALLET_ACTIVITY_COLLECTION_SPEC = {
59
71
  collectionId: WALLET_ACTIVITY_COLLECTION,
72
+ name: 'Wallet Activity Log',
60
73
  idDerivation: 'content',
61
74
  mutable: false,
62
75
  encryption: 'edv',
63
76
  isPublic: false
64
77
  };
65
78
  /**
66
- * The wallet Space's own (non-contacts) collection specs, in provision order.
79
+ * The contacts head collection as it sits in the wallet Space: the identity
80
+ * contract (`collectionId`, `idDerivation`, `mutable`) spread from
81
+ * `@interop/social-core`'s `CONTACTS_COLLECTION_SPEC` (which stays its owner),
82
+ * plus the storage attributes that are wallet-Space layout -- each contact a
83
+ * mutable EDV envelope, never public.
84
+ */
85
+ export const CONTACTS_SPACE_COLLECTION_SPEC = {
86
+ ...CONTACTS_COLLECTION_SPEC,
87
+ name: 'Contacts',
88
+ encryption: 'edv',
89
+ isPublic: false
90
+ };
91
+ /**
92
+ * The contacts history log in the wallet Space: identity contract spread from
93
+ * `@interop/social-core`'s `CONTACTS_HISTORY_COLLECTION_SPEC`, stored as
94
+ * append-only, content-addressed EDV envelopes, never public.
67
95
  */
68
- export const WALLET_SPACE_COLLECTION_SPECS = [
69
- PRIVATE_CREDENTIALS_COLLECTION_SPEC,
70
- PUBLIC_CREDENTIALS_COLLECTION_SPEC,
71
- WALLET_ACTIVITY_COLLECTION_SPEC
72
- ];
96
+ export const CONTACTS_HISTORY_SPACE_COLLECTION_SPEC = {
97
+ ...CONTACTS_HISTORY_COLLECTION_SPEC,
98
+ name: 'Contacts History',
99
+ encryption: 'edv',
100
+ isPublic: false
101
+ };
73
102
  /**
74
103
  * The system collections and resource names that carry an account's identity
75
104
  * and key material. They sit deliberately OUTSIDE the synced collection specs
@@ -91,6 +120,59 @@ export const WALLET_SPACE_COLLECTION_SPECS = [
91
120
  export const ID_COLLECTION = { id: 'id', name: 'Identity' };
92
121
  export const KEY_MAP_COLLECTION = { id: 'key-map', name: 'Key Map' };
93
122
  export const KEYRING_COLLECTION = { id: 'keyring', name: 'Keyring' };
123
+ /**
124
+ * The `id` collection's provisioning attributes: plaintext (it holds only
125
+ * world-readable DID artifacts) with a collection-level public-read grant.
126
+ */
127
+ export const ID_COLLECTION_SPEC = {
128
+ collectionId: ID_COLLECTION.id,
129
+ name: ID_COLLECTION.name,
130
+ encryption: 'plaintext',
131
+ isPublic: true
132
+ };
133
+ /**
134
+ * The `key-map` collection's provisioning attributes: plaintext (its resources
135
+ * are wrap-sets and key-id maps, protected by capability, not by an EDV
136
+ * envelope) and capability-only -- never public, exactly so `id` can be
137
+ * world-readable without exposing key material.
138
+ */
139
+ export const KEY_MAP_COLLECTION_SPEC = {
140
+ collectionId: KEY_MAP_COLLECTION.id,
141
+ name: KEY_MAP_COLLECTION.name,
142
+ encryption: 'plaintext',
143
+ isPublic: false
144
+ };
145
+ /**
146
+ * The synced wallet Space collections, in provision order: the feeds a wallet
147
+ * both provisions and replicates (each gets a local replica and a sync engine).
148
+ */
149
+ export const WALLET_SPACE_SYNCED_SPECS = [
150
+ PRIVATE_CREDENTIALS_COLLECTION_SPEC,
151
+ PUBLIC_CREDENTIALS_COLLECTION_SPEC,
152
+ WALLET_ACTIVITY_COLLECTION_SPEC,
153
+ CONTACTS_SPACE_COLLECTION_SPEC,
154
+ CONTACTS_HISTORY_SPACE_COLLECTION_SPEC
155
+ ];
156
+ /**
157
+ * The provisioned-but-not-synced system collections: part of every wallet
158
+ * Space's layout, but no wallet mints a replication feed for them -- their
159
+ * resources (`did.json`, `keys.json`, `user-key.json`, ...) are read and
160
+ * written directly. `keyring` is deliberately absent: it lives in the separate
161
+ * unlock Space, never in the wallet data Space this roster lays out.
162
+ */
163
+ export const WALLET_SPACE_SYSTEM_SPECS = [
164
+ ID_COLLECTION_SPEC,
165
+ KEY_MAP_COLLECTION_SPEC
166
+ ];
167
+ /**
168
+ * The full wallet Space layout -- every collection the provisioning wallet
169
+ * ensures, synced feeds first. A Space provisioned from this roster is
170
+ * identical no matter which wallet app created it.
171
+ */
172
+ export const WALLET_SPACE_PROVISION_ROSTER = [
173
+ ...WALLET_SPACE_SYNCED_SPECS,
174
+ ...WALLET_SPACE_SYSTEM_SPECS
175
+ ];
94
176
  /**
95
177
  * The world-readable DID document, served as `application/did+json`.
96
178
  */
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/space/collections.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,qBAAqB,CAAA;AACnE;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,oBAAoB,CAAA;AACjE;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAA;AAyB3D;;;GAGG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAwB;IACtE,YAAY,EAAE,8BAA8B;IAC5C,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;CAChB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAwB;IACrE,YAAY,EAAE,6BAA6B;IAC3C,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,IAAI;CACf,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAwB;IAClE,YAAY,EAAE,0BAA0B;IACxC,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;CAChB,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA0B;IAClE,mCAAmC;IACnC,kCAAkC;IAClC,+BAA+B;CAChC,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;AAC3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAA;AAC/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAA;AAC3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAA;AACvD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAA;AAC1D;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAA"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/space/collections.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,15 @@
6
6
  * WAS-enabled wallet apps share.
7
7
  *
8
8
  * - The shared collection ids and descriptive specs (`private-credentials`,
9
- * `public-credentials`, `wallet-activity`). The contacts collections stay in
10
- * `@interop/social-core`.
9
+ * `public-credentials`, `wallet-activity`; the contacts identity contract
10
+ * stays in `@interop/social-core`, spread into the wallet-Space specs here),
11
+ * and the provisioning rosters that split them into synced feeds vs.
12
+ * provisioned-but-not-synced system collections.
11
13
  * - The system collections and resource names that carry identity and key
12
14
  * material (`id`, `key-map`, `keyring`; `did.json`, `did.jsonl`, `keys.json`,
13
15
  * `user-key.json`, `keyring.json`) -- outside the synced set, never replicated.
16
+ * - `provisionWalletSpace`, the one-shot full-roster provisioner the
17
+ * Space-creating wallet runs.
14
18
  * - The `wallet-activity` wire shape (`WalletActivity`) and the pure
15
19
  * `addHistory*` payload builders.
16
20
  * - `publicCredentialUrl`, the world-readable shared-credential URL both
@@ -18,9 +22,10 @@
18
22
  * - The `was-link` QR hand-off contract (`buildWasLinkPayload` /
19
23
  * `parseWasLinkPayload` / `encodeWasLinkSecret`).
20
24
  */
21
- export { PRIVATE_CREDENTIALS_COLLECTION, PUBLIC_CREDENTIALS_COLLECTION, WALLET_ACTIVITY_COLLECTION, PRIVATE_CREDENTIALS_COLLECTION_SPEC, PUBLIC_CREDENTIALS_COLLECTION_SPEC, WALLET_ACTIVITY_COLLECTION_SPEC, WALLET_SPACE_COLLECTION_SPECS } from './collections.js';
22
- export { ID_COLLECTION, KEY_MAP_COLLECTION, KEYRING_COLLECTION, DID_DOCUMENT_RESOURCE, DID_LOG_RESOURCE, DID_KEYS_RESOURCE, USER_KEY_ROSTER_RESOURCE, CLIENT_LABELS_RESOURCE, KEYRING_RESOURCE } from './collections.js';
23
- export type { SpaceCollectionSpec } from './collections.js';
25
+ export { WALLET_SPACE_NAME, PRIVATE_CREDENTIALS_COLLECTION, PUBLIC_CREDENTIALS_COLLECTION, WALLET_ACTIVITY_COLLECTION, PRIVATE_CREDENTIALS_COLLECTION_SPEC, PUBLIC_CREDENTIALS_COLLECTION_SPEC, WALLET_ACTIVITY_COLLECTION_SPEC, CONTACTS_SPACE_COLLECTION_SPEC, CONTACTS_HISTORY_SPACE_COLLECTION_SPEC, WALLET_SPACE_SYNCED_SPECS, WALLET_SPACE_SYSTEM_SPECS, WALLET_SPACE_PROVISION_ROSTER } from './collections.js';
26
+ export { ID_COLLECTION, KEY_MAP_COLLECTION, KEYRING_COLLECTION, ID_COLLECTION_SPEC, KEY_MAP_COLLECTION_SPEC, DID_DOCUMENT_RESOURCE, DID_LOG_RESOURCE, DID_KEYS_RESOURCE, USER_KEY_ROSTER_RESOURCE, CLIENT_LABELS_RESOURCE, KEYRING_RESOURCE } from './collections.js';
27
+ export type { SpaceProvisionSpec, SpaceCollectionSpec } from './collections.js';
28
+ export { provisionWalletSpace } from './provisioning.js';
24
29
  export { ACTIVITY_TYPE, addHistoryNewAccount, addHistorySpaceCreated, addHistoryCredentialCreated, addHistoryCredentialDeleted, addHistoryCredentialShared, addHistoryCredentialUnshared, addHistoryLogin, addHistoryWalletLogin, addHistoryAppRevoke, addHistoryClientRevoked } from './activity.js';
25
30
  export type { WalletActivity, ActivityGrant } from './activity.js';
26
31
  export { publicCredentialUrl } from './publicLink.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/space/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE3D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/space/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,8BAA8B,EAC9B,sCAAsC,EACtC,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA"}
@@ -6,11 +6,15 @@
6
6
  * WAS-enabled wallet apps share.
7
7
  *
8
8
  * - The shared collection ids and descriptive specs (`private-credentials`,
9
- * `public-credentials`, `wallet-activity`). The contacts collections stay in
10
- * `@interop/social-core`.
9
+ * `public-credentials`, `wallet-activity`; the contacts identity contract
10
+ * stays in `@interop/social-core`, spread into the wallet-Space specs here),
11
+ * and the provisioning rosters that split them into synced feeds vs.
12
+ * provisioned-but-not-synced system collections.
11
13
  * - The system collections and resource names that carry identity and key
12
14
  * material (`id`, `key-map`, `keyring`; `did.json`, `did.jsonl`, `keys.json`,
13
15
  * `user-key.json`, `keyring.json`) -- outside the synced set, never replicated.
16
+ * - `provisionWalletSpace`, the one-shot full-roster provisioner the
17
+ * Space-creating wallet runs.
14
18
  * - The `wallet-activity` wire shape (`WalletActivity`) and the pure
15
19
  * `addHistory*` payload builders.
16
20
  * - `publicCredentialUrl`, the world-readable shared-credential URL both
@@ -18,8 +22,9 @@
18
22
  * - The `was-link` QR hand-off contract (`buildWasLinkPayload` /
19
23
  * `parseWasLinkPayload` / `encodeWasLinkSecret`).
20
24
  */
21
- export { PRIVATE_CREDENTIALS_COLLECTION, PUBLIC_CREDENTIALS_COLLECTION, WALLET_ACTIVITY_COLLECTION, PRIVATE_CREDENTIALS_COLLECTION_SPEC, PUBLIC_CREDENTIALS_COLLECTION_SPEC, WALLET_ACTIVITY_COLLECTION_SPEC, WALLET_SPACE_COLLECTION_SPECS } from './collections.js';
22
- export { ID_COLLECTION, KEY_MAP_COLLECTION, KEYRING_COLLECTION, DID_DOCUMENT_RESOURCE, DID_LOG_RESOURCE, DID_KEYS_RESOURCE, USER_KEY_ROSTER_RESOURCE, CLIENT_LABELS_RESOURCE, KEYRING_RESOURCE } from './collections.js';
25
+ export { WALLET_SPACE_NAME, PRIVATE_CREDENTIALS_COLLECTION, PUBLIC_CREDENTIALS_COLLECTION, WALLET_ACTIVITY_COLLECTION, PRIVATE_CREDENTIALS_COLLECTION_SPEC, PUBLIC_CREDENTIALS_COLLECTION_SPEC, WALLET_ACTIVITY_COLLECTION_SPEC, CONTACTS_SPACE_COLLECTION_SPEC, CONTACTS_HISTORY_SPACE_COLLECTION_SPEC, WALLET_SPACE_SYNCED_SPECS, WALLET_SPACE_SYSTEM_SPECS, WALLET_SPACE_PROVISION_ROSTER } from './collections.js';
26
+ export { ID_COLLECTION, KEY_MAP_COLLECTION, KEYRING_COLLECTION, ID_COLLECTION_SPEC, KEY_MAP_COLLECTION_SPEC, DID_DOCUMENT_RESOURCE, DID_LOG_RESOURCE, DID_KEYS_RESOURCE, USER_KEY_ROSTER_RESOURCE, CLIENT_LABELS_RESOURCE, KEYRING_RESOURCE } from './collections.js';
27
+ export { provisionWalletSpace } from './provisioning.js';
23
28
  export { ACTIVITY_TYPE, addHistoryNewAccount, addHistorySpaceCreated, addHistoryCredentialCreated, addHistoryCredentialDeleted, addHistoryCredentialShared, addHistoryCredentialUnshared, addHistoryLogin, addHistoryWalletLogin, addHistoryAppRevoke, addHistoryClientRevoked } from './activity.js';
24
29
  export { publicCredentialUrl } from './publicLink.js';
25
30
  export { encodeWasLinkSecret, buildWasLinkPayload, parseWasLinkPayload } from './wasLink.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/space/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/space/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,8BAA8B,EAC9B,sCAAsC,EACtC,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,35 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * One-shot wallet Space provisioning: the single mechanism both wallet apps run
6
+ * when they are the wallet that creates (or re-ensures) a Space, walking the
7
+ * full `WALLET_SPACE_PROVISION_ROSTER` -- the synced feeds plus the non-synced
8
+ * system collections (`id`, `key-map`) -- so a Space's layout never depends on
9
+ * which app happened to provision it.
10
+ */
11
+ import type { WasClient } from '@interop/was-client';
12
+ /**
13
+ * Ensures the controller's Space exists and every collection in the wallet
14
+ * Space roster is configured, concurrently -- each collection depends only on
15
+ * the Space existing, and every step is an idempotent upsert, so an interrupted
16
+ * run is completed by simply re-running. The Space is (re)configured with the
17
+ * app-neutral `WALLET_SPACE_NAME` and each collection with its roster display
18
+ * name. Runs full-tier -- the client invokes its own root capability -- so this
19
+ * belongs only in the wallet that holds the Space's controller; an enrolled
20
+ * client joining a Space another wallet provisioned must not call it (a
21
+ * re-declaration could clobber collection configuration other clients depend
22
+ * on).
23
+ *
24
+ * @param options {object}
25
+ * @param options.was {WasClient}
26
+ * @param options.spaceId {string}
27
+ * @param options.controllerDid {string} the Space controller
28
+ * @returns {Promise<void>}
29
+ */
30
+ export declare function provisionWalletSpace({ was, spaceId, controllerDid }: {
31
+ was: WasClient;
32
+ spaceId: string;
33
+ controllerDid: string;
34
+ }): Promise<void>;
35
+ //# sourceMappingURL=provisioning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provisioning.d.ts","sourceRoot":"","sources":["../../src/space/provisioning.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AASpD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,GAAG,EACH,OAAO,EACP,aAAa,EACd,EAAE;IACD,GAAG,EAAE,SAAS,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhB"}
@@ -0,0 +1,63 @@
1
+ import { ensureSpaceAndCollection } from '@interop/was-client/sync';
2
+ import { WALLET_SPACE_NAME, WALLET_SPACE_PROVISION_ROSTER } from './collections.js';
3
+ /**
4
+ * Ensures the controller's Space exists and every collection in the wallet
5
+ * Space roster is configured, concurrently -- each collection depends only on
6
+ * the Space existing, and every step is an idempotent upsert, so an interrupted
7
+ * run is completed by simply re-running. The Space is (re)configured with the
8
+ * app-neutral `WALLET_SPACE_NAME` and each collection with its roster display
9
+ * name. Runs full-tier -- the client invokes its own root capability -- so this
10
+ * belongs only in the wallet that holds the Space's controller; an enrolled
11
+ * client joining a Space another wallet provisioned must not call it (a
12
+ * re-declaration could clobber collection configuration other clients depend
13
+ * on).
14
+ *
15
+ * @param options {object}
16
+ * @param options.was {WasClient}
17
+ * @param options.spaceId {string}
18
+ * @param options.controllerDid {string} the Space controller
19
+ * @returns {Promise<void>}
20
+ */
21
+ export async function provisionWalletSpace({ was, spaceId, controllerDid }) {
22
+ await Promise.all(WALLET_SPACE_PROVISION_ROSTER.map(spec => ensureCollection({ was, spaceId, controllerDid, spec })));
23
+ }
24
+ async function ensureCollection({ was, spaceId, controllerDid, spec: { collectionId, name, encryption, isPublic } }) {
25
+ try {
26
+ await ensureSpaceAndCollection({
27
+ was,
28
+ spaceId,
29
+ controllerDid,
30
+ collectionId,
31
+ collectionName: name,
32
+ encryption,
33
+ isPublic,
34
+ spaceName: WALLET_SPACE_NAME
35
+ });
36
+ }
37
+ catch (err) {
38
+ // An encrypted collection whose descriptor already carries key epochs (a
39
+ // share, or a recovery escrow) refuses the bare `edv` re-declaration: the
40
+ // PUT would drop the append-only epochs and the server rejects it. A
41
+ // name-only configure merges the current description forward, re-stating
42
+ // the standing descriptor (epochs included) verbatim -- the idempotent form
43
+ // of "ensure it exists". The original error is still logged on a successful
44
+ // retry: the retry also masks failures that were never the epoch refusal
45
+ // (including a failed Space-description PUT, which `ensureSpaceAndCollection`
46
+ // performs FIRST), and those should stay visible even when the narrower
47
+ // configure happens to land.
48
+ if (encryption === 'edv') {
49
+ try {
50
+ await was.space(spaceId).collection(collectionId).configure({ name });
51
+ console.warn(`Collection "${collectionId}" was ensured via the name-only retry; ` +
52
+ 'the full ensure had failed with:', err);
53
+ return;
54
+ }
55
+ catch {
56
+ // Fall through to the wrapped throw below, keeping the original
57
+ // (full-ensure) error as the cause.
58
+ }
59
+ }
60
+ throw new Error(`Error provisioning collection "${collectionId}" in space "${spaceId}".`, { cause: err });
61
+ }
62
+ }
63
+ //# sourceMappingURL=provisioning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../../src/space/provisioning.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,EACL,iBAAiB,EACjB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AAGzB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACzC,GAAG,EACH,OAAO,EACP,aAAa,EAKd;IACC,MAAM,OAAO,CAAC,GAAG,CACf,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACvC,gBAAgB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CACxD,CACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,EAC9B,GAAG,EACH,OAAO,EACP,aAAa,EACb,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAMnD;IACC,IAAI,CAAC;QACH,MAAM,wBAAwB,CAAC;YAC7B,GAAG;YACH,OAAO;YACP,aAAa;YACb,YAAY;YACZ,cAAc,EAAE,IAAI;YACpB,UAAU;YACV,QAAQ;YACR,SAAS,EAAE,iBAAiB;SAC7B,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yEAAyE;QACzE,0EAA0E;QAC1E,qEAAqE;QACrE,yEAAyE;QACzE,4EAA4E;QAC5E,4EAA4E;QAC5E,yEAAyE;QACzE,8EAA8E;QAC9E,wEAAwE;QACxE,6BAA6B;QAC7B,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;gBACrE,OAAO,CAAC,IAAI,CACV,eAAe,YAAY,yCAAyC;oBAClE,kCAAkC,EACpC,GAAG,CACJ,CAAA;gBACD,OAAM;YACR,CAAC;YAAC,MAAM,CAAC;gBACP,gEAAgE;gBAChE,oCAAoC;YACtC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kCAAkC,YAAY,eAAe,OAAO,IAAI,EACxE,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@interop/wallet-core",
3
3
  "description": "Shared wallet-domain logic (WAS sync engine core and wallet Space layout contracts) for Interop wallet apps.",
4
- "version": "0.19.0",
4
+ "version": "0.21.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "build": "pnpm run clear && tsc",