@interop/wallet-core 0.101.1 → 0.104.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 (135) hide show
  1. package/README.md +36 -17
  2. package/dist/audiences/audienceGrant.d.ts +49 -0
  3. package/dist/audiences/audienceGrant.d.ts.map +1 -0
  4. package/dist/audiences/audienceGrant.js +46 -0
  5. package/dist/audiences/audienceGrant.js.map +1 -0
  6. package/dist/audiences/index.d.ts +10 -0
  7. package/dist/audiences/index.d.ts.map +1 -0
  8. package/dist/audiences/index.js +10 -0
  9. package/dist/audiences/index.js.map +1 -0
  10. package/dist/clientAnnex/grantRevocation.d.ts +0 -18
  11. package/dist/clientAnnex/grantRevocation.d.ts.map +1 -1
  12. package/dist/clientAnnex/grantRevocation.js +2 -40
  13. package/dist/clientAnnex/grantRevocation.js.map +1 -1
  14. package/dist/clientAnnex/index.d.ts +2 -1
  15. package/dist/clientAnnex/index.d.ts.map +1 -1
  16. package/dist/clientAnnex/index.js +2 -1
  17. package/dist/clientAnnex/index.js.map +1 -1
  18. package/dist/clientAnnex/log.d.ts +4 -42
  19. package/dist/clientAnnex/log.d.ts.map +1 -1
  20. package/dist/clientAnnex/log.js +10 -65
  21. package/dist/clientAnnex/log.js.map +1 -1
  22. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  23. package/dist/clients/rosterPolicy.js +3 -1
  24. package/dist/clients/rosterPolicy.js.map +1 -1
  25. package/dist/connections/didKey.d.ts +27 -0
  26. package/dist/connections/didKey.d.ts.map +1 -1
  27. package/dist/connections/didKey.js +42 -6
  28. package/dist/connections/didKey.js.map +1 -1
  29. package/dist/connections/entry.d.ts +95 -13
  30. package/dist/connections/entry.d.ts.map +1 -1
  31. package/dist/connections/entry.js +102 -16
  32. package/dist/connections/entry.js.map +1 -1
  33. package/dist/connections/grantProof.d.ts +64 -0
  34. package/dist/connections/grantProof.d.ts.map +1 -0
  35. package/dist/connections/grantProof.js +195 -0
  36. package/dist/connections/grantProof.js.map +1 -0
  37. package/dist/connections/grants.d.ts +225 -3
  38. package/dist/connections/grants.d.ts.map +1 -1
  39. package/dist/connections/grants.js +293 -8
  40. package/dist/connections/grants.js.map +1 -1
  41. package/dist/connections/index.d.ts +22 -8
  42. package/dist/connections/index.d.ts.map +1 -1
  43. package/dist/connections/index.js +19 -6
  44. package/dist/connections/index.js.map +1 -1
  45. package/dist/connections/read.d.ts.map +1 -1
  46. package/dist/connections/read.js +2 -1
  47. package/dist/connections/read.js.map +1 -1
  48. package/dist/connections/resourceId.d.ts +33 -0
  49. package/dist/connections/resourceId.d.ts.map +1 -1
  50. package/dist/connections/resourceId.js +88 -8
  51. package/dist/connections/resourceId.js.map +1 -1
  52. package/dist/connections/upsert.d.ts +252 -7
  53. package/dist/connections/upsert.d.ts.map +1 -1
  54. package/dist/connections/upsert.js +674 -41
  55. package/dist/connections/upsert.js.map +1 -1
  56. package/dist/connections/writers.js +2 -1
  57. package/dist/connections/writers.js.map +1 -1
  58. package/dist/descriptors/index.d.ts +5 -0
  59. package/dist/descriptors/index.d.ts.map +1 -1
  60. package/dist/descriptors/index.js +5 -0
  61. package/dist/descriptors/index.js.map +1 -1
  62. package/dist/descriptors/logSource.d.ts +9 -4
  63. package/dist/descriptors/logSource.d.ts.map +1 -1
  64. package/dist/descriptors/logSource.js +13 -6
  65. package/dist/descriptors/logSource.js.map +1 -1
  66. package/dist/jsonObject.d.ts +16 -0
  67. package/dist/jsonObject.d.ts.map +1 -0
  68. package/dist/jsonObject.js +18 -0
  69. package/dist/jsonObject.js.map +1 -0
  70. package/dist/keys/index.d.ts +13 -9
  71. package/dist/keys/index.d.ts.map +1 -1
  72. package/dist/keys/index.js +11 -7
  73. package/dist/keys/index.js.map +1 -1
  74. package/dist/keys/userKeyCascade.d.ts +46 -0
  75. package/dist/keys/userKeyCascade.d.ts.map +1 -1
  76. package/dist/keys/userKeyCascade.js +153 -65
  77. package/dist/keys/userKeyCascade.js.map +1 -1
  78. package/dist/keys/userKeyRoster.d.ts +60 -7
  79. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  80. package/dist/keys/userKeyRoster.js +165 -47
  81. package/dist/keys/userKeyRoster.js.map +1 -1
  82. package/dist/keys/userKeyRosterCascade.d.ts.map +1 -1
  83. package/dist/keys/userKeyRosterCascade.js +1 -0
  84. package/dist/keys/userKeyRosterCascade.js.map +1 -1
  85. package/dist/menders/ids.d.ts +1 -1
  86. package/dist/menders/ids.d.ts.map +1 -1
  87. package/dist/menders/ids.js +20 -4
  88. package/dist/menders/ids.js.map +1 -1
  89. package/dist/resourceLog/controller.d.ts +11 -7
  90. package/dist/resourceLog/controller.d.ts.map +1 -1
  91. package/dist/resourceLog/controller.js +15 -31
  92. package/dist/resourceLog/controller.js.map +1 -1
  93. package/dist/resourceLog/document.d.ts +9 -11
  94. package/dist/resourceLog/document.d.ts.map +1 -1
  95. package/dist/resourceLog/document.js +9 -11
  96. package/dist/resourceLog/document.js.map +1 -1
  97. package/dist/space/collections.d.ts +23 -3
  98. package/dist/space/collections.d.ts.map +1 -1
  99. package/dist/space/collections.js +26 -2
  100. package/dist/space/collections.js.map +1 -1
  101. package/dist/space/inboxMessage.d.ts +47 -0
  102. package/dist/space/inboxMessage.d.ts.map +1 -0
  103. package/dist/space/inboxMessage.js +86 -0
  104. package/dist/space/inboxMessage.js.map +1 -0
  105. package/dist/space/index.d.ts +6 -1
  106. package/dist/space/index.d.ts.map +1 -1
  107. package/dist/space/index.js +5 -1
  108. package/dist/space/index.js.map +1 -1
  109. package/dist/sync/contactsConflict.d.ts +23 -10
  110. package/dist/sync/contactsConflict.d.ts.map +1 -1
  111. package/dist/sync/contactsConflict.js +40 -21
  112. package/dist/sync/contactsConflict.js.map +1 -1
  113. package/dist/unlock/index.d.ts +1 -1
  114. package/dist/unlock/index.d.ts.map +1 -1
  115. package/dist/unlock/index.js +1 -1
  116. package/dist/unlock/index.js.map +1 -1
  117. package/dist/webvh/clientAnnexDid.d.ts +76 -0
  118. package/dist/webvh/clientAnnexDid.d.ts.map +1 -0
  119. package/dist/webvh/clientAnnexDid.js +117 -0
  120. package/dist/webvh/clientAnnexDid.js.map +1 -0
  121. package/dist/webvh/didWebProjection.d.ts +38 -5
  122. package/dist/webvh/didWebProjection.d.ts.map +1 -1
  123. package/dist/webvh/didWebProjection.js +35 -22
  124. package/dist/webvh/didWebProjection.js.map +1 -1
  125. package/dist/webvh/documentDids.d.ts +3 -3
  126. package/dist/webvh/documentDids.js +3 -3
  127. package/dist/webvh/index.d.ts +4 -3
  128. package/dist/webvh/index.d.ts.map +1 -1
  129. package/dist/webvh/index.js +4 -3
  130. package/dist/webvh/index.js.map +1 -1
  131. package/dist/webvh/standingZcap.d.ts +27 -2
  132. package/dist/webvh/standingZcap.d.ts.map +1 -1
  133. package/dist/webvh/standingZcap.js +42 -4
  134. package/dist/webvh/standingZcap.js.map +1 -1
  135. package/package.json +14 -7
@@ -191,13 +191,12 @@ export declare function ladderVmIds({ doc }: {
191
191
  * definition -- a reader needing the ladder VMs' resolved methods asks here
192
192
  * rather than re-deriving the asymmetry. A reader needing the ladder KEYS
193
193
  * asks {@link ladderVmKeyMultibases} instead, which applies the library's one
194
- * key-multibase rule; this reader hands back the methods as resolved, with no
195
- * fragment check.
194
+ * key-multibase rule; this reader hands back the methods as resolved.
196
195
  *
197
196
  * A method the recognition cannot name -- an embedded `capabilityDelegation`
198
197
  * entry carrying no `id`, or a reference nothing backs -- has no resolved
199
198
  * method here, the same refuse-not-guess answer the id-keyed recognition
200
- * gives. (The key reader names such a reference's key by fragment alone.)
199
+ * gives, and the key reader names no key for it either.
201
200
  *
202
201
  * @param options {object}
203
202
  * @param options.doc {AccountDocument} a locally verified document
@@ -213,12 +212,12 @@ export declare function ladderVmMethods({ doc }: {
213
212
  * credential's key-agreement key, a transient annex VM, and the KMS
214
213
  * convenience key deliberately do not (`enrolledClientVmIds` is the same
215
214
  * convention read as ids). Each member is read under the library's one
216
- * key-multibase rule (`memberKeyMultibase`): its id fragment and its
217
- * resolved method's `publicKeyMultibase` must agree when both are present,
218
- * either alone is the key, and a member whose two readings disagree names no
219
- * key. The ladder-rung attribution and the account's did:key census both read
220
- * this set, so a malformed member drops out of both rather than naming a
221
- * different key in each.
215
+ * key-multibase rule (`memberKeyMultibase`): the key is the resolved
216
+ * method's `publicKeyMultibase`, the id fragment is an opaque selector never
217
+ * read as the key, and a reference nothing backs or a method publishing no
218
+ * key names none. The ladder-rung attribution and the account's did:key
219
+ * census both read this set, so a malformed member drops out of both rather
220
+ * than naming a different key in each.
222
221
  *
223
222
  * @param options {object}
224
223
  * @param options.doc {AccountDocument} a locally verified document
@@ -233,8 +232,7 @@ export declare function enrolledClientKeyMultibases({ doc }: {
233
232
  * under the same one key-multibase rule as
234
233
  * {@link enrolledClientKeyMultibases}. Recognition stays id-keyed, so an
235
234
  * id-less embedded delegation member is not a ladder VM here either; a
236
- * recognized member that is a reference nothing backs names its key by
237
- * fragment alone.
235
+ * recognized member that is a reference nothing backs names no key.
238
236
  *
239
237
  * @param options {object}
240
238
  * @param options.doc {AccountDocument} a locally verified document
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/resourceLog/document.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAEL,WAAW,EAGX,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAA;AAE/C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,0BAA0B;IACzC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC,0BAA0B,CAAC,CAAA;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,eAAe,CAAA;AAElD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAA;AAEnD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,oBAAoB,CAAA;CAC1B,GAAG,0BAA0B,EAAE,CAE/B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,GAAG,EACH,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,oBAAoB,CAAA;IACzB,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,0BAA0B,EAAE,CAI/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,GAAG,EACH,OAAO,EACP,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,oBAAoB,CAAA;IACzB,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACzC,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,MAAM,EAAE,CASX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,GAAG,EACH,OAAO,EACP,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,oBAAoB,CAAA;IACzB,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACzC,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,MAAM,EAAE,CAOX;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACJ,EAAE;IACD,GAAG,EAAE;QACH,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACtD,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KACvD,CAAA;CACF,GAAG,MAAM,EAAE,CAGX;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,eAAe,CAAA;CACrB,GAAG,0BAA0B,EAAE,CAM/B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,eAAe,CAAA;CACrB,GAAG,GAAG,CAAC,MAAM,CAAC,CAEd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,eAAe,CAAA;CACrB,GAAG,GAAG,CAAC,MAAM,CAAC,CAgBd"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/resourceLog/document.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAEL,WAAW,EAGX,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAA;AAE/C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,0BAA0B;IACzC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC,0BAA0B,CAAC,CAAA;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,eAAe,CAAA;AAElD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAA;AAEnD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,oBAAoB,CAAA;CAC1B,GAAG,0BAA0B,EAAE,CAE/B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,GAAG,EACH,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,oBAAoB,CAAA;IACzB,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,0BAA0B,EAAE,CAI/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,GAAG,EACH,OAAO,EACP,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,oBAAoB,CAAA;IACzB,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACzC,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,MAAM,EAAE,CASX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,GAAG,EACH,OAAO,EACP,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,oBAAoB,CAAA;IACzB,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACzC,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,MAAM,EAAE,CAOX;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACJ,EAAE;IACD,GAAG,EAAE;QACH,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACtD,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KACvD,CAAA;CACF,GAAG,MAAM,EAAE,CAGX;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,eAAe,CAAA;CACrB,GAAG,0BAA0B,EAAE,CAM/B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,eAAe,CAAA;CACrB,GAAG,GAAG,CAAC,MAAM,CAAC,CAEd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,eAAe,CAAA;CACrB,GAAG,GAAG,CAAC,MAAM,CAAC,CAgBd"}
@@ -143,13 +143,12 @@ export function ladderVmIds({ doc }) {
143
143
  * definition -- a reader needing the ladder VMs' resolved methods asks here
144
144
  * rather than re-deriving the asymmetry. A reader needing the ladder KEYS
145
145
  * asks {@link ladderVmKeyMultibases} instead, which applies the library's one
146
- * key-multibase rule; this reader hands back the methods as resolved, with no
147
- * fragment check.
146
+ * key-multibase rule; this reader hands back the methods as resolved.
148
147
  *
149
148
  * A method the recognition cannot name -- an embedded `capabilityDelegation`
150
149
  * entry carrying no `id`, or a reference nothing backs -- has no resolved
151
150
  * method here, the same refuse-not-guess answer the id-keyed recognition
152
- * gives. (The key reader names such a reference's key by fragment alone.)
151
+ * gives, and the key reader names no key for it either.
153
152
  *
154
153
  * @param options {object}
155
154
  * @param options.doc {AccountDocument} a locally verified document
@@ -169,12 +168,12 @@ export function ladderVmMethods({ doc }) {
169
168
  * credential's key-agreement key, a transient annex VM, and the KMS
170
169
  * convenience key deliberately do not (`enrolledClientVmIds` is the same
171
170
  * convention read as ids). Each member is read under the library's one
172
- * key-multibase rule (`memberKeyMultibase`): its id fragment and its
173
- * resolved method's `publicKeyMultibase` must agree when both are present,
174
- * either alone is the key, and a member whose two readings disagree names no
175
- * key. The ladder-rung attribution and the account's did:key census both read
176
- * this set, so a malformed member drops out of both rather than naming a
177
- * different key in each.
171
+ * key-multibase rule (`memberKeyMultibase`): the key is the resolved
172
+ * method's `publicKeyMultibase`, the id fragment is an opaque selector never
173
+ * read as the key, and a reference nothing backs or a method publishing no
174
+ * key names none. The ladder-rung attribution and the account's did:key
175
+ * census both read this set, so a malformed member drops out of both rather
176
+ * than naming a different key in each.
178
177
  *
179
178
  * @param options {object}
180
179
  * @param options.doc {AccountDocument} a locally verified document
@@ -189,8 +188,7 @@ export function enrolledClientKeyMultibases({ doc }) {
189
188
  * under the same one key-multibase rule as
190
189
  * {@link enrolledClientKeyMultibases}. Recognition stays id-keyed, so an
191
190
  * id-less embedded delegation member is not a ladder VM here either; a
192
- * recognized member that is a reference nothing backs names its key by
193
- * fragment alone.
191
+ * recognized member that is a reference nothing backs names no key.
194
192
  *
195
193
  * @param options {object}
196
194
  * @param options.doc {AccountDocument} a locally verified document
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/resourceLog/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/resourceLog/document.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,12 @@ export declare const APP_KEYS_COLLECTION = "app-keys";
26
26
  * has dealt with (an app, an agent, a wallet client, a contact).
27
27
  */
28
28
  export declare const CONNECTIONS_COLLECTION = "connections";
29
+ /**
30
+ * The plaintext `inbox` collection: where a connected agent POSTs its
31
+ * messages to the wallet. Not public, never grantable through the ordinary
32
+ * target classes, and never replicated.
33
+ */
34
+ export declare const INBOX_COLLECTION = "inbox";
29
35
  /**
30
36
  * What provisioning a wallet Space collection needs: the collection id, the
31
37
  * friendly display name both wallets pass as the server-side collection name,
@@ -43,7 +49,10 @@ export declare const CONNECTIONS_COLLECTION = "connections";
43
49
  * carries a key-epoch roster yet is never grantable, since its Resources are
44
50
  * the connected apps' private seeds. A key- or seed-bearing collection MUST
45
51
  * be `grantable: false`. The field is wallet-side policy only and is never
46
- * written to the server.
52
+ * written to the server. The one carve-out is the `inbox` target class: a
53
+ * connection request may name the `inbox` collection for POST alone,
54
+ * through a dedicated descriptor type resolved before this field is read,
55
+ * so a grantee can post to the wallet without reading what it holds.
47
56
  */
48
57
  export interface SpaceProvisionSpec {
49
58
  collectionId: string;
@@ -135,6 +144,16 @@ export declare const APP_KEYS_COLLECTION_SPEC: SpaceCollectionSpec;
135
144
  * read and written directly, with no local replica and no sync feed.
136
145
  */
137
146
  export declare const CONNECTIONS_COLLECTION_SPEC: SpaceCollectionSpec;
147
+ /**
148
+ * The `inbox` collection: plaintext, not public, and outside every ordinary
149
+ * target class. A connected agent holds a POST capability on the container
150
+ * alone (minted through the `inbox` target class, the one carve-out of
151
+ * `grantable`), so it can post a message and cannot list, read, overwrite,
152
+ * or delete. The wallet reads and deletes its mail directly, with no local
153
+ * replica and no sync feed. A grantable `inbox` would let any requester read
154
+ * the owner's connections, which is why it is `grantable: false`.
155
+ */
156
+ export declare const INBOX_COLLECTION_SPEC: SpaceProvisionSpec;
138
157
  /**
139
158
  * The `id` collection's provisioning attributes: plaintext (it holds only
140
159
  * world-readable DID artifacts) with a collection-level public-read grant.
@@ -176,8 +195,9 @@ export declare const WALLET_SPACE_SYSTEM_SPECS: SpaceProvisionSpec[];
176
195
  /**
177
196
  * The full wallet Space layout -- every collection the provisioning wallet
178
197
  * ensures: the synced feeds first, then the directly read `connections`
179
- * directory, then the system collections. A Space provisioned from this roster
180
- * is identical no matter which wallet app created it.
198
+ * directory and the `inbox`, then the system collections. A Space
199
+ * provisioned from this roster is identical no matter which wallet app
200
+ * created it.
181
201
  */
182
202
  export declare const WALLET_SPACE_PROVISION_ROSTER: SpaceProvisionSpec[];
183
203
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/space/collections.ts"],"names":[],"mappings":"AAiCA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAA;AAE/B;;;;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;AAC3D;;GAEG;AACH,eAAO,MAAM,mBAAmB,aAAa,CAAA;AAC7C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,gBAAgB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;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;IACjB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC,EAAE,mBASjD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,EAAE,mBAShD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B,EAAE,mBAS7C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,mBAO5C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,EAAE,mBAOpD,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,mBAStC,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,EAAE,mBASzC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAMhC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,EAAE,kBAMrC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,EAAE,kBAM5C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,mBAAmB,EAO1D,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,EAIzD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,EAI7D,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAIvD;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;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,mBAAmB,CAAA;AAC5D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kCAAkC,aAAa,CAAA;AAC5D;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAA"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/space/collections.ts"],"names":[],"mappings":"AAiCA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAA;AAE/B;;;;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;AAC3D;;GAEG;AACH,eAAO,MAAM,mBAAmB,aAAa,CAAA;AAC7C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,gBAAgB,CAAA;AACnD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAA;AAEvC;;;;;;;;;;;;;;;;;;;;;GAqBG;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;IACjB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC,EAAE,mBASjD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,EAAE,mBAShD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B,EAAE,mBAS7C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,mBAO5C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,EAAE,mBAOpD,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,mBAStC,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,EAAE,mBASzC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAMnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAMhC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,EAAE,kBAMrC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,EAAE,kBAM5C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,mBAAmB,EAO1D,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,EAIzD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,EAK7D,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAIvD;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;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,mBAAmB,CAAA;AAC5D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kCAAkC,aAAa,CAAA;AAC5D;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAA"}
@@ -51,6 +51,12 @@ export const APP_KEYS_COLLECTION = 'app-keys';
51
51
  * has dealt with (an app, an agent, a wallet client, a contact).
52
52
  */
53
53
  export const CONNECTIONS_COLLECTION = 'connections';
54
+ /**
55
+ * The plaintext `inbox` collection: where a connected agent POSTs its
56
+ * messages to the wallet. Not public, never grantable through the ordinary
57
+ * target classes, and never replicated.
58
+ */
59
+ export const INBOX_COLLECTION = 'inbox';
54
60
  /**
55
61
  * The immutable credential replica: each credential stored as an EDV envelope,
56
62
  * addressed by the envelope's content hash, never overwritten, never public.
@@ -168,6 +174,22 @@ export const CONNECTIONS_COLLECTION_SPEC = {
168
174
  shareable: false,
169
175
  grantable: false
170
176
  };
177
+ /**
178
+ * The `inbox` collection: plaintext, not public, and outside every ordinary
179
+ * target class. A connected agent holds a POST capability on the container
180
+ * alone (minted through the `inbox` target class, the one carve-out of
181
+ * `grantable`), so it can post a message and cannot list, read, overwrite,
182
+ * or delete. The wallet reads and deletes its mail directly, with no local
183
+ * replica and no sync feed. A grantable `inbox` would let any requester read
184
+ * the owner's connections, which is why it is `grantable: false`.
185
+ */
186
+ export const INBOX_COLLECTION_SPEC = {
187
+ collectionId: INBOX_COLLECTION,
188
+ name: 'Inbox',
189
+ encryption: 'plaintext',
190
+ isPublic: false,
191
+ grantable: false
192
+ };
171
193
  /**
172
194
  * The `id` collection's provisioning attributes: plaintext (it holds only
173
195
  * world-readable DID artifacts) with a collection-level public-read grant.
@@ -238,12 +260,14 @@ export const WALLET_SPACE_SYSTEM_SPECS = [
238
260
  /**
239
261
  * The full wallet Space layout -- every collection the provisioning wallet
240
262
  * ensures: the synced feeds first, then the directly read `connections`
241
- * directory, then the system collections. A Space provisioned from this roster
242
- * is identical no matter which wallet app created it.
263
+ * directory and the `inbox`, then the system collections. A Space
264
+ * provisioned from this roster is identical no matter which wallet app
265
+ * created it.
243
266
  */
244
267
  export const WALLET_SPACE_PROVISION_ROSTER = [
245
268
  ...WALLET_SPACE_SYNCED_SPECS,
246
269
  CONNECTIONS_COLLECTION_SPEC,
270
+ INBOX_COLLECTION_SPEC,
247
271
  ...WALLET_SPACE_SYSTEM_SPECS
248
272
  ];
249
273
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/space/collections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/space/collections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * A delegated zcap carried in an inbox message, verbatim. The parser checks
3
+ * the members named here and keeps every other member as it arrived.
4
+ */
5
+ export interface InboxMessageZcap {
6
+ id: string;
7
+ controller: string;
8
+ invocationTarget: string;
9
+ proof: Record<string, unknown> | Record<string, unknown>[];
10
+ [member: string]: unknown;
11
+ }
12
+ /**
13
+ * The inbox message envelope. `type` is the bare string `'Grant'` (the
14
+ * history Grant activity row carries a one-member array instead).
15
+ */
16
+ export interface InboxGrantMessage {
17
+ type: 'Grant';
18
+ actor: string;
19
+ object: {
20
+ zcaps: InboxMessageZcap[];
21
+ };
22
+ }
23
+ /**
24
+ * Builds an inbox Grant message carrying the given zcaps verbatim.
25
+ *
26
+ * @param options {object}
27
+ * @param options.actor {string} the sender's did:key
28
+ * @param options.zcaps {InboxMessageZcap[]} the delegated zcaps, at least
29
+ * one
30
+ * @returns {InboxGrantMessage}
31
+ */
32
+ export declare function inboxGrantMessage({ actor, zcaps }: {
33
+ actor: string;
34
+ zcaps: InboxMessageZcap[];
35
+ }): InboxGrantMessage;
36
+ /**
37
+ * Reads an inbox Grant message. Returns `undefined` for a body that is not
38
+ * one: a non-object body, a `type` other than the bare string `'Grant'`, an
39
+ * `actor` that is not a did:key, or an `object.zcaps` that is not a non-empty
40
+ * array of zcaps each carrying `id`, `controller`, `invocationTarget`, and a
41
+ * `proof`. Unknown members at any level are ignored and kept verbatim.
42
+ *
43
+ * @param body {unknown} the parsed JSON body
44
+ * @returns {InboxGrantMessage | undefined}
45
+ */
46
+ export declare function parseInboxGrantMessage(body: unknown): InboxGrantMessage | undefined;
47
+ //# sourceMappingURL=inboxMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inboxMessage.d.ts","sourceRoot":"","sources":["../../src/space/inboxMessage.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC1D,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE;QAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAA;CACtC;AAyBD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,KAAK,EACN,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAC1B,GAAG,iBAAiB,CAQpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,GACZ,iBAAiB,GAAG,SAAS,CAuB/B"}
@@ -0,0 +1,86 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * The inbox message envelope: the one message kind a party POSTs to a
6
+ * wallet's `inbox` collection, or a wallet POSTs to a party's inbox. Shape:
7
+ * `{ type: 'Grant', actor: <did:key>, object: { zcaps: [ <zcap>, ... ] } }`,
8
+ * content type `application/json`, with no `@context`.
9
+ *
10
+ * There is one message kind. An invitation and a renewal are told apart by
11
+ * the zcap target. A zcap targeting the sender's own inbox is a channel
12
+ * capability, and one targeting the recipient's Space is a renewed grant.
13
+ * Every wallet and any agent built on this package share the shape.
14
+ */
15
+ import { isJsonObject } from '../jsonObject.js';
16
+ import { ACTIVITY_TYPE } from './activity.js';
17
+ function isDidKey(value) {
18
+ return typeof value === 'string' && value.startsWith('did:key:');
19
+ }
20
+ function isInboxMessageZcap(value) {
21
+ if (!isJsonObject(value)) {
22
+ return false;
23
+ }
24
+ const { id, controller, invocationTarget, proof } = value;
25
+ if (typeof id !== 'string' ||
26
+ id.length === 0 ||
27
+ typeof controller !== 'string' ||
28
+ typeof invocationTarget !== 'string') {
29
+ return false;
30
+ }
31
+ if (Array.isArray(proof)) {
32
+ return proof.length > 0 && proof.every(isJsonObject);
33
+ }
34
+ return isJsonObject(proof);
35
+ }
36
+ /**
37
+ * Builds an inbox Grant message carrying the given zcaps verbatim.
38
+ *
39
+ * @param options {object}
40
+ * @param options.actor {string} the sender's did:key
41
+ * @param options.zcaps {InboxMessageZcap[]} the delegated zcaps, at least
42
+ * one
43
+ * @returns {InboxGrantMessage}
44
+ */
45
+ export function inboxGrantMessage({ actor, zcaps }) {
46
+ if (!isDidKey(actor)) {
47
+ throw new TypeError('inbox message: `actor` must be a did:key DID.');
48
+ }
49
+ if (zcaps.length === 0) {
50
+ throw new TypeError('inbox message: `zcaps` must not be empty.');
51
+ }
52
+ return { type: ACTIVITY_TYPE.Grant, actor, object: { zcaps } };
53
+ }
54
+ /**
55
+ * Reads an inbox Grant message. Returns `undefined` for a body that is not
56
+ * one: a non-object body, a `type` other than the bare string `'Grant'`, an
57
+ * `actor` that is not a did:key, or an `object.zcaps` that is not a non-empty
58
+ * array of zcaps each carrying `id`, `controller`, `invocationTarget`, and a
59
+ * `proof`. Unknown members at any level are ignored and kept verbatim.
60
+ *
61
+ * @param body {unknown} the parsed JSON body
62
+ * @returns {InboxGrantMessage | undefined}
63
+ */
64
+ export function parseInboxGrantMessage(body) {
65
+ if (!isJsonObject(body)) {
66
+ return undefined;
67
+ }
68
+ const { type, actor, object } = body;
69
+ if (type !== ACTIVITY_TYPE.Grant) {
70
+ return undefined;
71
+ }
72
+ if (!isDidKey(actor)) {
73
+ return undefined;
74
+ }
75
+ if (!isJsonObject(object)) {
76
+ return undefined;
77
+ }
78
+ const { zcaps } = object;
79
+ if (!Array.isArray(zcaps) ||
80
+ zcaps.length === 0 ||
81
+ !zcaps.every(isInboxMessageZcap)) {
82
+ return undefined;
83
+ }
84
+ return body;
85
+ }
86
+ //# sourceMappingURL=inboxMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inboxMessage.js","sourceRoot":"","sources":["../../src/space/inboxMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAwB7C,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACzD,IACE,OAAO,EAAE,KAAK,QAAQ;QACtB,EAAE,CAAC,MAAM,KAAK,CAAC;QACf,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO,gBAAgB,KAAK,QAAQ,EACpC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,KAAK,EAIN;IACC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAA;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAA;AAChE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAa;IAEb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACpC,IAAI,IAAI,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IACxB,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAChC,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,IAAoC,CAAA;AAC7C,CAAC"}
@@ -35,11 +35,14 @@
35
35
  * `parseWasLinkPayload` / `encodeWasLinkSecret`) and `isWasLinkPayload`,
36
36
  * the recognizer a wallet hands `@interop/wallet-request`'s input
37
37
  * classifier.
38
+ * - The inbox message envelope (`InboxGrantMessage`, built by
39
+ * `inboxGrantMessage` and read by `parseInboxGrantMessage`), the one
40
+ * message kind a party POSTs to an inbox, carrying delegated zcaps.
38
41
  * - `CEREMONY_IDS` / `CeremonyId`, the typed vocabulary of account ceremony
39
42
  * ids, including the ceremonies still implemented app-side.
40
43
  */
41
44
  export { deleteSpaceWithCapability } from './deleteSpace.js';
42
- export { WALLET_SPACE_NAME, PRIVATE_CREDENTIALS_COLLECTION, PUBLIC_CREDENTIALS_COLLECTION, WALLET_ACTIVITY_COLLECTION, APP_KEYS_COLLECTION, CONNECTIONS_COLLECTION, PRIVATE_CREDENTIALS_COLLECTION_SPEC, PUBLIC_CREDENTIALS_COLLECTION_SPEC, WALLET_ACTIVITY_COLLECTION_SPEC, CONTACTS_SPACE_COLLECTION_SPEC, CONTACTS_HISTORY_SPACE_COLLECTION_SPEC, APP_KEYS_COLLECTION_SPEC, CONNECTIONS_COLLECTION_SPEC, WALLET_SPACE_SYNCED_SPECS, WALLET_SPACE_SYSTEM_SPECS, WALLET_SPACE_PROVISION_ROSTER } from './collections.js';
45
+ export { WALLET_SPACE_NAME, PRIVATE_CREDENTIALS_COLLECTION, PUBLIC_CREDENTIALS_COLLECTION, WALLET_ACTIVITY_COLLECTION, APP_KEYS_COLLECTION, CONNECTIONS_COLLECTION, INBOX_COLLECTION, PRIVATE_CREDENTIALS_COLLECTION_SPEC, PUBLIC_CREDENTIALS_COLLECTION_SPEC, WALLET_ACTIVITY_COLLECTION_SPEC, CONTACTS_SPACE_COLLECTION_SPEC, CONTACTS_HISTORY_SPACE_COLLECTION_SPEC, APP_KEYS_COLLECTION_SPEC, CONNECTIONS_COLLECTION_SPEC, INBOX_COLLECTION_SPEC, WALLET_SPACE_SYNCED_SPECS, WALLET_SPACE_SYSTEM_SPECS, WALLET_SPACE_PROVISION_ROSTER } from './collections.js';
43
46
  export { ID_COLLECTION, KEY_MAP_COLLECTION, UNLOCK_METHODS_COLLECTION, KEYRING_COLLECTION, ID_COLLECTION_SPEC, KEY_MAP_COLLECTION_SPEC, UNLOCK_METHODS_COLLECTION_SPEC, DID_DOCUMENT_RESOURCE, DID_LOG_RESOURCE, DID_KEYS_RESOURCE, USER_KEY_ROSTER_LOG_RESOURCE, COLLECTION_HISTORY_LOG_SUBRESOURCE, UNLOCK_METHODS_RESOURCE, KEYRING_RESOURCE } from './collections.js';
44
47
  export type { SpaceProvisionSpec, SpaceCollectionSpec } from './collections.js';
45
48
  export { provisionWalletSpace } from './provisioning.js';
@@ -49,6 +52,8 @@ export type { WalletActivity, ActivityGrant, ImportCollectionOutcome } from './a
49
52
  export { publicCredentialUrl } from './publicLink.js';
50
53
  export { encodeWasLinkSecret, isWasLinkPayload, buildWasLinkPayload, parseWasLinkPayload } from './wasLink.js';
51
54
  export type { WasLinkPayload } from './wasLink.js';
55
+ export { inboxGrantMessage, parseInboxGrantMessage } from './inboxMessage.js';
56
+ export type { InboxGrantMessage, InboxMessageZcap } from './inboxMessage.js';
52
57
  export { HumanReadableError } from './errors.js';
53
58
  export { CEREMONY_IDS } from './ceremony.js';
54
59
  export type { CeremonyId } from './ceremony.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/space/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,8BAA8B,EAC9B,sCAAsC,EACtC,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,8BAA8B,EAC9B,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,EAC5B,kCAAkC,EAClC,uBAAuB,EACvB,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,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,cAAc,EACd,aAAa,EACb,uBAAuB,EACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/space/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,8BAA8B,EAC9B,sCAAsC,EACtC,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,8BAA8B,EAC9B,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,EAC5B,kCAAkC,EAClC,uBAAuB,EACvB,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,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,cAAc,EACd,aAAa,EACb,uBAAuB,EACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC7E,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
@@ -35,17 +35,21 @@
35
35
  * `parseWasLinkPayload` / `encodeWasLinkSecret`) and `isWasLinkPayload`,
36
36
  * the recognizer a wallet hands `@interop/wallet-request`'s input
37
37
  * classifier.
38
+ * - The inbox message envelope (`InboxGrantMessage`, built by
39
+ * `inboxGrantMessage` and read by `parseInboxGrantMessage`), the one
40
+ * message kind a party POSTs to an inbox, carrying delegated zcaps.
38
41
  * - `CEREMONY_IDS` / `CeremonyId`, the typed vocabulary of account ceremony
39
42
  * ids, including the ceremonies still implemented app-side.
40
43
  */
41
44
  export { deleteSpaceWithCapability } from './deleteSpace.js';
42
- export { WALLET_SPACE_NAME, PRIVATE_CREDENTIALS_COLLECTION, PUBLIC_CREDENTIALS_COLLECTION, WALLET_ACTIVITY_COLLECTION, APP_KEYS_COLLECTION, CONNECTIONS_COLLECTION, PRIVATE_CREDENTIALS_COLLECTION_SPEC, PUBLIC_CREDENTIALS_COLLECTION_SPEC, WALLET_ACTIVITY_COLLECTION_SPEC, CONTACTS_SPACE_COLLECTION_SPEC, CONTACTS_HISTORY_SPACE_COLLECTION_SPEC, APP_KEYS_COLLECTION_SPEC, CONNECTIONS_COLLECTION_SPEC, WALLET_SPACE_SYNCED_SPECS, WALLET_SPACE_SYSTEM_SPECS, WALLET_SPACE_PROVISION_ROSTER } from './collections.js';
45
+ export { WALLET_SPACE_NAME, PRIVATE_CREDENTIALS_COLLECTION, PUBLIC_CREDENTIALS_COLLECTION, WALLET_ACTIVITY_COLLECTION, APP_KEYS_COLLECTION, CONNECTIONS_COLLECTION, INBOX_COLLECTION, PRIVATE_CREDENTIALS_COLLECTION_SPEC, PUBLIC_CREDENTIALS_COLLECTION_SPEC, WALLET_ACTIVITY_COLLECTION_SPEC, CONTACTS_SPACE_COLLECTION_SPEC, CONTACTS_HISTORY_SPACE_COLLECTION_SPEC, APP_KEYS_COLLECTION_SPEC, CONNECTIONS_COLLECTION_SPEC, INBOX_COLLECTION_SPEC, WALLET_SPACE_SYNCED_SPECS, WALLET_SPACE_SYSTEM_SPECS, WALLET_SPACE_PROVISION_ROSTER } from './collections.js';
43
46
  export { ID_COLLECTION, KEY_MAP_COLLECTION, UNLOCK_METHODS_COLLECTION, KEYRING_COLLECTION, ID_COLLECTION_SPEC, KEY_MAP_COLLECTION_SPEC, UNLOCK_METHODS_COLLECTION_SPEC, DID_DOCUMENT_RESOURCE, DID_LOG_RESOURCE, DID_KEYS_RESOURCE, USER_KEY_ROSTER_LOG_RESOURCE, COLLECTION_HISTORY_LOG_SUBRESOURCE, UNLOCK_METHODS_RESOURCE, KEYRING_RESOURCE } from './collections.js';
44
47
  export { provisionWalletSpace } from './provisioning.js';
45
48
  export { plaintextCollection } from './plaintextCollection.js';
46
49
  export { ACTIVITY_TYPE, addHistoryNewAccount, addHistorySpaceCreated, addHistoryCredentialCreated, addHistoryCredentialDeleted, addHistoryCredentialShared, addHistoryCredentialUnshared, addHistoryLogin, addHistoryGrant, addHistoryWalletLogin, addHistoryAppRevoke, addHistoryAgentRevoke, addHistoryClientConnected, addHistoryClientRevoked, addHistoryGenerationCollected, addHistoryContentImported, addHistoryProfileCreated, addHistoryCollectionShared, addHistoryCollectionUnshared } from './activity.js';
47
50
  export { publicCredentialUrl } from './publicLink.js';
48
51
  export { encodeWasLinkSecret, isWasLinkPayload, buildWasLinkPayload, parseWasLinkPayload } from './wasLink.js';
52
+ export { inboxGrantMessage, parseInboxGrantMessage } from './inboxMessage.js';
49
53
  export { HumanReadableError } from './errors.js';
50
54
  export { CEREMONY_IDS } from './ceremony.js';
51
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/space/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,8BAA8B,EAC9B,sCAAsC,EACtC,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,8BAA8B,EAC9B,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,EAC5B,kCAAkC,EAClC,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,eAAe,CAAA;AAOtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/space/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,8BAA8B,EAC9B,sCAAsC,EACtC,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,8BAA8B,EAC9B,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,EAC5B,kCAAkC,EAClC,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,eAAe,CAAA;AAOtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAG7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
@@ -18,13 +18,23 @@
18
18
  *
19
19
  * **Fail-safe to remote.** Whenever the fields the rule needs are unreachable
20
20
  * -- a tombstone on either side, a missing cipher, an envelope this replica
21
- * holds no key for, a body that is not a valid head payload -- the remote
22
- * master wins. That is the always-converging default, so a malformed side
23
- * simply loses: a valid local over a malformed remote re-pushes and repairs the
24
- * server copy, a valid remote over a malformed local is adopted, and two
25
- * malformed sides adopt the server version rather than re-fighting the conflict
26
- * forever. A delete is in the same class deliberately: a tombstone carries no
27
- * fresher stamp (a delete does not rewrite the head payload), so deletion wins.
21
+ * holds no key for, a plaintext body where a cipher is configured, a body that
22
+ * is not a valid head payload -- the remote master wins. That is the
23
+ * always-converging default, so a malformed side simply loses: a valid local
24
+ * over a malformed remote re-pushes and repairs the server copy, a valid remote
25
+ * over a malformed local is adopted, and two malformed sides adopt the server
26
+ * version rather than re-fighting the conflict forever. A delete is in the same
27
+ * class deliberately: a tombstone carries no fresher stamp (a delete does not
28
+ * rewrite the head payload), so deletion wins.
29
+ *
30
+ * **A plaintext body under a cipher is unreachable.** When the collection is
31
+ * encrypted, a non-envelope body is not one of this wallet's heads: an older
32
+ * writer or a hostile host put it there, and the app's own reads refuse it.
33
+ * Comparing its stamp would let a plaintext head with a later `updatedAt` beat
34
+ * a valid local envelope, which then disappears for good, since no read can
35
+ * open the winner and no write replaces it. So it scores as unreachable, and a
36
+ * valid encrypted side wins over it and re-pushes. Plaintext passes through
37
+ * only when no cipher is passed.
28
38
  *
29
39
  * **An integrity refusal is not an unreachable side.** A decrypt refused by the
30
40
  * cipher's envelope-to-resource binding check (was-client's `IntegrityError`)
@@ -60,8 +70,10 @@ import { type ContactHeadPayload } from '@interop/social-core';
60
70
  export type ContactConflictWinner = 'remote' | 'local';
61
71
  /**
62
72
  * Recovers a validated head payload from a stored body: decrypts an
63
- * envelope, passes plaintext through, and resolves `undefined` when the
64
- * payload (and so the fields the rule compares) cannot be reached.
73
+ * envelope, and resolves `undefined` when the payload (and so the fields the
74
+ * rule compares) cannot be reached. A plaintext body passes through only when
75
+ * no cipher is passed. With a cipher, a plaintext body is unreachable and is
76
+ * never handed to the cipher (see the module doc).
65
77
  *
66
78
  * A side this replica holds no key for is unreachable. What the fail-safe rule
67
79
  * below then does with it depends on which side it was: an unreachable local
@@ -80,7 +92,8 @@ export type ContactConflictWinner = 'remote' | 'local';
80
92
  * @param options.data {Json} the stored body: an encrypted envelope or a
81
93
  * plaintext payload
82
94
  * @param [options.cipher] {DocCipher} the collection's document cipher;
83
- * absent for a plaintext store, in which case an envelope is unreachable
95
+ * absent for a plaintext store, in which case an envelope is unreachable.
96
+ * When present, a plaintext body is unreachable.
84
97
  * @returns {Promise<ContactHeadPayload | undefined>}
85
98
  * @throws {Error} the cipher's `IntegrityError`: the stored envelope was
86
99
  * sealed for a different resource than `id`
@@ -1 +1 @@
1
- {"version":3,"file":"contactsConflict.d.ts","sourceRoot":"","sources":["../../src/sync/contactsConflict.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,IAAI,EACV,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,EAAE,EACF,IAAI,EACJ,MAAM,EACP,EAAE;IACD,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;IACtB,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAmB1C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,0BAA0B,CAAC,EAC/C,EAAE,EACF,MAAM,EACN,KAAK,EACL,MAAM,EACN,aAAqB,EACrB,YAAoB,EACpB,kBAAkB,EACnB,EAAE;IACD,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,IAAI,GAAG,SAAS,CAAA;IACxB,KAAK,EAAE,IAAI,GAAG,SAAS,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC7B,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;QACxB,GAAG,EAAE,OAAO,CAAA;KACb,KAAK,IAAI,CAAA;CACX,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA0CjC"}
1
+ {"version":3,"file":"contactsConflict.d.ts","sourceRoot":"","sources":["../../src/sync/contactsConflict.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,IAAI,EACV,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,EAAE,EACF,IAAI,EACJ,MAAM,EACP,EAAE;IACD,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;IACtB,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAyB1C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,0BAA0B,CAAC,EAC/C,EAAE,EACF,MAAM,EACN,KAAK,EACL,MAAM,EACN,aAAqB,EACrB,YAAoB,EACpB,kBAAkB,EACnB,EAAE;IACD,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,IAAI,GAAG,SAAS,CAAA;IACxB,KAAK,EAAE,IAAI,GAAG,SAAS,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC7B,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;QACxB,GAAG,EAAE,OAAO,CAAA;KACb,KAAK,IAAI,CAAA;CACX,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA0CjC"}