@interop/wallet-core 0.61.0 → 0.65.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 (313) hide show
  1. package/README.md +41 -16
  2. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +46 -26
  3. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
  4. package/dist/clientAnnex/credentialAnchoredGenesis.js +91 -39
  5. package/dist/clientAnnex/credentialAnchoredGenesis.js.map +1 -1
  6. package/dist/clientAnnex/establish.d.ts +55 -34
  7. package/dist/clientAnnex/establish.d.ts.map +1 -1
  8. package/dist/clientAnnex/establish.js +102 -56
  9. package/dist/clientAnnex/establish.js.map +1 -1
  10. package/dist/clientAnnex/forget.d.ts +16 -2
  11. package/dist/clientAnnex/forget.d.ts.map +1 -1
  12. package/dist/clientAnnex/forget.js +11 -9
  13. package/dist/clientAnnex/forget.js.map +1 -1
  14. package/dist/clientAnnex/forgetLast.d.ts +126 -35
  15. package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
  16. package/dist/clientAnnex/forgetLast.js +208 -60
  17. package/dist/clientAnnex/forgetLast.js.map +1 -1
  18. package/dist/clientAnnex/gc.d.ts +3 -2
  19. package/dist/clientAnnex/gc.d.ts.map +1 -1
  20. package/dist/clientAnnex/gc.js +7 -7
  21. package/dist/clientAnnex/gc.js.map +1 -1
  22. package/dist/clientAnnex/heal.d.ts +101 -33
  23. package/dist/clientAnnex/heal.d.ts.map +1 -1
  24. package/dist/clientAnnex/heal.js +559 -212
  25. package/dist/clientAnnex/heal.js.map +1 -1
  26. package/dist/clientAnnex/index.d.ts +21 -5
  27. package/dist/clientAnnex/index.d.ts.map +1 -1
  28. package/dist/clientAnnex/index.js +24 -5
  29. package/dist/clientAnnex/index.js.map +1 -1
  30. package/dist/clientAnnex/ladder.d.ts +304 -18
  31. package/dist/clientAnnex/ladder.d.ts.map +1 -1
  32. package/dist/clientAnnex/ladder.js +942 -64
  33. package/dist/clientAnnex/ladder.js.map +1 -1
  34. package/dist/clientAnnex/ladderAnchored.d.ts +261 -28
  35. package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
  36. package/dist/clientAnnex/ladderAnchored.js +521 -295
  37. package/dist/clientAnnex/ladderAnchored.js.map +1 -1
  38. package/dist/clientAnnex/log.d.ts +193 -38
  39. package/dist/clientAnnex/log.d.ts.map +1 -1
  40. package/dist/clientAnnex/log.js +445 -190
  41. package/dist/clientAnnex/log.js.map +1 -1
  42. package/dist/clientAnnex/mend.d.ts +12 -6
  43. package/dist/clientAnnex/mend.d.ts.map +1 -1
  44. package/dist/clientAnnex/mend.js +26 -12
  45. package/dist/clientAnnex/mend.js.map +1 -1
  46. package/dist/clientAnnex/recoveryLadderAnchored.d.ts +38 -11
  47. package/dist/clientAnnex/recoveryLadderAnchored.d.ts.map +1 -1
  48. package/dist/clientAnnex/recoveryLadderAnchored.js +177 -55
  49. package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
  50. package/dist/clientAnnex/spaceCapability.d.ts +123 -0
  51. package/dist/clientAnnex/spaceCapability.d.ts.map +1 -0
  52. package/dist/clientAnnex/spaceCapability.js +152 -0
  53. package/dist/clientAnnex/spaceCapability.js.map +1 -0
  54. package/dist/clientAnnex/stages.d.ts +63 -0
  55. package/dist/clientAnnex/stages.d.ts.map +1 -0
  56. package/dist/clientAnnex/stages.js +64 -0
  57. package/dist/clientAnnex/stages.js.map +1 -0
  58. package/dist/clientAnnex/zcap.d.ts +1 -1
  59. package/dist/clientAnnex/zcap.d.ts.map +1 -1
  60. package/dist/clientAnnex/zcap.js +42 -35
  61. package/dist/clientAnnex/zcap.js.map +1 -1
  62. package/dist/clients/policy.d.ts +15 -1
  63. package/dist/clients/policy.d.ts.map +1 -1
  64. package/dist/clients/policy.js +12 -6
  65. package/dist/clients/policy.js.map +1 -1
  66. package/dist/clients/revocation.d.ts +18 -10
  67. package/dist/clients/revocation.d.ts.map +1 -1
  68. package/dist/clients/revocation.js +13 -5
  69. package/dist/clients/revocation.js.map +1 -1
  70. package/dist/clients/rosterPolicy.d.ts +10 -2
  71. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  72. package/dist/clients/rosterPolicy.js +41 -24
  73. package/dist/clients/rosterPolicy.js.map +1 -1
  74. package/dist/descriptors/acquire.d.ts.map +1 -1
  75. package/dist/descriptors/acquire.js +6 -23
  76. package/dist/descriptors/acquire.js.map +1 -1
  77. package/dist/descriptors/cipher.d.ts.map +1 -1
  78. package/dist/descriptors/cipher.js +5 -0
  79. package/dist/descriptors/cipher.js.map +1 -1
  80. package/dist/descriptors/errors.d.ts +43 -0
  81. package/dist/descriptors/errors.d.ts.map +1 -0
  82. package/dist/descriptors/errors.js +45 -0
  83. package/dist/descriptors/errors.js.map +1 -0
  84. package/dist/descriptors/index.d.ts +5 -0
  85. package/dist/descriptors/index.d.ts.map +1 -1
  86. package/dist/descriptors/index.js +5 -0
  87. package/dist/descriptors/index.js.map +1 -1
  88. package/dist/enrollment/enrollment.d.ts +37 -10
  89. package/dist/enrollment/enrollment.d.ts.map +1 -1
  90. package/dist/enrollment/enrollment.js +52 -15
  91. package/dist/enrollment/enrollment.js.map +1 -1
  92. package/dist/genesis/accountGenesis.d.ts +42 -11
  93. package/dist/genesis/accountGenesis.d.ts.map +1 -1
  94. package/dist/genesis/accountGenesis.js +80 -22
  95. package/dist/genesis/accountGenesis.js.map +1 -1
  96. package/dist/genesis/index.d.ts +3 -1
  97. package/dist/genesis/index.d.ts.map +1 -1
  98. package/dist/genesis/index.js +3 -1
  99. package/dist/genesis/index.js.map +1 -1
  100. package/dist/identity/agents.d.ts +17 -1
  101. package/dist/identity/agents.d.ts.map +1 -1
  102. package/dist/identity/agents.js +24 -8
  103. package/dist/identity/agents.js.map +1 -1
  104. package/dist/identity/index.d.ts +3 -1
  105. package/dist/identity/index.d.ts.map +1 -1
  106. package/dist/identity/index.js +3 -1
  107. package/dist/identity/index.js.map +1 -1
  108. package/dist/index.d.ts +6 -3
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +6 -3
  111. package/dist/index.js.map +1 -1
  112. package/dist/keyring/index.d.ts +2 -1
  113. package/dist/keyring/index.d.ts.map +1 -1
  114. package/dist/keyring/index.js +2 -1
  115. package/dist/keyring/index.js.map +1 -1
  116. package/dist/keyring/record.d.ts.map +1 -1
  117. package/dist/keyring/record.js +3 -6
  118. package/dist/keyring/record.js.map +1 -1
  119. package/dist/keyring/unlockSpace.d.ts +14 -5
  120. package/dist/keyring/unlockSpace.d.ts.map +1 -1
  121. package/dist/keyring/unlockSpace.js +31 -36
  122. package/dist/keyring/unlockSpace.js.map +1 -1
  123. package/dist/keys/index.d.ts +10 -6
  124. package/dist/keys/index.d.ts.map +1 -1
  125. package/dist/keys/index.js +9 -5
  126. package/dist/keys/index.js.map +1 -1
  127. package/dist/keys/rosterLogStore.d.ts +12 -11
  128. package/dist/keys/rosterLogStore.d.ts.map +1 -1
  129. package/dist/keys/rosterLogStore.js +15 -13
  130. package/dist/keys/rosterLogStore.js.map +1 -1
  131. package/dist/keys/rosterStore.d.ts +3 -6
  132. package/dist/keys/rosterStore.d.ts.map +1 -1
  133. package/dist/keys/rosterStore.js +10 -9
  134. package/dist/keys/rosterStore.js.map +1 -1
  135. package/dist/keys/spaceEpochs.d.ts.map +1 -1
  136. package/dist/keys/spaceEpochs.js +2 -3
  137. package/dist/keys/spaceEpochs.js.map +1 -1
  138. package/dist/keys/userKeyRoster.d.ts +89 -9
  139. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  140. package/dist/keys/userKeyRoster.js +262 -19
  141. package/dist/keys/userKeyRoster.js.map +1 -1
  142. package/dist/keys/userKeyRosterCascade.d.ts +7 -6
  143. package/dist/keys/userKeyRosterCascade.d.ts.map +1 -1
  144. package/dist/keys/userKeyRosterCascade.js +7 -6
  145. package/dist/keys/userKeyRosterCascade.js.map +1 -1
  146. package/dist/keys/wasLabelsStore.d.ts +9 -2
  147. package/dist/keys/wasLabelsStore.d.ts.map +1 -1
  148. package/dist/keys/wasLabelsStore.js +14 -6
  149. package/dist/keys/wasLabelsStore.js.map +1 -1
  150. package/dist/log.d.ts +7 -2
  151. package/dist/log.d.ts.map +1 -1
  152. package/dist/log.js +6 -1
  153. package/dist/log.js.map +1 -1
  154. package/dist/recovery/index.d.ts +12 -8
  155. package/dist/recovery/index.d.ts.map +1 -1
  156. package/dist/recovery/index.js +11 -7
  157. package/dist/recovery/index.js.map +1 -1
  158. package/dist/recovery/recoveryCode.d.ts +27 -7
  159. package/dist/recovery/recoveryCode.d.ts.map +1 -1
  160. package/dist/recovery/recoveryCode.js +18 -6
  161. package/dist/recovery/recoveryCode.js.map +1 -1
  162. package/dist/recovery/recoveryDelegation.d.ts +4 -1
  163. package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
  164. package/dist/recovery/recoveryDelegation.js +25 -36
  165. package/dist/recovery/recoveryDelegation.js.map +1 -1
  166. package/dist/recovery/recoveryWebvh.d.ts +117 -65
  167. package/dist/recovery/recoveryWebvh.d.ts.map +1 -1
  168. package/dist/recovery/recoveryWebvh.js +279 -126
  169. package/dist/recovery/recoveryWebvh.js.map +1 -1
  170. package/dist/request/classify.d.ts +32 -8
  171. package/dist/request/classify.d.ts.map +1 -1
  172. package/dist/request/classify.js +39 -14
  173. package/dist/request/classify.js.map +1 -1
  174. package/dist/request/ephemeralExchange.d.ts +1 -6
  175. package/dist/request/ephemeralExchange.d.ts.map +1 -1
  176. package/dist/request/ephemeralExchange.js.map +1 -1
  177. package/dist/request/onboarding.d.ts.map +1 -1
  178. package/dist/request/onboarding.js +2 -2
  179. package/dist/request/onboarding.js.map +1 -1
  180. package/dist/request/parse.d.ts.map +1 -1
  181. package/dist/request/parse.js +2 -3
  182. package/dist/request/parse.js.map +1 -1
  183. package/dist/resourceLog/controller.d.ts +34 -12
  184. package/dist/resourceLog/controller.d.ts.map +1 -1
  185. package/dist/resourceLog/controller.js +79 -86
  186. package/dist/resourceLog/controller.js.map +1 -1
  187. package/dist/resourceLog/document.d.ts +182 -0
  188. package/dist/resourceLog/document.d.ts.map +1 -0
  189. package/dist/resourceLog/document.js +159 -0
  190. package/dist/resourceLog/document.js.map +1 -0
  191. package/dist/resourceLog/errors.d.ts +47 -8
  192. package/dist/resourceLog/errors.d.ts.map +1 -1
  193. package/dist/resourceLog/errors.js +54 -8
  194. package/dist/resourceLog/errors.js.map +1 -1
  195. package/dist/resourceLog/index.d.ts +7 -3
  196. package/dist/resourceLog/index.d.ts.map +1 -1
  197. package/dist/resourceLog/index.js +7 -3
  198. package/dist/resourceLog/index.js.map +1 -1
  199. package/dist/resourceLog/ladderRungs.d.ts +35 -0
  200. package/dist/resourceLog/ladderRungs.d.ts.map +1 -0
  201. package/dist/resourceLog/ladderRungs.js +352 -0
  202. package/dist/resourceLog/ladderRungs.js.map +1 -0
  203. package/dist/resourceLog/license.d.ts +42 -17
  204. package/dist/resourceLog/license.d.ts.map +1 -1
  205. package/dist/resourceLog/license.js +38 -24
  206. package/dist/resourceLog/license.js.map +1 -1
  207. package/dist/space/activity.d.ts +15 -15
  208. package/dist/space/activity.d.ts.map +1 -1
  209. package/dist/space/activity.js +15 -15
  210. package/dist/space/activity.js.map +1 -1
  211. package/dist/space/collections.d.ts +11 -0
  212. package/dist/space/collections.d.ts.map +1 -1
  213. package/dist/space/collections.js +13 -0
  214. package/dist/space/collections.js.map +1 -1
  215. package/dist/space/deleteSpace.d.ts +28 -0
  216. package/dist/space/deleteSpace.d.ts.map +1 -0
  217. package/dist/space/deleteSpace.js +44 -0
  218. package/dist/space/deleteSpace.js.map +1 -0
  219. package/dist/space/errors.d.ts.map +1 -1
  220. package/dist/space/errors.js +0 -1
  221. package/dist/space/errors.js.map +1 -1
  222. package/dist/space/index.d.ts +6 -0
  223. package/dist/space/index.d.ts.map +1 -1
  224. package/dist/space/index.js +6 -0
  225. package/dist/space/index.js.map +1 -1
  226. package/dist/space/plaintextCollection.d.ts +43 -0
  227. package/dist/space/plaintextCollection.d.ts.map +1 -0
  228. package/dist/space/plaintextCollection.js +17 -0
  229. package/dist/space/plaintextCollection.js.map +1 -0
  230. package/dist/stages.d.ts +23 -0
  231. package/dist/stages.d.ts.map +1 -0
  232. package/dist/stages.js +23 -0
  233. package/dist/stages.js.map +1 -0
  234. package/dist/sync/index.d.ts +7 -0
  235. package/dist/sync/index.d.ts.map +1 -1
  236. package/dist/sync/index.js +7 -0
  237. package/dist/sync/index.js.map +1 -1
  238. package/dist/sync/push.js +4 -4
  239. package/dist/sync/push.js.map +1 -1
  240. package/dist/sync/remint.js +2 -2
  241. package/dist/sync/remint.js.map +1 -1
  242. package/dist/sync/types.d.ts +41 -1
  243. package/dist/sync/types.d.ts.map +1 -1
  244. package/dist/sync/types.js +47 -1
  245. package/dist/sync/types.js.map +1 -1
  246. package/dist/unlock/index.d.ts +6 -2
  247. package/dist/unlock/index.d.ts.map +1 -1
  248. package/dist/unlock/index.js +5 -1
  249. package/dist/unlock/index.js.map +1 -1
  250. package/dist/unlock/retire.d.ts +95 -14
  251. package/dist/unlock/retire.d.ts.map +1 -1
  252. package/dist/unlock/retire.js +102 -10
  253. package/dist/unlock/retire.js.map +1 -1
  254. package/dist/unlock/standingClient.d.ts.map +1 -1
  255. package/dist/unlock/standingClient.js +5 -1
  256. package/dist/unlock/standingClient.js.map +1 -1
  257. package/dist/unlock/standingWebvh.d.ts +341 -49
  258. package/dist/unlock/standingWebvh.d.ts.map +1 -1
  259. package/dist/unlock/standingWebvh.js +608 -164
  260. package/dist/unlock/standingWebvh.js.map +1 -1
  261. package/dist/webvh/accountEntry.d.ts +146 -0
  262. package/dist/webvh/accountEntry.d.ts.map +1 -0
  263. package/dist/webvh/accountEntry.js +239 -0
  264. package/dist/webvh/accountEntry.js.map +1 -0
  265. package/dist/webvh/didWeb.d.ts +12 -7
  266. package/dist/webvh/didWeb.d.ts.map +1 -1
  267. package/dist/webvh/didWeb.js +2 -2
  268. package/dist/webvh/didWeb.js.map +1 -1
  269. package/dist/webvh/didWebProjection.d.ts +164 -0
  270. package/dist/webvh/didWebProjection.d.ts.map +1 -0
  271. package/dist/webvh/didWebProjection.js +230 -0
  272. package/dist/webvh/didWebProjection.js.map +1 -0
  273. package/dist/webvh/didWebvh.d.ts +278 -138
  274. package/dist/webvh/didWebvh.d.ts.map +1 -1
  275. package/dist/webvh/didWebvh.js +314 -345
  276. package/dist/webvh/didWebvh.js.map +1 -1
  277. package/dist/webvh/enrollClient.d.ts +65 -0
  278. package/dist/webvh/enrollClient.d.ts.map +1 -0
  279. package/dist/webvh/enrollClient.js +172 -0
  280. package/dist/webvh/enrollClient.js.map +1 -0
  281. package/dist/webvh/index.d.ts +37 -12
  282. package/dist/webvh/index.d.ts.map +1 -1
  283. package/dist/webvh/index.js +33 -10
  284. package/dist/webvh/index.js.map +1 -1
  285. package/dist/webvh/listClients.d.ts +1 -33
  286. package/dist/webvh/listClients.d.ts.map +1 -1
  287. package/dist/webvh/listClients.js +2 -28
  288. package/dist/webvh/listClients.js.map +1 -1
  289. package/dist/webvh/revokeClient.d.ts +89 -11
  290. package/dist/webvh/revokeClient.d.ts.map +1 -1
  291. package/dist/webvh/revokeClient.js +182 -47
  292. package/dist/webvh/revokeClient.js.map +1 -1
  293. package/dist/webvh/standingZcap.d.ts +61 -14
  294. package/dist/webvh/standingZcap.d.ts.map +1 -1
  295. package/dist/webvh/standingZcap.js +91 -0
  296. package/dist/webvh/standingZcap.js.map +1 -1
  297. package/dist/webvh/verifyLog.d.ts +59 -5
  298. package/dist/webvh/verifyLog.d.ts.map +1 -1
  299. package/dist/webvh/verifyLog.js +76 -11
  300. package/dist/webvh/verifyLog.js.map +1 -1
  301. package/dist/webvh/wasIdStore.d.ts +8 -8
  302. package/dist/webvh/wasIdStore.d.ts.map +1 -1
  303. package/dist/webvh/wasIdStore.js +39 -14
  304. package/dist/webvh/wasIdStore.js.map +1 -1
  305. package/dist/webvh/zcap.d.ts +14 -1
  306. package/dist/webvh/zcap.d.ts.map +1 -1
  307. package/dist/webvh/zcap.js +3 -27
  308. package/dist/webvh/zcap.js.map +1 -1
  309. package/package.json +5 -5
  310. package/dist/webvh/keyAgreement.d.ts +0 -72
  311. package/dist/webvh/keyAgreement.d.ts.map +0 -1
  312. package/dist/webvh/keyAgreement.js +0 -47
  313. package/dist/webvh/keyAgreement.js.map +0 -1
@@ -5,17 +5,18 @@
5
5
  * The transient-recovery continuation -- the ladder-anchored variant of the
6
6
  * recovery subpath's `recoverWebvhClient`, split out beside the rest of the
7
7
  * annex-anchored ceremonies: a code spent on a non-remembered browser mints
8
- * no enrolled client, so the fresh credential's ladder VM stands in for one
9
- * and the account lands client-less and ladder-anchored. The enrolled-client
8
+ * no enrolled client, and the ladder VM the fresh credential's own bind
9
+ * publishes is what anchors the account, so it lands client-less and
10
+ * ladder-anchored. The enrolled-client
10
11
  * continuation and the recovery-key inventory edits stay in
11
12
  * `recovery/recoveryWebvh.ts`.
12
13
  */
13
14
  import { deriveNextKeyHash, updateDID } from '@interop/did-method-webvh';
14
- import { assertCarryOverCommitments, ladderVerificationMethod, MULTIKEY_VM_TYPE, pinOfLog, relationIds, updateKeySigner, withLogConflictRetry } from '../webvh/didWebvh.js';
15
- import { ladderVmIds } from '../webvh/listClients.js';
15
+ import { assertCarryOverCommitments, ladderVerificationMethod, MULTIKEY_VM_TYPE, publishEntryPinned, readPublishedLogOrThrow, updateKeySigner, withLogConflictRetry } from '../webvh/didWebvh.js';
16
+ import { credentialKeyAgreementMethods, ladderVmIds, relationIds } from '../resourceLog/document.js';
16
17
  import { unlockKeyVerificationMethod, unlockKeyVmId } from '../unlock/standingWebvh.js';
17
- import { publishLogOnly, readLogOrThrow, RecoveryKeyNotCommittedError, recoveryVmId } from '../recovery/recoveryWebvh.js';
18
- import { ladderRung, ladderVmKeyMultibase } from './ladder.js';
18
+ import { RecoveryKeyNotCommittedError, recoveryVmId, retiredCredentialVmIdsFromLog } from '../recovery/recoveryWebvh.js';
19
+ import { assertNextKeyHashesRemain, attributeRetiredCredentialRungs, ladderRung, ladderVmKeyMultibase, retiredCredentialRungsBeforeKey } from './ladder.js';
19
20
  import { clientAnnexDidParts, servicesPointedAtClientAnnex } from './log.js';
20
21
  /**
21
22
  * THE TRANSIENT-RECOVERY CONTINUATION (run by the code-derived client through
@@ -35,11 +36,27 @@ import { clientAnnexDidParts, servicesPointedAtClientAnnex } from './log.js';
35
36
  * (commitment or verbatim -- the entry the mandatory rotation's recipient
36
37
  * resolver will back the credential's standing wrap with) in; the
37
38
  * replacement code's inventory in; the spent code's VM, update key, and hash
38
- * out; and EVERY standing ladder VM out -- the stale-third-party
39
- * retirement no other ceremony performs (their revealed update keys and
40
- * committed hashes stay: a standing credential keeps its account-ladder
41
- * authority, and an unattributable hash cannot be named without its seed).
42
- * Rung 0 replaces the spent code's key in `updateKeys`. This same entry
39
+ * out; and EVERY pre-recovery standing credential fully retired -- its
40
+ * ladder VM and its `keyAgreement` member both struck. The recognition is
41
+ * structural on both axes: `ladderVmIds` by the relation asymmetry, and
42
+ * `credentialKeyAgreementMethods` by the account-DID controller (an
43
+ * enrolled client's key-agreement method carries the client marker
44
+ * instead, so enrolled clients keep their pairs). Other unspent recovery
45
+ * codes fall under the same rule and are retired too: a code's
46
+ * `keyAgreement` member is unmarked and verbatim, indistinguishable from a
47
+ * passkey's, and a cold-browser recovery has no way to put the choice to
48
+ * the user. Each retired credential's whole update-key inventory goes in
49
+ * the same entry: the rung hashes it has standing in `nextKeyHashes`, and
50
+ * any rung of its own left revealed in `updateKeys`. The VM strike alone
51
+ * would rot only a ladder-signed bridge. A bridge minted by an enrolled
52
+ * client -- a passkey added, or a code issued, from a remembered session
53
+ * -- signs with that client's account key, and the client survives this
54
+ * entry, so the committed rung would stay revealable through it
55
+ * (`decisions/0014`). Each credential is anchored from the log alone, its
56
+ * bind entry naming rung 0, and an ambiguous one is reported on
57
+ * `unclaimedCredentialVmIds` rather than struck. Its bridge stays live but
58
+ * inert: nothing revokes it, and it can extend nothing. Rung 0
59
+ * replaces the spent code's key in `updateKeys`. This same entry
43
60
  * also points `#DelegatedClients` at the annex generation `onCommitted`
44
61
  * minted. That is what the atomicity buys: the entry retires the
45
62
  * pre-recovery credential's ladder VM, so a pointer written after it would
@@ -84,8 +101,10 @@ import { clientAnnexDidParts, servicesPointedAtClientAnnex } from './log.js';
84
101
  * @param options.credentialKeyAgreement {UnlockKeyAgreementPublication} the
85
102
  * fresh credential's key-agreement publication (a commitment for a
86
103
  * passphrase-derived key)
87
- * @param options.replacement {RecoveryPublicKeys} the replacement code's
88
- * public halves, committed and published in the same continuation
104
+ * @param options.replacement {ReplacementRecoveryPublicKeys} the
105
+ * replacement code's public halves -- its key-agreement key, its rung-0
106
+ * update key, and its ladder VM key -- committed and published in the same
107
+ * continuation
89
108
  * @param [options.expectedDid] {string} the account DID the log must resolve
90
109
  * to, where the recovering flow already knows it
91
110
  * @param options.onCommitted {function}
@@ -103,8 +122,14 @@ import { clientAnnexDidParts, servicesPointedAtClientAnnex } from './log.js';
103
122
  * (`accountLogPinId({ spaceId })`); required whenever a `pinStore` is
104
123
  * supplied
105
124
  * @returns {Promise<object>} the account DID, the post-continuation
106
- * document and log (the rotation's recipient source and anchor), and, when
107
- * the add entry ran here, the final `did.json` projection
125
+ * document and log (the rotation's recipient source and anchor), the
126
+ * `keyAgreement` verification-method ids this entry struck for
127
+ * pre-recovery credentials OTHER than the spent code
128
+ * (`retiredCredentialVmIds` -- what the caller drops registry entries and
129
+ * deletes unlock Spaces for; on a resumed run whose add entry already
130
+ * landed it is derived from the log, so the resume reports the same list
131
+ * the first run did), and, when the add entry ran here, the final
132
+ * `did.json` projection
108
133
  */
109
134
  export async function recoverWebvhLadderAnchored(options) {
110
135
  // The seam is what makes the fresh credential's and replacement code's
@@ -123,33 +148,64 @@ export async function recoverWebvhLadderAnchored(options) {
123
148
  * conflict retry.
124
149
  *
125
150
  * @param options {object} see {@link recoverWebvhLadderAnchored}
126
- * @returns {Promise<{ did: string, doc: DIDDoc, log: DIDLog, webDoc?: object }>}
151
+ * @returns {Promise<object>} see {@link recoverWebvhLadderAnchored}
127
152
  */
128
153
  async function recoverWebvhLadderAnchoredOnce({ store, recovery, ladderSeed, credentialKeyAgreement, replacement, expectedDid, onCommitted, pinStore, logId }) {
129
154
  // Each attempt's own read is what the CAS publish is built on, so the
130
155
  // continuity check runs here -- and again on a conflict-retry re-run -- not
131
156
  // only on the verify that follows both entries.
132
- const pinned = {
133
- ...(pinStore ? { pinStore } : {}),
134
- ...(logId !== undefined ? { logId } : {})
135
- };
136
- let published = await readLogOrThrow({
137
- store,
138
- ...(expectedDid !== undefined ? { expectedDid } : {}),
139
- ...pinned
157
+ let published = await readPublishedLogOrThrow({
158
+ idStore: store,
159
+ expectedDid,
160
+ pinStore,
161
+ logId,
162
+ missingMessage: 'did:webvh: did.jsonl is missing; nothing to recover.'
140
163
  });
141
164
  const rung0 = await ladderRung({ ladderSeed, index: 0 });
142
165
  const rung1 = await ladderRung({ ladderSeed, index: 1 });
143
166
  const ladderVmKey = await ladderVmKeyMultibase({ ladderSeed });
144
- // Already complete (a torn earlier run finished the add entry): the fresh
145
- // ladder's rung 0 is authorized, which only the add entry writes.
146
- if (published.updateKeys.includes(rung0.keyMultibase)) {
147
- return { did: published.did, doc: published.doc, log: published.log };
148
- }
167
+ // Derived before the completion check, because a resume recomputes the
168
+ // strike with the same protected sets the first run used.
149
169
  const recoveryHash = await deriveNextKeyHash(recovery.updateKeyMultibase);
150
170
  const rung0Hash = await deriveNextKeyHash(rung0.keyMultibase);
151
171
  const rung1Hash = await deriveNextKeyHash(rung1.keyMultibase);
152
172
  const replacementHash = await deriveNextKeyHash(replacement.updateKeyMultibase);
173
+ // Already complete (a torn earlier run finished the add entry): the fresh
174
+ // ladder's rung 0 is authorized, which only the add entry writes.
175
+ if (published.updateKeys.includes(rung0.keyMultibase)) {
176
+ // The add entry already struck the pre-recovery credentials, so the
177
+ // document names none of them any more. The report is derived from the
178
+ // log instead (`retiredCredentialVmIdsFromLog`), so a resume tells the
179
+ // caller exactly what the first run told it.
180
+ const retired = retiredCredentialVmIdsFromLog({
181
+ log: published.log,
182
+ did: published.did,
183
+ successorKeyMultibase: rung0.keyMultibase,
184
+ spentVmId: recoveryVmId({
185
+ did: published.did,
186
+ keyAgreementKeyMultibase: recovery.keyAgreementKeyMultibase
187
+ })
188
+ });
189
+ // The strike is recomputed by re-running it over the log as it stood just
190
+ // before the add entry, with the same protected sets, so a resume reports
191
+ // exactly what the first run reported rather than a second definition of
192
+ // the same question.
193
+ const strike = await retiredCredentialRungsBeforeKey({
194
+ log: published.log,
195
+ authorizedKeyMultibase: rung0.keyMultibase,
196
+ credentialVmIds: retired,
197
+ protectedHashes: [rung0Hash, rung1Hash, replacementHash],
198
+ protectedKeys: [rung0.keyMultibase]
199
+ });
200
+ return {
201
+ did: published.did,
202
+ doc: published.doc,
203
+ log: published.log,
204
+ retiredCredentialVmIds: retired,
205
+ struckRungHashes: strike.struckHashes,
206
+ unclaimedCredentialVmIds: strike.unclaimedCredentialVmIds
207
+ };
208
+ }
153
209
  // The reveal-and-commit entry, skipped when a torn earlier run already
154
210
  // published it (the revealed key authorized AND every needed hash
155
211
  // committed).
@@ -180,22 +236,23 @@ async function recoverWebvhLadderAnchoredOnce({ store, recovery, ladderSeed, cre
180
236
  ])
181
237
  ]
182
238
  });
183
- await publishLogOnly({
239
+ // The publish advances the pin to what the reveal entry just published,
240
+ // so the re-read below (and any read after a tear here) refuses a host
241
+ // that rolls the log back behind it.
242
+ await publishEntryPinned({
184
243
  store,
185
244
  log: updated.log,
186
- ifMatch: published.etag
245
+ ifMatch: published.etag,
246
+ pinStore,
247
+ logId
187
248
  });
188
- // Advance the pin to what the reveal entry just published, so the re-read
189
- // below (and any read after a tear here) refuses a host that rolls the
190
- // log back behind it.
191
- if (pinStore && logId !== undefined) {
192
- await pinStore.write({ logId, pin: pinOfLog(updated.log) });
193
- }
194
249
  // The same account the reveal entry just extended, under the same pin.
195
- published = await readLogOrThrow({
196
- store,
250
+ published = await readPublishedLogOrThrow({
251
+ idStore: store,
197
252
  expectedDid: published.did,
198
- ...pinned
253
+ pinStore,
254
+ logId,
255
+ missingMessage: 'did:webvh: did.jsonl is missing; nothing to recover.'
199
256
  });
200
257
  }
201
258
  // The persist-before-publish seam: the replacement code's record and the
@@ -206,8 +263,9 @@ async function recoverWebvhLadderAnchoredOnce({ store, recovery, ladderSeed, cre
206
263
  clientAnnexDidParts({ did: persisted.clientAnnexDid });
207
264
  // The add-and-retire entry: the ladder VM, the fresh credential's
208
265
  // keyAgreement inventory, and the replacement code's inventory in; the spent
209
- // code's VM, update key, and hash out; every standing ladder VM out. Signed
210
- // by rung 0, whose hash the commit entry just committed.
266
+ // code's VM, update key, and hash out; every pre-recovery standing
267
+ // credential fully retired -- its ladder VM and its keyAgreement member
268
+ // both. Signed by rung 0, whose hash the commit entry just committed.
211
269
  const { did, doc } = published;
212
270
  const spentVmId = recoveryVmId({
213
271
  did,
@@ -231,6 +289,41 @@ async function recoverWebvhLadderAnchoredOnce({ store, recovery, ladderSeed, cre
231
289
  did,
232
290
  keyAgreement: credentialKeyAgreement
233
291
  });
292
+ // Every pre-recovery credential's keyAgreement member, by the account-DID
293
+ // controller (an enrolled client's carries the client marker instead), less
294
+ // the ids this entry itself adds. The spent code's own id is reported
295
+ // separately: the caller already retires that one by name.
296
+ // The replacement code's ladder VM, published beside its key-agreement
297
+ // member: a code is a standing credential with a ladder, and its own bridge
298
+ // delegation is signed by this VM, so a replacement without it could never
299
+ // spend (`decisions/0019`, `decisions/0020`). Its rung-0 hash is already
300
+ // committed by the reveal-and-commit entry, which this entry carries
301
+ // through.
302
+ const replacementLadderVmId = `${did}#${replacement.ladderVmKeyMultibase}`;
303
+ const addedVmIds = [
304
+ ladderVmId,
305
+ credentialVmId,
306
+ replacementVmId,
307
+ replacementLadderVmId
308
+ ];
309
+ const struckCredentialVmIds = credentialKeyAgreementMethods({ doc, did })
310
+ .map(method => method.id)
311
+ .filter((id) => typeof id === 'string')
312
+ .filter(id => !addedVmIds.includes(id));
313
+ const retiredCredentialVmIds = struckCredentialVmIds.filter(id => id !== spentVmId);
314
+ // Each retired credential's committed rungs and any revealed rung of its
315
+ // own go in the SAME entry. Striking the VM alone rots a ladder-signed
316
+ // bridge, but a bridge an enrolled client minted outlives the strike, and
317
+ // that client survives this entry -- so a committed rung left standing is a
318
+ // reveal the retired credential could still perform. The anchoring is
319
+ // log-only (this browser holds no registry), and an unanchorable credential
320
+ // is reported rather than struck.
321
+ const strike = await attributeRetiredCredentialRungs({
322
+ log: published.log,
323
+ credentialVmIds: retiredCredentialVmIds,
324
+ protectedHashes: [rung0Hash, rung1Hash, replacementHash],
325
+ protectedKeys: [rung0.keyMultibase]
326
+ });
234
327
  const addedMethods = [
235
328
  ladderVm,
236
329
  credentialVm,
@@ -239,16 +332,33 @@ async function recoverWebvhLadderAnchoredOnce({ store, recovery, ladderSeed, cre
239
332
  type: MULTIKEY_VM_TYPE,
240
333
  controller: did,
241
334
  publicKeyMultibase: replacement.keyAgreementKeyMultibase
242
- }
335
+ },
336
+ ladderVerificationMethod({
337
+ controller: did,
338
+ publicKeyMultibase: replacement.ladderVmKeyMultibase
339
+ })
243
340
  ];
244
341
  const existingMethods = (doc.verificationMethod ?? []);
245
342
  const verificationMethods = [
246
343
  ...existingMethods.filter(method => method.id !== spentVmId &&
247
344
  !addedMethods.some(added => added.id === method.id) &&
248
- (method.id === undefined || !ladderVms.includes(method.id))),
345
+ (method.id === undefined ||
346
+ (!ladderVms.includes(method.id) &&
347
+ !struckCredentialVmIds.includes(method.id)))),
249
348
  ...addedMethods
250
349
  ];
251
- const withoutRemoved = (relation, added) => [...new Set([...relationIds(relation), ...(added ?? [])])].filter(referencedId => referencedId !== spentVmId && !ladderVms.includes(referencedId));
350
+ // The retirement filter runs over the EXISTING relation ids only, and the
351
+ // added ids join afterwards: a resumed run's fresh ladder VM already stands
352
+ // in `doc.capabilityDelegation`, so filtering the union would strike the
353
+ // very method this entry is publishing.
354
+ const withoutRemoved = (relation, added) => [
355
+ ...new Set([
356
+ ...relationIds(relation).filter(referencedId => referencedId !== spentVmId &&
357
+ !ladderVms.includes(referencedId) &&
358
+ !struckCredentialVmIds.includes(referencedId)),
359
+ ...(added ?? [])
360
+ ])
361
+ ];
252
362
  const signer = await updateKeySigner({ seed: rung0.seed });
253
363
  const updated = await updateDID({
254
364
  log: published.log,
@@ -256,25 +366,33 @@ async function recoverWebvhLadderAnchoredOnce({ store, recovery, ladderSeed, cre
256
366
  alsoKnownAsWeb: true,
257
367
  updateKeys: [
258
368
  ...new Set([
259
- ...published.updateKeys.filter(key => key !== recovery.updateKeyMultibase),
369
+ ...published.updateKeys.filter(key => key !== recovery.updateKeyMultibase &&
370
+ !strike.struckKeys.includes(key)),
260
371
  rung0.keyMultibase
261
372
  ])
262
373
  ],
263
- nextKeyHashes: published.nextKeyHashes.filter(hash => hash !== recoveryHash),
374
+ nextKeyHashes: assertNextKeyHashesRemain({
375
+ nextKeyHashes: published.nextKeyHashes.filter(hash => hash !== recoveryHash && !strike.struckHashes.includes(hash)),
376
+ ceremony: 'the transient-recovery add-and-retire entry'
377
+ }),
264
378
  verificationMethods,
265
379
  // The ladder VM's relation asymmetry: `assertionMethod` and
266
380
  // `capabilityDelegation` only -- no `authentication`, no
267
381
  // `capabilityInvocation` -- which is also what keeps it out of every
268
382
  // client listing.
269
383
  authentication: withoutRemoved(doc.authentication),
270
- assertionMethod: withoutRemoved(doc.assertionMethod, [ladderVmId]),
384
+ assertionMethod: withoutRemoved(doc.assertionMethod, [
385
+ ladderVmId,
386
+ replacementLadderVmId
387
+ ]),
271
388
  keyAgreement: withoutRemoved(doc.keyAgreement, [
272
389
  credentialVmId,
273
390
  replacementVmId
274
391
  ]),
275
392
  capabilityInvocation: withoutRemoved(doc.capabilityInvocation),
276
393
  capabilityDelegation: withoutRemoved(doc.capabilityDelegation, [
277
- ladderVmId
394
+ ladderVmId,
395
+ replacementLadderVmId
278
396
  ]),
279
397
  // Atomic with the retirement above: the pointer and the ladder-VM set
280
398
  // change in one entry, so no window exists in which the document points
@@ -287,16 +405,20 @@ async function recoverWebvhLadderAnchoredOnce({ store, recovery, ladderSeed, cre
287
405
  });
288
406
  // Conditional on the read this entry was built on: the re-read above when
289
407
  // the commit entry ran here, the first read when it was skipped.
290
- await publishLogOnly({ store, log: updated.log, ifMatch: published.etag });
291
- // Advance the pin to what this entry just published, so a host rolling the
292
- // log back straight afterwards is refused on the next read.
293
- if (pinStore && logId !== undefined) {
294
- await pinStore.write({ logId, pin: pinOfLog(updated.log) });
295
- }
408
+ await publishEntryPinned({
409
+ store,
410
+ log: updated.log,
411
+ ifMatch: published.etag,
412
+ pinStore,
413
+ logId
414
+ });
296
415
  return {
297
416
  did: updated.did,
298
417
  doc: updated.doc,
299
418
  log: updated.log,
419
+ retiredCredentialVmIds,
420
+ struckRungHashes: strike.struckHashes,
421
+ unclaimedCredentialVmIds: strike.unclaimedCredentialVmIds,
300
422
  webDoc: updated.webDoc
301
423
  };
302
424
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recoveryLadderAnchored.js","sourceRoot":"","sources":["../../src/clientAnnex/recoveryLadderAnchored.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;GAQG;AACH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAMxE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,eAAe,EACf,oBAAoB,EACrB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EACL,2BAA2B,EAC3B,aAAa,EAEd,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,cAAc,EACd,cAAc,EACd,4BAA4B,EAC5B,YAAY,EAGb,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,OAUhD;IACC,uEAAuE;IACvE,wEAAwE;IACxE,oEAAoE;IACpE,6DAA6D;IAC7D,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QAC9C,MAAM,IAAI,SAAS,CACjB,mEAAmE;YACjE,oEAAoE;YACpE,oCAAoC,CACvC,CAAA;IACH,CAAC;IACD,OAAO,oBAAoB,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,8BAA8B,CAAC,EAC5C,KAAK,EACL,QAAQ,EACR,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,KAAK,EAWN;IACC,sEAAsE;IACtE,4EAA4E;IAC5E,gDAAgD;IAChD,MAAM,MAAM,GAAG;QACb,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAA;IACD,IAAI,SAAS,GAAG,MAAM,cAAc,CAAC;QACnC,KAAK;QACL,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,MAAM;KACV,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;IACxD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;IACxD,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;IAE9D,0EAA0E;IAC1E,kEAAkE;IAClE,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAA;IACvE,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IACzE,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAC7D,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAC7D,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAC7C,WAAW,CAAC,kBAAkB,CAC/B,CAAA;IAED,uEAAuE;IACvE,kEAAkE;IAClE,cAAc;IACd,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IAC3E,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CACrE,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CACvC,CAAA;IACD,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,4BAA4B,EAAE,CAAA;QAC1C,CAAC;QACD,MAAM,0BAA0B,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QACnE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC;YAC9B,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,MAAM;YACN,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE;gBACV,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;aACnE;YACD,qEAAqE;YACrE,iEAAiE;YACjE,aAAa,EAAE;gBACb,GAAG,IAAI,GAAG,CAAC;oBACT,GAAG,SAAS,CAAC,aAAa;oBAC1B,YAAY;oBACZ,SAAS;oBACT,SAAS;oBACT,eAAe;iBAChB,CAAC;aACH;SACF,CAAC,CAAA;QACF,MAAM,cAAc,CAAC;YACnB,KAAK;YACL,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,SAAS,CAAC,IAAI;SACxB,CAAC,CAAA;QACF,0EAA0E;QAC1E,uEAAuE;QACvE,sBAAsB;QACtB,IAAI,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,uEAAuE;QACvE,SAAS,GAAG,MAAM,cAAc,CAAC;YAC/B,KAAK;YACL,WAAW,EAAE,SAAS,CAAC,GAAG;YAC1B,GAAG,MAAM;SACV,CAAC,CAAA;IACJ,CAAC;IAED,yEAAyE;IACzE,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAA;IACrC,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC,CAAA;IAEtD,kEAAkE;IAClE,6EAA6E;IAC7E,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA;IAC9B,MAAM,SAAS,GAAG,YAAY,CAAC;QAC7B,GAAG;QACH,wBAAwB,EAAE,QAAQ,CAAC,wBAAwB;KAC5D,CAAC,CAAA;IACF,MAAM,eAAe,GAAG,YAAY,CAAC;QACnC,GAAG;QACH,wBAAwB,EAAE,WAAW,CAAC,wBAAwB;KAC/D,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,UAAU,EAAE,GAAG;QACf,kBAAkB,EAAE,WAAW;KAChC,CAAC,CAAA;IACF,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,WAAW,EAAE,CAAA;IAC1C,MAAM,YAAY,GAAG,2BAA2B,CAAC;QAC/C,GAAG;QACH,YAAY,EAAE,sBAAsB;KACrC,CAAC,CAAA;IACF,MAAM,cAAc,GAAG,aAAa,CAAC;QACnC,GAAG;QACH,YAAY,EAAE,sBAAsB;KACrC,CAAC,CAAA;IACF,MAAM,YAAY,GAAyB;QACzC,QAAQ;QACR,YAAY;QACZ;YACE,EAAE,EAAE,eAAe;YACnB,IAAI,EAAE,gBAAgB;YACtB,UAAU,EAAE,GAAG;YACf,kBAAkB,EAAE,WAAW,CAAC,wBAAwB;SACzD;KACF,CAAA;IACD,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAyB,CAAA;IAC9E,MAAM,mBAAmB,GAAG;QAC1B,GAAG,eAAe,CAAC,MAAM,CACvB,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,EAAE,KAAK,SAAS;YACvB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YACnD,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAC9D;QACD,GAAG,YAAY;KAChB,CAAA;IACD,MAAM,cAAc,GAAG,CACrB,QAAqD,EACrD,KAAgB,EAChB,EAAE,CACF,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAC/D,YAAY,CAAC,EAAE,CACb,YAAY,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAClE,CAAA;IAEH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC;QAC9B,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,MAAM;QACN,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE;YACV,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAC5B,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,kBAAkB,CAC3C;gBACD,KAAK,CAAC,YAAY;aACnB,CAAC;SACH;QACD,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM,CAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,YAAY,CAC9B;QACD,mBAAmB;QACnB,4DAA4D;QAC5D,yDAAyD;QACzD,qEAAqE;QACrE,kBAAkB;QAClB,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC;QAClD,eAAe,EAAE,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,CAAC;QAClE,YAAY,EAAE,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE;YAC7C,cAAc;YACd,eAAe;SAChB,CAAC;QACF,oBAAoB,EAAE,cAAc,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC9D,oBAAoB,EAAE,cAAc,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC7D,UAAU;SACX,CAAC;QACF,sEAAsE;QACtE,wEAAwE;QACxE,qDAAqD;QACrD,QAAQ,EAAE,4BAA4B,CAAC;YACrC,GAAG;YACH,UAAU,EAAE,GAAG;YACf,cAAc,EAAE,SAAS,CAAC,cAAc;SACzC,CAAC;KACH,CAAC,CAAA;IACF,0EAA0E;IAC1E,iEAAiE;IACjE,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1E,2EAA2E;IAC3E,4DAA4D;IAC5D,IAAI,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"recoveryLadderAnchored.js","sourceRoot":"","sources":["../../src/clientAnnex/recoveryLadderAnchored.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * Single-verb Space capabilities: the short-lived children a transient
6
+ * session mints so it can destroy (or probe) a Space it has no root
7
+ * invocation over. Two shapes, one mint, both target-exact:
8
+ *
9
+ * - Three links, over a stored parent. The parent is the management zcap an
10
+ * unlock identity delegated to the account at bind time. The child's
11
+ * `invocationTarget` is the parent's own, copied verbatim from the parent's
12
+ * bytes rather than rebuilt, so a deployment whose stored parent carries a
13
+ * target this client would build differently still lands on the bytes the
14
+ * server checks.
15
+ * - Two links, over a Space's synthesized root. The child's
16
+ * `invocationTarget` is the bare Space URL, built with was-client's path
17
+ * builders so a sub-path deployment keeps its prefix.
18
+ *
19
+ * `allowedAction` is exactly one HTTP verb -- `DELETE` for the deletion
20
+ * child, `GET` for the probe child -- which is what a storage server's
21
+ * admission predicate keys on. The delegatee is the caller's: the ladder
22
+ * VM's bare did:key on a transient session (it re-derives from the ladder
23
+ * seed and resolves from its own bytes, so it outlives the account log it
24
+ * was minted beside), the account did:webvh on a remembered one.
25
+ *
26
+ * Nothing here is stored. A child is minted immediately before its own
27
+ * request and dropped; on a torn run it lapses by its short TTL, so no
28
+ * revocation is owed.
29
+ *
30
+ * Two checks stay with the caller rather than here: that the parent's
31
+ * `controller` is the delegator this client signs as, and that the parent's
32
+ * target names the Space the caller means on the deployment it is talking
33
+ * to. The caller holds the deployment URL and the delegator DID; this module
34
+ * holds neither, and guessing either would rebuild the very bytes the
35
+ * verbatim copy exists to preserve.
36
+ */
37
+ import type { IZcap } from '@interop/data-integrity-core';
38
+ import type { ZcapClient } from '@interop/ezcap';
39
+ /**
40
+ * The single-verb Space capability's lifetime: ten minutes, long enough for
41
+ * the request it is minted for and twice `@interop/zcap`'s 300-second clock
42
+ * skew allowance. A child's `expires` is the earlier of this and its
43
+ * parent's, since the library refuses a child less restrictive than its
44
+ * parent with no skew allowance.
45
+ */
46
+ export declare const DELETION_ZCAP_TTL_MS: number;
47
+ /**
48
+ * The two verbs a single-verb Space capability may carry: the deletion
49
+ * child's `DELETE` and the probe child's `GET`.
50
+ */
51
+ export type SpaceCapabilityVerb = 'DELETE' | 'GET';
52
+ /**
53
+ * The typed refusal of a mint over a parent capability whose own `expires`
54
+ * has already passed: the child would verify nowhere, so nothing is minted
55
+ * and nothing is sent. Matched on `name` -- error classes do not survive
56
+ * crossing package copies. The parent's `expires` and `id` ride the error so
57
+ * a caller can name the lapsed capability in its own copy without re-reading
58
+ * the parent.
59
+ */
60
+ export declare class ExpiredParentCapabilityError extends Error {
61
+ readonly parentExpires: string;
62
+ readonly parentId: string | undefined;
63
+ constructor({ message, parentExpires, parentId }: {
64
+ message: string;
65
+ parentExpires: string;
66
+ parentId: string | undefined;
67
+ });
68
+ }
69
+ /**
70
+ * Mints a single-verb child of a STORED parent capability -- the three-link
71
+ * shape, used on an unlock Space whose management zcap the account already
72
+ * holds. The child's `invocationTarget` is the parent's unchanged.
73
+ *
74
+ * @param options {object}
75
+ * @param options.zcapClient {ZcapClient} the delegating signer (the ladder
76
+ * VM's client on a transient session, an enrolled client's on a remembered
77
+ * one)
78
+ * @param options.parent {IZcap} the stored parent capability
79
+ * @param options.verb {SpaceCapabilityVerb} the child's one allowed action
80
+ * @param options.controller {string} the delegatee DID
81
+ * @param [options.ttlMs] {number} the child's requested lifetime
82
+ * @param [options.now] {number} the clock the child is minted against
83
+ * (epoch milliseconds); a caller holding server-relative time passes it
84
+ * so the proof's `created` and the child's `expires` come off one clock
85
+ * @returns {Promise<IZcap>}
86
+ */
87
+ export declare function mintSpaceVerbCapability({ zcapClient, parent, verb, controller, ttlMs, now }: {
88
+ zcapClient: ZcapClient;
89
+ parent: IZcap;
90
+ verb: SpaceCapabilityVerb;
91
+ controller: string;
92
+ ttlMs?: number;
93
+ now?: number;
94
+ }): Promise<IZcap>;
95
+ /**
96
+ * Mints a single-verb child of a Space's SYNTHESIZED ROOT -- the two-link
97
+ * shape, used on the account Space and an auxiliary annex Space, where the
98
+ * session holds no stored parent. The child's `invocationTarget` is the bare
99
+ * Space URL, with no trailing slash, so the deletion child covers the Space
100
+ * itself rather than its items subtree.
101
+ *
102
+ * @param options {object}
103
+ * @param options.zcapClient {ZcapClient} the delegating signer
104
+ * @param options.storageServerUrl {string} the Space's storage server
105
+ * @param options.spaceId {string}
106
+ * @param options.verb {SpaceCapabilityVerb} the child's one allowed action
107
+ * @param options.controller {string} the delegatee DID
108
+ * @param [options.ttlMs] {number} the child's requested lifetime
109
+ * @param [options.now] {number} the clock the child is minted against
110
+ * (epoch milliseconds); a caller holding server-relative time passes it
111
+ * so the proof's `created` and the child's `expires` come off one clock
112
+ * @returns {Promise<IZcap>}
113
+ */
114
+ export declare function mintSpaceRootVerbCapability({ zcapClient, storageServerUrl, spaceId, verb, controller, ttlMs, now }: {
115
+ zcapClient: ZcapClient;
116
+ storageServerUrl: string;
117
+ spaceId: string;
118
+ verb: SpaceCapabilityVerb;
119
+ controller: string;
120
+ ttlMs?: number;
121
+ now?: number;
122
+ }): Promise<IZcap>;
123
+ //# sourceMappingURL=spaceCapability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spaceCapability.d.ts","sourceRoot":"","sources":["../../src/clientAnnex/spaceCapability.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,QAAiB,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,KAAK,CAAA;AAElD;;;;;;;GAOG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;gBAEzB,EACV,OAAO,EACP,aAAa,EACb,QAAQ,EACT,EAAE;QACD,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;KAC7B;CAMF;AA+ED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,UAAU,EACV,MAAM,EACN,IAAI,EACJ,UAAU,EACV,KAA4B,EAC5B,GAAgB,EACjB,EAAE;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,KAAK,CAAA;IACb,IAAI,EAAE,mBAAmB,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,KAAK,CAAC,CAkBjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,2BAA2B,CAAC,EAChD,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,IAAI,EACJ,UAAU,EACV,KAA4B,EAC5B,GAAgB,EACjB,EAAE;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,mBAAmB,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,KAAK,CAAC,CAajB"}