keri-ts 2.0.1 → 2.2.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 (450) hide show
  1. package/README.md +30 -2
  2. package/esm/keri/npm/src/acdc/authoring.js +195 -0
  3. package/esm/keri/npm/src/acdc/chaining.js +223 -89
  4. package/esm/keri/npm/src/acdc/custody.js +164 -0
  5. package/esm/keri/npm/src/acdc/dhking.js +244 -32
  6. package/esm/keri/npm/src/acdc/observing.js +2 -2
  7. package/esm/keri/npm/src/acdc/regbasing.js +30 -29
  8. package/esm/keri/npm/src/acdc/regengine.js +4 -6
  9. package/esm/keri/npm/src/acdc/registering.js +13 -10
  10. package/esm/keri/npm/src/acdc/registraring.js +4 -9
  11. package/esm/keri/npm/src/acdc/salting.js +143 -26
  12. package/esm/keri/npm/src/acdc/scheming.js +93 -54
  13. package/esm/keri/npm/src/acdc/unblinding.js +120 -99
  14. package/esm/keri/npm/src/app/bootstrap/authenticating.js +4 -6
  15. package/esm/keri/npm/src/app/bootstrap/oobi-resolving.js +41 -0
  16. package/esm/keri/npm/src/app/bootstrap/oobiery.js +5 -7
  17. package/esm/keri/npm/src/app/credentials/credential-revoking.js +1 -0
  18. package/esm/keri/npm/src/app/credentials/credential-workflows.js +2 -0
  19. package/esm/keri/npm/src/app/credentials/registry-settling.js +44 -0
  20. package/esm/keri/npm/src/app/credentials/root-replicating.js +131 -0
  21. package/esm/keri/npm/src/app/credentials/root-replicator.js +198 -0
  22. package/esm/keri/npm/src/app/credentials/tel-completion.js +36 -0
  23. package/esm/keri/npm/src/app/credentials/verifying.js +12 -3
  24. package/esm/keri/npm/src/app/delivery/forwarding.js +64 -9
  25. package/esm/keri/npm/src/app/exchanges/exchanging.js +24 -15
  26. package/esm/keri/npm/src/app/identity/challenging.js +50 -0
  27. package/esm/keri/npm/src/app/identity/configing.js +17 -43
  28. package/esm/keri/npm/src/app/identity/delegating.js +77 -77
  29. package/esm/keri/npm/src/app/identity/delegation-approval.js +333 -0
  30. package/esm/keri/npm/src/app/identity/event-completion.js +154 -0
  31. package/esm/keri/npm/src/app/identity/habbing.js +183 -41
  32. package/esm/keri/npm/src/app/identity/keeping.js +78 -5
  33. package/esm/keri/npm/src/app/identity/lmdb-habery.js +12 -0
  34. package/esm/keri/npm/src/app/ipex/group-ipex.js +327 -0
  35. package/esm/keri/npm/src/app/ipex/group-issuance.js +902 -0
  36. package/esm/keri/npm/src/app/ipex/ipex-admitting.js +120 -0
  37. package/esm/keri/npm/src/app/ipex/ipex-conversation.js +197 -0
  38. package/esm/keri/npm/src/app/ipex/ipex-discloser.js +591 -0
  39. package/esm/keri/npm/src/app/ipex/ipex-granting.js +93 -0
  40. package/esm/keri/npm/src/app/ipex/ipex-graph.js +7 -70
  41. package/esm/keri/npm/src/app/ipex/ipex-grouping.js +42 -16
  42. package/esm/keri/npm/src/app/ipex/ipex-v2.js +21 -5
  43. package/esm/keri/npm/src/app/ipex/ipexing.js +1 -1
  44. package/esm/keri/npm/src/app/ipex/issuance.js +888 -0
  45. package/esm/keri/npm/src/app/ipex/pending-presentations.js +46 -0
  46. package/esm/keri/npm/src/app/ipex/presentation-files.js +200 -0
  47. package/esm/keri/npm/src/app/ipex/presenting.js +401 -0
  48. package/esm/keri/npm/src/app/ipex/receive-issuance.js +86 -0
  49. package/esm/keri/npm/src/app/ipex/unblinding-workflow.js +660 -0
  50. package/esm/keri/npm/src/app/mailbox/ipex-arrival.js +103 -0
  51. package/esm/keri/npm/src/app/mailbox/kel-publisher.js +322 -0
  52. package/esm/keri/npm/src/app/mailbox/kel-publishing.js +65 -0
  53. package/esm/keri/npm/src/app/mailbox/kel-submission.js +24 -0
  54. package/esm/keri/npm/src/app/mailbox/mailbox-admin.js +208 -0
  55. package/esm/keri/npm/src/app/mailbox/mailbox-poller.js +212 -47
  56. package/esm/keri/npm/src/app/mailbox/mailboxing.js +15 -14
  57. package/esm/keri/npm/src/app/multisig/counseling.js +482 -0
  58. package/esm/keri/npm/src/app/multisig/group-members.js +32 -0
  59. package/esm/keri/npm/src/app/multisig/grouping.js +4 -3
  60. package/esm/keri/npm/src/app/multisig/multisig-workflows.js +101 -141
  61. package/esm/keri/npm/src/app/multisig/proposals.js +281 -0
  62. package/esm/keri/npm/src/app/multisig/proposing.js +122 -0
  63. package/esm/keri/npm/src/app/notifications/notifying.js +5 -9
  64. package/esm/keri/npm/src/app/notifications/signaling.js +5 -5
  65. package/esm/keri/npm/src/app/protocol/parsering.js +26 -1
  66. package/esm/keri/npm/src/app/protocol/protocol-processing.js +44 -6
  67. package/esm/keri/npm/src/app/queries/query-workflows.js +98 -0
  68. package/esm/keri/npm/src/app/queries/witness-inquisitor.js +2 -2
  69. package/esm/keri/npm/src/app/runtime/agent-runtime.js +113 -65
  70. package/esm/keri/npm/src/app/runtime/cue-runtime.js +3 -6
  71. package/esm/keri/npm/src/app/runtime/delivery-outbox.js +87 -0
  72. package/esm/keri/npm/src/app/runtime/doing.js +17 -0
  73. package/esm/keri/npm/src/app/runtime/ipex-auxiliaries.js +207 -0
  74. package/esm/keri/npm/src/app/runtime/operation-owners.js +151 -0
  75. package/esm/keri/npm/src/app/runtime/retry-backoff.js +93 -0
  76. package/esm/keri/npm/src/app/runtime/workflow-contract.js +80 -0
  77. package/esm/keri/npm/src/app/transport/byte-source.js +6 -42
  78. package/esm/keri/npm/src/app/transport/cesr-egress.js +77 -13
  79. package/esm/keri/npm/src/app/transport/file-bytes.js +41 -0
  80. package/esm/keri/npm/src/app/transport/http-client.js +25 -6
  81. package/esm/keri/npm/src/app/transport/http-messenger.js +14 -9
  82. package/esm/keri/npm/src/app/transport/message-source.js +1 -1
  83. package/esm/keri/npm/src/app/transport/messengering.js +3 -4
  84. package/esm/keri/npm/src/app/transport/node-http-client.js +21 -0
  85. package/esm/keri/npm/src/app/transport/tcp-dialer.js +14 -0
  86. package/esm/keri/npm/src/app/witness/http-endpoints.js +4 -4
  87. package/esm/keri/npm/src/app/witness/receipt-client.js +2 -2
  88. package/esm/keri/npm/src/cli/common/context.js +2 -2
  89. package/esm/keri/npm/src/cli/common/event-completion.js +49 -0
  90. package/esm/keri/npm/src/cli/common/existing.js +3 -5
  91. package/esm/keri/npm/src/cli/common/runtime-workers.js +23 -0
  92. package/esm/keri/npm/src/cli/credentials/ipex.js +159 -191
  93. package/esm/keri/npm/src/cli/credentials/vc.js +53 -72
  94. package/esm/keri/npm/src/cli/endpoints/did.js +12 -3
  95. package/esm/keri/npm/src/cli/endpoints/oobi-clean.js +4 -3
  96. package/esm/keri/npm/src/cli/endpoints/oobi.js +12 -15
  97. package/esm/keri/npm/src/cli/identity/challenge.js +9 -35
  98. package/esm/keri/npm/src/cli/identity/delegate.js +81 -258
  99. package/esm/keri/npm/src/cli/identity/incept.js +17 -34
  100. package/esm/keri/npm/src/cli/identity/init.js +4 -3
  101. package/esm/keri/npm/src/cli/identity/interact.js +7 -19
  102. package/esm/keri/npm/src/cli/identity/rotate.js +10 -38
  103. package/esm/keri/npm/src/cli/index.js +3 -1
  104. package/esm/keri/npm/src/cli/messaging/exchange.js +2 -2
  105. package/esm/keri/npm/src/cli/messaging/group-join.js +79 -0
  106. package/esm/keri/npm/src/cli/messaging/group-wait.js +88 -0
  107. package/esm/keri/npm/src/cli/messaging/multisig.js +187 -250
  108. package/esm/keri/npm/src/cli/messaging/root-copy-lines.js +31 -0
  109. package/esm/keri/npm/src/cli/tools/annotate.js +2 -1
  110. package/esm/keri/npm/src/cli/tools/benchmark.js +2 -1
  111. package/esm/keri/npm/src/cli/tools/db-dump.js +1 -4
  112. package/esm/keri/npm/src/core/bytes.js +9 -0
  113. package/esm/keri/npm/src/core/kel/delegation-ancestry.js +92 -0
  114. package/esm/keri/npm/src/core/kel/eventing.js +67 -12
  115. package/esm/keri/npm/src/core/kel/kever.js +11 -9
  116. package/esm/keri/npm/src/core/mailbox/kram-policy.js +41 -9
  117. package/esm/keri/npm/src/core/mailbox/kram-pruning.js +15 -22
  118. package/esm/keri/npm/src/core/mailbox/kram-staging.js +2 -2
  119. package/esm/keri/npm/src/core/mailbox/kraming.js +2 -0
  120. package/esm/keri/npm/src/core/records.js +23 -0
  121. package/esm/keri/npm/src/core/routing.js +15 -2
  122. package/esm/keri/npm/src/db/basing.js +183 -205
  123. package/esm/keri/npm/src/db/core/dber.js +1062 -0
  124. package/esm/keri/npm/src/db/core/index.js +4 -2
  125. package/esm/keri/npm/src/db/core/indexeddb-persistence.js +221 -0
  126. package/esm/keri/npm/src/db/core/lmdb-opener.js +30 -0
  127. package/esm/keri/npm/src/db/core/lmdber.js +199 -1067
  128. package/esm/keri/npm/src/db/core/memstore.js +532 -0
  129. package/esm/keri/npm/src/db/core/path-manager.js +109 -223
  130. package/esm/keri/npm/src/db/core/store-owner.js +104 -0
  131. package/esm/keri/npm/src/db/core/webdber.js +252 -0
  132. package/esm/keri/npm/src/db/escrowing.js +2 -2
  133. package/esm/keri/npm/src/db/exchange/exchange-nests.js +3 -2
  134. package/esm/keri/npm/src/db/indexeddb.js +98 -0
  135. package/esm/keri/npm/src/db/keeping.js +38 -123
  136. package/esm/keri/npm/src/db/koming.js +1 -1
  137. package/esm/keri/npm/src/db/lmdb-stores.js +68 -0
  138. package/esm/keri/npm/src/db/lmdb.js +6 -0
  139. package/esm/keri/npm/src/db/mailbox/mailboxing.js +12 -65
  140. package/esm/keri/npm/src/db/noting.js +11 -55
  141. package/esm/keri/npm/src/db/reger.js +43 -105
  142. package/esm/keri/npm/src/db/replay/witness-replay.js +2 -20
  143. package/esm/keri/npm/src/db/store-lock.js +150 -0
  144. package/esm/keri/npm/src/db/subing.js +1 -1
  145. package/esm/keri/npm/src/npm/db-indexeddb.browser.js +2 -0
  146. package/esm/keri/npm/src/npm/db-indexeddb.js +3 -0
  147. package/esm/keri/npm/src/npm/db-lmdb.js +3 -0
  148. package/esm/keri/npm/src/npm/db.browser.js +2 -0
  149. package/esm/keri/npm/src/npm/index.browser.js +9 -0
  150. package/esm/keri/npm/src/npm/runtime-node.js +3 -0
  151. package/esm/keri/npm/src/npm/runtime-web.browser.js +2 -0
  152. package/esm/keri/npm/src/npm/runtime-web.js +3 -0
  153. package/esm/keri/npm/src/npm/runtime.browser.js +2 -0
  154. package/esm/keri/npm/src/runtime/index.js +58 -12
  155. package/esm/keri/npm/src/runtime/node.js +14 -0
  156. package/esm/keri/npm/src/runtime/web/output-barrier.js +47 -0
  157. package/esm/keri/npm/src/runtime/web/persistent-storage.js +37 -0
  158. package/esm/keri/npm/src/runtime/web.js +10 -0
  159. package/esm/keri/npm/src/vdr/eventing.js +1 -1
  160. package/esm/keri/npm/src/vdr/tel-publication.js +19 -3
  161. package/esm/keri/npm/src/version.js +2 -2
  162. package/package.json +24 -4
  163. package/types/acdc/authoring.d.ts +54 -0
  164. package/types/acdc/authoring.d.ts.map +1 -0
  165. package/types/acdc/chaining.d.ts +56 -6
  166. package/types/acdc/chaining.d.ts.map +1 -1
  167. package/types/acdc/custody.d.ts +77 -0
  168. package/types/acdc/custody.d.ts.map +1 -0
  169. package/types/acdc/dhking.d.ts +94 -3
  170. package/types/acdc/dhking.d.ts.map +1 -1
  171. package/types/acdc/regbasing.d.ts +11 -6
  172. package/types/acdc/regbasing.d.ts.map +1 -1
  173. package/types/acdc/regengine.d.ts.map +1 -1
  174. package/types/acdc/registering.d.ts +8 -4
  175. package/types/acdc/registering.d.ts.map +1 -1
  176. package/types/acdc/registraring.d.ts.map +1 -1
  177. package/types/acdc/salting.d.ts +59 -7
  178. package/types/acdc/salting.d.ts.map +1 -1
  179. package/types/acdc/scheming.d.ts +2 -0
  180. package/types/acdc/scheming.d.ts.map +1 -1
  181. package/types/acdc/unblinding.d.ts +58 -19
  182. package/types/acdc/unblinding.d.ts.map +1 -1
  183. package/types/app/bootstrap/authenticating.d.ts +3 -1
  184. package/types/app/bootstrap/authenticating.d.ts.map +1 -1
  185. package/types/app/bootstrap/oobi-resolving.d.ts +92 -0
  186. package/types/app/bootstrap/oobi-resolving.d.ts.map +1 -0
  187. package/types/app/bootstrap/oobiery.d.ts +3 -1
  188. package/types/app/bootstrap/oobiery.d.ts.map +1 -1
  189. package/types/app/credentials/credential-revoking.d.ts +3 -0
  190. package/types/app/credentials/credential-revoking.d.ts.map +1 -1
  191. package/types/app/credentials/credential-workflows.d.ts +5 -0
  192. package/types/app/credentials/credential-workflows.d.ts.map +1 -1
  193. package/types/app/credentials/registry-settling.d.ts +85 -0
  194. package/types/app/credentials/registry-settling.d.ts.map +1 -0
  195. package/types/app/credentials/root-replicating.d.ts +97 -0
  196. package/types/app/credentials/root-replicating.d.ts.map +1 -0
  197. package/types/app/credentials/root-replicator.d.ts +105 -0
  198. package/types/app/credentials/root-replicator.d.ts.map +1 -0
  199. package/types/app/credentials/tel-completion.d.ts +55 -0
  200. package/types/app/credentials/tel-completion.d.ts.map +1 -0
  201. package/types/app/credentials/verifying.d.ts +2 -1
  202. package/types/app/credentials/verifying.d.ts.map +1 -1
  203. package/types/app/delivery/forwarding.d.ts +16 -0
  204. package/types/app/delivery/forwarding.d.ts.map +1 -1
  205. package/types/app/exchanges/exchanging.d.ts +2 -0
  206. package/types/app/exchanges/exchanging.d.ts.map +1 -1
  207. package/types/app/identity/challenging.d.ts +54 -0
  208. package/types/app/identity/challenging.d.ts.map +1 -1
  209. package/types/app/identity/configing.d.ts +7 -5
  210. package/types/app/identity/configing.d.ts.map +1 -1
  211. package/types/app/identity/delegating.d.ts +21 -4
  212. package/types/app/identity/delegating.d.ts.map +1 -1
  213. package/types/app/identity/delegation-approval.d.ts +228 -0
  214. package/types/app/identity/delegation-approval.d.ts.map +1 -0
  215. package/types/app/identity/event-completion.d.ts +151 -0
  216. package/types/app/identity/event-completion.d.ts.map +1 -0
  217. package/types/app/identity/habbing.d.ts +90 -7
  218. package/types/app/identity/habbing.d.ts.map +1 -1
  219. package/types/app/identity/keeping.d.ts +50 -4
  220. package/types/app/identity/keeping.d.ts.map +1 -1
  221. package/types/app/identity/lmdb-habery.d.ts +6 -0
  222. package/types/app/identity/lmdb-habery.d.ts.map +1 -0
  223. package/types/app/ipex/group-ipex.d.ts +247 -0
  224. package/types/app/ipex/group-ipex.d.ts.map +1 -0
  225. package/types/app/ipex/group-issuance.d.ts +281 -0
  226. package/types/app/ipex/group-issuance.d.ts.map +1 -0
  227. package/types/app/ipex/ipex-admitting.d.ts +47 -0
  228. package/types/app/ipex/ipex-admitting.d.ts.map +1 -0
  229. package/types/app/ipex/ipex-conversation.d.ts +195 -0
  230. package/types/app/ipex/ipex-conversation.d.ts.map +1 -0
  231. package/types/app/ipex/ipex-discloser.d.ts +156 -0
  232. package/types/app/ipex/ipex-discloser.d.ts.map +1 -0
  233. package/types/app/ipex/ipex-granting.d.ts +145 -0
  234. package/types/app/ipex/ipex-granting.d.ts.map +1 -0
  235. package/types/app/ipex/ipex-graph.d.ts +4 -4
  236. package/types/app/ipex/ipex-graph.d.ts.map +1 -1
  237. package/types/app/ipex/ipex-grouping.d.ts +18 -0
  238. package/types/app/ipex/ipex-grouping.d.ts.map +1 -1
  239. package/types/app/ipex/ipex-v2.d.ts +11 -2
  240. package/types/app/ipex/ipex-v2.d.ts.map +1 -1
  241. package/types/app/ipex/ipexing.d.ts +3 -0
  242. package/types/app/ipex/ipexing.d.ts.map +1 -1
  243. package/types/app/ipex/issuance.d.ts +443 -0
  244. package/types/app/ipex/issuance.d.ts.map +1 -0
  245. package/types/app/ipex/pending-presentations.d.ts +25 -0
  246. package/types/app/ipex/pending-presentations.d.ts.map +1 -0
  247. package/types/app/ipex/presentation-files.d.ts +47 -0
  248. package/types/app/ipex/presentation-files.d.ts.map +1 -0
  249. package/types/app/ipex/presenting.d.ts +298 -0
  250. package/types/app/ipex/presenting.d.ts.map +1 -0
  251. package/types/app/ipex/receive-issuance.d.ts +99 -0
  252. package/types/app/ipex/receive-issuance.d.ts.map +1 -0
  253. package/types/app/ipex/unblinding-workflow.d.ts +255 -0
  254. package/types/app/ipex/unblinding-workflow.d.ts.map +1 -0
  255. package/types/app/mailbox/ipex-arrival.d.ts +104 -0
  256. package/types/app/mailbox/ipex-arrival.d.ts.map +1 -0
  257. package/types/app/mailbox/kel-publisher.d.ts +141 -0
  258. package/types/app/mailbox/kel-publisher.d.ts.map +1 -0
  259. package/types/app/mailbox/kel-publishing.d.ts +70 -0
  260. package/types/app/mailbox/kel-publishing.d.ts.map +1 -0
  261. package/types/app/mailbox/kel-submission.d.ts +18 -0
  262. package/types/app/mailbox/kel-submission.d.ts.map +1 -0
  263. package/types/app/mailbox/mailbox-admin.d.ts +113 -0
  264. package/types/app/mailbox/mailbox-admin.d.ts.map +1 -0
  265. package/types/app/mailbox/mailbox-poller.d.ts +92 -3
  266. package/types/app/mailbox/mailbox-poller.d.ts.map +1 -1
  267. package/types/app/mailbox/mailboxing.d.ts +4 -1
  268. package/types/app/mailbox/mailboxing.d.ts.map +1 -1
  269. package/types/app/multisig/counseling.d.ts +196 -0
  270. package/types/app/multisig/counseling.d.ts.map +1 -0
  271. package/types/app/multisig/group-members.d.ts +20 -0
  272. package/types/app/multisig/group-members.d.ts.map +1 -1
  273. package/types/app/multisig/grouping.d.ts +39 -20
  274. package/types/app/multisig/grouping.d.ts.map +1 -1
  275. package/types/app/multisig/multisig-workflows.d.ts +93 -23
  276. package/types/app/multisig/multisig-workflows.d.ts.map +1 -1
  277. package/types/app/multisig/proposals.d.ts +129 -0
  278. package/types/app/multisig/proposals.d.ts.map +1 -0
  279. package/types/app/multisig/proposing.d.ts +125 -0
  280. package/types/app/multisig/proposing.d.ts.map +1 -0
  281. package/types/app/notifications/notifying.d.ts +1 -1
  282. package/types/app/notifications/notifying.d.ts.map +1 -1
  283. package/types/app/notifications/signaling.d.ts +3 -1
  284. package/types/app/notifications/signaling.d.ts.map +1 -1
  285. package/types/app/protocol/parsering.d.ts +16 -1
  286. package/types/app/protocol/parsering.d.ts.map +1 -1
  287. package/types/app/protocol/protocol-processing.d.ts +9 -1
  288. package/types/app/protocol/protocol-processing.d.ts.map +1 -1
  289. package/types/app/queries/query-workflows.d.ts +98 -0
  290. package/types/app/queries/query-workflows.d.ts.map +1 -0
  291. package/types/app/runtime/agent-runtime.d.ts +79 -25
  292. package/types/app/runtime/agent-runtime.d.ts.map +1 -1
  293. package/types/app/runtime/cue-runtime.d.ts +2 -1
  294. package/types/app/runtime/cue-runtime.d.ts.map +1 -1
  295. package/types/app/runtime/delivery-outbox.d.ts +68 -0
  296. package/types/app/runtime/delivery-outbox.d.ts.map +1 -0
  297. package/types/app/runtime/doing.d.ts +27 -0
  298. package/types/app/runtime/doing.d.ts.map +1 -0
  299. package/types/app/runtime/ipex-auxiliaries.d.ts +74 -0
  300. package/types/app/runtime/ipex-auxiliaries.d.ts.map +1 -0
  301. package/types/app/runtime/operation-owners.d.ts +137 -0
  302. package/types/app/runtime/operation-owners.d.ts.map +1 -0
  303. package/types/app/runtime/retry-backoff.d.ts +49 -0
  304. package/types/app/runtime/retry-backoff.d.ts.map +1 -0
  305. package/types/app/runtime/workflow-contract.d.ts +79 -0
  306. package/types/app/runtime/workflow-contract.d.ts.map +1 -0
  307. package/types/app/transport/byte-source.d.ts +13 -10
  308. package/types/app/transport/byte-source.d.ts.map +1 -1
  309. package/types/app/transport/cesr-egress.d.ts +21 -7
  310. package/types/app/transport/cesr-egress.d.ts.map +1 -1
  311. package/types/app/transport/file-bytes.d.ts +11 -0
  312. package/types/app/transport/file-bytes.d.ts.map +1 -0
  313. package/types/app/transport/http-client.d.ts +3 -0
  314. package/types/app/transport/http-client.d.ts.map +1 -1
  315. package/types/app/transport/http-messenger.d.ts +15 -10
  316. package/types/app/transport/http-messenger.d.ts.map +1 -1
  317. package/types/app/transport/message-source.d.ts +1 -1
  318. package/types/app/transport/messengering.d.ts +2 -2
  319. package/types/app/transport/messengering.d.ts.map +1 -1
  320. package/types/app/transport/node-http-client.d.ts +10 -0
  321. package/types/app/transport/node-http-client.d.ts.map +1 -0
  322. package/types/app/transport/tcp-dialer.d.ts +21 -0
  323. package/types/app/transport/tcp-dialer.d.ts.map +1 -0
  324. package/types/cli/common/event-completion.d.ts +26 -0
  325. package/types/cli/common/event-completion.d.ts.map +1 -0
  326. package/types/cli/common/existing.d.ts.map +1 -1
  327. package/types/cli/common/runtime-workers.d.ts +23 -0
  328. package/types/cli/common/runtime-workers.d.ts.map +1 -0
  329. package/types/cli/credentials/ipex.d.ts.map +1 -1
  330. package/types/cli/credentials/vc.d.ts +1 -1
  331. package/types/cli/credentials/vc.d.ts.map +1 -1
  332. package/types/cli/endpoints/did.d.ts.map +1 -1
  333. package/types/cli/endpoints/oobi-clean.d.ts.map +1 -1
  334. package/types/cli/endpoints/oobi.d.ts +3 -1
  335. package/types/cli/endpoints/oobi.d.ts.map +1 -1
  336. package/types/cli/identity/challenge.d.ts +1 -1
  337. package/types/cli/identity/challenge.d.ts.map +1 -1
  338. package/types/cli/identity/delegate.d.ts +14 -1
  339. package/types/cli/identity/delegate.d.ts.map +1 -1
  340. package/types/cli/identity/incept.d.ts.map +1 -1
  341. package/types/cli/identity/init.d.ts.map +1 -1
  342. package/types/cli/identity/interact.d.ts.map +1 -1
  343. package/types/cli/identity/rotate.d.ts.map +1 -1
  344. package/types/cli/index.d.ts +4 -2
  345. package/types/cli/index.d.ts.map +1 -1
  346. package/types/cli/messaging/group-join.d.ts +53 -0
  347. package/types/cli/messaging/group-join.d.ts.map +1 -0
  348. package/types/cli/messaging/group-wait.d.ts +34 -0
  349. package/types/cli/messaging/group-wait.d.ts.map +1 -0
  350. package/types/cli/messaging/multisig.d.ts +36 -4
  351. package/types/cli/messaging/multisig.d.ts.map +1 -1
  352. package/types/cli/messaging/root-copy-lines.d.ts +39 -0
  353. package/types/cli/messaging/root-copy-lines.d.ts.map +1 -0
  354. package/types/cli/tools/annotate.d.ts.map +1 -1
  355. package/types/cli/tools/benchmark.d.ts.map +1 -1
  356. package/types/cli/tools/db-dump.d.ts.map +1 -1
  357. package/types/core/bytes.d.ts +2 -0
  358. package/types/core/bytes.d.ts.map +1 -1
  359. package/types/core/cues.d.ts +11 -0
  360. package/types/core/cues.d.ts.map +1 -1
  361. package/types/core/kel/delegation-ancestry.d.ts +41 -0
  362. package/types/core/kel/delegation-ancestry.d.ts.map +1 -0
  363. package/types/core/kel/eventing.d.ts.map +1 -1
  364. package/types/core/kel/kever.d.ts +5 -4
  365. package/types/core/kel/kever.d.ts.map +1 -1
  366. package/types/core/mailbox/kram-policy.d.ts +14 -0
  367. package/types/core/mailbox/kram-policy.d.ts.map +1 -1
  368. package/types/core/mailbox/kram-pruning.d.ts +1 -3
  369. package/types/core/mailbox/kram-pruning.d.ts.map +1 -1
  370. package/types/core/mailbox/kraming.d.ts +1 -1
  371. package/types/core/mailbox/kraming.d.ts.map +1 -1
  372. package/types/core/records.d.ts +61 -0
  373. package/types/core/records.d.ts.map +1 -1
  374. package/types/core/routing.d.ts +6 -0
  375. package/types/core/routing.d.ts.map +1 -1
  376. package/types/db/basing.d.ts +22 -25
  377. package/types/db/basing.d.ts.map +1 -1
  378. package/types/db/core/dber.d.ts +505 -0
  379. package/types/db/core/dber.d.ts.map +1 -0
  380. package/types/db/core/index.d.ts +4 -2
  381. package/types/db/core/index.d.ts.map +1 -1
  382. package/types/db/core/indexeddb-persistence.d.ts +59 -0
  383. package/types/db/core/indexeddb-persistence.d.ts.map +1 -0
  384. package/types/db/core/lmdb-opener.d.ts +17 -0
  385. package/types/db/core/lmdb-opener.d.ts.map +1 -0
  386. package/types/db/core/lmdber.d.ts +60 -383
  387. package/types/db/core/lmdber.d.ts.map +1 -1
  388. package/types/db/core/memstore.d.ts +129 -0
  389. package/types/db/core/memstore.d.ts.map +1 -0
  390. package/types/db/core/path-manager.d.ts +22 -45
  391. package/types/db/core/path-manager.d.ts.map +1 -1
  392. package/types/db/core/store-owner.d.ts +59 -0
  393. package/types/db/core/store-owner.d.ts.map +1 -0
  394. package/types/db/core/webdber.d.ts +127 -0
  395. package/types/db/core/webdber.d.ts.map +1 -0
  396. package/types/db/escrowing.d.ts +3 -3
  397. package/types/db/escrowing.d.ts.map +1 -1
  398. package/types/db/exchange/exchange-nests.d.ts.map +1 -1
  399. package/types/db/indexeddb.d.ts +37 -0
  400. package/types/db/indexeddb.d.ts.map +1 -0
  401. package/types/db/keeping.d.ts +14 -25
  402. package/types/db/keeping.d.ts.map +1 -1
  403. package/types/db/koming.d.ts +7 -8
  404. package/types/db/koming.d.ts.map +1 -1
  405. package/types/db/lmdb-stores.d.ts +45 -0
  406. package/types/db/lmdb-stores.d.ts.map +1 -0
  407. package/types/db/lmdb.d.ts +7 -0
  408. package/types/db/lmdb.d.ts.map +1 -0
  409. package/types/db/mailbox/mailboxing.d.ts +7 -21
  410. package/types/db/mailbox/mailboxing.d.ts.map +1 -1
  411. package/types/db/noting.d.ts +7 -12
  412. package/types/db/noting.d.ts.map +1 -1
  413. package/types/db/reger.d.ts +7 -11
  414. package/types/db/reger.d.ts.map +1 -1
  415. package/types/db/replay/witness-replay.d.ts +0 -2
  416. package/types/db/replay/witness-replay.d.ts.map +1 -1
  417. package/types/db/store-lock.d.ts +72 -0
  418. package/types/db/store-lock.d.ts.map +1 -0
  419. package/types/db/subing.d.ts +24 -25
  420. package/types/db/subing.d.ts.map +1 -1
  421. package/types/npm/db-indexeddb.d.ts +4 -0
  422. package/types/npm/db-indexeddb.d.ts.map +1 -0
  423. package/types/npm/db-lmdb.d.ts +4 -0
  424. package/types/npm/db-lmdb.d.ts.map +1 -0
  425. package/types/npm/runtime-node.d.ts +4 -0
  426. package/types/npm/runtime-node.d.ts.map +1 -0
  427. package/types/npm/runtime-web.d.ts +4 -0
  428. package/types/npm/runtime-web.d.ts.map +1 -0
  429. package/types/runtime/index.d.ts +48 -14
  430. package/types/runtime/index.d.ts.map +1 -1
  431. package/types/runtime/node.d.ts +15 -0
  432. package/types/runtime/node.d.ts.map +1 -0
  433. package/types/runtime/web/output-barrier.d.ts +30 -0
  434. package/types/runtime/web/output-barrier.d.ts.map +1 -0
  435. package/types/runtime/web/persistent-storage.d.ts +36 -0
  436. package/types/runtime/web/persistent-storage.d.ts.map +1 -0
  437. package/types/runtime/web.d.ts +11 -0
  438. package/types/runtime/web.d.ts.map +1 -0
  439. package/types/vdr/tel-publication.d.ts +6 -0
  440. package/types/vdr/tel-publication.d.ts.map +1 -1
  441. package/types/version.d.ts +2 -2
  442. package/esm/keri/npm/src/acdc/relating.js +0 -59
  443. package/esm/keri/npm/src/cli/common/tel-completion.js +0 -24
  444. package/esm/keri/npm/src/db/baser-defaults.js +0 -11
  445. package/types/acdc/relating.d.ts +0 -21
  446. package/types/acdc/relating.d.ts.map +0 -1
  447. package/types/cli/common/tel-completion.d.ts +0 -8
  448. package/types/cli/common/tel-completion.d.ts.map +0 -1
  449. package/types/db/baser-defaults.d.ts +0 -5
  450. package/types/db/baser-defaults.d.ts.map +0 -1
@@ -11,10 +11,10 @@
11
11
  */
12
12
  import { b, Cigar, concatBytes, Counter, Dater, Diger, NumberPrimitive, Prefixer, Saider, SerderACDC, SerderKERI, Siger, t, Verfer, Vrsn_1_0, } from "cesr-ts";
13
13
  import { attachmentCounterPayloadQb64b, attachmentCounterQb64b, attachmentOrdinal, resolveAttachmentGvrsn, } from "../core/attachment-countering.js";
14
- import { DatabaseNotOpenError, DatabaseOperationError, ValidationError } from "../core/errors.js";
14
+ import { DatabaseOperationError, ValidationError } from "../core/errors.js";
15
15
  import { RegistryRecord, RegStateRecord } from "../core/records.js";
16
16
  import { dgKey, splitOnKey } from "./core/keys.js";
17
- import { LMDBer } from "./core/lmdber.js";
17
+ import { StoreOwner } from "./core/store-owner.js";
18
18
  import { Broker } from "./escrowing.js";
19
19
  import { Komer } from "./koming.js";
20
20
  import { CapturedTelReplay, UnsupportedTelReplayError, } from "./replay/tel-replay.js";
@@ -40,17 +40,9 @@ function isRecord(value) {
40
40
  * Protocol evidence uses literal KERIpy `Reger` subkeys; observer receipt
41
41
  * evidence remains separate from local issuer publication state.
42
42
  */
43
- export class Reger extends LMDBer {
44
- constructor(options = {}) {
45
- const compat = options.compat ?? false;
46
- super(options, {
47
- tailDirPath: Reger.TailDirPath,
48
- cleanTailDirPath: "keri/clean/reg",
49
- altTailDirPath: compat ? Reger.CompatAltTailDirPath : Reger.AltTailDirPath,
50
- altCleanTailDirPath: compat ? ".keri/clean/reg" : ".tufa/clean/reg",
51
- tempPrefix: Reger.TempPrefix,
52
- maxNamedDBs: Reger.MaxNamedDBs,
53
- });
43
+ export class Reger extends StoreOwner {
44
+ constructor() {
45
+ super(...arguments);
54
46
  Object.defineProperty(this, "registries", {
55
47
  enumerable: true,
56
48
  configurable: true,
@@ -241,97 +233,97 @@ export class Reger extends LMDBer {
241
233
  }
242
234
  /** Open the root LMDB environment and bind the KERIpy `Reger` subdb surface. */
243
235
  *reopen(options = {}) {
244
- const opened = yield* super.reopen(options);
236
+ const opened = yield* this.store.reopen(options);
245
237
  if (!opened) {
246
238
  return false;
247
239
  }
248
240
  try {
249
- this.tvts = new BytesSuber(this, { subkey: "tvts." });
250
- this.tels = new CesrOnSuber(this, {
241
+ this.tvts = new BytesSuber(this.store, { subkey: "tvts." });
242
+ this.tels = new CesrOnSuber(this.store, {
251
243
  subkey: "tels.",
252
244
  ctor: Diger,
253
245
  });
254
- this.ancs = new CatCesrSuber(this, {
246
+ this.ancs = new CatCesrSuber(this.store, {
255
247
  subkey: "ancs.",
256
248
  ctor: [NumberPrimitive, Diger],
257
249
  });
258
- this.baks = new IoDupSuber(this, { subkey: "baks." });
259
- this.tibs = new CesrDupSuber(this, {
250
+ this.baks = new IoDupSuber(this.store, { subkey: "baks." });
251
+ this.tibs = new CesrDupSuber(this.store, {
260
252
  subkey: "tibs.",
261
253
  ctor: Siger,
262
254
  });
263
- this.oots = new OnIoDupSuber(this, { subkey: "oots" });
264
- this.twes = new OnIoDupSuber(this, { subkey: "twes" });
265
- this.taes = new OnIoDupSuber(this, { subkey: "taes" });
266
- this.tets = new CesrSuber(this, {
255
+ this.oots = new OnIoDupSuber(this.store, { subkey: "oots" });
256
+ this.twes = new OnIoDupSuber(this.store, { subkey: "twes" });
257
+ this.taes = new OnIoDupSuber(this.store, { subkey: "taes" });
258
+ this.tets = new CesrSuber(this.store, {
267
259
  subkey: "tets.",
268
260
  ctor: Dater,
269
261
  });
270
- this.states = new Komer(this, {
262
+ this.states = new Komer(this.store, {
271
263
  subkey: "stts.",
272
264
  recordClass: RegStateRecord,
273
265
  });
274
- this.creds = new SerderSuber(this, {
266
+ this.creds = new SerderSuber(this.store, {
275
267
  subkey: "creds.",
276
268
  ctor: SerderACDC,
277
269
  });
278
- this.cancs = new CatCesrSuber(this, {
270
+ this.cancs = new CatCesrSuber(this.store, {
279
271
  subkey: "cancs.",
280
272
  ctor: [Prefixer, NumberPrimitive, Diger],
281
273
  });
282
- this.spsgs = new CesrIoSetSuber(this, {
274
+ this.spsgs = new CesrIoSetSuber(this.store, {
283
275
  subkey: "ssgs.",
284
276
  ctor: Siger,
285
277
  });
286
- this.spcgs = new CatCesrIoSetSuber(this, {
278
+ this.spcgs = new CatCesrIoSetSuber(this.store, {
287
279
  subkey: "scgs.",
288
280
  ctor: [Verfer, Cigar],
289
281
  });
290
- this.saved = new CesrSuber(this, {
282
+ this.saved = new CesrSuber(this.store, {
291
283
  subkey: "saved.",
292
284
  ctor: Saider,
293
285
  });
294
- this.issus = new CesrDupSuber(this, {
286
+ this.issus = new CesrDupSuber(this.store, {
295
287
  subkey: "issus.",
296
288
  ctor: Saider,
297
289
  });
298
- this.subjs = new CesrDupSuber(this, {
290
+ this.subjs = new CesrDupSuber(this.store, {
299
291
  subkey: "subjs.",
300
292
  ctor: Saider,
301
293
  });
302
- this.schms = new CesrDupSuber(this, {
294
+ this.schms = new CesrDupSuber(this.store, {
303
295
  subkey: "schms.",
304
296
  ctor: Saider,
305
297
  });
306
- this.mre = new CesrSuber(this, { subkey: "mre.", ctor: Dater });
307
- this.mce = new CesrSuber(this, { subkey: "mce.", ctor: Dater });
308
- this.mse = new CesrSuber(this, { subkey: "mse.", ctor: Dater });
309
- this.txnsb = new Broker(this, "txn.");
310
- this.regs = new Komer(this, {
298
+ this.mre = new CesrSuber(this.store, { subkey: "mre.", ctor: Dater });
299
+ this.mce = new CesrSuber(this.store, { subkey: "mce.", ctor: Dater });
300
+ this.mse = new CesrSuber(this.store, { subkey: "mse.", ctor: Dater });
301
+ this.txnsb = new Broker(this.store, "txn.");
302
+ this.regs = new Komer(this.store, {
311
303
  subkey: "regs.",
312
304
  recordClass: RegistryRecord,
313
305
  });
314
- this.tpwe = new CatCesrIoSetSuber(this, {
306
+ this.tpwe = new CatCesrIoSetSuber(this.store, {
315
307
  subkey: "tpwe.",
316
308
  ctor: [Prefixer, NumberPrimitive, Diger],
317
309
  });
318
- this.tmse = new CatCesrIoSetSuber(this, {
310
+ this.tmse = new CatCesrIoSetSuber(this.store, {
319
311
  subkey: "tmse.",
320
312
  ctor: [Prefixer, NumberPrimitive, Diger],
321
313
  });
322
- this.tede = new CatCesrIoSetSuber(this, {
314
+ this.tede = new CatCesrIoSetSuber(this.store, {
323
315
  subkey: "tede.",
324
316
  ctor: [Prefixer, NumberPrimitive, Saider],
325
317
  });
326
- this.ctel = new CesrSuber(this, {
318
+ this.ctel = new CesrSuber(this.store, {
327
319
  subkey: "ctel.",
328
320
  ctor: Saider,
329
321
  });
330
- this.cmse = new SerderSuber(this, {
322
+ this.cmse = new SerderSuber(this.store, {
331
323
  subkey: "cmse.",
332
324
  ctor: SerderACDC,
333
325
  });
334
- this.ccrd = new SerderSuber(this, {
326
+ this.ccrd = new SerderSuber(this.store, {
335
327
  subkey: "ccrd.",
336
328
  ctor: SerderACDC,
337
329
  });
@@ -372,7 +364,11 @@ export class Reger extends LMDBer {
372
364
  /** Capture one TEL extent without body reads; each reader releases its cursor before yielding. */
373
365
  replay(pre, { gvrsn = Vrsn_1_0, genusify = false } = {}) {
374
366
  let end = null;
375
- for (const entry of this.tels.sdb.getRange({ start: b(`${pre}.${"f".repeat(32)}`), reverse: true, limit: 1 })) {
367
+ for (const entry of this.store.scan(this.tels.sdb, {
368
+ start: b(`${pre}.${"f".repeat(32)}`),
369
+ reverse: true,
370
+ limit: 1,
371
+ })) {
376
372
  const [prefix, ordinal] = splitOnKey(entry.key);
377
373
  if (t(prefix) === pre)
378
374
  end = ordinal;
@@ -497,68 +493,10 @@ export class Reger extends LMDBer {
497
493
  return sources;
498
494
  }
499
495
  }
500
- Object.defineProperty(Reger, "TailDirPath", {
501
- enumerable: true,
502
- configurable: true,
503
- writable: true,
504
- value: "keri/reg"
505
- });
506
- Object.defineProperty(Reger, "AltTailDirPath", {
507
- enumerable: true,
508
- configurable: true,
509
- writable: true,
510
- value: ".tufa/reg"
511
- });
512
- Object.defineProperty(Reger, "CompatAltTailDirPath", {
496
+ /** Placement of this store kind. */
497
+ Object.defineProperty(Reger, "Family", {
513
498
  enumerable: true,
514
499
  configurable: true,
515
500
  writable: true,
516
- value: ".keri/reg"
501
+ value: { tail: "reg", maxTables: 96 }
517
502
  });
518
- Object.defineProperty(Reger, "TempPrefix", {
519
- enumerable: true,
520
- configurable: true,
521
- writable: true,
522
- value: "keri_reg_"
523
- });
524
- Object.defineProperty(Reger, "MaxNamedDBs", {
525
- enumerable: true,
526
- configurable: true,
527
- writable: true,
528
- value: 96
529
- });
530
- /** Transfer a ready `Reger` to its caller, closing unreturned acquisitions on failure or cancellation. */
531
- export function* createReger(options = {}) {
532
- const reger = new Reger(options);
533
- let delivered = false;
534
- let failure;
535
- try {
536
- const opened = yield* reger.reopen(options);
537
- if (!opened) {
538
- throw new DatabaseNotOpenError("Failed to open Reger");
539
- }
540
- delivered = true;
541
- return reger;
542
- }
543
- catch (error) {
544
- failure = { error };
545
- throw error;
546
- }
547
- finally {
548
- if (!delivered) {
549
- try {
550
- yield* reger.close();
551
- }
552
- catch (error) {
553
- if (failure) {
554
- // deno-lint-ignore no-unsafe-finally -- Preserve the operation failure alongside shutdown failure.
555
- throw new AggregateError([failure.error, error], "Database acquisition and close failed", {
556
- cause: failure.error,
557
- });
558
- }
559
- // deno-lint-ignore no-unsafe-finally -- A shutdown failure must propagate.
560
- throw error;
561
- }
562
- }
563
- }
564
- }
@@ -53,33 +53,15 @@ export class CapturedWitnessReplay {
53
53
  __classPrivateFieldSet(this, _CapturedWitnessReplay_db, db, "f");
54
54
  Object.freeze(this);
55
55
  }
56
- /** Copy one duplicate through the pinned binary seek branch; the facade never leaves this synchronous read. */
57
- readDuplicate(key, start) {
58
- const db = __classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").kels.sdb;
59
- if (db.encoding !== "binary")
60
- throw new DatabaseOperationError("Witness replay requires binary KEL rows");
61
- // Pinned lmdb-js 3.5.3 dereferences encoder.writeKey before its binary-value seek branch.
62
- // This private read facade supplies that missing object without mutating the borrowed DB.
63
- const seek = Object.create(db);
64
- seek.encoder = db.encoder ?? {};
65
- const rows = seek.getValues(key, { start, limit: 1 })[Symbol.iterator]();
66
- try {
67
- const row = rows.next();
68
- return row.done ? undefined : new Uint8Array(row.value);
69
- }
70
- finally {
71
- rows.return?.();
72
- }
73
- }
74
56
  /** Seek after one physical insertion proem, closing every cursor before hydration or yield. */
75
57
  *[(_CapturedWitnessReplay_db = new WeakMap(), Symbol.iterator)]() {
76
58
  const prefix = b(this.pre);
77
59
  let next = this.from, start, bucketDone = false;
78
60
  while (next <= this.end) {
79
61
  const key = onKey(prefix, next);
80
- const value = bucketDone ? undefined : this.readDuplicate(key, start);
62
+ const value = bucketDone ? undefined : __classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").seekVal(__classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").kels.sdb, key, start);
81
63
  if (!value) {
82
- const keys = __classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").kels.sdb.getKeys({ start: key, exclusiveStart: true, limit: 1 })[Symbol.iterator]();
64
+ const keys = __classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").scanKeys(__classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").kels.sdb, { start: key, exclusiveStart: true, limit: 1 })[Symbol.iterator]();
83
65
  let following;
84
66
  try {
85
67
  const row = keys.next();
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Single-writer lock for a browser store identity.
3
+ *
4
+ * `WebDBer` holds a snapshot of its persisted rows taken at open, so two tabs
5
+ * writing the same identity would each overwrite the other's commits. `indexedDbOpener`
6
+ * takes this lock in its first store's `reopen`, before anything loads, and holds it
7
+ * until its last store of the identity closes; `acquireStoreLock` is public for hosts
8
+ * that compose stores their own way.
9
+ */
10
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
11
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
12
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
13
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
14
+ };
15
+ var _StoreLockGroup_entries;
16
+ import { AppError } from "../core/errors.js";
17
+ /** Another tab, worker or window holds the store; `key`, `storeName` and `storeBase` support a UI message. */
18
+ export class StoreLockHeldError extends AppError {
19
+ constructor(key, storeName, storeBase) {
20
+ super(`Store ${JSON.stringify(storeName ?? "")} is already open in another tab or window`);
21
+ Object.defineProperty(this, "key", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: key
26
+ });
27
+ Object.defineProperty(this, "storeName", {
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true,
31
+ value: storeName
32
+ });
33
+ Object.defineProperty(this, "storeBase", {
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true,
37
+ value: storeBase
38
+ });
39
+ }
40
+ }
41
+ /** `navigator.locks` is absent (insecure context or old engine), so single-writer cannot be enforced. */
42
+ export class StoreLockUnsupportedError extends AppError {
43
+ constructor() {
44
+ super("Web Locks API unavailable; refusing to open the store without a single-writer lock");
45
+ }
46
+ }
47
+ /**
48
+ * The lock name for a store identity. It matches `IndexedDbPersistence`'s database
49
+ * naming minus the family, so one lock covers every store family of the identity.
50
+ */
51
+ export function storeLockKey(identity) {
52
+ return `keri-ts:store:${JSON.stringify([identity.base ?? "", identity.name ?? "", identity.temp ? "temp" : "durable"])}`;
53
+ }
54
+ /**
55
+ * Take the exclusive lock for `identity` without waiting.
56
+ *
57
+ * @throws StoreLockHeldError when another holder has it.
58
+ * @throws StoreLockUnsupportedError when no lock manager exists; never proceeds unlocked.
59
+ */
60
+ export async function acquireStoreLock(identity, options = {}) {
61
+ const locks = options.locks === undefined
62
+ ? globalThis.navigator?.locks
63
+ : options.locks;
64
+ if (!locks)
65
+ throw new StoreLockUnsupportedError();
66
+ const key = storeLockKey(identity);
67
+ let letGo;
68
+ const held = new Promise((resolve) => letGo = resolve);
69
+ let done;
70
+ const acquired = await new Promise((resolve, reject) => {
71
+ done = locks.request(key, { mode: "exclusive", ifAvailable: true }, (lock) => {
72
+ resolve(lock !== null);
73
+ return lock === null ? undefined : held;
74
+ });
75
+ done.catch(reject);
76
+ });
77
+ if (!acquired)
78
+ throw new StoreLockHeldError(key, identity.name, identity.base);
79
+ return {
80
+ key,
81
+ release: () => {
82
+ letGo();
83
+ return done.then(() => { });
84
+ },
85
+ };
86
+ }
87
+ /**
88
+ * Reference-counted store locks for one opener: every store of an identity shares
89
+ * one lock, taken by the first reference and released by the last.
90
+ */
91
+ export class StoreLockGroup {
92
+ constructor(options = {}) {
93
+ Object.defineProperty(this, "options", {
94
+ enumerable: true,
95
+ configurable: true,
96
+ writable: true,
97
+ value: options
98
+ });
99
+ _StoreLockGroup_entries.set(this, new Map());
100
+ }
101
+ /**
102
+ * Take a reference, acquiring the lock if no other store of the identity holds it.
103
+ *
104
+ * @throws StoreLockHeldError when another holder has the identity.
105
+ * @throws StoreLockUnsupportedError when no lock manager exists.
106
+ */
107
+ async acquire(identity) {
108
+ const key = storeLockKey(identity);
109
+ let entry = __classPrivateFieldGet(this, _StoreLockGroup_entries, "f").get(key);
110
+ while (entry?.releasing) {
111
+ await entry.releasing;
112
+ entry = __classPrivateFieldGet(this, _StoreLockGroup_entries, "f").get(key);
113
+ }
114
+ if (!entry) {
115
+ entry = { refs: 0, lock: acquireStoreLock(identity, this.options) };
116
+ __classPrivateFieldGet(this, _StoreLockGroup_entries, "f").set(key, entry);
117
+ }
118
+ const mine = entry;
119
+ mine.refs++;
120
+ try {
121
+ await mine.lock;
122
+ }
123
+ catch (error) {
124
+ mine.refs--;
125
+ if (__classPrivateFieldGet(this, _StoreLockGroup_entries, "f").get(key) === mine)
126
+ __classPrivateFieldGet(this, _StoreLockGroup_entries, "f").delete(key);
127
+ throw error;
128
+ }
129
+ let released = false;
130
+ return {
131
+ release: async () => {
132
+ if (released)
133
+ return;
134
+ released = true;
135
+ if (--mine.refs > 0)
136
+ return;
137
+ const lock = await mine.lock;
138
+ mine.releasing = lock.release();
139
+ try {
140
+ await mine.releasing;
141
+ }
142
+ finally {
143
+ if (__classPrivateFieldGet(this, _StoreLockGroup_entries, "f").get(key) === mine)
144
+ __classPrivateFieldGet(this, _StoreLockGroup_entries, "f").delete(key);
145
+ }
146
+ },
147
+ };
148
+ }
149
+ }
150
+ _StoreLockGroup_entries = new WeakMap();
@@ -90,7 +90,7 @@ export class SuberBase {
90
90
  value: void 0
91
91
  });
92
92
  this.db = db;
93
- this.sdb = this.db.openDB(subkey, dupsort);
93
+ this.sdb = this.db.openTable(subkey, { dupsort });
94
94
  this.sep = sep;
95
95
  this.verify = verify;
96
96
  }
@@ -0,0 +1,2 @@
1
+ /** npm subpath entrypoint for `keri-ts/db/indexeddb`. */
2
+ export * from "../db/indexeddb.js";
@@ -0,0 +1,3 @@
1
+ /** npm subpath entrypoint for `keri-ts/db/indexeddb`. */
2
+ import "../_dnt.polyfills.js";
3
+ export * from "../db/indexeddb.js";
@@ -0,0 +1,3 @@
1
+ /** npm subpath entrypoint for `keri-ts/db/lmdb`. */
2
+ import "../_dnt.polyfills.js";
3
+ export * from "../db/lmdb.js";
@@ -0,0 +1,2 @@
1
+ /** npm subpath entrypoint for `keri-ts/db`. */
2
+ export * from "../db/index.js";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * npm package root entrypoint.
3
+ *
4
+ * Boundary rule:
5
+ * - root/default imports remain browser-safe
6
+ * - runtime and LMDB-backed storage move to explicit subpaths
7
+ */
8
+ export * from "../library/index.js";
9
+ export { BUILD_METADATA, DISPLAY_VERSION, PACKAGE_VERSION, } from "../version.js";
@@ -0,0 +1,3 @@
1
+ /** npm subpath entrypoint for `keri-ts/runtime/node`. */
2
+ import "../_dnt.polyfills.js";
3
+ export * from "../runtime/node.js";
@@ -0,0 +1,2 @@
1
+ /** npm subpath entrypoint for `keri-ts/runtime/web`. */
2
+ export * from "../runtime/web.js";
@@ -0,0 +1,3 @@
1
+ /** npm subpath entrypoint for `keri-ts/runtime/web`. */
2
+ import "../_dnt.polyfills.js";
3
+ export * from "../runtime/web.js";
@@ -0,0 +1,2 @@
1
+ /** npm subpath entrypoint for `keri-ts/runtime`. */
2
+ export * from "../runtime/index.js";
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Supported non-browser-safe KERI operations and data contracts.
2
+ * Supported KERI operations and data contracts that need no host sockets or
3
+ * files. TCP transport and the local-file reader live in `keri-ts/runtime/node`.
3
4
  *
4
5
  * This curated surface serves library users and Tufa composition. Private
5
6
  * continuation state, handler installation, reply-slot bookkeeping and internal
@@ -14,17 +15,17 @@ export { Reactor, } from "../app/protocol/reactor.js";
14
15
  export { abortable, rethrowCleanupFailure, } from "../app/runtime/abortable.js";
15
16
  export { createAgentRuntime, runAgentRuntime, runAgentRuntimeUntil, runtimeOobiConverged, settleMailboxPollBatch, settleRuntimeIngress, } from "../app/runtime/agent-runtime.js";
16
17
  export { cueDo, processCuesOnce, } from "../app/runtime/cue-runtime.js";
17
- export { chunkBytes, collectBytes, fileBytes, } from "../app/transport/byte-source.js";
18
+ export { chunkBytes, collectBytes, } from "../app/transport/byte-source.js";
18
19
  export { CesrHttpRefusal, postCesr, requestFrame, } from "../app/transport/cesr-egress.js";
19
20
  export { buildCesrRequest, buildCesrStreamRequest, CESR_ATTACHMENT_HEADER, CESR_CONTENT_TYPE, CESR_DESTINATION_HEADER, isCesrContentType, isMultipartFormContentType, KERIPY_CESR_JSON_CONTENT_TYPE, MULTIPART_CONTENT_TYPE, readCesrRequestBytes, readMailboxAdminRequest, readRequiredCesrRequestBytes, requestBytes, } from "../app/transport/cesr-http.js";
20
21
  export { FetchHttpClient, } from "../app/transport/http-client.js";
21
- export { socketBytes, } from "../app/transport/socket-source.js";
22
- export { TCPMessenger, } from "../app/transport/tcp-messenger.js";
23
- export { openTcpConnection, sendCesrTcp, sendCesrTcpFrame, sendCesrTcpSocket, streamCesrTcp, writeCesrTcpSocket, } from "../app/transport/tcp-egress.js";
22
+ export { requireTcpDialer } from "../app/transport/tcp-dialer.js";
24
23
  export { TransportError } from "../app/transport/transport-error.js";
25
24
  // Controller state, credentials and protocol operations.
26
- export { evaluateChain } from "../acdc/chaining.js";
27
- export { decodePublicKey, deriveRoot, Dhke, generateKeyPair, } from "../acdc/dhking.js";
25
+ export { RegistryAuthor } from "../acdc/authoring.js";
26
+ export { DEFAULT_GRANT_WALK, evaluateChain, } from "../acdc/chaining.js";
27
+ export { BaserDerivedUpdateStore, MemoryDerivedUpdateStore, RegistryCustody, } from "../acdc/custody.js";
28
+ export { decodePublicKey, deriveRoot, Dhke, generateKeyPair, grantTransactionId, } from "../acdc/dhking.js";
28
29
  export { RegistryRoot, RootDeferred, rootExn, RootRefused, RootUnverified, } from "../acdc/salting.js";
29
30
  export { Unblind } from "../acdc/unblinding.js";
30
31
  export { Oobiery, oobiRequestExn, } from "../app/bootstrap/oobiery.js";
@@ -36,26 +37,34 @@ export { EssrRecipient, } from "../app/exchanges/essr.js";
36
37
  export { createExchangeMessage, sendExchangeMessage, } from "../app/exchanges/exchange-messaging.js";
37
38
  export { Exchanger, RouteRefuser, } from "../app/exchanges/exchanging.js";
38
39
  export { findVerifiedChallengeResponse, generateChallengeWords, markChallengeVerified, parseChallengeWords, } from "../app/identity/challenging.js";
39
- export { Configer, createConfiger, } from "../app/identity/configing.js";
40
40
  export { Anchorer, } from "../app/identity/delegating.js";
41
41
  export { endpointRoleAccepted, loadAcceptedEndpointRole, proposeGroupEndpointRole, } from "../app/identity/endpoint-roleing.js";
42
- export { acceptedEventReplayMessage, createHabery, Hab, Habery, } from "../app/identity/habbing.js";
42
+ export { beginDelegation, completeEvent, DELEGATION_WAIT_TIMEOUT_MS, delegationStatus, eventStatus, receiptEvent, waitForDelegation, } from "../app/identity/event-completion.js";
43
+ export { acceptedEventReplayMessage, Hab, Habery, openHabery, } from "../app/identity/habbing.js";
43
44
  export { Algos, Manager, } from "../app/identity/keeping.js";
44
45
  export { Organizer, } from "../app/identity/organizing.js";
46
+ export { IpexAdmitter } from "../app/ipex/ipex-admitting.js";
45
47
  export { ipexExnBody, prepareIpexExn } from "../app/ipex/ipex-building.js";
46
48
  export { credentialPresentationArtifacts, credentialSaidFromGrant, ipexCredentialAdmit, ipexCredentialGrant, processCredentialPresentationArtifacts, storedGrantArtifacts, } from "../app/ipex/ipex-credentialing.js";
49
+ export { anchorExchange as anchorIpexExchange, exchangeWire, IpexDiscloser, } from "../app/ipex/ipex-discloser.js";
47
50
  export { walkIpexGraph } from "../app/ipex/ipex-graph.js";
48
51
  export { approveStoredMultisigIpexWrappers, prepareAcdcV2GroupIpex, publishInitialGroupIpex, requireAcdcV2GroupUse, sendCompletedGroupIpex, } from "../app/ipex/ipex-grouping.js";
49
52
  export { acceptedRegistryEvidence, authenticateIpexNode, issuedNodeVerdict, } from "../app/ipex/ipex-node-authentication.js";
53
+ export { ipexGrantWalk } from "../app/ipex/ipex-v2.js";
50
54
  export { IPEX_GRANT_ROUTE, IPEX_ROUTES, ipexAdmitExn, ipexAgreeExn, ipexApplyExn, ipexGrantExn, ipexOfferExn, ipexSpurnExn, } from "../app/ipex/ipexing.js";
55
+ export { KEL_PUBLISHER_PACING, KEL_PUBLISHER_SWEEP_TOCKS, KEL_PUBLISHER_TOCK_MS, KelPublisher, kelPublisherDo, } from "../app/mailbox/kel-publisher.js";
56
+ export { addMailbox, completeGroupMailbox, completeMailboxAdmin, mailboxAdminUrl, mailboxStatus, proposeGroupMailbox, removeMailbox, requireMailboxEndpointUrl, waitForMailboxState, } from "../app/mailbox/mailbox-admin.js";
51
57
  export { MailboxDirector, } from "../app/mailbox/mailbox-director.js";
52
58
  export { MailboxPoller, } from "../app/mailbox/mailbox-poller.js";
53
59
  export { consumeMailboxSse, parseMailboxSse, readMailboxSseBody, } from "../app/mailbox/mailbox-sse.js";
54
60
  export { endpointBasePath, fetchEndpointUrls, mailboxPollEndpoints, mailboxQueryTopics, mailboxTopicKey, preferredUrl, resolveHostedEndpointPath, } from "../app/mailbox/mailboxing.js";
55
- export { groupSigningMembers, groupWitnesserSelection, isLocalGroupHab, latestGroupContribution, localGroupMember, } from "../app/multisig/group-members.js";
61
+ export { Counselor, DEFAULT_FALLBACK_AFTER_MS, RECEIPT_BACKOFF_MS, waitForGroupEvent, } from "../app/multisig/counseling.js";
62
+ export { groupElectedMember, groupSigningMembers, groupWitnesser, groupWitnesserSelection, isLocalGroupHab, latestGroupContribution, localGroupMember, } from "../app/multisig/group-members.js";
56
63
  export { Multiplexor, MULTISIG_ROUTES, multisigExn, multisigExnBody, multisigInceptExn, multisigInteractExn, multisigIpexProofExn, multisigIssueExn, multisigQueryExn, multisigRegistryInceptExn, multisigRevokeExn, multisigRotateExn, multisigRpyExn, } from "../app/multisig/grouping.js";
57
64
  export { signGroupMessage } from "../app/multisig/multisig-messaging.js";
58
65
  export { approveAcdcV2Registry, publishAcdcV2Registry } from "../app/multisig/multisig-workflows.js";
66
+ export { approveGroupProposal, dismissGroupProposal, findGroupProposal, listGroupProposals, } from "../app/multisig/proposals.js";
67
+ export { proposeCredentialIssue, proposeCredentialRegistry, proposeCredentialRevocation, proposeGroupInception, proposeGroupInteraction, proposeGroupRotation, proposeRegistryEvent, settleProposedRotation, } from "../app/multisig/proposing.js";
59
68
  export { Notifier, } from "../app/notifications/notifying.js";
60
69
  export { Signal, Signaler, } from "../app/notifications/signaling.js";
61
70
  export { RawRecord } from "../core/records.js";
@@ -72,6 +81,8 @@ export { matchesRegistrySeal, vet, vetBinds, vetBlind, vetBound, } from "../acdc
72
81
  /** ACDC v2 services are distinct from the legacy VDR Regery/Registry exports. */
73
82
  export { createRegery as createAcdcV2Regery, Regery as AcdcV2Regery, Registry as AcdcV2Registry, } from "../acdc/registraring.js";
74
83
  export { validateSchema as validateAcdcSchema } from "../acdc/scheming.js";
84
+ export { deliverRegistryRoots, replicateRootCopies, replicateRootCopy, resealRootCopies, RootResealBudgetMs, } from "../app/credentials/root-replicating.js";
85
+ export { RootReplicator, } from "../app/credentials/root-replicator.js";
75
86
  export { publishPendingTel } from "../app/credentials/tel-publishing.js";
76
87
  export { Deck } from "../core/deck.js";
77
88
  export { AppError, DatabaseError, DatabaseKeyError, DatabaseNotOpenError, DatabaseOperationError, InvalidPathNameError, PathError, ValidationError, } from "../core/errors.js";
@@ -80,7 +91,7 @@ export { exchange } from "../core/exchange/protocol-exchanging.js";
80
91
  export { Kevery, } from "../core/kel/eventing.js";
81
92
  export { Kever, } from "../core/kel/kever.js";
82
93
  export { consoleLogger, getLogLevel, LOG_LEVELS, noopLogger, setLogLevel, } from "../core/logger.js";
83
- export { Kramer } from "../core/mailbox/kraming.js";
94
+ export { DEFAULT_KRAM_CACHES, Kramer } from "../core/mailbox/kraming.js";
84
95
  export { CREDENTIAL_MAILBOX_TOPIC, DELEGATE_MAILBOX_TOPIC, normalizeMbxTopicCursor, OOBI_MAILBOX_TOPIC, RECEIPT_MAILBOX_TOPIC, REPLAY_MAILBOX_TOPIC, REPLY_MAILBOX_TOPIC, } from "../core/mailbox/mailbox-topics.js";
85
96
  export { incept, interact, query, reply, rotate } from "../core/protocol-eventing.js";
86
97
  export { messageAttachmentGroups, messagize } from "../core/protocol-serialization.js";
@@ -104,7 +115,42 @@ export { makeNowIso8601, timestampMicros, } from "../time/mod.js";
104
115
  export { HTTPMessenger } from "../app/transport/http-messenger.js";
105
116
  export { HTTPStreamMessenger } from "../app/transport/http-stream-messenger.js";
106
117
  export { messengerFrom, streamMessengerFrom } from "../app/transport/messengering.js";
107
- export { TCPStreamMessenger } from "../app/transport/tcp-stream-messenger.js";
108
118
  export { systemClock } from "../app/runtime/runtime-clock.js";
109
119
  export { AnchorQuerier, KeyStateNoticer, LogQuerier, SeqNoQuerier } from "../app/queries/querying.js";
110
120
  export { WitnessInquisitor } from "../app/queries/witness-inquisitor.js";
121
+ // Library OOBI resolution and key-state/anchor queries (begin, status, wait).
122
+ export { beginOobi, OOBI_RESOLVE_TIMEOUT_MS, oobiStatus, resolveOobi, waitForOobi, } from "../app/bootstrap/oobi-resolving.js";
123
+ export { anchorQueryStatus, beginAnchorQuery, beginKeyStateQuery, QUERY_TIMEOUT_MS, queryAnchor, queryKeyState, requireQueryRequester, } from "../app/queries/query-workflows.js";
124
+ export { MemoryChangeSink, observeUntil, signalerChangeSink, } from "../app/runtime/workflow-contract.js";
125
+ // Library poll-and-settle for credential IPEX arrivals (settle, status, wait).
126
+ export { ipexArrivalStatus, ipexBaseline, MailboxIntakeTally, settleStoredGrants, waitForIpexArrival, } from "../app/mailbox/ipex-arrival.js";
127
+ // Runtime-owned group IPEX messages (a group holder's Admit): propose, approve, status, wait.
128
+ export { abandonGroupIpex, approveGroupIpex, GROUP_IPEX_COLLECT_MS, GROUP_IPEX_RETRY_BOUND_MS, GroupIpexOperations, groupIpexProposals, groupIpexStatus, proposeGroupAdmit, proposeGroupIpex, proposeGroupIpexAfter, waitForGroupIpex, } from "../app/ipex/group-ipex.js";
129
+ export { RETRY_BASE_MS, RETRY_MAX_MS, RetryBackoff } from "../app/runtime/retry-backoff.js";
130
+ // Runtime-owned group DH issuance: consent calls for the custodian and the members, election read, proof export.
131
+ export { approveGroupIssuance, approveGroupIssuanceExchange, followGroupIssuanceProof, groupIssuanceElection, groupIssuanceProof, groupIssuanceProposals, prepareGroupIssuance, proposeGroupIssuance, } from "../app/ipex/group-issuance.js";
132
+ // Runtime-owned DH issuance operations, single-signature and group (begin, process, status, wait, abandon).
133
+ export { abandonIssuance, admitIssuance, approveIssuanceExchange, beginIssuance, deliverIssuanceAdmit, ISSUANCE_RETRY_BOUND_MS, ISSUANCE_SWEEP_MS, IssuanceOperations, issuanceStatus, pendingGroupGrants, pendingIssuanceGrants, posterDelivery, prepareIssuanceGrant, proposeIssuance, rebuildIssuanceAdmit, waitForIssuance, } from "../app/ipex/issuance.js";
134
+ export { ADMIT_DELIVERY_TIMEOUT_MS, admitAndDeliver, receiveIssuance, } from "../app/ipex/receive-issuance.js";
135
+ // Runtime-owned single-signature IPEX presentation operations (present, process, status, wait, abandon).
136
+ export { abandonPresentation, deliverPreparedGrant, preparePresentation, present, PRESENTATION_RETRY_BOUND_MS, PresentationOperations, presentationStatus, proposeGroupPresentation, resendPresentation, waitForPresentation, } from "../app/ipex/presenting.js";
137
+ export { pendingPresentations } from "../app/ipex/pending-presentations.js";
138
+ // Exact public Grant files for a group presentation (prepare, resume), and the delivery outbox with retry.
139
+ export { preparePresentationFile, resumePresentationFile, } from "../app/ipex/presentation-files.js";
140
+ export { DeliveryOutbox, } from "../app/runtime/delivery-outbox.js";
141
+ // Runtime-owned single-signature IPEX Unblind operations (request, approve, process, status, wait, abandon).
142
+ export { abandonUnblinding, answerUnblind, requestUnblind, UnblindingOperations, unblindingStatus, waitForUnblinding, } from "../app/ipex/unblinding-workflow.js";
143
+ // Fixed-tock doers.
144
+ export { doEvery } from "../app/runtime/doing.js";
145
+ // Operations owners composed by the runtime.
146
+ export { OWNER_PACING, OWNER_SWEEP_TOCKS, OWNER_TOCK_MS, OwnerHealth, } from "../app/runtime/operation-owners.js";
147
+ // Library delegator approval (list, approve, status, wait, dismiss).
148
+ export { approveDelegation, DELEGATION_APPROVAL_TIMEOUT_MS, delegationApprovalStatus, dismissDelegation, listPendingDelegations, proposeGroupDelegationApproval, requestDelegatedEvent, settleDelegationApproval, waitForDelegationAnchor, waitForDelegationApproval, waitForPendingDelegation, } from "../app/identity/delegation-approval.js";
149
+ // Library TEL completion status/waits and challenge respond/status/wait.
150
+ export { REGISTRY_WAIT_POLL_MS, registryEventRef, registryEventStatus, settleRegistryEvent, waitForRegistryEvent, } from "../app/credentials/registry-settling.js";
151
+ export { issuedCredentialStatus, telEventStatus, waitForIssuedCredential, waitForTelEvent, } from "../app/credentials/tel-completion.js";
152
+ export { challengeStatus, respondToChallenge, waitForChallengeResponse, } from "../app/identity/challenging.js";
153
+ // Library legacy IPEX conversation (apply, offer, agree, spurn; status and wait).
154
+ export { ipexExchangeStatus, requireIpexPrior, requireIpexSender, sendIpexAgree, sendIpexApply, sendIpexOffer, sendIpexSpurn, waitForIpexExchange, } from "../app/ipex/ipex-conversation.js";
155
+ // Library legacy IPEX grant, admit and credential settle.
156
+ export { requireAdmittableGrant, sendIpexAdmit, sendIpexGrant, settleGrantCredential, } from "../app/ipex/ipex-granting.js";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Host surface for Node and Deno: TCP sockets, local files and config files.
3
+ *
4
+ * `keri-ts/runtime` stays free of `node:` modules and the `Deno` global so it
5
+ * can be bundled for a browser. Hosts with sockets import the TCP messengers,
6
+ * the dialer-equipped HTTP client and the file reader from here.
7
+ */
8
+ export { Configer, createConfiger } from "../app/identity/configing.js";
9
+ export { fileBytes } from "../app/transport/file-bytes.js";
10
+ export { NodeHttpClient, nodeTcpDialer } from "../app/transport/node-http-client.js";
11
+ export { socketBytes, } from "../app/transport/socket-source.js";
12
+ export { openTcpConnection, sendCesrTcp, sendCesrTcpFrame, sendCesrTcpSocket, streamCesrTcp, writeCesrTcpSocket, } from "../app/transport/tcp-egress.js";
13
+ export { TCPMessenger, } from "../app/transport/tcp-messenger.js";
14
+ export { TCPStreamMessenger } from "../app/transport/tcp-stream-messenger.js";