@interop/wallet-core 0.109.0 → 0.111.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.
Files changed (44) hide show
  1. package/dist/clientAnnex/gc.d.ts +31 -2
  2. package/dist/clientAnnex/gc.d.ts.map +1 -1
  3. package/dist/clientAnnex/gc.js +44 -7
  4. package/dist/clientAnnex/gc.js.map +1 -1
  5. package/dist/clientAnnex/heal.d.ts.map +1 -1
  6. package/dist/clientAnnex/heal.js +13 -3
  7. package/dist/clientAnnex/heal.js.map +1 -1
  8. package/dist/clientAnnex/index.d.ts +2 -2
  9. package/dist/clientAnnex/index.d.ts.map +1 -1
  10. package/dist/clientAnnex/index.js +1 -1
  11. package/dist/clientAnnex/index.js.map +1 -1
  12. package/dist/clientAnnex/log.d.ts +160 -4
  13. package/dist/clientAnnex/log.d.ts.map +1 -1
  14. package/dist/clientAnnex/log.js +229 -17
  15. package/dist/clientAnnex/log.js.map +1 -1
  16. package/dist/connections/grants.d.ts +48 -3
  17. package/dist/connections/grants.d.ts.map +1 -1
  18. package/dist/connections/grants.js +54 -3
  19. package/dist/connections/grants.js.map +1 -1
  20. package/dist/connections/index.d.ts +7 -4
  21. package/dist/connections/index.d.ts.map +1 -1
  22. package/dist/connections/index.js +7 -4
  23. package/dist/connections/index.js.map +1 -1
  24. package/dist/connections/replicas.d.ts +43 -1
  25. package/dist/connections/replicas.d.ts.map +1 -1
  26. package/dist/connections/replicas.js +87 -14
  27. package/dist/connections/replicas.js.map +1 -1
  28. package/dist/connections/upsert.d.ts +52 -19
  29. package/dist/connections/upsert.d.ts.map +1 -1
  30. package/dist/connections/upsert.js +93 -41
  31. package/dist/connections/upsert.js.map +1 -1
  32. package/dist/descriptors/index.d.ts +3 -4
  33. package/dist/descriptors/index.d.ts.map +1 -1
  34. package/dist/descriptors/index.js +3 -4
  35. package/dist/descriptors/index.js.map +1 -1
  36. package/dist/descriptors/logSource.d.ts +32 -16
  37. package/dist/descriptors/logSource.d.ts.map +1 -1
  38. package/dist/descriptors/logSource.js +36 -16
  39. package/dist/descriptors/logSource.js.map +1 -1
  40. package/dist/keys/collectionLogStore.d.ts +2 -2
  41. package/dist/keys/collectionLogStore.d.ts.map +1 -1
  42. package/dist/keys/collectionLogStore.js +2 -3
  43. package/dist/keys/collectionLogStore.js.map +1 -1
  44. package/package.json +2 -2
@@ -630,6 +630,139 @@ export declare function generationDelegationServiceEntry({ clientAnnexDid, deleg
630
630
  export declare function embeddedGenerationDelegation({ doc }: {
631
631
  doc: DIDDoc;
632
632
  }): IZcap | undefined;
633
+ /**
634
+ * The type IRI of the annex document's replica pointer entries: one entry per
635
+ * replica server the account registers, each naming that server's DID. The
636
+ * term is the PWS companion spec's, since replication is its domain.
637
+ * Wire-level and permanent (app-connect-spec decision 0001): the source
638
+ * server gates a ladder-signed pull on it, and readers dispatch on this IRI
639
+ * rather than on the entry's fragment id.
640
+ */
641
+ export declare const REPLICA_SERVER_SERVICE_TYPE = "https://w3id.org/pws#ReplicaServer";
642
+ /**
643
+ * Refuses, with a `TypeError`, a replica server DID that is not a did:webvh
644
+ * whose path is `space:server:id` (app-connect-spec decision 0003, predicate
645
+ * 6: the source server checks the grantee's shape beside the pointer). A
646
+ * malformed value would land permanently in a hash-chained annex entry the
647
+ * server refuses anyway, so the wallet refuses it before minting the entry.
648
+ *
649
+ * @param options {object}
650
+ * @param options.serverDid {string}
651
+ */
652
+ export declare function assertReplicaServerDid({ serverDid }: {
653
+ serverDid: string;
654
+ }): void;
655
+ /**
656
+ * The fragment id of a replica pointer entry: `replica-` followed by the
657
+ * SHA-256 multihash of the replica server's DID string (its UTF-8 bytes),
658
+ * base64url with no padding. Derived rather than random, so one server's
659
+ * entry has the same id on every restate. Wire-level and permanent; readers
660
+ * still dispatch on {@link REPLICA_SERVER_SERVICE_TYPE}.
661
+ *
662
+ * @param options {object}
663
+ * @param options.serverDid {string} the replica server's DID
664
+ * @returns {string} the fragment, without the `#`
665
+ */
666
+ export declare function replicaServerServiceFragment({ serverDid }: {
667
+ serverDid: string;
668
+ }): string;
669
+ /**
670
+ * Builds a replica pointer entry for an annex document. The
671
+ * `serviceEndpoint` is the replica server's bare DID STRING, and the entry
672
+ * carries nothing beside it. Refuses a malformed `serverDid`
673
+ * ({@link assertReplicaServerDid}).
674
+ *
675
+ * @param options {object}
676
+ * @param options.clientAnnexDid {string} the generation's annex DID
677
+ * @param options.serverDid {string} the replica server's DID
678
+ * @returns {ServiceEndpoint}
679
+ */
680
+ export declare function replicaServerServiceEntry({ clientAnnexDid, serverDid }: {
681
+ clientAnnexDid: string;
682
+ serverDid: string;
683
+ }): ServiceEndpoint;
684
+ /**
685
+ * The replica servers an annex document points at: the `serviceEndpoint` of
686
+ * every entry whose `type` names (or includes)
687
+ * {@link REPLICA_SERVER_SERVICE_TYPE}, in document order, each DID once.
688
+ * Only a bare DID-string endpoint counts, the same predicate the server's
689
+ * replica-pointer clause evaluates, so wallet and server read the same
690
+ * pointer set off one document.
691
+ *
692
+ * @param options {object}
693
+ * @param options.doc {DIDDoc} the resolved (and verified) annex document
694
+ * @returns {string[]}
695
+ */
696
+ export declare function replicaServerPointers({ doc }: {
697
+ doc: DIDDoc;
698
+ }): string[];
699
+ /**
700
+ * Whether an annex document carries a replica pointer at `serverDid`: a
701
+ * replica pointer entry whose endpoint is the server's DID. The match is by
702
+ * endpoint alone, the one the server's replica-pointer clause makes; an
703
+ * entry's fragment id is a selector and names no server.
704
+ *
705
+ * @param options {object}
706
+ * @param options.doc {DIDDoc} the resolved (and verified) annex document
707
+ * @param options.serverDid {string} the replica server's DID
708
+ * @returns {boolean}
709
+ */
710
+ export declare function replicaServerPointerStands({ doc, serverDid }: {
711
+ doc: DIDDoc;
712
+ serverDid: string;
713
+ }): boolean;
714
+ /**
715
+ * The replica servers of `serverDids`, each once, that an annex document
716
+ * carries no pointer at ({@link replicaServerPointerStands}). The set the
717
+ * installing entry adds, and what a caller whose install pass published
718
+ * nothing reads off the head that pass stood on.
719
+ *
720
+ * @param options {object}
721
+ * @param options.doc {DIDDoc}
722
+ * @param options.serverDids {string[]}
723
+ * @returns {string[]}
724
+ */
725
+ export declare function replicaServersMissing({ doc, serverDids }: {
726
+ doc: DIDDoc;
727
+ serverDids: string[];
728
+ }): string[];
729
+ /**
730
+ * The service entries the entry installing a generation delegation writes
731
+ * beside it, computed over the document as published so an installer can
732
+ * skip what the document already carries and refuse what collides. The one
733
+ * hook every installing writer forwards, so an install-time convention (the
734
+ * replica pointers, {@link replicaPointerInstaller}) is wired once rather
735
+ * than once per layer, and the layers between the caller and the install
736
+ * entry learn nothing about it. Invoked only by the entry that installs the
737
+ * delegation; every other entry ignores it.
738
+ */
739
+ export type InstalledServices = (options: {
740
+ doc: DIDDoc;
741
+ clientAnnexDid: string;
742
+ }) => ServiceEndpoint[];
743
+ /**
744
+ * An {@link InstalledServices} hook that points the generation at
745
+ * `serverDids`: a replica pointer entry for each one the document does not
746
+ * already carry ({@link replicaServerPointerStands}). Every standing entry,
747
+ * replica pointers among them, is carried through untouched: the hook only
748
+ * adds, since dropping a pointer is the replica pass's decision, made against
749
+ * the connections directory.
750
+ *
751
+ * The hook refuses, before any entry is minted, a malformed server DID
752
+ * ({@link assertReplicaServerDid}) with a `TypeError`, standing ones
753
+ * included, and with an `Error` a document that already carries a service
754
+ * entry under the id an added pointer would take (one of another type,
755
+ * another endpoint, or an endpoint that is not a DID string): a second entry
756
+ * under one id is a document no resolver admits, and the entry standing
757
+ * there was not written by this hook.
758
+ *
759
+ * @param options {object}
760
+ * @param options.serverDids {string[]} the replica servers to point at
761
+ * @returns {InstalledServices}
762
+ */
763
+ export declare function replicaPointerInstaller({ serverDids }: {
764
+ serverDids: string[];
765
+ }): InstalledServices;
633
766
  /**
634
767
  * Every generation delegation a generation's log has ever embedded, in log
635
768
  * order and deduplicated by zcap id -- the annex-log HISTORY WALK the
@@ -896,9 +1029,13 @@ export declare function readClientAnnexLogOrAbsent({ store, expectedDid }: {
896
1029
  * delegation this entry installs when it publishes the generation's FIRST
897
1030
  * transient verification method (and the document carries no delegation
898
1031
  * entry yet). Never invoked otherwise: the delegation is installed with
899
- * the first transient VM or by the GC ceremony's own install stage, never
900
- * by genesis (a genesis-embedded signed zcap can never verify -- its
1032
+ * the first transient VM or by the GC ceremony's own install stage, and
1033
+ * not by genesis (a genesis-embedded signed zcap can never verify -- its
901
1034
  * `controller` embeds the SCID the genesis hash derives from)
1035
+ * @param [options.installedServices] {InstalledServices} the service
1036
+ * entries the installing entry writes beside the delegation (the replica
1037
+ * pointers, {@link replicaPointerInstaller}). Invoked only by the entry
1038
+ * that installs the delegation; ignored on every other entry
902
1039
  * @param [options.expectedDid] {string} the annex DID the log must
903
1040
  * resolve to, from the account document's pointer. The read and the publish
904
1041
  * run under the store's own chain-head pin
@@ -920,6 +1057,7 @@ export declare function enrollClientAnnexTransientClient({ published: threadedHe
920
1057
  mintGenerationDelegation?: (options: {
921
1058
  clientAnnexDid: string;
922
1059
  }) => Promise<IZcap>;
1060
+ installedServices?: InstalledServices;
923
1061
  expectedDid?: string;
924
1062
  published?: PublishedWebvhLog;
925
1063
  }): Promise<{
@@ -1083,6 +1221,9 @@ export declare function setDelegatedClientsPointerOnce({ idStore, signer, client
1083
1221
  * {@link enrollClientAnnexTransientClient}). The closure receives whichever
1084
1222
  * annex DID the round enrolls into, so a GC-race re-enroll mints for
1085
1223
  * the fresh generation
1224
+ * @param [options.installedServices] {InstalledServices} forwarded to
1225
+ * the enrollment entry: what the installing entry writes beside the
1226
+ * delegation
1086
1227
  * @param [options.maxRounds] {number} how many pointer moves to chase
1087
1228
  * before giving up (a GC pass is quarterly, so more than one mid-ceremony
1088
1229
  * move means something else is wrong)
@@ -1094,7 +1235,7 @@ export declare function setDelegatedClientsPointerOnce({ idStore, signer, client
1094
1235
  * every later round does
1095
1236
  * @returns {Promise<{ clientAnnexDid: string, doc: DIDDoc, log: DIDLog }>}
1096
1237
  */
1097
- export declare function enrollTransientClient({ readAccountDocument, storeForGenerationId, ladderSeed, transientKeyMultibase, mintGenerationDelegation: mintDelegation, maxRounds, published: threadedHead }: {
1238
+ export declare function enrollTransientClient({ readAccountDocument, storeForGenerationId, ladderSeed, transientKeyMultibase, mintGenerationDelegation: mintDelegation, installedServices, maxRounds, published: threadedHead }: {
1098
1239
  readAccountDocument: () => Promise<DIDDoc>;
1099
1240
  storeForGenerationId: (generationId: string) => ClientAnnexWriteStore;
1100
1241
  ladderSeed: Uint8Array;
@@ -1102,6 +1243,7 @@ export declare function enrollTransientClient({ readAccountDocument, storeForGen
1102
1243
  mintGenerationDelegation?: (options: {
1103
1244
  clientAnnexDid: string;
1104
1245
  }) => Promise<IZcap>;
1246
+ installedServices?: InstalledServices;
1105
1247
  maxRounds?: number;
1106
1248
  published?: PublishedWebvhLog;
1107
1249
  }): Promise<{
@@ -1150,6 +1292,10 @@ export declare function enrollTransientClient({ readAccountDocument, storeForGen
1150
1292
  * generation's standing set, restated in the fresh genesis (see
1151
1293
  * {@link mintCredentialClientAnnexGeneration}); absent on a first
1152
1294
  * generation and wherever no superseded log was readable
1295
+ * @param [options.installedServices] {InstalledServices} what the
1296
+ * install entry writes beside the delegation, the restated replica pointers
1297
+ * ({@link replicaPointerInstaller}); absent on a first generation and
1298
+ * wherever the caller holds no list
1153
1299
  * @param [options.beforePointerEntry] {Function}
1154
1300
  * `({ minted }) => Promise<void>` -- runs after the install and before the
1155
1301
  * pointer entry, with the mint's published head (its `spaceDescription`
@@ -1158,7 +1304,7 @@ export declare function enrollTransientClient({ readAccountDocument, storeForGen
1158
1304
  * @returns {Promise<{ clientAnnexDid: string, generationDelegation: IZcap,
1159
1305
  * pointed: T }>}
1160
1306
  */
1161
- export declare function mintPointedClientAnnexGeneration<T>({ was, baseServerUrl, spaceId, controller, ladderSeed, mintGenerationDelegation, point, pinStore, capability, standingRungHashes, beforePointerEntry, now }: {
1307
+ export declare function mintPointedClientAnnexGeneration<T>({ was, baseServerUrl, spaceId, controller, ladderSeed, mintGenerationDelegation, point, pinStore, capability, standingRungHashes, installedServices, beforePointerEntry, now }: {
1162
1308
  was: WasClient;
1163
1309
  baseServerUrl: string;
1164
1310
  spaceId: string;
@@ -1171,6 +1317,7 @@ export declare function mintPointedClientAnnexGeneration<T>({ was, baseServerUrl
1171
1317
  pinStore: ResourceLogPinStore;
1172
1318
  capability?: IZcap;
1173
1319
  standingRungHashes?: string[];
1320
+ installedServices?: InstalledServices;
1174
1321
  beforePointerEntry?: (options: {
1175
1322
  minted: Awaited<ReturnType<typeof mintCredentialClientAnnexGeneration>>;
1176
1323
  }) => Promise<void>;
@@ -1237,6 +1384,14 @@ export declare function mintPointedClientAnnexGeneration<T>({ was, baseServerUrl
1237
1384
  * its own ladder VM (whose delegations it revokes server-side in the next
1238
1385
  * breath, a state no client-side predicate can read) and the client its
1239
1386
  * removal entry has yet to strike
1387
+ * @param [options.installedServices] {InstalledServices} the service
1388
+ * entries the installing entry writes beside the delegation, the replica
1389
+ * pointers ({@link replicaPointerInstaller}): a fresh generation's install
1390
+ * stage writes them beside the delegation, and a renewal on a live
1391
+ * generation adds what the document lacks and keeps every standing entry
1392
+ * through the prior-state clone. A pass that publishes nothing never
1393
+ * invokes the hook; the caller reads what the head still lacks off the
1394
+ * `published` it hands back ({@link replicaServersMissing})
1240
1395
  * @param [options.now] {number} epoch milliseconds, for tests
1241
1396
  * @param [options.published] {PublishedWebvhLog} a head the caller already
1242
1397
  * read and verified under this same pin slot, so the stage builds on it
@@ -1265,6 +1420,7 @@ export declare function ensureGenerationDelegationCurrent({ published: threadedH
1265
1420
  expectedDid?: string;
1266
1421
  accountDoc?: PublishedKeyDocument;
1267
1422
  retiringKeyMultibases?: string[];
1423
+ installedServices?: InstalledServices;
1268
1424
  now?: number;
1269
1425
  published?: PublishedWebvhLog;
1270
1426
  }): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/clientAnnex/log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/clientAnnex/log.ts"],"names":[],"mappings":"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"}
@@ -27,10 +27,13 @@
27
27
  * portability move.
28
28
  * - The genesis document is bare -- no verification methods, no service
29
29
  * entries, the DID core context only. Transient verification methods are
30
- * published per visit by later entries, and the generation delegation's
31
- * service entry is installed by the entry publishing the generation's first
32
- * transient method, never by genesis (its bytes would have to name the SCID
33
- * the genesis hash derives from).
30
+ * published per visit by later entries. The entry that installs the
31
+ * generation delegation (the swap's install stage, or the entry publishing
32
+ * the generation's first transient method) also carries the generation's
33
+ * replica pointers, one entry per replica server the caller restates.
34
+ * Genesis carries neither: the delegation's bytes would have to name the
35
+ * SCID the genesis hash derives from, and the pointers ride the same entry
36
+ * so a generation with no delegation points at no replica.
34
37
  * - No `did:web` projection exists: the generation collection holds only its
35
38
  * `did.jsonl`, capability-gated rather than world-readable.
36
39
  *
@@ -47,9 +50,12 @@
47
50
  * generation collection's name, and the annex DID string embeds it.
48
51
  */
49
52
  import { createDID, deriveNextKeyHash, updateDID } from '@interop/did-method-webvh';
53
+ import { createMultihash, MultihashAlgorithm } from '@interop/data-integrity-core/multihash';
50
54
  import { rootCapabilityId, spaceUrlById } from '@interop/was-client/paths';
55
+ import { sha256 } from '@noble/hashes/sha2.js';
51
56
  import { base64urlnopad } from '@scure/base';
52
57
  import { isJsonObject } from '../jsonObject.js';
58
+ import { ID_COLLECTION } from '../space/collections.js';
53
59
  import { plaintextCollection } from '../space/plaintextCollection.js';
54
60
  import { clientAnnexRung } from './generationRung.js';
55
61
  import { ladderRung } from '../webvh/ladderDerivation.js';
@@ -1018,6 +1024,187 @@ export function embeddedGenerationDelegation({ doc }) {
1018
1024
  endpoint: 'map'
1019
1025
  });
1020
1026
  }
1027
+ /**
1028
+ * The type IRI of the annex document's replica pointer entries: one entry per
1029
+ * replica server the account registers, each naming that server's DID. The
1030
+ * term is the PWS companion spec's, since replication is its domain.
1031
+ * Wire-level and permanent (app-connect-spec decision 0001): the source
1032
+ * server gates a ladder-signed pull on it, and readers dispatch on this IRI
1033
+ * rather than on the entry's fragment id.
1034
+ */
1035
+ export const REPLICA_SERVER_SERVICE_TYPE = 'https://w3id.org/pws#ReplicaServer';
1036
+ /**
1037
+ * The Space id a replica server publishes its own did:webvh log under.
1038
+ */
1039
+ const REPLICA_SERVER_SPACE_ID = 'server';
1040
+ /**
1041
+ * Refuses, with a `TypeError`, a replica server DID that is not a did:webvh
1042
+ * whose path is `space:server:id` (app-connect-spec decision 0003, predicate
1043
+ * 6: the source server checks the grantee's shape beside the pointer). A
1044
+ * malformed value would land permanently in a hash-chained annex entry the
1045
+ * server refuses anyway, so the wallet refuses it before minting the entry.
1046
+ *
1047
+ * @param options {object}
1048
+ * @param options.serverDid {string}
1049
+ */
1050
+ export function assertReplicaServerDid({ serverDid }) {
1051
+ let location;
1052
+ try {
1053
+ location = didWebvhLogLocation({ did: serverDid });
1054
+ }
1055
+ catch {
1056
+ location = undefined;
1057
+ }
1058
+ if (location === undefined ||
1059
+ location.spaceId !== REPLICA_SERVER_SPACE_ID ||
1060
+ location.collectionId !== ID_COLLECTION.id) {
1061
+ throw new TypeError('A replica server DID is a did:webvh whose path is ' +
1062
+ `space:${REPLICA_SERVER_SPACE_ID}:${ID_COLLECTION.id}; got ` +
1063
+ `"${serverDid}".`);
1064
+ }
1065
+ }
1066
+ /**
1067
+ * The fragment id of a replica pointer entry: `replica-` followed by the
1068
+ * SHA-256 multihash of the replica server's DID string (its UTF-8 bytes),
1069
+ * base64url with no padding. Derived rather than random, so one server's
1070
+ * entry has the same id on every restate. Wire-level and permanent; readers
1071
+ * still dispatch on {@link REPLICA_SERVER_SERVICE_TYPE}.
1072
+ *
1073
+ * @param options {object}
1074
+ * @param options.serverDid {string} the replica server's DID
1075
+ * @returns {string} the fragment, without the `#`
1076
+ */
1077
+ export function replicaServerServiceFragment({ serverDid }) {
1078
+ const digest = sha256(new TextEncoder().encode(serverDid));
1079
+ const multihash = createMultihash(digest, MultihashAlgorithm.SHA2_256);
1080
+ return `replica-${base64urlnopad.encode(multihash)}`;
1081
+ }
1082
+ /**
1083
+ * Builds a replica pointer entry for an annex document. The
1084
+ * `serviceEndpoint` is the replica server's bare DID STRING, and the entry
1085
+ * carries nothing beside it. Refuses a malformed `serverDid`
1086
+ * ({@link assertReplicaServerDid}).
1087
+ *
1088
+ * @param options {object}
1089
+ * @param options.clientAnnexDid {string} the generation's annex DID
1090
+ * @param options.serverDid {string} the replica server's DID
1091
+ * @returns {ServiceEndpoint}
1092
+ */
1093
+ export function replicaServerServiceEntry({ clientAnnexDid, serverDid }) {
1094
+ assertReplicaServerDid({ serverDid });
1095
+ return {
1096
+ id: `${clientAnnexDid}#${replicaServerServiceFragment({ serverDid })}`,
1097
+ type: REPLICA_SERVER_SERVICE_TYPE,
1098
+ serviceEndpoint: serverDid
1099
+ };
1100
+ }
1101
+ /**
1102
+ * The replica servers an annex document points at: the `serviceEndpoint` of
1103
+ * every entry whose `type` names (or includes)
1104
+ * {@link REPLICA_SERVER_SERVICE_TYPE}, in document order, each DID once.
1105
+ * Only a bare DID-string endpoint counts, the same predicate the server's
1106
+ * replica-pointer clause evaluates, so wallet and server read the same
1107
+ * pointer set off one document.
1108
+ *
1109
+ * @param options {object}
1110
+ * @param options.doc {DIDDoc} the resolved (and verified) annex document
1111
+ * @returns {string[]}
1112
+ */
1113
+ export function replicaServerPointers({ doc }) {
1114
+ return [
1115
+ ...new Set(serviceEntriesWith({
1116
+ doc,
1117
+ type: REPLICA_SERVER_SERVICE_TYPE,
1118
+ endpoint: 'string'
1119
+ }).map(entry => entry.serviceEndpoint))
1120
+ ];
1121
+ }
1122
+ /**
1123
+ * Whether an annex document carries a replica pointer at `serverDid`: a
1124
+ * replica pointer entry whose endpoint is the server's DID. The match is by
1125
+ * endpoint alone, the one the server's replica-pointer clause makes; an
1126
+ * entry's fragment id is a selector and names no server.
1127
+ *
1128
+ * @param options {object}
1129
+ * @param options.doc {DIDDoc} the resolved (and verified) annex document
1130
+ * @param options.serverDid {string} the replica server's DID
1131
+ * @returns {boolean}
1132
+ */
1133
+ export function replicaServerPointerStands({ doc, serverDid }) {
1134
+ return replicaServerPointers({ doc }).includes(serverDid);
1135
+ }
1136
+ /**
1137
+ * The replica servers of `serverDids`, each once, that an annex document
1138
+ * carries no pointer at ({@link replicaServerPointerStands}). The set the
1139
+ * installing entry adds, and what a caller whose install pass published
1140
+ * nothing reads off the head that pass stood on.
1141
+ *
1142
+ * @param options {object}
1143
+ * @param options.doc {DIDDoc}
1144
+ * @param options.serverDids {string[]}
1145
+ * @returns {string[]}
1146
+ */
1147
+ export function replicaServersMissing({ doc, serverDids }) {
1148
+ const standing = new Set(replicaServerPointers({ doc }));
1149
+ return [...new Set(serverDids)].filter(serverDid => !standing.has(serverDid));
1150
+ }
1151
+ /**
1152
+ * An {@link InstalledServices} hook that points the generation at
1153
+ * `serverDids`: a replica pointer entry for each one the document does not
1154
+ * already carry ({@link replicaServerPointerStands}). Every standing entry,
1155
+ * replica pointers among them, is carried through untouched: the hook only
1156
+ * adds, since dropping a pointer is the replica pass's decision, made against
1157
+ * the connections directory.
1158
+ *
1159
+ * The hook refuses, before any entry is minted, a malformed server DID
1160
+ * ({@link assertReplicaServerDid}) with a `TypeError`, standing ones
1161
+ * included, and with an `Error` a document that already carries a service
1162
+ * entry under the id an added pointer would take (one of another type,
1163
+ * another endpoint, or an endpoint that is not a DID string): a second entry
1164
+ * under one id is a document no resolver admits, and the entry standing
1165
+ * there was not written by this hook.
1166
+ *
1167
+ * @param options {object}
1168
+ * @param options.serverDids {string[]} the replica servers to point at
1169
+ * @returns {InstalledServices}
1170
+ */
1171
+ export function replicaPointerInstaller({ serverDids }) {
1172
+ return ({ doc, clientAnnexDid }) => {
1173
+ for (const serverDid of serverDids) {
1174
+ assertReplicaServerDid({ serverDid });
1175
+ }
1176
+ const added = replicaServersMissing({ doc, serverDids }).map(serverDid => replicaServerServiceEntry({ clientAnnexDid, serverDid }));
1177
+ const taken = new Set((doc.service ?? []).map(entry => entry.id));
1178
+ for (const entry of added) {
1179
+ if (taken.has(entry.id)) {
1180
+ throw new Error(`client annex: the document already carries a service entry at ` +
1181
+ `"${entry.id}" that is not the replica pointer at ` +
1182
+ `"${entry.serviceEndpoint}"; nothing was written.`);
1183
+ }
1184
+ }
1185
+ return added;
1186
+ };
1187
+ }
1188
+ /**
1189
+ * The service list the entry installing a generation delegation publishes:
1190
+ * the delegation entry ({@link withGenerationDelegationEntry}) followed by
1191
+ * whatever the caller's {@link InstalledServices} hook adds. The one
1192
+ * composition both installing writers run, so an install-time entry can
1193
+ * never land in an entry other than the delegation's.
1194
+ *
1195
+ * @param options {object}
1196
+ * @param options.doc {DIDDoc} the annex document as published
1197
+ * @param options.clientAnnexDid {string}
1198
+ * @param options.delegation {IZcap}
1199
+ * @param [options.installedServices] {InstalledServices}
1200
+ * @returns {ServiceEndpoint[]}
1201
+ */
1202
+ function withInstalledEntries({ doc, clientAnnexDid, delegation, installedServices }) {
1203
+ return [
1204
+ ...withGenerationDelegationEntry({ doc, clientAnnexDid, delegation }),
1205
+ ...(installedServices?.({ doc, clientAnnexDid }) ?? [])
1206
+ ];
1207
+ }
1021
1208
  /**
1022
1209
  * Every generation delegation a generation's log has ever embedded, in log
1023
1210
  * order and deduplicated by zcap id -- the annex-log HISTORY WALK the
@@ -1393,9 +1580,13 @@ export async function readClientAnnexLogOrAbsent({ store, expectedDid }) {
1393
1580
  * delegation this entry installs when it publishes the generation's FIRST
1394
1581
  * transient verification method (and the document carries no delegation
1395
1582
  * entry yet). Never invoked otherwise: the delegation is installed with
1396
- * the first transient VM or by the GC ceremony's own install stage, never
1397
- * by genesis (a genesis-embedded signed zcap can never verify -- its
1583
+ * the first transient VM or by the GC ceremony's own install stage, and
1584
+ * not by genesis (a genesis-embedded signed zcap can never verify -- its
1398
1585
  * `controller` embeds the SCID the genesis hash derives from)
1586
+ * @param [options.installedServices] {InstalledServices} the service
1587
+ * entries the installing entry writes beside the delegation (the replica
1588
+ * pointers, {@link replicaPointerInstaller}). Invoked only by the entry
1589
+ * that installs the delegation; ignored on every other entry
1399
1590
  * @param [options.expectedDid] {string} the annex DID the log must
1400
1591
  * resolve to, from the account document's pointer. The read and the publish
1401
1592
  * run under the store's own chain-head pin
@@ -1423,7 +1614,7 @@ export async function enrollClientAnnexTransientClient({ published: threadedHead
1423
1614
  * @param options {object} see {@link enrollClientAnnexTransientClient}
1424
1615
  * @returns {Promise<{ did: string, doc: DIDDoc, log: DIDLog }>}
1425
1616
  */
1426
- async function enrollClientAnnexTransientClientOnce({ store, ladderSeed, transientKeyMultibase, services, mintGenerationDelegation: mintDelegation, expectedDid, published: alreadyRead }) {
1617
+ async function enrollClientAnnexTransientClientOnce({ store, ladderSeed, transientKeyMultibase, services, mintGenerationDelegation: mintDelegation, installedServices, expectedDid, published: alreadyRead }) {
1427
1618
  const published = alreadyRead !== undefined
1428
1619
  ? assertPublishedLogDid({
1429
1620
  published: alreadyRead,
@@ -1457,16 +1648,18 @@ async function enrollClientAnnexTransientClientOnce({ store, ladderSeed, transie
1457
1648
  // The generation delegation installs with the first transient VM (never at
1458
1649
  // genesis): a delegation-less document about to receive its first method
1459
1650
  // gets the entry minted and appended here, so a generation with no visits
1460
- // never carries a delegation and stays authorization-inert.
1651
+ // never carries a delegation and stays authorization-inert. The replica
1652
+ // pointers ride the same entry.
1461
1653
  if (services === undefined &&
1462
1654
  mintDelegation !== undefined &&
1463
1655
  existingMethods.length === 0 &&
1464
1656
  embeddedGenerationDelegation({ doc }) === undefined) {
1465
1657
  const delegation = await mintDelegation({ clientAnnexDid: did });
1466
- services = withGenerationDelegationEntry({
1658
+ services = withInstalledEntries({
1467
1659
  doc,
1468
1660
  clientAnnexDid: did,
1469
- delegation
1661
+ delegation,
1662
+ ...(installedServices !== undefined ? { installedServices } : {})
1470
1663
  });
1471
1664
  }
1472
1665
  const transientMethod = {
@@ -1712,6 +1905,9 @@ export async function setDelegatedClientsPointerOnce({ idStore, signer, clientAn
1712
1905
  * {@link enrollClientAnnexTransientClient}). The closure receives whichever
1713
1906
  * annex DID the round enrolls into, so a GC-race re-enroll mints for
1714
1907
  * the fresh generation
1908
+ * @param [options.installedServices] {InstalledServices} forwarded to
1909
+ * the enrollment entry: what the installing entry writes beside the
1910
+ * delegation
1715
1911
  * @param [options.maxRounds] {number} how many pointer moves to chase
1716
1912
  * before giving up (a GC pass is quarterly, so more than one mid-ceremony
1717
1913
  * move means something else is wrong)
@@ -1723,7 +1919,7 @@ export async function setDelegatedClientsPointerOnce({ idStore, signer, clientAn
1723
1919
  * every later round does
1724
1920
  * @returns {Promise<{ clientAnnexDid: string, doc: DIDDoc, log: DIDLog }>}
1725
1921
  */
1726
- export async function enrollTransientClient({ readAccountDocument, storeForGenerationId, ladderSeed, transientKeyMultibase, mintGenerationDelegation: mintDelegation, maxRounds = 3, published: threadedHead }) {
1922
+ export async function enrollTransientClient({ readAccountDocument, storeForGenerationId, ladderSeed, transientKeyMultibase, mintGenerationDelegation: mintDelegation, installedServices, maxRounds = 3, published: threadedHead }) {
1727
1923
  let accountDoc = await readAccountDocument();
1728
1924
  for (let round = 0; round < maxRounds; round++) {
1729
1925
  const clientAnnexDid = delegatedClientsPointer({ doc: accountDoc });
@@ -1746,7 +1942,8 @@ export async function enrollTransientClient({ readAccountDocument, storeForGener
1746
1942
  ...(head !== undefined ? { published: head } : {}),
1747
1943
  ...(mintDelegation !== undefined
1748
1944
  ? { mintGenerationDelegation: mintDelegation }
1749
- : {})
1945
+ : {}),
1946
+ ...(installedServices !== undefined ? { installedServices } : {})
1750
1947
  });
1751
1948
  // The GC-race re-read: an unchanged pointer means the enrollment stands
1752
1949
  // in the pointed generation; a moved one means a concurrent GC abandoned
@@ -1800,6 +1997,10 @@ export async function enrollTransientClient({ readAccountDocument, storeForGener
1800
1997
  * generation's standing set, restated in the fresh genesis (see
1801
1998
  * {@link mintCredentialClientAnnexGeneration}); absent on a first
1802
1999
  * generation and wherever no superseded log was readable
2000
+ * @param [options.installedServices] {InstalledServices} what the
2001
+ * install entry writes beside the delegation, the restated replica pointers
2002
+ * ({@link replicaPointerInstaller}); absent on a first generation and
2003
+ * wherever the caller holds no list
1803
2004
  * @param [options.beforePointerEntry] {Function}
1804
2005
  * `({ minted }) => Promise<void>` -- runs after the install and before the
1805
2006
  * pointer entry, with the mint's published head (its `spaceDescription`
@@ -1808,7 +2009,7 @@ export async function enrollTransientClient({ readAccountDocument, storeForGener
1808
2009
  * @returns {Promise<{ clientAnnexDid: string, generationDelegation: IZcap,
1809
2010
  * pointed: T }>}
1810
2011
  */
1811
- export async function mintPointedClientAnnexGeneration({ was, baseServerUrl, spaceId, controller, ladderSeed, mintGenerationDelegation, point, pinStore, capability, standingRungHashes, beforePointerEntry, now }) {
2012
+ export async function mintPointedClientAnnexGeneration({ was, baseServerUrl, spaceId, controller, ladderSeed, mintGenerationDelegation, point, pinStore, capability, standingRungHashes, installedServices, beforePointerEntry, now }) {
1812
2013
  const minted = await mintCredentialClientAnnexGeneration({
1813
2014
  was,
1814
2015
  baseServerUrl,
@@ -1829,6 +2030,7 @@ export async function mintPointedClientAnnexGeneration({ was, baseServerUrl, spa
1829
2030
  }),
1830
2031
  ladderSeed,
1831
2032
  mintGenerationDelegation,
2033
+ ...(installedServices !== undefined ? { installedServices } : {}),
1832
2034
  expectedDid: minted.did,
1833
2035
  ...(minted.etag !== undefined ? { published: minted } : {}),
1834
2036
  ...(now !== undefined ? { now } : {})
@@ -1900,6 +2102,14 @@ export async function mintPointedClientAnnexGeneration({ was, baseServerUrl, spa
1900
2102
  * its own ladder VM (whose delegations it revokes server-side in the next
1901
2103
  * breath, a state no client-side predicate can read) and the client its
1902
2104
  * removal entry has yet to strike
2105
+ * @param [options.installedServices] {InstalledServices} the service
2106
+ * entries the installing entry writes beside the delegation, the replica
2107
+ * pointers ({@link replicaPointerInstaller}): a fresh generation's install
2108
+ * stage writes them beside the delegation, and a renewal on a live
2109
+ * generation adds what the document lacks and keeps every standing entry
2110
+ * through the prior-state clone. A pass that publishes nothing never
2111
+ * invokes the hook; the caller reads what the head still lacks off the
2112
+ * `published` it hands back ({@link replicaServersMissing})
1903
2113
  * @param [options.now] {number} epoch milliseconds, for tests
1904
2114
  * @param [options.published] {PublishedWebvhLog} a head the caller already
1905
2115
  * read and verified under this same pin slot, so the stage builds on it
@@ -1934,7 +2144,7 @@ export async function ensureGenerationDelegationCurrent({ published: threadedHea
1934
2144
  * @returns {Promise<{ delegation: IZcap, renewed: boolean,
1935
2145
  * published?: PublishedWebvhLog }>}
1936
2146
  */
1937
- async function ensureGenerationDelegationCurrentOnce({ store, ladderSeed, mintGenerationDelegation: mintDelegation, expectedDid, accountDoc, retiringKeyMultibases = [], now, published: alreadyRead }) {
2147
+ async function ensureGenerationDelegationCurrentOnce({ store, ladderSeed, mintGenerationDelegation: mintDelegation, expectedDid, accountDoc, retiringKeyMultibases = [], installedServices, now, published: alreadyRead }) {
1938
2148
  const published = alreadyRead !== undefined
1939
2149
  ? assertPublishedLogDid({
1940
2150
  published: alreadyRead,
@@ -1975,13 +2185,15 @@ async function ensureGenerationDelegationCurrentOnce({ store, ladderSeed, mintGe
1975
2185
  // The writer's rung-0 key reveals at its first annex write, exactly
1976
2186
  // as the enrollment entry does; `nextKeyHashes` is re-stated verbatim,
1977
2187
  // never inherited. Verification methods, relationship arrays, and every
1978
- // other service entry ride the library's prior-state clone untouched.
2188
+ // other service entry (the standing replica pointers among them) ride
2189
+ // the library's prior-state clone untouched.
1979
2190
  updateKeys: [...new Set([...published.updateKeys, rung.keyMultibase])],
1980
2191
  nextKeyHashes: [...published.nextKeyHashes],
1981
- services: withGenerationDelegationEntry({
2192
+ services: withInstalledEntries({
1982
2193
  doc,
1983
2194
  clientAnnexDid: did,
1984
- delegation: fresh
2195
+ delegation: fresh,
2196
+ ...(installedServices !== undefined ? { installedServices } : {})
1985
2197
  })
1986
2198
  });
1987
2199
  // The publish advances the store's chain-head pin to what it just wrote, so