keri-ts 0.11.0 → 2.0.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 (820) hide show
  1. package/README.md +32 -2
  2. package/esm/keri/npm/src/_dnt.polyfills.js +36 -0
  3. package/esm/keri/npm/src/acdc/chaining.js +213 -0
  4. package/esm/keri/npm/src/acdc/dhking.js +716 -0
  5. package/esm/keri/npm/src/acdc/messaging.js +2 -0
  6. package/esm/keri/npm/src/acdc/observing.js +47 -40
  7. package/esm/keri/npm/src/acdc/regbasing.js +22 -22
  8. package/esm/keri/npm/src/acdc/regengine.js +88 -119
  9. package/esm/keri/npm/src/acdc/regeventing.js +163 -44
  10. package/esm/keri/npm/src/acdc/registering.js +99 -23
  11. package/esm/keri/npm/src/acdc/registraring.js +82 -46
  12. package/esm/keri/npm/src/acdc/relating.js +59 -0
  13. package/esm/keri/npm/src/acdc/salting.js +720 -0
  14. package/esm/keri/npm/src/acdc/scheming.js +103 -105
  15. package/esm/keri/npm/src/acdc/unblinding.js +1042 -0
  16. package/esm/keri/npm/src/app/{authenticating.js → bootstrap/authenticating.js} +40 -39
  17. package/esm/keri/npm/src/app/bootstrap/bootstrapping.js +109 -0
  18. package/esm/keri/npm/src/app/bootstrap/oobi-replies.js +113 -0
  19. package/esm/keri/npm/src/app/{oobiery.js → bootstrap/oobiery.js} +211 -267
  20. package/esm/keri/npm/src/app/credentials/credential-importing.js +201 -0
  21. package/esm/keri/npm/src/app/credentials/credential-proposals.js +120 -0
  22. package/esm/keri/npm/src/app/credentials/credential-revoking.js +165 -0
  23. package/esm/keri/npm/src/app/credentials/credential-workflows.js +365 -0
  24. package/esm/keri/npm/src/app/credentials/tel-publishing.js +27 -0
  25. package/esm/keri/npm/src/app/{verifying.js → credentials/verifying.js} +50 -45
  26. package/esm/keri/npm/src/app/delivery/forwarding.js +600 -0
  27. package/esm/keri/npm/src/app/delivery/introducing.js +68 -0
  28. package/esm/keri/npm/src/app/delivery/reply-streams.js +230 -0
  29. package/esm/keri/npm/src/app/delivery/respondant.js +159 -0
  30. package/esm/keri/npm/src/app/delivery/stored-replies.js +53 -0
  31. package/esm/keri/npm/src/app/exchanges/essr.js +111 -0
  32. package/esm/keri/npm/src/app/exchanges/exchange-messaging.js +66 -0
  33. package/esm/keri/npm/src/app/exchanges/exchanging.js +1354 -0
  34. package/esm/keri/npm/src/app/{challenging.js → identity/challenging.js} +13 -8
  35. package/esm/keri/npm/src/app/{configing.js → identity/configing.js} +4 -4
  36. package/esm/keri/npm/src/app/{delegating.js → identity/delegating.js} +118 -40
  37. package/esm/keri/npm/src/app/{endpoint-roleing.js → identity/endpoint-roleing.js} +43 -39
  38. package/esm/keri/npm/src/app/{habbing.js → identity/habbing.js} +258 -226
  39. package/esm/keri/npm/src/app/{keeping.js → identity/keeping.js} +60 -56
  40. package/esm/keri/npm/src/app/{organizing.js → identity/organizing.js} +47 -21
  41. package/esm/keri/npm/src/app/{ipex-building.js → ipex/ipex-building.js} +53 -55
  42. package/esm/keri/npm/src/app/ipex/ipex-credentialing.js +359 -0
  43. package/esm/keri/npm/src/app/{ipex-graph.js → ipex/ipex-graph.js} +70 -124
  44. package/esm/keri/npm/src/app/ipex/ipex-grouping.js +664 -0
  45. package/esm/keri/npm/src/app/ipex/ipex-node-authentication.js +185 -0
  46. package/esm/keri/npm/src/app/ipex/ipex-v2.js +692 -0
  47. package/esm/keri/npm/src/app/{ipexing.js → ipex/ipexing.js} +59 -10
  48. package/esm/keri/npm/src/app/mailbox/forward-handler.js +228 -0
  49. package/esm/keri/npm/src/app/{mailbox-director.js → mailbox/mailbox-director.js} +146 -139
  50. package/esm/keri/npm/src/app/mailbox/mailbox-poller.js +305 -0
  51. package/esm/keri/npm/src/app/mailbox/mailbox-sse.js +254 -0
  52. package/esm/keri/npm/src/app/{mailboxing.js → mailbox/mailboxing.js} +117 -70
  53. package/esm/keri/npm/src/app/mailbox/topic-routing.js +54 -0
  54. package/esm/keri/npm/src/app/multisig/group-members.js +173 -0
  55. package/esm/keri/npm/src/app/multisig/grouping.js +932 -0
  56. package/esm/keri/npm/src/app/multisig/multisig-messaging.js +164 -0
  57. package/esm/keri/npm/src/app/multisig/multisig-workflows.js +821 -0
  58. package/esm/keri/npm/src/app/{notifying.js → notifications/notifying.js} +23 -50
  59. package/esm/keri/npm/src/app/notifications/signaling.js +177 -0
  60. package/esm/keri/npm/src/app/{parsering.js → protocol/parsering.js} +123 -53
  61. package/esm/keri/npm/src/app/protocol/protocol-processing.js +245 -0
  62. package/esm/keri/npm/src/app/protocol/reactor.js +55 -0
  63. package/esm/keri/npm/src/app/queries/query-replies.js +151 -0
  64. package/esm/keri/npm/src/app/queries/querying.js +306 -0
  65. package/esm/keri/npm/src/app/queries/witness-inquisitor.js +415 -0
  66. package/esm/keri/npm/src/app/runtime/abortable.js +103 -0
  67. package/esm/keri/npm/src/app/runtime/agent-runtime.js +633 -0
  68. package/esm/keri/npm/src/app/runtime/cue-runtime.js +61 -0
  69. package/esm/keri/npm/src/app/runtime/runtime-clock.js +6 -0
  70. package/esm/keri/npm/src/app/{byte-source.js → transport/byte-source.js} +43 -21
  71. package/esm/keri/npm/src/app/transport/cesr-egress.js +317 -0
  72. package/esm/keri/npm/src/app/{cesr-http.js → transport/cesr-http.js} +28 -78
  73. package/esm/keri/npm/src/app/transport/http-client.js +172 -0
  74. package/esm/keri/npm/src/app/transport/http-messenger.js +52 -0
  75. package/esm/keri/npm/src/app/transport/http-stream-messenger.js +60 -0
  76. package/esm/keri/npm/src/app/transport/httping.js +57 -0
  77. package/esm/keri/npm/src/app/transport/message-source.js +77 -0
  78. package/esm/keri/npm/src/app/transport/messengering.js +68 -0
  79. package/esm/keri/npm/src/app/{socket-source.js → transport/socket-source.js} +41 -5
  80. package/esm/keri/npm/src/app/transport/tcp-egress.js +377 -0
  81. package/esm/keri/npm/src/app/transport/tcp-messenger.js +162 -0
  82. package/esm/keri/npm/src/app/transport/tcp-stream-messenger.js +40 -0
  83. package/esm/keri/npm/src/app/transport/transport-error.js +14 -0
  84. package/esm/keri/npm/src/app/witness/http-endpoints.js +185 -0
  85. package/esm/keri/npm/src/app/witness/ingress.js +148 -0
  86. package/esm/keri/npm/src/app/witness/receipt-client.js +248 -0
  87. package/esm/keri/npm/src/app/witness/receipt-messages.js +29 -0
  88. package/esm/keri/npm/src/app/witness/receipting.js +323 -0
  89. package/esm/keri/npm/src/app/witness/registration.js +50 -0
  90. package/esm/keri/npm/src/cli/common/bootstrap.js +12 -0
  91. package/esm/keri/npm/src/{app/cli → cli}/common/context.js +47 -9
  92. package/esm/keri/npm/src/{app/cli → cli}/common/existing.js +9 -29
  93. package/esm/keri/npm/src/cli/common/parsing.js +279 -0
  94. package/esm/keri/npm/src/cli/common/passcode.js +66 -0
  95. package/esm/keri/npm/src/cli/common/tel-completion.js +24 -0
  96. package/esm/keri/npm/src/{app/cli → cli}/common/witness-auth.js +2 -2
  97. package/esm/keri/npm/src/cli/credentials/ipex.js +702 -0
  98. package/esm/keri/npm/src/cli/credentials/vc.js +399 -0
  99. package/esm/keri/npm/src/{app/cli → cli/endpoints}/did.js +71 -53
  100. package/esm/keri/npm/src/{app/cli → cli/endpoints}/ends.js +34 -31
  101. package/esm/keri/npm/src/{app/cli → cli/endpoints}/loc.js +22 -20
  102. package/esm/keri/npm/src/cli/endpoints/oobi-clean.js +134 -0
  103. package/esm/keri/npm/src/{app/cli → cli/endpoints}/oobi.js +37 -36
  104. package/esm/keri/npm/src/{app/cli → cli/identity}/aid.js +8 -7
  105. package/esm/keri/npm/src/cli/identity/challenge.js +181 -0
  106. package/esm/keri/npm/src/{app/cli → cli/identity}/delegate.js +88 -73
  107. package/esm/keri/npm/src/{app/cli → cli/identity}/export.js +9 -8
  108. package/esm/keri/npm/src/cli/identity/incept.js +181 -0
  109. package/esm/keri/npm/src/cli/identity/init.js +153 -0
  110. package/esm/keri/npm/src/cli/identity/interact.js +84 -0
  111. package/esm/keri/npm/src/{app/cli → cli/identity}/list.js +7 -6
  112. package/esm/keri/npm/src/cli/identity/rotate.js +172 -0
  113. package/esm/keri/npm/src/cli/index.js +38 -0
  114. package/esm/keri/npm/src/{app/cli → cli/messaging}/exchange.js +24 -24
  115. package/esm/keri/npm/src/cli/messaging/multisig.js +569 -0
  116. package/esm/keri/npm/src/{app/cli → cli/messaging}/notifications.js +26 -22
  117. package/esm/keri/npm/src/{app/cli → cli}/output.js +1 -1
  118. package/esm/keri/npm/src/cli/tools/annotate.js +25 -0
  119. package/esm/keri/npm/src/{app/cli → cli/tools}/benchmark.js +18 -9
  120. package/esm/keri/npm/src/{app/cli → cli/tools}/db-dump.js +14 -27
  121. package/esm/keri/npm/src/{app/cli → cli/tools}/saidify.js +3 -2
  122. package/esm/keri/npm/src/{app/cli → cli/tools}/sign.js +16 -10
  123. package/esm/keri/npm/src/{app/cli → cli/tools}/verify.js +10 -10
  124. package/esm/keri/npm/src/core/attachment-countering.js +31 -1
  125. package/esm/keri/npm/src/core/deck.js +5 -44
  126. package/esm/keri/npm/src/core/dispatch.js +10 -2
  127. package/esm/keri/npm/src/core/errors.js +5 -10
  128. package/esm/keri/npm/src/core/{exchange-proofing.js → exchange/exchange-proofing.js} +32 -2
  129. package/esm/keri/npm/src/core/{protocol-exchanging.js → exchange/protocol-exchanging.js} +47 -4
  130. package/esm/keri/npm/src/core/genus-framing.js +44 -0
  131. package/esm/keri/npm/src/core/{eventing.js → kel/eventing.js} +209 -390
  132. package/esm/keri/npm/src/core/kel/kever-decisions.js +70 -0
  133. package/esm/keri/npm/src/core/{kever.js → kel/kever.js} +84 -167
  134. package/esm/keri/npm/src/core/logger.js +3 -3
  135. package/esm/keri/npm/src/core/{kram-policy.js → mailbox/kram-policy.js} +14 -4
  136. package/esm/keri/npm/src/core/{kram-pruning.js → mailbox/kram-pruning.js} +5 -15
  137. package/esm/keri/npm/src/core/{kram-signatures.js → mailbox/kram-signatures.js} +1 -1
  138. package/esm/keri/npm/src/core/mailbox/kram-staging.js +149 -0
  139. package/esm/keri/npm/src/core/{kram-time.js → mailbox/kram-time.js} +9 -15
  140. package/esm/keri/npm/src/core/mailbox/kraming.js +78 -0
  141. package/esm/keri/npm/src/core/protocol-eventing.js +6 -1
  142. package/esm/keri/npm/src/core/protocol-serialization.js +9 -34
  143. package/esm/keri/npm/src/core/protocol-vdr-eventing.js +10 -11
  144. package/esm/keri/npm/src/core/records.js +0 -19
  145. package/esm/keri/npm/src/core/routing.js +187 -199
  146. package/esm/keri/npm/src/db/baser-defaults.js +11 -0
  147. package/esm/keri/npm/src/db/basing.js +224 -401
  148. package/esm/keri/npm/src/db/core/keys.js +2 -2
  149. package/esm/keri/npm/src/db/core/lmdber.js +123 -149
  150. package/esm/keri/npm/src/db/core/path-manager.js +2 -4
  151. package/esm/keri/npm/src/db/escrowing.js +82 -200
  152. package/esm/keri/npm/src/db/exchange/exchange-nests.js +54 -0
  153. package/esm/keri/npm/src/db/exchange/exchange-records.js +7 -0
  154. package/esm/keri/npm/src/db/index.js +5 -6
  155. package/esm/keri/npm/src/db/keeping.js +123 -6
  156. package/esm/keri/npm/src/db/{kram-factors.js → mailbox/kram-factors.js} +17 -50
  157. package/esm/keri/npm/src/db/{mailboxing.js → mailbox/mailboxing.js} +5 -8
  158. package/esm/keri/npm/src/db/reger.js +48 -69
  159. package/esm/keri/npm/src/db/{kel-replay.js → replay/kel-replay.js} +12 -24
  160. package/esm/keri/npm/src/db/{tel-replay.js → replay/tel-replay.js} +38 -36
  161. package/esm/keri/npm/src/db/{witness-replay.js → replay/witness-replay.js} +8 -14
  162. package/esm/keri/npm/src/db/subing.js +2 -11
  163. package/esm/keri/npm/src/did/keri/resolving.js +4 -18
  164. package/esm/keri/npm/src/did/webs/artifacts.js +21 -24
  165. package/esm/keri/npm/src/did/webs/designated-aliases.js +18 -48
  166. package/esm/keri/npm/src/did/webs/documenting.js +8 -8
  167. package/esm/keri/npm/src/did/webs/resolving.js +73 -74
  168. package/esm/keri/npm/src/library/index.js +1 -1
  169. package/esm/keri/npm/src/npm/cli.js +1 -1
  170. package/esm/keri/npm/src/npm/index.js +1 -1
  171. package/esm/keri/npm/src/runtime/index.js +105 -74
  172. package/esm/keri/npm/src/vdr/backer-state.js +55 -0
  173. package/esm/keri/npm/src/vdr/credential-tsn-record.js +59 -0
  174. package/esm/keri/npm/src/vdr/credentialing.js +84 -109
  175. package/esm/keri/npm/src/vdr/eventing.js +633 -251
  176. package/esm/keri/npm/src/vdr/registry-tsn-record.js +55 -0
  177. package/esm/keri/npm/src/vdr/revoking.js +90 -0
  178. package/esm/keri/npm/src/vdr/tel-anchor.js +29 -0
  179. package/esm/keri/npm/src/vdr/tel-publication.js +178 -0
  180. package/esm/keri/npm/src/vdr/tsn-query.js +15 -10
  181. package/esm/keri/npm/src/{app/version.js → version.js} +2 -2
  182. package/package.json +7 -21
  183. package/types/_dnt.polyfills.d.ts +55 -0
  184. package/types/_dnt.polyfills.d.ts.map +1 -1
  185. package/types/acdc/chaining.d.ts +35 -0
  186. package/types/acdc/chaining.d.ts.map +1 -0
  187. package/types/acdc/dhking.d.ts +136 -0
  188. package/types/acdc/dhking.d.ts.map +1 -0
  189. package/types/acdc/messaging.d.ts.map +1 -1
  190. package/types/acdc/observing.d.ts +19 -15
  191. package/types/acdc/observing.d.ts.map +1 -1
  192. package/types/acdc/regbasing.d.ts +8 -9
  193. package/types/acdc/regbasing.d.ts.map +1 -1
  194. package/types/acdc/regengine.d.ts +14 -28
  195. package/types/acdc/regengine.d.ts.map +1 -1
  196. package/types/acdc/regeventing.d.ts +24 -7
  197. package/types/acdc/regeventing.d.ts.map +1 -1
  198. package/types/acdc/registering.d.ts +27 -11
  199. package/types/acdc/registering.d.ts.map +1 -1
  200. package/types/acdc/registraring.d.ts +22 -22
  201. package/types/acdc/registraring.d.ts.map +1 -1
  202. package/types/acdc/relating.d.ts +21 -0
  203. package/types/acdc/relating.d.ts.map +1 -0
  204. package/types/acdc/salting.d.ts +241 -0
  205. package/types/acdc/salting.d.ts.map +1 -0
  206. package/types/acdc/scheming.d.ts +3 -2
  207. package/types/acdc/scheming.d.ts.map +1 -1
  208. package/types/acdc/unblinding.d.ts +150 -0
  209. package/types/acdc/unblinding.d.ts.map +1 -0
  210. package/types/app/bootstrap/authenticating.d.ts +54 -0
  211. package/types/app/bootstrap/authenticating.d.ts.map +1 -0
  212. package/types/app/bootstrap/bootstrapping.d.ts +45 -0
  213. package/types/app/bootstrap/bootstrapping.d.ts.map +1 -0
  214. package/types/app/bootstrap/oobi-replies.d.ts +8 -0
  215. package/types/app/bootstrap/oobi-replies.d.ts.map +1 -0
  216. package/types/app/{oobiery.d.ts → bootstrap/oobiery.d.ts} +98 -27
  217. package/types/app/bootstrap/oobiery.d.ts.map +1 -0
  218. package/types/app/credentials/credential-importing.d.ts +29 -0
  219. package/types/app/credentials/credential-importing.d.ts.map +1 -0
  220. package/types/app/credentials/credential-proposals.d.ts +27 -0
  221. package/types/app/credentials/credential-proposals.d.ts.map +1 -0
  222. package/types/app/credentials/credential-revoking.d.ts +44 -0
  223. package/types/app/credentials/credential-revoking.d.ts.map +1 -0
  224. package/types/app/credentials/credential-workflows.d.ts +149 -0
  225. package/types/app/credentials/credential-workflows.d.ts.map +1 -0
  226. package/types/app/{schema-resolving.d.ts → credentials/schema-resolving.d.ts} +2 -2
  227. package/types/app/credentials/schema-resolving.d.ts.map +1 -0
  228. package/types/app/credentials/tel-publishing.d.ts +16 -0
  229. package/types/app/credentials/tel-publishing.d.ts.map +1 -0
  230. package/types/app/{verifying.d.ts → credentials/verifying.d.ts} +20 -9
  231. package/types/app/credentials/verifying.d.ts.map +1 -0
  232. package/types/app/delivery/forwarding.d.ts +227 -0
  233. package/types/app/delivery/forwarding.d.ts.map +1 -0
  234. package/types/app/delivery/introducing.d.ts +21 -0
  235. package/types/app/delivery/introducing.d.ts.map +1 -0
  236. package/types/app/delivery/reply-streams.d.ts +49 -0
  237. package/types/app/delivery/reply-streams.d.ts.map +1 -0
  238. package/types/app/delivery/respondant.d.ts +52 -0
  239. package/types/app/delivery/respondant.d.ts.map +1 -0
  240. package/types/app/delivery/stored-replies.d.ts +11 -0
  241. package/types/app/delivery/stored-replies.d.ts.map +1 -0
  242. package/types/app/exchanges/essr.d.ts +53 -0
  243. package/types/app/exchanges/essr.d.ts.map +1 -0
  244. package/types/app/exchanges/exchange-messaging.d.ts +73 -0
  245. package/types/app/exchanges/exchange-messaging.d.ts.map +1 -0
  246. package/types/app/exchanges/exchanging.d.ts +379 -0
  247. package/types/app/exchanges/exchanging.d.ts.map +1 -0
  248. package/types/app/{challenging.d.ts → identity/challenging.d.ts} +9 -3
  249. package/types/app/identity/challenging.d.ts.map +1 -0
  250. package/types/app/{configing.d.ts → identity/configing.d.ts} +1 -1
  251. package/types/app/identity/configing.d.ts.map +1 -0
  252. package/types/app/{delegating.d.ts → identity/delegating.d.ts} +59 -17
  253. package/types/app/identity/delegating.d.ts.map +1 -0
  254. package/types/app/identity/endpoint-roleing.d.ts +54 -0
  255. package/types/app/identity/endpoint-roleing.d.ts.map +1 -0
  256. package/types/app/{habbing.d.ts → identity/habbing.d.ts} +86 -54
  257. package/types/app/identity/habbing.d.ts.map +1 -0
  258. package/types/app/{keeping.d.ts → identity/keeping.d.ts} +19 -5
  259. package/types/app/identity/keeping.d.ts.map +1 -0
  260. package/types/app/{organizing.d.ts → identity/organizing.d.ts} +19 -4
  261. package/types/app/identity/organizing.d.ts.map +1 -0
  262. package/types/app/{ipex-building.d.ts → ipex/ipex-building.d.ts} +5 -5
  263. package/types/app/ipex/ipex-building.d.ts.map +1 -0
  264. package/types/app/{ipex-credentialing.d.ts → ipex/ipex-credentialing.d.ts} +42 -10
  265. package/types/app/ipex/ipex-credentialing.d.ts.map +1 -0
  266. package/types/app/ipex/ipex-graph.d.ts +28 -0
  267. package/types/app/ipex/ipex-graph.d.ts.map +1 -0
  268. package/types/app/ipex/ipex-grouping.d.ts +112 -0
  269. package/types/app/ipex/ipex-grouping.d.ts.map +1 -0
  270. package/types/app/ipex/ipex-node-authentication.d.ts +32 -0
  271. package/types/app/ipex/ipex-node-authentication.d.ts.map +1 -0
  272. package/types/app/ipex/ipex-v2.d.ts +71 -0
  273. package/types/app/ipex/ipex-v2.d.ts.map +1 -0
  274. package/types/app/{ipexing.d.ts → ipex/ipexing.d.ts} +21 -8
  275. package/types/app/ipex/ipexing.d.ts.map +1 -0
  276. package/types/app/mailbox/forward-handler.d.ts +68 -0
  277. package/types/app/mailbox/forward-handler.d.ts.map +1 -0
  278. package/types/app/mailbox/mailbox-director.d.ts +252 -0
  279. package/types/app/mailbox/mailbox-director.d.ts.map +1 -0
  280. package/types/app/mailbox/mailbox-poller.d.ts +149 -0
  281. package/types/app/mailbox/mailbox-poller.d.ts.map +1 -0
  282. package/types/app/mailbox/mailbox-sse.d.ts +63 -0
  283. package/types/app/mailbox/mailbox-sse.d.ts.map +1 -0
  284. package/types/app/{mailboxing.d.ts → mailbox/mailboxing.d.ts} +92 -43
  285. package/types/app/mailbox/mailboxing.d.ts.map +1 -0
  286. package/types/app/mailbox/topic-routing.d.ts +18 -0
  287. package/types/app/mailbox/topic-routing.d.ts.map +1 -0
  288. package/types/app/multisig/group-members.d.ts +60 -0
  289. package/types/app/multisig/group-members.d.ts.map +1 -0
  290. package/types/app/multisig/grouping.d.ts +317 -0
  291. package/types/app/multisig/grouping.d.ts.map +1 -0
  292. package/types/app/multisig/multisig-messaging.d.ts +97 -0
  293. package/types/app/multisig/multisig-messaging.d.ts.map +1 -0
  294. package/types/app/multisig/multisig-workflows.d.ts +85 -0
  295. package/types/app/multisig/multisig-workflows.d.ts.map +1 -0
  296. package/types/app/{notifying.d.ts → notifications/notifying.d.ts} +5 -6
  297. package/types/app/notifications/notifying.d.ts.map +1 -0
  298. package/types/app/notifications/signaling.d.ts +68 -0
  299. package/types/app/notifications/signaling.d.ts.map +1 -0
  300. package/types/app/protocol/parsering.d.ts +128 -0
  301. package/types/app/protocol/parsering.d.ts.map +1 -0
  302. package/types/app/{protocol-host-policy.d.ts → protocol/protocol-host-policy.d.ts} +1 -10
  303. package/types/app/protocol/protocol-host-policy.d.ts.map +1 -0
  304. package/types/app/protocol/protocol-processing.d.ts +140 -0
  305. package/types/app/protocol/protocol-processing.d.ts.map +1 -0
  306. package/types/app/protocol/reactor.d.ts +43 -0
  307. package/types/app/protocol/reactor.d.ts.map +1 -0
  308. package/types/app/queries/query-replies.d.ts +78 -0
  309. package/types/app/queries/query-replies.d.ts.map +1 -0
  310. package/types/app/queries/querying.d.ts +155 -0
  311. package/types/app/queries/querying.d.ts.map +1 -0
  312. package/types/app/queries/witness-inquisitor.d.ts +150 -0
  313. package/types/app/queries/witness-inquisitor.d.ts.map +1 -0
  314. package/types/app/runtime/abortable.d.ts +39 -0
  315. package/types/app/runtime/abortable.d.ts.map +1 -0
  316. package/types/app/runtime/agent-runtime.d.ts +348 -0
  317. package/types/app/runtime/agent-runtime.d.ts.map +1 -0
  318. package/types/app/runtime/cue-runtime.d.ts +33 -0
  319. package/types/app/runtime/cue-runtime.d.ts.map +1 -0
  320. package/types/app/runtime/runtime-clock.d.ts +28 -0
  321. package/types/app/runtime/runtime-clock.d.ts.map +1 -0
  322. package/types/app/runtime/runtime-turn.d.ts.map +1 -0
  323. package/types/app/transport/byte-source.d.ts +41 -0
  324. package/types/app/transport/byte-source.d.ts.map +1 -0
  325. package/types/app/transport/cesr-egress.d.ts +117 -0
  326. package/types/app/transport/cesr-egress.d.ts.map +1 -0
  327. package/types/app/{cesr-http.d.ts → transport/cesr-http.d.ts} +9 -33
  328. package/types/app/transport/cesr-http.d.ts.map +1 -0
  329. package/types/app/transport/http-client.d.ts +99 -0
  330. package/types/app/transport/http-client.d.ts.map +1 -0
  331. package/types/app/transport/http-messenger.d.ts +37 -0
  332. package/types/app/transport/http-messenger.d.ts.map +1 -0
  333. package/types/app/transport/http-stream-messenger.d.ts +30 -0
  334. package/types/app/transport/http-stream-messenger.d.ts.map +1 -0
  335. package/types/app/transport/httping.d.ts +19 -0
  336. package/types/app/transport/httping.d.ts.map +1 -0
  337. package/types/app/transport/message-source.d.ts +22 -0
  338. package/types/app/transport/message-source.d.ts.map +1 -0
  339. package/types/app/transport/messengering.d.ts +41 -0
  340. package/types/app/transport/messengering.d.ts.map +1 -0
  341. package/types/app/{socket-source.d.ts → transport/socket-source.d.ts} +10 -3
  342. package/types/app/transport/socket-source.d.ts.map +1 -0
  343. package/types/app/transport/tcp-egress.d.ts +118 -0
  344. package/types/app/transport/tcp-egress.d.ts.map +1 -0
  345. package/types/app/transport/tcp-messenger.d.ts +69 -0
  346. package/types/app/transport/tcp-messenger.d.ts.map +1 -0
  347. package/types/app/transport/tcp-stream-messenger.d.ts +25 -0
  348. package/types/app/transport/tcp-stream-messenger.d.ts.map +1 -0
  349. package/types/app/transport/transport-error.d.ts +12 -0
  350. package/types/app/transport/transport-error.d.ts.map +1 -0
  351. package/types/app/witness/http-endpoints.d.ts +77 -0
  352. package/types/app/witness/http-endpoints.d.ts.map +1 -0
  353. package/types/app/witness/ingress.d.ts +65 -0
  354. package/types/app/witness/ingress.d.ts.map +1 -0
  355. package/types/app/witness/receipt-client.d.ts +82 -0
  356. package/types/app/witness/receipt-client.d.ts.map +1 -0
  357. package/types/app/witness/receipt-messages.d.ts +21 -0
  358. package/types/app/witness/receipt-messages.d.ts.map +1 -0
  359. package/types/app/witness/receipting.d.ts +117 -0
  360. package/types/app/witness/receipting.d.ts.map +1 -0
  361. package/types/app/witness/registration.d.ts +27 -0
  362. package/types/app/witness/registration.d.ts.map +1 -0
  363. package/types/cli/common/bootstrap.d.ts +5 -0
  364. package/types/cli/common/bootstrap.d.ts.map +1 -0
  365. package/types/{app/cli → cli}/common/context.d.ts +10 -9
  366. package/types/cli/common/context.d.ts.map +1 -0
  367. package/types/{app/cli → cli}/common/existing.d.ts +2 -8
  368. package/types/cli/common/existing.d.ts.map +1 -0
  369. package/types/{app/cli → cli}/common/parsing.d.ts +26 -15
  370. package/types/cli/common/parsing.d.ts.map +1 -0
  371. package/types/cli/common/passcode.d.ts +9 -0
  372. package/types/cli/common/passcode.d.ts.map +1 -0
  373. package/types/cli/common/rendering.d.ts.map +1 -0
  374. package/types/cli/common/tel-completion.d.ts +8 -0
  375. package/types/cli/common/tel-completion.d.ts.map +1 -0
  376. package/types/{app/cli → cli}/common/witness-auth.d.ts +1 -1
  377. package/types/cli/common/witness-auth.d.ts.map +1 -0
  378. package/types/cli/credentials/ipex.d.ts +110 -0
  379. package/types/cli/credentials/ipex.d.ts.map +1 -0
  380. package/types/cli/credentials/vc.d.ts +42 -0
  381. package/types/cli/credentials/vc.d.ts.map +1 -0
  382. package/types/{app/cli → cli/endpoints}/did.d.ts +5 -1
  383. package/types/cli/endpoints/did.d.ts.map +1 -0
  384. package/types/{app/cli → cli/endpoints}/ends.d.ts +9 -1
  385. package/types/cli/endpoints/ends.d.ts.map +1 -0
  386. package/types/cli/endpoints/loc.d.ts.map +1 -0
  387. package/types/cli/endpoints/oobi-clean.d.ts +8 -0
  388. package/types/cli/endpoints/oobi-clean.d.ts.map +1 -0
  389. package/types/{app/cli → cli/endpoints}/oobi.d.ts +3 -1
  390. package/types/cli/endpoints/oobi.d.ts.map +1 -0
  391. package/types/cli/identity/aid.d.ts.map +1 -0
  392. package/types/{app/cli → cli/identity}/challenge.d.ts +5 -1
  393. package/types/cli/identity/challenge.d.ts.map +1 -0
  394. package/types/cli/identity/delegate.d.ts +4 -0
  395. package/types/cli/identity/delegate.d.ts.map +1 -0
  396. package/types/cli/identity/export.d.ts.map +1 -0
  397. package/types/{app/cli → cli/identity}/incept.d.ts +2 -0
  398. package/types/cli/identity/incept.d.ts.map +1 -0
  399. package/types/{app/cli → cli/identity}/init.d.ts +2 -0
  400. package/types/cli/identity/init.d.ts.map +1 -0
  401. package/types/{app/cli → cli/identity}/interact.d.ts +2 -0
  402. package/types/cli/identity/interact.d.ts.map +1 -0
  403. package/types/cli/identity/list.d.ts.map +1 -0
  404. package/types/{app/cli → cli/identity}/rotate.d.ts +9 -2
  405. package/types/cli/identity/rotate.d.ts.map +1 -0
  406. package/types/cli/index.d.ts +39 -0
  407. package/types/cli/index.d.ts.map +1 -0
  408. package/types/{app/cli → cli/messaging}/exchange.d.ts +3 -1
  409. package/types/cli/messaging/exchange.d.ts.map +1 -0
  410. package/types/cli/messaging/multisig.d.ts +29 -0
  411. package/types/cli/messaging/multisig.d.ts.map +1 -0
  412. package/types/cli/messaging/notifications.d.ts.map +1 -0
  413. package/types/cli/output.d.ts.map +1 -0
  414. package/types/cli/tools/annotate-color.d.ts.map +1 -0
  415. package/types/cli/tools/annotate.d.ts.map +1 -0
  416. package/types/cli/tools/benchmark.d.ts.map +1 -0
  417. package/types/{app/cli → cli/tools}/db-dump.d.ts +0 -2
  418. package/types/cli/tools/db-dump.d.ts.map +1 -0
  419. package/types/cli/tools/saidify.d.ts.map +1 -0
  420. package/types/{app/cli → cli/tools}/sign.d.ts +2 -0
  421. package/types/cli/tools/sign.d.ts.map +1 -0
  422. package/types/cli/tools/verify.d.ts.map +1 -0
  423. package/types/core/attachment-countering.d.ts +10 -1
  424. package/types/core/attachment-countering.d.ts.map +1 -1
  425. package/types/core/cues.d.ts +146 -57
  426. package/types/core/cues.d.ts.map +1 -1
  427. package/types/core/deck.d.ts +2 -12
  428. package/types/core/deck.d.ts.map +1 -1
  429. package/types/core/dispatch.d.ts +7 -3
  430. package/types/core/dispatch.d.ts.map +1 -1
  431. package/types/core/errors.d.ts +4 -4
  432. package/types/core/errors.d.ts.map +1 -1
  433. package/types/core/{exchange-proofing.d.ts → exchange/exchange-proofing.d.ts} +9 -2
  434. package/types/core/exchange/exchange-proofing.d.ts.map +1 -0
  435. package/types/core/{protocol-exchanging.d.ts → exchange/protocol-exchanging.d.ts} +18 -2
  436. package/types/core/exchange/protocol-exchanging.d.ts.map +1 -0
  437. package/types/core/genus-framing.d.ts +12 -0
  438. package/types/core/genus-framing.d.ts.map +1 -0
  439. package/types/core/{eventing.d.ts → kel/eventing.d.ts} +37 -48
  440. package/types/core/kel/eventing.d.ts.map +1 -0
  441. package/types/core/{kever-decisions.d.ts → kel/kever-decisions.d.ts} +36 -22
  442. package/types/core/kel/kever-decisions.d.ts.map +1 -0
  443. package/types/core/{kever.d.ts → kel/kever.d.ts} +13 -47
  444. package/types/core/kel/kever.d.ts.map +1 -0
  445. package/types/core/kel/witnesses.d.ts.map +1 -0
  446. package/types/core/logger.d.ts +1 -1
  447. package/types/core/logger.d.ts.map +1 -1
  448. package/types/core/{kram-auth.d.ts → mailbox/kram-auth.d.ts} +2 -2
  449. package/types/core/mailbox/kram-auth.d.ts.map +1 -0
  450. package/types/core/{kram-policy.d.ts → mailbox/kram-policy.d.ts} +2 -2
  451. package/types/core/mailbox/kram-policy.d.ts.map +1 -0
  452. package/types/core/{kram-pruning.d.ts → mailbox/kram-pruning.d.ts} +3 -3
  453. package/types/core/{kram-pruning.d.ts.map → mailbox/kram-pruning.d.ts.map} +1 -1
  454. package/types/core/{kram-signatures.d.ts → mailbox/kram-signatures.d.ts} +3 -3
  455. package/types/core/mailbox/kram-signatures.d.ts.map +1 -0
  456. package/types/core/mailbox/kram-staging.d.ts +30 -0
  457. package/types/core/mailbox/kram-staging.d.ts.map +1 -0
  458. package/types/core/{kram-time.d.ts → mailbox/kram-time.d.ts} +5 -11
  459. package/types/core/mailbox/kram-time.d.ts.map +1 -0
  460. package/types/core/mailbox/kraming.d.ts +42 -0
  461. package/types/core/mailbox/kraming.d.ts.map +1 -0
  462. package/types/core/mailbox/mailbox-topics.d.ts.map +1 -0
  463. package/types/core/protocol-eventing.d.ts +5 -0
  464. package/types/core/protocol-eventing.d.ts.map +1 -1
  465. package/types/core/protocol-serialization.d.ts +1 -1
  466. package/types/core/protocol-serialization.d.ts.map +1 -1
  467. package/types/core/protocol-vdr-eventing.d.ts +7 -5
  468. package/types/core/protocol-vdr-eventing.d.ts.map +1 -1
  469. package/types/core/records.d.ts +15 -50
  470. package/types/core/records.d.ts.map +1 -1
  471. package/types/core/routing.d.ts +76 -46
  472. package/types/core/routing.d.ts.map +1 -1
  473. package/types/db/baser-defaults.d.ts +5 -0
  474. package/types/db/baser-defaults.d.ts.map +1 -0
  475. package/types/db/basing.d.ts +70 -75
  476. package/types/db/basing.d.ts.map +1 -1
  477. package/types/db/core/keys.d.ts.map +1 -1
  478. package/types/db/core/lmdber.d.ts +21 -23
  479. package/types/db/core/lmdber.d.ts.map +1 -1
  480. package/types/db/core/path-manager.d.ts.map +1 -1
  481. package/types/db/escrowing.d.ts +12 -49
  482. package/types/db/escrowing.d.ts.map +1 -1
  483. package/types/db/exchange/exchange-nests.d.ts +12 -0
  484. package/types/db/exchange/exchange-nests.d.ts.map +1 -0
  485. package/types/db/exchange/exchange-records.d.ts +38 -0
  486. package/types/db/exchange/exchange-records.d.ts.map +1 -0
  487. package/types/db/index.d.ts +5 -6
  488. package/types/db/index.d.ts.map +1 -1
  489. package/types/db/keeping.d.ts +19 -1
  490. package/types/db/keeping.d.ts.map +1 -1
  491. package/types/db/koming.d.ts +1 -1
  492. package/types/db/koming.d.ts.map +1 -1
  493. package/types/db/{kram-factors.d.ts → mailbox/kram-factors.d.ts} +3 -5
  494. package/types/db/mailbox/kram-factors.d.ts.map +1 -0
  495. package/types/db/{mailboxing.d.ts → mailbox/mailboxing.d.ts} +3 -4
  496. package/types/db/mailbox/mailboxing.d.ts.map +1 -0
  497. package/types/db/reger.d.ts +10 -12
  498. package/types/db/reger.d.ts.map +1 -1
  499. package/types/db/{kel-replay.d.ts → replay/kel-replay.d.ts} +2 -6
  500. package/types/db/replay/kel-replay.d.ts.map +1 -0
  501. package/types/db/{tel-replay.d.ts → replay/tel-replay.d.ts} +13 -8
  502. package/types/db/replay/tel-replay.d.ts.map +1 -0
  503. package/types/db/{witness-replay.d.ts → replay/witness-replay.d.ts} +2 -3
  504. package/types/db/replay/witness-replay.d.ts.map +1 -0
  505. package/types/db/subing.d.ts +1 -5
  506. package/types/db/subing.d.ts.map +1 -1
  507. package/types/did/keri/resolving.d.ts +5 -10
  508. package/types/did/keri/resolving.d.ts.map +1 -1
  509. package/types/did/webs/artifacts.d.ts +5 -5
  510. package/types/did/webs/artifacts.d.ts.map +1 -1
  511. package/types/did/webs/designated-aliases.d.ts +6 -5
  512. package/types/did/webs/designated-aliases.d.ts.map +1 -1
  513. package/types/did/webs/documenting.d.ts +6 -5
  514. package/types/did/webs/documenting.d.ts.map +1 -1
  515. package/types/did/webs/resolving.d.ts +13 -3
  516. package/types/did/webs/resolving.d.ts.map +1 -1
  517. package/types/library/index.d.ts +1 -1
  518. package/types/library/index.d.ts.map +1 -1
  519. package/types/npm/cli.d.ts +1 -1
  520. package/types/npm/cli.d.ts.map +1 -1
  521. package/types/npm/index.d.ts +1 -1
  522. package/types/npm/index.d.ts.map +1 -1
  523. package/types/runtime/index.d.ts +109 -76
  524. package/types/runtime/index.d.ts.map +1 -1
  525. package/types/vdr/backer-state.d.ts +22 -0
  526. package/types/vdr/backer-state.d.ts.map +1 -0
  527. package/types/vdr/credential-tsn-record.d.ts +13 -0
  528. package/types/vdr/credential-tsn-record.d.ts.map +1 -0
  529. package/types/vdr/credentialing.d.ts +16 -27
  530. package/types/vdr/credentialing.d.ts.map +1 -1
  531. package/types/vdr/eventing.d.ts +66 -23
  532. package/types/vdr/eventing.d.ts.map +1 -1
  533. package/types/vdr/registry-tsn-record.d.ts +6 -0
  534. package/types/vdr/registry-tsn-record.d.ts.map +1 -0
  535. package/types/vdr/revoking.d.ts +18 -0
  536. package/types/vdr/revoking.d.ts.map +1 -0
  537. package/types/vdr/tel-anchor.d.ts +10 -0
  538. package/types/vdr/tel-anchor.d.ts.map +1 -0
  539. package/types/vdr/tel-publication.d.ts +49 -0
  540. package/types/vdr/tel-publication.d.ts.map +1 -0
  541. package/types/vdr/tsn-query.d.ts +9 -4
  542. package/types/vdr/tsn-query.d.ts.map +1 -1
  543. package/types/{app/version.d.ts → version.d.ts} +2 -2
  544. package/types/version.d.ts.map +1 -0
  545. package/esm/keri/npm/src/app/abortable.js +0 -27
  546. package/esm/keri/npm/src/app/agent-runtime.js +0 -638
  547. package/esm/keri/npm/src/app/cesr-egress.js +0 -308
  548. package/esm/keri/npm/src/app/cesr-output.js +0 -12
  549. package/esm/keri/npm/src/app/cli/annotate.js +0 -24
  550. package/esm/keri/npm/src/app/cli/challenge.js +0 -168
  551. package/esm/keri/npm/src/app/cli/common/displaying.js +0 -43
  552. package/esm/keri/npm/src/app/cli/common/parsing.js +0 -215
  553. package/esm/keri/npm/src/app/cli/incept.js +0 -187
  554. package/esm/keri/npm/src/app/cli/index.js +0 -36
  555. package/esm/keri/npm/src/app/cli/init.js +0 -155
  556. package/esm/keri/npm/src/app/cli/interact.js +0 -72
  557. package/esm/keri/npm/src/app/cli/ipex.js +0 -453
  558. package/esm/keri/npm/src/app/cli/multisig.js +0 -474
  559. package/esm/keri/npm/src/app/cli/query.js +0 -143
  560. package/esm/keri/npm/src/app/cli/rotate.js +0 -171
  561. package/esm/keri/npm/src/app/cli/vc.js +0 -284
  562. package/esm/keri/npm/src/app/cli/verifier.js +0 -96
  563. package/esm/keri/npm/src/app/credential-workflows.js +0 -431
  564. package/esm/keri/npm/src/app/cue-delivery.js +0 -171
  565. package/esm/keri/npm/src/app/cue-preparation.js +0 -124
  566. package/esm/keri/npm/src/app/cue-route.js +0 -64
  567. package/esm/keri/npm/src/app/cue-runtime.js +0 -104
  568. package/esm/keri/npm/src/app/direct-reply-delivery.js +0 -282
  569. package/esm/keri/npm/src/app/essr.js +0 -235
  570. package/esm/keri/npm/src/app/exchanging.js +0 -1219
  571. package/esm/keri/npm/src/app/forwarding.js +0 -1346
  572. package/esm/keri/npm/src/app/group-members.js +0 -37
  573. package/esm/keri/npm/src/app/grouping.js +0 -534
  574. package/esm/keri/npm/src/app/httping.js +0 -130
  575. package/esm/keri/npm/src/app/ipex-credentialing.js +0 -245
  576. package/esm/keri/npm/src/app/ipex-grouping.js +0 -317
  577. package/esm/keri/npm/src/app/ipex-v2.js +0 -542
  578. package/esm/keri/npm/src/app/mailbox-sse.js +0 -257
  579. package/esm/keri/npm/src/app/multisig-workflows.js +0 -537
  580. package/esm/keri/npm/src/app/oobi-replies.js +0 -194
  581. package/esm/keri/npm/src/app/query-replies.js +0 -181
  582. package/esm/keri/npm/src/app/querying.js +0 -1040
  583. package/esm/keri/npm/src/app/reactor.js +0 -517
  584. package/esm/keri/npm/src/app/reply-streams.js +0 -304
  585. package/esm/keri/npm/src/app/respondant.js +0 -173
  586. package/esm/keri/npm/src/app/runtime-deliveries.js +0 -510
  587. package/esm/keri/npm/src/app/runtime-services.js +0 -25
  588. package/esm/keri/npm/src/app/signaling.js +0 -388
  589. package/esm/keri/npm/src/app/stored-replies.js +0 -85
  590. package/esm/keri/npm/src/app/tcp-egress.js +0 -334
  591. package/esm/keri/npm/src/app/verifier-agent.js +0 -461
  592. package/esm/keri/npm/src/app/witnessing.js +0 -956
  593. package/esm/keri/npm/src/core/cue-admission.js +0 -419
  594. package/esm/keri/npm/src/core/index.js +0 -23
  595. package/esm/keri/npm/src/core/kever-decisions.js +0 -63
  596. package/esm/keri/npm/src/core/kram-handoff.js +0 -148
  597. package/esm/keri/npm/src/core/kram-staging.js +0 -211
  598. package/esm/keri/npm/src/core/kraming.js +0 -99
  599. package/esm/keri/npm/src/db/exchange-nests.js +0 -175
  600. package/esm/keri/npm/src/db/exchange-records.js +0 -7
  601. package/esm/keri/npm/src/db/kram-snapshots.js +0 -216
  602. package/esm/keri/npm/src/db/mailbox-inbox.js +0 -206
  603. package/esm/keri/npm/src/db/outboxing.js +0 -371
  604. package/esm/keri/npm/src/db/payload-archive.js +0 -402
  605. package/esm/keri/npm/src/db/payload-store.js +0 -416
  606. package/esm/keri/npm/src/db/payload-view.js +0 -23
  607. package/esm/keri/npm/src/db/verifier-cueing.js +0 -132
  608. package/esm/keri/npm/src/vdr/credential-tsn.js +0 -218
  609. package/esm/keri/npm/src/vdr/registry-tsn.js +0 -218
  610. package/types/app/abortable.d.ts +0 -11
  611. package/types/app/abortable.d.ts.map +0 -1
  612. package/types/app/agent-runtime.d.ts +0 -284
  613. package/types/app/agent-runtime.d.ts.map +0 -1
  614. package/types/app/authenticating.d.ts +0 -36
  615. package/types/app/authenticating.d.ts.map +0 -1
  616. package/types/app/byte-source.d.ts +0 -16
  617. package/types/app/byte-source.d.ts.map +0 -1
  618. package/types/app/cesr-egress.d.ts +0 -48
  619. package/types/app/cesr-egress.d.ts.map +0 -1
  620. package/types/app/cesr-http.d.ts.map +0 -1
  621. package/types/app/cesr-output.d.ts +0 -5
  622. package/types/app/cesr-output.d.ts.map +0 -1
  623. package/types/app/challenging.d.ts.map +0 -1
  624. package/types/app/cli/aid.d.ts.map +0 -1
  625. package/types/app/cli/annotate-color.d.ts.map +0 -1
  626. package/types/app/cli/annotate.d.ts.map +0 -1
  627. package/types/app/cli/benchmark.d.ts.map +0 -1
  628. package/types/app/cli/challenge.d.ts.map +0 -1
  629. package/types/app/cli/common/context.d.ts.map +0 -1
  630. package/types/app/cli/common/displaying.d.ts +0 -12
  631. package/types/app/cli/common/displaying.d.ts.map +0 -1
  632. package/types/app/cli/common/existing.d.ts.map +0 -1
  633. package/types/app/cli/common/parsing.d.ts.map +0 -1
  634. package/types/app/cli/common/rendering.d.ts.map +0 -1
  635. package/types/app/cli/common/witness-auth.d.ts.map +0 -1
  636. package/types/app/cli/db-dump.d.ts.map +0 -1
  637. package/types/app/cli/delegate.d.ts +0 -26
  638. package/types/app/cli/delegate.d.ts.map +0 -1
  639. package/types/app/cli/did.d.ts.map +0 -1
  640. package/types/app/cli/ends.d.ts.map +0 -1
  641. package/types/app/cli/exchange.d.ts.map +0 -1
  642. package/types/app/cli/export.d.ts.map +0 -1
  643. package/types/app/cli/incept.d.ts.map +0 -1
  644. package/types/app/cli/index.d.ts +0 -37
  645. package/types/app/cli/index.d.ts.map +0 -1
  646. package/types/app/cli/init.d.ts.map +0 -1
  647. package/types/app/cli/interact.d.ts.map +0 -1
  648. package/types/app/cli/ipex.d.ts +0 -20
  649. package/types/app/cli/ipex.d.ts.map +0 -1
  650. package/types/app/cli/list.d.ts.map +0 -1
  651. package/types/app/cli/loc.d.ts.map +0 -1
  652. package/types/app/cli/multisig.d.ts +0 -12
  653. package/types/app/cli/multisig.d.ts.map +0 -1
  654. package/types/app/cli/notifications.d.ts.map +0 -1
  655. package/types/app/cli/oobi.d.ts.map +0 -1
  656. package/types/app/cli/output.d.ts.map +0 -1
  657. package/types/app/cli/query.d.ts +0 -12
  658. package/types/app/cli/query.d.ts.map +0 -1
  659. package/types/app/cli/rotate.d.ts.map +0 -1
  660. package/types/app/cli/saidify.d.ts.map +0 -1
  661. package/types/app/cli/sign.d.ts.map +0 -1
  662. package/types/app/cli/vc.d.ts +0 -20
  663. package/types/app/cli/vc.d.ts.map +0 -1
  664. package/types/app/cli/verifier.d.ts +0 -3
  665. package/types/app/cli/verifier.d.ts.map +0 -1
  666. package/types/app/cli/verify.d.ts.map +0 -1
  667. package/types/app/configing.d.ts.map +0 -1
  668. package/types/app/credential-workflows.d.ts +0 -118
  669. package/types/app/credential-workflows.d.ts.map +0 -1
  670. package/types/app/cue-delivery.d.ts +0 -30
  671. package/types/app/cue-delivery.d.ts.map +0 -1
  672. package/types/app/cue-preparation.d.ts +0 -25
  673. package/types/app/cue-preparation.d.ts.map +0 -1
  674. package/types/app/cue-route.d.ts +0 -19
  675. package/types/app/cue-route.d.ts.map +0 -1
  676. package/types/app/cue-runtime.d.ts +0 -46
  677. package/types/app/cue-runtime.d.ts.map +0 -1
  678. package/types/app/delegating.d.ts.map +0 -1
  679. package/types/app/direct-reply-delivery.d.ts +0 -38
  680. package/types/app/direct-reply-delivery.d.ts.map +0 -1
  681. package/types/app/endpoint-roleing.d.ts +0 -41
  682. package/types/app/endpoint-roleing.d.ts.map +0 -1
  683. package/types/app/essr.d.ts +0 -72
  684. package/types/app/essr.d.ts.map +0 -1
  685. package/types/app/exchanging.d.ts +0 -245
  686. package/types/app/exchanging.d.ts.map +0 -1
  687. package/types/app/forwarding.d.ts +0 -411
  688. package/types/app/forwarding.d.ts.map +0 -1
  689. package/types/app/group-members.d.ts +0 -12
  690. package/types/app/group-members.d.ts.map +0 -1
  691. package/types/app/grouping.d.ts +0 -150
  692. package/types/app/grouping.d.ts.map +0 -1
  693. package/types/app/habbing.d.ts.map +0 -1
  694. package/types/app/httping.d.ts +0 -42
  695. package/types/app/httping.d.ts.map +0 -1
  696. package/types/app/ipex-building.d.ts.map +0 -1
  697. package/types/app/ipex-credentialing.d.ts.map +0 -1
  698. package/types/app/ipex-graph.d.ts +0 -30
  699. package/types/app/ipex-graph.d.ts.map +0 -1
  700. package/types/app/ipex-grouping.d.ts +0 -51
  701. package/types/app/ipex-grouping.d.ts.map +0 -1
  702. package/types/app/ipex-v2.d.ts +0 -51
  703. package/types/app/ipex-v2.d.ts.map +0 -1
  704. package/types/app/ipexing.d.ts.map +0 -1
  705. package/types/app/keeping.d.ts.map +0 -1
  706. package/types/app/mailbox-director.d.ts +0 -159
  707. package/types/app/mailbox-director.d.ts.map +0 -1
  708. package/types/app/mailbox-sse.d.ts +0 -38
  709. package/types/app/mailbox-sse.d.ts.map +0 -1
  710. package/types/app/mailboxing.d.ts.map +0 -1
  711. package/types/app/multisig-workflows.d.ts +0 -59
  712. package/types/app/multisig-workflows.d.ts.map +0 -1
  713. package/types/app/notifying.d.ts.map +0 -1
  714. package/types/app/oobi-replies.d.ts +0 -18
  715. package/types/app/oobi-replies.d.ts.map +0 -1
  716. package/types/app/oobiery.d.ts.map +0 -1
  717. package/types/app/organizing.d.ts.map +0 -1
  718. package/types/app/parsering.d.ts +0 -106
  719. package/types/app/parsering.d.ts.map +0 -1
  720. package/types/app/protocol-host-policy.d.ts.map +0 -1
  721. package/types/app/query-replies.d.ts +0 -45
  722. package/types/app/query-replies.d.ts.map +0 -1
  723. package/types/app/querying.d.ts +0 -294
  724. package/types/app/querying.d.ts.map +0 -1
  725. package/types/app/reactor.d.ts +0 -171
  726. package/types/app/reactor.d.ts.map +0 -1
  727. package/types/app/reply-streams.d.ts +0 -51
  728. package/types/app/reply-streams.d.ts.map +0 -1
  729. package/types/app/respondant.d.ts +0 -48
  730. package/types/app/respondant.d.ts.map +0 -1
  731. package/types/app/runtime-deliveries.d.ts +0 -67
  732. package/types/app/runtime-deliveries.d.ts.map +0 -1
  733. package/types/app/runtime-services.d.ts +0 -29
  734. package/types/app/runtime-services.d.ts.map +0 -1
  735. package/types/app/runtime-turn.d.ts.map +0 -1
  736. package/types/app/schema-resolving.d.ts.map +0 -1
  737. package/types/app/signaling.d.ts +0 -96
  738. package/types/app/signaling.d.ts.map +0 -1
  739. package/types/app/socket-source.d.ts.map +0 -1
  740. package/types/app/stored-replies.d.ts +0 -18
  741. package/types/app/stored-replies.d.ts.map +0 -1
  742. package/types/app/tcp-egress.d.ts +0 -87
  743. package/types/app/tcp-egress.d.ts.map +0 -1
  744. package/types/app/verifier-agent.d.ts +0 -91
  745. package/types/app/verifier-agent.d.ts.map +0 -1
  746. package/types/app/verifying.d.ts.map +0 -1
  747. package/types/app/version.d.ts.map +0 -1
  748. package/types/app/witnessing.d.ts +0 -227
  749. package/types/app/witnessing.d.ts.map +0 -1
  750. package/types/core/cue-admission.d.ts +0 -74
  751. package/types/core/cue-admission.d.ts.map +0 -1
  752. package/types/core/eventing.d.ts.map +0 -1
  753. package/types/core/exchange-proofing.d.ts.map +0 -1
  754. package/types/core/index.d.ts +0 -24
  755. package/types/core/index.d.ts.map +0 -1
  756. package/types/core/kever-decisions.d.ts.map +0 -1
  757. package/types/core/kever.d.ts.map +0 -1
  758. package/types/core/kram-auth.d.ts.map +0 -1
  759. package/types/core/kram-handoff.d.ts +0 -45
  760. package/types/core/kram-handoff.d.ts.map +0 -1
  761. package/types/core/kram-policy.d.ts.map +0 -1
  762. package/types/core/kram-signatures.d.ts.map +0 -1
  763. package/types/core/kram-staging.d.ts +0 -36
  764. package/types/core/kram-staging.d.ts.map +0 -1
  765. package/types/core/kram-time.d.ts.map +0 -1
  766. package/types/core/kraming.d.ts +0 -46
  767. package/types/core/kraming.d.ts.map +0 -1
  768. package/types/core/mailbox-topics.d.ts.map +0 -1
  769. package/types/core/protocol-exchanging.d.ts.map +0 -1
  770. package/types/core/witnesses.d.ts.map +0 -1
  771. package/types/db/exchange-nests.d.ts +0 -39
  772. package/types/db/exchange-nests.d.ts.map +0 -1
  773. package/types/db/exchange-records.d.ts +0 -35
  774. package/types/db/exchange-records.d.ts.map +0 -1
  775. package/types/db/kel-replay.d.ts.map +0 -1
  776. package/types/db/kram-factors.d.ts.map +0 -1
  777. package/types/db/kram-snapshots.d.ts +0 -23
  778. package/types/db/kram-snapshots.d.ts.map +0 -1
  779. package/types/db/mailbox-inbox.d.ts +0 -72
  780. package/types/db/mailbox-inbox.d.ts.map +0 -1
  781. package/types/db/mailboxing.d.ts.map +0 -1
  782. package/types/db/outboxing.d.ts +0 -182
  783. package/types/db/outboxing.d.ts.map +0 -1
  784. package/types/db/payload-archive.d.ts +0 -70
  785. package/types/db/payload-archive.d.ts.map +0 -1
  786. package/types/db/payload-store.d.ts +0 -40
  787. package/types/db/payload-store.d.ts.map +0 -1
  788. package/types/db/payload-view.d.ts +0 -4
  789. package/types/db/payload-view.d.ts.map +0 -1
  790. package/types/db/tel-replay.d.ts.map +0 -1
  791. package/types/db/verifier-cueing.d.ts +0 -46
  792. package/types/db/verifier-cueing.d.ts.map +0 -1
  793. package/types/db/witness-replay.d.ts.map +0 -1
  794. package/types/vdr/credential-tsn.d.ts +0 -18
  795. package/types/vdr/credential-tsn.d.ts.map +0 -1
  796. package/types/vdr/registry-tsn.d.ts +0 -23
  797. package/types/vdr/registry-tsn.d.ts.map +0 -1
  798. /package/esm/keri/npm/src/app/{schema-resolving.js → credentials/schema-resolving.js} +0 -0
  799. /package/esm/keri/npm/src/app/{protocol-host-policy.js → protocol/protocol-host-policy.js} +0 -0
  800. /package/esm/keri/npm/src/app/{runtime-turn.js → runtime/runtime-turn.js} +0 -0
  801. /package/esm/keri/npm/src/{app/cli → cli}/common/rendering.js +0 -0
  802. /package/esm/keri/npm/src/{app/cli → cli/tools}/annotate-color.js +0 -0
  803. /package/esm/keri/npm/src/core/{witnesses.js → kel/witnesses.js} +0 -0
  804. /package/esm/keri/npm/src/core/{kram-auth.js → mailbox/kram-auth.js} +0 -0
  805. /package/esm/keri/npm/src/core/{mailbox-topics.js → mailbox/mailbox-topics.js} +0 -0
  806. /package/types/app/{runtime-turn.d.ts → runtime/runtime-turn.d.ts} +0 -0
  807. /package/types/{app/cli → cli}/common/rendering.d.ts +0 -0
  808. /package/types/{app/cli → cli/endpoints}/loc.d.ts +0 -0
  809. /package/types/{app/cli → cli/identity}/aid.d.ts +0 -0
  810. /package/types/{app/cli → cli/identity}/export.d.ts +0 -0
  811. /package/types/{app/cli → cli/identity}/list.d.ts +0 -0
  812. /package/types/{app/cli → cli/messaging}/notifications.d.ts +0 -0
  813. /package/types/{app/cli → cli}/output.d.ts +0 -0
  814. /package/types/{app/cli → cli/tools}/annotate-color.d.ts +0 -0
  815. /package/types/{app/cli → cli/tools}/annotate.d.ts +0 -0
  816. /package/types/{app/cli → cli/tools}/benchmark.d.ts +0 -0
  817. /package/types/{app/cli → cli/tools}/saidify.d.ts +0 -0
  818. /package/types/{app/cli → cli/tools}/verify.d.ts +0 -0
  819. /package/types/core/{witnesses.d.ts → kel/witnesses.d.ts} +0 -0
  820. /package/types/core/{mailbox-topics.d.ts → mailbox/mailbox-topics.d.ts} +0 -0
@@ -12,27 +12,25 @@
12
12
  * - local bootstrap replies and events still flow through the same accepted
13
13
  * state machinery instead of being written directly to persistent state
14
14
  */
15
- import { concatBytes, Diger, Ilks, NumberPrimitive, Prefixer, SealLast, Tiers, Verfer, Vrsn_1_0, } from "cesr-ts";
16
- import { Deck } from "../core/deck.js";
17
- import { TransIdxSigGroup } from "../core/dispatch.js";
18
- import { ValidationError } from "../core/errors.js";
19
- import { Kevery } from "../core/eventing.js";
20
- import { incept as inceptEvent, interact as interactEvent, query as queryEvent, receipt as receiptEvent, reply as replyEvent, rotate as rotateEvent, } from "../core/protocol-eventing.js";
21
- import { messagize } from "../core/protocol-serialization.js";
22
- import { HabitatRecord } from "../core/records.js";
23
- import { Roles } from "../core/roles.js";
24
- import { BasicReplyRouteHandler, Revery, Router } from "../core/routing.js";
25
- import { Schemes } from "../core/schemes.js";
26
- import { createBaser } from "../db/basing.js";
27
- import { dgKey } from "../db/core/keys.js";
28
- import { createKeeper, PreSit } from "../db/keeping.js";
29
- import { createOutboxer, DisabledOutboxer } from "../db/outboxing.js";
30
- import { makeNowIso8601 } from "../time/mod.js";
31
- import { DEFAULT_CESR_BODY_MODE } from "./cesr-http.js";
15
+ import { concatBytes, DigDex, Diger, Ilks, NumberPrimitive, Prefixer, SealLast, Tiers, Verfer, Vrsn_1_0, Vrsn_2_0, } from "cesr-ts";
16
+ import { Deck } from "../../core/deck.js";
17
+ import { TransIdxSigGroup } from "../../core/dispatch.js";
18
+ import { ValidationError } from "../../core/errors.js";
19
+ import { Kevery } from "../../core/kel/eventing.js";
20
+ import { incept as inceptEvent, interact as interactEvent, query as queryEvent, receipt as receiptEvent, reply as replyEvent, rotate as rotateEvent, } from "../../core/protocol-eventing.js";
21
+ import { messagize } from "../../core/protocol-serialization.js";
22
+ import { HabitatRecord } from "../../core/records.js";
23
+ import { Roles } from "../../core/roles.js";
24
+ import { BasicReplyRouteHandler, Revery, Router } from "../../core/routing.js";
25
+ import { Schemes } from "../../core/schemes.js";
26
+ import { createBaser } from "../../db/basing.js";
27
+ import { createKeeper, PreSit } from "../../db/keeping.js";
28
+ import { makeNowIso8601 } from "../../time/mod.js";
29
+ import { oobiReplyMessages } from "../bootstrap/oobi-replies.js";
30
+ import { loadStoredReply } from "../delivery/stored-replies.js";
31
+ import { acceptedGroupMembers, latestGroupContribution } from "../multisig/group-members.js";
32
32
  import { createConfiger } from "./configing.js";
33
33
  import { branToSaltQb64, encodeHugeNumber, ensureKeeperCryptoReady, Manager, normalizeSaltQb64, saltySigner, } from "./keeping.js";
34
- import { collectOobiReplies, oobiReplyMessages } from "./oobi-replies.js";
35
- import { loadStoredReply } from "./stored-replies.js";
36
34
  /** Reserved alias for the local signatory habitat record. */
37
35
  export const SIGNER = "__signatory__";
38
36
  /**
@@ -42,6 +40,21 @@ export const SIGNER = "__signatory__";
42
40
  * locally generated reply and inception messages.
43
41
  */
44
42
  const KERI_V1 = Object.freeze({ major: 1, minor: 0 });
43
+ /**
44
+ * Select the KERI version for a new event on an existing identifier.
45
+ *
46
+ * An identifier keeps the KERI version of its accepted KEL, so rotation and
47
+ * interaction never mix versions within one KEL. An explicit selection that
48
+ * conflicts with the accepted KEL is refused rather than silently ignored.
49
+ */
50
+ function acceptedKelVersion(kever, requested) {
51
+ const accepted = kever.serder.pvrsn.major === 1 ? Vrsn_1_0 : Vrsn_2_0;
52
+ if (requested && (requested.major !== accepted.major || requested.minor !== accepted.minor)) {
53
+ throw new ValidationError(`KEL of ${kever.prefixer.qb64} is KERI ${accepted.major}.${accepted.minor}; `
54
+ + `refusing a KERI ${requested.major}.${requested.minor} event.`);
55
+ }
56
+ return accepted;
57
+ }
45
58
  /**
46
59
  * Produce the default simple numeric signing threshold for a key count.
47
60
  *
@@ -76,8 +89,20 @@ function ample(count, faults, weak = true) {
76
89
  }
77
90
  return weak ? Math.min(n, m1, m2) : Math.min(n, Math.max(m1, m2));
78
91
  }
79
- function loadConfigUrls(value) {
80
- return Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : [];
92
+ /** Decode one bootstrap URL collection without normalizing its exact string keys. */
93
+ function loadConfigUrls(value, field) {
94
+ if (value === undefined)
95
+ return [];
96
+ if (!Array.isArray(value))
97
+ throw new ValidationError(`Config ${field} must be an array of URL strings.`);
98
+ const urls = [];
99
+ for (const [index, entry] of value.entries()) {
100
+ if (typeof entry !== "string" || entry.trim().length === 0) {
101
+ throw new ValidationError(`Config ${field}[${index}] must be a non-empty URL string.`);
102
+ }
103
+ urls.push(entry);
104
+ }
105
+ return urls;
81
106
  }
82
107
  function requireConfigDatetime(alias, value) {
83
108
  if (typeof value !== "string") {
@@ -111,7 +136,7 @@ function concatMessages(messages) {
111
136
  * storage: controller indexed signatures, witness indexed signatures,
112
137
  * authorizing seals, and receipts in KERIpy `cloneEvtMsg` order.
113
138
  */
114
- export function eventReplayMessage(hby, serder) {
139
+ export function eventReplayMessage(hby, serder, gvrsn = Vrsn_1_0) {
115
140
  const pre = serder.pre;
116
141
  const said = serder.said;
117
142
  if (!pre || !said) {
@@ -121,7 +146,7 @@ export function eventReplayMessage(hby, serder) {
121
146
  if (fn === null) {
122
147
  throw new ValidationError(`Missing first-seen ordinal for accepted event ${pre}:${said}.`);
123
148
  }
124
- return hby.db.cloneEvtMsg(pre, fn, said);
149
+ return hby.db.cloneEvtMsg(pre, fn, said, gvrsn);
125
150
  }
126
151
  /**
127
152
  * Return a stored KEL event payload with KERIpy `cloneEvtMsg` attachment order.
@@ -145,7 +170,7 @@ export function eventPayloadMessage(hby, serder) {
145
170
  return hby.db.cloneEvtMsg(pre, ordinal, said);
146
171
  }
147
172
  /** Return the exact accepted event replay message at `(pre, sn)`. */
148
- export function acceptedEventReplayMessage(hby, pre, sn) {
173
+ export function acceptedEventReplayMessage(hby, pre, sn, gvrsn = Vrsn_1_0) {
149
174
  const said = hby.db.kels.getLast(pre, sn);
150
175
  if (!said) {
151
176
  throw new ValidationError(`Missing accepted event at ${pre}:${sn.toString(16)}.`);
@@ -154,7 +179,7 @@ export function acceptedEventReplayMessage(hby, pre, sn) {
154
179
  if (!serder) {
155
180
  throw new ValidationError(`Missing accepted event body for ${pre}:${said}.`);
156
181
  }
157
- return { serder, message: eventReplayMessage(hby, serder) };
182
+ return { serder, message: eventReplayMessage(hby, serder, gvrsn) };
158
183
  }
159
184
  /**
160
185
  * Build one inception/delgated-inception serder from generated keys and config.
@@ -251,6 +276,19 @@ export class Hab {
251
276
  get kever() {
252
277
  return this.pre ? this.db.getKever(this.pre) : null;
253
278
  }
279
+ /**
280
+ * KERI version of this habitat's accepted KEL.
281
+ *
282
+ * Replies and queries this habitat authors use the same version, so a stream
283
+ * that carries the KEL followed by its endpoint replies never mixes protocol
284
+ * or attachment genera.
285
+ */
286
+ get kelVersion() {
287
+ const kever = this.kever;
288
+ if (!kever)
289
+ throw new ValidationError(`Missing accepted key state for ${this.pre}.`);
290
+ return acceptedKelVersion(kever);
291
+ }
254
292
  /**
255
293
  * Accept one locally generated event through the same `Kevery`/`Kever` path
256
294
  * used by remote processing.
@@ -270,7 +308,8 @@ export class Hab {
270
308
  local: true,
271
309
  });
272
310
  if (decision.kind !== "accept") {
273
- throw new ValidationError(`Local event ${serder.said ?? "<unknown>"} was not accepted.`, { decision });
311
+ const detail = decision.kind === "duplicate" ? decision.duplicate : decision.message;
312
+ throw new ValidationError(`Local event ${serder.said ?? "<unknown>"} was not accepted: ${detail}`);
274
313
  }
275
314
  const kever = this.db.getKever(this.pre);
276
315
  if (!kever) {
@@ -280,7 +319,7 @@ export class Hab {
280
319
  }
281
320
  /** Sign one local bootstrap reply and submit it to normal signature and BADA validation. */
282
321
  acceptReply(route, data, stamp) {
283
- const serder = replyEvent(route, data, { pre: this.pre, stamp });
322
+ const serder = replyEvent(route, data, { pre: this.pre, stamp, pvrsn: this.kelVersion });
284
323
  const kever = this.kever;
285
324
  if (!kever)
286
325
  throw new ValidationError(`Missing accepted key state for ${this.pre}.`);
@@ -330,7 +369,7 @@ export class Hab {
330
369
  }
331
370
  const dt = requireConfigDatetime(this.name, conf.dt);
332
371
  // Validate every configured URL before admitting any bootstrap reply.
333
- const locations = loadConfigUrls(conf.curls).map((url) => {
372
+ const locations = loadConfigUrls(conf.curls, "curls").map((url) => {
334
373
  const parsed = new URL(url);
335
374
  const scheme = parsed.protocol.length > 0 ? parsed.protocol.slice(0, -1) : Schemes.http;
336
375
  return { eid: this.pre, scheme, url };
@@ -341,7 +380,8 @@ export class Hab {
341
380
  return true;
342
381
  }
343
382
  /**
344
- * Incept this habitat through the shared accepted-state path.
383
+ * Incept this habitat through the shared accepted-state path, as KERI v2
384
+ * unless `version` selects KERI v1 for v1-only peers.
345
385
  *
346
386
  * KERIpy correspondence:
347
387
  * - mirrors the pattern where local inception is signed in the habitat layer
@@ -349,7 +389,7 @@ export class Hab {
349
389
  * `states.`/`kels.` directly
350
390
  */
351
391
  make(args = {}) {
352
- const { code = "E", transferable = true, isith = undefined, icount = 1, icode = undefined, nsith = undefined, ncount = undefined, ncode = undefined, toad = 0, wits = [], delpre = undefined, estOnly = false, DnD = false, hidden = false, data = [], algo = undefined, salt = undefined, tier = undefined, } = args;
392
+ const { code = "E", transferable = true, isith = undefined, icount = 1, icode = undefined, nsith = undefined, ncount = undefined, ncode = undefined, toad = 0, wits = [], delpre = undefined, estOnly = false, DnD = false, hidden = false, data = [], algo = undefined, salt = undefined, tier = undefined, version = Vrsn_2_0, } = args;
353
393
  let nextCount = ncount ?? icount;
354
394
  let nextSith = nsith ?? isith;
355
395
  let prefixCode = code;
@@ -378,6 +418,7 @@ export class Hab {
378
418
  const currentSith = isith ?? defaultThreshold(keys.length, 1);
379
419
  const nextThreshold = nextSith ?? defaultThreshold(ndigs.length, 0);
380
420
  const serder = inceptEvent(keys, {
421
+ version,
381
422
  code: prefixCode,
382
423
  isith: currentSith,
383
424
  ndigs,
@@ -432,6 +473,7 @@ export class Hab {
432
473
  if (!kever) {
433
474
  throw new ValidationError(`Missing accepted key state for ${this.pre}.`);
434
475
  }
476
+ const version = acceptedKelVersion(kever, args.version);
435
477
  const priorSit = this.ks.getSits(this.pre);
436
478
  if (!priorSit) {
437
479
  throw new ValidationError(`Missing keeper state for ${this.pre}.`);
@@ -467,6 +509,7 @@ export class Hab {
467
509
  const ndigs = digers.map((diger) => diger.qb64);
468
510
  try {
469
511
  const serder = rotateEvent(this.pre, keys, kever.serder.said ?? kever.said, {
512
+ version,
470
513
  ilk: kever.delpre !== null ? Ilks.drt : Ilks.rot,
471
514
  sn: kever.sn + 1,
472
515
  isith: currentSith,
@@ -486,7 +529,7 @@ export class Hab {
486
529
  for (const pub of new PreSit(priorSit).old.pubs) {
487
530
  this.ks.pris.rem(pub);
488
531
  }
489
- return messagize(serder, { sigers, pipelined: true });
532
+ return messagize(serder, { sigers, pipelined: true, gvrsn: version });
490
533
  }
491
534
  catch (error) {
492
535
  // Roll keeper state back if the event was not accepted locally. The
@@ -515,10 +558,26 @@ export class Hab {
515
558
  if (!kever) {
516
559
  throw new ValidationError(`Missing accepted key state for ${this.pre}.`);
517
560
  }
518
- const serder = interactEvent(this.pre, kever.serder.said ?? kever.said, kever.sn + 1, args.data ?? []);
561
+ const version = acceptedKelVersion(kever, args.version);
562
+ const serder = interactEvent(this.pre, kever.serder.said ?? kever.said, kever.sn + 1, args.data ?? [], { version });
519
563
  const sigers = this.sign(serder.raw, true);
520
564
  this.acceptLocally(serder, sigers);
521
- return messagize(serder, { sigers, pipelined: true });
565
+ return messagize(serder, { sigers, pipelined: true, gvrsn: version });
566
+ }
567
+ /**
568
+ * Decrypt `ser` (sealed-box ciphertext, qb64 or raw) with the private keys of
569
+ * `verfers`, defaulting to this habitat's current accepted keys.
570
+ *
571
+ * KERIpy correspondence: `BaseHab.decrypt` delegating to `Manager.decrypt`.
572
+ * As there, every selected key opens the ciphertext in turn, so a
573
+ * multi-key habitat passes the single verfer the ciphertext was sealed to.
574
+ */
575
+ decrypt(ser, verfers) {
576
+ const kever = this.kever;
577
+ if (!verfers && !kever) {
578
+ throw new ValidationError(`Missing accepted key state for ${this.pre}.`);
579
+ }
580
+ return this.mgr.decrypt(ser, { verfers: verfers ?? kever.verfers });
522
581
  }
523
582
  sign(ser, indexed = false) {
524
583
  if (!this.pre) {
@@ -536,32 +595,20 @@ export class Hab {
536
595
  throw new ValidationError(`Missing accepted member key state for ${member}.`);
537
596
  // KERIpy GroupHab.sign/fetchLatestContribTo: a member may have rotated
538
597
  // ahead of its contribution to the group's currently accepted key list.
539
- for (const [, sn, said] of this.db.kels.getOnItemBackIter(member, state.sn)) {
540
- if (this.db.kels.getLast(member, sn) !== said)
541
- continue;
542
- const event = this.db.getEvtSerder(member, said);
543
- if (!event)
544
- throw new ValidationError(`Missing accepted member event ${member}:${said}.`);
545
- if (!event.estive)
546
- continue;
547
- const keys = event.verfers ?? [];
548
- if (keys.length !== 1) {
549
- throw new ValidationError(`Group signing requires single-key member events for ${member}.`);
550
- }
551
- const index = pubs.indexOf(keys[0].qb64);
552
- if (index < 0)
553
- continue;
598
+ const contribution = latestGroupContribution(this.db, member, kever.verfers);
599
+ if (contribution) {
600
+ const { index, verfer } = contribution;
554
601
  if (indexed) {
555
602
  // Endorsement proves current authority only. Rotation signatures have
556
603
  // a separate prior-next commitment path in rotateGroupHab().
557
604
  return this.mgr.sign(ser, {
558
- pubs: [keys[0].qb64],
605
+ pubs: [verfer.qb64],
559
606
  indexed: true,
560
607
  indices: [index],
561
608
  ondices: [null],
562
609
  });
563
610
  }
564
- return this.mgr.sign(ser, [keys[0].qb64], false);
611
+ return this.mgr.sign(ser, [verfer.qb64], false);
565
612
  }
566
613
  throw new ValidationError(`Member ${member} has no contribution to group ${this.pre}.`);
567
614
  }
@@ -631,7 +678,7 @@ export class Hab {
631
678
  if (!this.pre) {
632
679
  throw new Error("Cannot build a reply before habitat inception.");
633
680
  }
634
- return this.endorse(replyEvent(route, data, { pre: this.pre, stamp }));
681
+ return this.endorse(replyEvent(route, data, { pre: this.pre, stamp, pvrsn: this.kelVersion }));
635
682
  }
636
683
  /**
637
684
  * Create and sign one query message from this habitat.
@@ -641,14 +688,15 @@ export class Hab {
641
688
  * local contribution may be only a partial signature; the receiver must still
642
689
  * enforce the group's current threshold. This is not a member-query fallback.
643
690
  */
644
- query(pre, src, query = {}, route = "", stamp = makeNowIso8601()) {
645
- return this.endorse(queryEvent(route, {
646
- ...query,
647
- i: (route === "tels" || route === "tsn") && typeof query.i === "string" ? query.i : pre,
691
+ query(pre, src, instruction, stamp = makeNowIso8601()) {
692
+ return this.endorse(queryEvent(instruction.route, {
693
+ ...instruction.q,
694
+ i: instruction.route === "tels" || instruction.route === "tsn" ? instruction.q.i : pre,
648
695
  src,
649
696
  }, {
650
697
  pre: this.pre,
651
698
  stamp,
699
+ pvrsn: this.kelVersion,
652
700
  }));
653
701
  }
654
702
  /**
@@ -671,7 +719,7 @@ export class Hab {
671
719
  if (!kever) {
672
720
  throw new ValidationError(`Missing accepted key state for ${this.pre}.`);
673
721
  }
674
- const reserder = receiptEvent(pre, sn, said);
722
+ const reserder = receiptEvent(pre, sn, said, { pvrsn: serder.pvrsn, gvrsn: serder.pvrsn });
675
723
  if (!kever.transferable) {
676
724
  const cigars = this.sign(serder.raw, false);
677
725
  this.kvy.processReceipt({
@@ -681,7 +729,7 @@ export class Hab {
681
729
  tsgs: [],
682
730
  local: true,
683
731
  });
684
- return messagize(reserder, { cigars, pipelined: true });
732
+ return messagize(reserder, { cigars, pipelined: true, gvrsn: serder.pvrsn });
685
733
  }
686
734
  const estSaid = kever.lastEst.d || kever.said;
687
735
  const estEvent = estSaid ? this.db.getEvtSerder(this.pre, estSaid) : null;
@@ -702,6 +750,7 @@ export class Hab {
702
750
  sigers: tsg.sigers,
703
751
  seal: { i: tsg.prefixer, s: tsg.seqner, d: tsg.diger },
704
752
  pipelined: true,
753
+ gvrsn: serder.pvrsn,
705
754
  });
706
755
  }
707
756
  /**
@@ -724,12 +773,12 @@ export class Hab {
724
773
  if (kever.transferable) {
725
774
  throw new ValidationError(`Witness receipts require a non-transferable witness habitat, got ${this.pre}.`);
726
775
  }
727
- const wits = this.receiptedWitnesses(serder);
776
+ const wits = this.db.acceptedEventWitnesses(serder) ?? [];
728
777
  const index = wits.indexOf(this.pre);
729
778
  if (index < 0) {
730
779
  throw new ValidationError(`${this.pre} is not an authorized witness for ${pre}:${said}.`);
731
780
  }
732
- const reserder = receiptEvent(pre, sn, said);
781
+ const reserder = receiptEvent(pre, sn, said, { pvrsn: serder.pvrsn, gvrsn: serder.pvrsn });
733
782
  const wigers = this.mgr.sign(serder.raw, {
734
783
  pubs: [this.pre],
735
784
  indexed: true,
@@ -742,7 +791,7 @@ export class Hab {
742
791
  tsgs: [],
743
792
  local: true,
744
793
  });
745
- return messagize(reserder, { wigers, pipelined: true });
794
+ return messagize(reserder, { wigers, pipelined: true, gvrsn: serder.pvrsn });
746
795
  }
747
796
  /**
748
797
  * Create one signed endpoint-role authorization reply for this habitat.
@@ -790,7 +839,12 @@ export class Hab {
790
839
  *
791
840
  * Witnesses are derived from current key state as well as stored location
792
841
  * replies because witness membership is partly a KEL concern, not just an
793
- * endpoint-authorization concern.
842
+ * endpoint-authorization concern. Empty location maps retain endpoint identity
843
+ * so routing can report missing locations rather than select a lower role.
844
+ * Unlike KERIpy 71438328, stored roles without allowed or enabled approval are excluded.
845
+ *
846
+ * @param pre Controller AID whose accepted roles and current witnesses are projected.
847
+ * @returns Role to endpoint AID to scheme/URL map, including empty location maps.
794
848
  */
795
849
  endsFor(pre) {
796
850
  const ends = {};
@@ -801,9 +855,6 @@ export class Hab {
801
855
  continue;
802
856
  }
803
857
  const urls = this.fetchUrls(eid);
804
- if (Object.keys(urls).length === 0) {
805
- continue;
806
- }
807
858
  ends[role] ??= {};
808
859
  ends[role][eid] = urls;
809
860
  }
@@ -812,9 +863,6 @@ export class Hab {
812
863
  const witnessUrls = {};
813
864
  for (const eid of kever.wits) {
814
865
  const urls = this.fetchUrls(eid);
815
- if (Object.keys(urls).length === 0) {
816
- continue;
817
- }
818
866
  witnessUrls[eid] = urls;
819
867
  }
820
868
  if (Object.keys(witnessUrls).length > 0) {
@@ -866,116 +914,59 @@ export class Hab {
866
914
  return concatMessages(messages);
867
915
  }
868
916
  /** Borrow this Hab/store through lazy role output; metadata capture starts only on iterator acquisition. */
869
- replyEndRoleMessages(cid, role, eids = [], scheme = "", limits = {}) {
870
- return oobiReplyMessages(this, cid, role, eids, scheme, false, limits);
917
+ replyEndRoleMessages(cid, role, eids = [], scheme = "") {
918
+ return oobiReplyMessages(this, cid, role, eids, scheme, false);
871
919
  }
872
- /** Finite role output admits each message before retaining it; large callers use the lazy source. */
920
+ /** Collect finite role output; large callers use the lazy source. */
873
921
  replyEndRole(cid, role, eids = [], scheme = "") {
874
- return collectOobiReplies(this.replyEndRoleMessages(cid, role, eids, scheme));
922
+ return concatMessages([...this.replyEndRoleMessages(cid, role, eids, scheme)]);
875
923
  }
876
924
  /** Lazy OOBI output preserves the top-level delegated readiness guard under the consuming owner. */
877
- replyToOobiMessages(aid, role, eids = [], limits = {}) {
878
- return oobiReplyMessages(this, aid, role, eids, "", true, limits);
925
+ replyToOobiMessages(aid, role, eids = []) {
926
+ return oobiReplyMessages(this, aid, role, eids, "", true);
879
927
  }
880
928
  /** Collect explicitly finite OOBI output; incomplete delegated state still returns empty bytes. */
881
929
  replyToOobi(aid, role, eids = []) {
882
- return collectOobiReplies(this.replyToOobiMessages(aid, role, eids));
930
+ return concatMessages([...this.replyToOobiMessages(aid, role, eids)]);
883
931
  }
884
932
  /**
885
- * Resolve the witness list that governs receipts for one event.
933
+ * Yield signed wire messages for one finite cue pass, like KERIpy's BaseHab.
886
934
  *
887
- * Preference order:
888
- * - the durable event-level `wits.` projection when present
889
- * - the event body's own backer list for inception events
890
- * - the current accepted kever witness list as a last resort
891
- */
892
- receiptedWitnesses(serder) {
893
- const pre = serder.pre;
894
- const said = serder.said;
895
- if (!pre || !said) {
896
- return [];
897
- }
898
- const stored = this.db.wits.get(dgKey(pre, said)).map((wit) => wit.qb64);
899
- if (stored.length > 0) {
900
- return stored;
901
- }
902
- if (serder.ilk === Ilks.icp || serder.ilk === Ilks.dip) {
903
- return [...serder.backs];
904
- }
905
- return [...(this.db.getKever(pre)?.wits ?? [])];
906
- }
907
- /**
908
- * Process KERI-style cues and yield structured runtime cue emissions.
909
- *
910
- * KERIpy correspondence:
911
- * - this is the `keri-ts` equivalent of `BaseHab.processCuesIter()`
912
- *
913
- * `keri-ts` difference:
914
- * - the cue identity is preserved in the yielded `CueEmission` instead of
915
- * collapsing everything immediately to raw bytes
935
+ * A Deck is consumed through its initial extent. Other iterables are copied to
936
+ * a local Deck, so callers can borrow an array while retaining their source.
937
+ * Query, stream, and notification ownership stays with the caller; only
938
+ * complete query instructions produce wire output here.
916
939
  *
917
- * Current support:
918
- * - `receipt`, `witness`, `replay`, `reply`, and complete `query` cues emit
919
- * wire messages
920
- * - `stream` emits transport requests without flattening them into bytes
921
- * - observer/runtime cues remain visible as notify emissions
940
+ * @param cues Deck to consume through its initial extent, or borrowed iterable copied into a local Deck.
941
+ * @returns A synchronous generator of signed wire messages, not delivery outcomes.
942
+ * @throws Signing/replay construction failures propagate; a supplied Deck head is already pulled when construction begins.
922
943
  */
923
944
  *processCuesIter(cues) {
924
945
  const queue = cues instanceof Deck ? cues : new Deck(cues);
925
- // One pass owns only its initial batch; producers may append while a consumer awaits delivery.
926
946
  const count = queue.length;
927
947
  for (let index = 0; index < count; index++) {
928
948
  const cue = queue.pull();
929
- if (!cue) {
949
+ if (!cue)
930
950
  continue;
951
+ switch (cue.kin) {
952
+ case "receipt":
953
+ yield this.receipt(cue.serder);
954
+ break;
955
+ case "witness":
956
+ yield this.witness(cue.serder);
957
+ break;
958
+ case "replay":
959
+ yield* cue.msgs;
960
+ break;
961
+ case "reply":
962
+ yield cue.serder ? this.endorse(cue.serder) : this.reply(`${cue.route}/${this.pre}`, cue.data.asDict());
963
+ break;
964
+ case "query":
965
+ if (cue.route && cue.pre && cue.src && (cue.signer === undefined || cue.signer === this.pre)) {
966
+ yield this.query(cue.pre, cue.src, cue);
967
+ }
968
+ break;
931
969
  }
932
- const emission = this.interpretCue(cue);
933
- if (emission)
934
- yield emission;
935
- }
936
- }
937
- /** Interpret one borrowed cue synchronously; callers own queue removal and retained output. */
938
- interpretCue(cue) {
939
- switch (cue.kin) {
940
- case "receipt":
941
- return { cue, messages: [this.receipt(cue.serder)], kind: "wire" };
942
- case "witness":
943
- return { cue, messages: [this.witness(cue.serder)], kind: "wire" };
944
- case "replay":
945
- return { cue, messages: cue.messages, kind: "wire" };
946
- case "reply":
947
- return {
948
- cue,
949
- messages: [
950
- cue.serder ? this.endorse(cue.serder) : this.reply(["/tsn/registry", "/tsn/credential"].includes(cue.route) ? `${cue.route}/${this.pre}` : cue.route, cue.data ?? {}),
951
- ],
952
- kind: "wire",
953
- };
954
- case "query": {
955
- const query = cue.query ?? cue.q ?? {};
956
- if (cue.pre && cue.src) {
957
- return {
958
- cue,
959
- messages: [this.query(cue.pre, cue.src, query, cue.route ?? "")],
960
- kind: "wire",
961
- };
962
- }
963
- return { cue, messages: [], kind: "notify" };
964
- }
965
- case "stream":
966
- return { cue, messages: [], kind: "transport" };
967
- case "notice":
968
- case "noticeBadCloneFN":
969
- case "keyStateSaved":
970
- case "txnStateSaved":
971
- case "invalid":
972
- case "psUnescrow":
973
- case "remoteMemberedSig":
974
- case "oobiQueued":
975
- case "oobiResolved":
976
- case "oobiFailed":
977
- return { cue, messages: [], kind: "notify" };
978
- default:
979
970
  }
980
971
  }
981
972
  }
@@ -1086,7 +1077,7 @@ export class Signator {
1086
1077
  */
1087
1078
  export class Habery {
1088
1079
  /** Compose one habery from already-opened storage, manager, and config surfaces. */
1089
- constructor(name, base, temp, headDirPath, compat, readonly, db, ks, obx, cesrBodyMode, mgr, cf, skipSignator = false) {
1080
+ constructor(name, base, temp, headDirPath, compat, readonly, db, ks, mgr, cf, skipSignator = false) {
1090
1081
  Object.defineProperty(this, "name", {
1091
1082
  enumerable: true,
1092
1083
  configurable: true,
@@ -1135,18 +1126,6 @@ export class Habery {
1135
1126
  writable: true,
1136
1127
  value: void 0
1137
1128
  });
1138
- Object.defineProperty(this, "obx", {
1139
- enumerable: true,
1140
- configurable: true,
1141
- writable: true,
1142
- value: void 0
1143
- });
1144
- Object.defineProperty(this, "cesrBodyMode", {
1145
- enumerable: true,
1146
- configurable: true,
1147
- writable: true,
1148
- value: void 0
1149
- });
1150
1129
  Object.defineProperty(this, "mgr", {
1151
1130
  enumerable: true,
1152
1131
  configurable: true,
@@ -1203,8 +1182,6 @@ export class Habery {
1203
1182
  this.readonly = readonly;
1204
1183
  this.db = db;
1205
1184
  this.ks = ks;
1206
- this.obx = obx;
1207
- this.cesrBodyMode = cesrBodyMode;
1208
1185
  this.mgr = mgr;
1209
1186
  this.cf = cf;
1210
1187
  this.rtr = new Router();
@@ -1215,7 +1192,7 @@ export class Habery {
1215
1192
  lax: false,
1216
1193
  local: true,
1217
1194
  });
1218
- this.replyRoutes = new BasicReplyRouteHandler(this.db, this.rvy);
1195
+ this.replyRoutes = new BasicReplyRouteHandler(this.rvy);
1219
1196
  this.replyRoutes.registerReplyRoutes(this.rtr);
1220
1197
  this.kevery = new Kevery(this.db, {
1221
1198
  cues: localCues,
@@ -1265,6 +1242,42 @@ export class Habery {
1265
1242
  for (const hab of this.habs.values()) {
1266
1243
  hab.reconfigure();
1267
1244
  }
1245
+ // Restart recovery: commit members of an accepted establishment event
1246
+ // whose live commit was interrupted. Read-only openings never write.
1247
+ for (const pre of this.readonly ? [] : this.habs.keys()) {
1248
+ this.recoverAcceptedGroupMembers(pre);
1249
+ }
1250
+ }
1251
+ /**
1252
+ * Commit the members of a local group's latest accepted establishment event
1253
+ * when the stored record is stale (KERIpy `GroupHab.recoverAcceptedMembers`).
1254
+ *
1255
+ * A process that stopped after a rotation was accepted but before its live
1256
+ * `commitAcceptedGroupMembers` leaves `smids`/`rmids` stale. Members are
1257
+ * derived from local KELs, trying the stored members first and every AID
1258
+ * with local key state only when they do not account for every key. They
1259
+ * are committed only when they differ from the stored record and the local
1260
+ * member contributes to that event; a record that does not yet include the
1261
+ * local member is a pending join, not a stale commit. Only the latest
1262
+ * accepted event is committed, so this never rolls members back, and
1263
+ * repeating it changes nothing. Returns whether stale members were committed.
1264
+ */
1265
+ recoverAcceptedGroupMembers(pre) {
1266
+ const record = this.db.getHab(pre);
1267
+ if (!record?.mid || record.sid || !this.habs.has(record.mid))
1268
+ return false;
1269
+ const smids = [...(record.smids ?? [])], rmids = [...(record.rmids ?? [])];
1270
+ const accepted = acceptedGroupMembers(this.db, pre, new Set([...smids, ...rmids]))
1271
+ ?? acceptedGroupMembers(this.db, pre, [...this.db.states.getTopItemIter()].map(([keys]) => keys.join(".")));
1272
+ if (!accepted)
1273
+ return false;
1274
+ const same = (left, right) => left.length === right.length && left.every((aid, index) => aid === right[index]);
1275
+ if (same(accepted.smids, smids) && same(accepted.rmids, rmids))
1276
+ return false;
1277
+ if (!accepted.smids.includes(record.mid) && !accepted.rmids.includes(record.mid))
1278
+ return false;
1279
+ this.commitGroupHabMembers(pre, accepted.smids, accepted.rmids);
1280
+ return true;
1268
1281
  }
1269
1282
  /** Local AID prefixes currently managed by this habery. */
1270
1283
  get prefixes() {
@@ -1282,15 +1295,16 @@ export class Habery {
1282
1295
  */
1283
1296
  reconfigure() {
1284
1297
  const conf = this.config;
1298
+ // Validate every collection before the first pin, including when dt is absent.
1299
+ const iurls = loadConfigUrls(conf.iurls, "iurls");
1300
+ const durls = loadConfigUrls(conf.durls, "durls");
1301
+ const wurls = loadConfigUrls(conf.wurls, "wurls");
1285
1302
  if (typeof conf.dt === "string") {
1286
1303
  const date = conf.dt;
1287
- for (const url of [
1288
- ...loadConfigUrls(conf.iurls),
1289
- ...loadConfigUrls(conf.durls),
1290
- ]) {
1304
+ for (const url of [...iurls, ...durls]) {
1291
1305
  this.db.oobis.pin(url, { date, state: "queued" });
1292
1306
  }
1293
- for (const url of loadConfigUrls(conf.wurls)) {
1307
+ for (const url of wurls) {
1294
1308
  this.db.woobi.pin(url, { date, state: "queued" });
1295
1309
  }
1296
1310
  }
@@ -1332,6 +1346,10 @@ export class Habery {
1332
1346
  const keys = this.extractGroupMemberKeys(signingMembers);
1333
1347
  const ndigs = this.extractGroupMemberNextDigests(rotationMembers);
1334
1348
  const serder = inceptEvent(keys, {
1349
+ // A group identifier is always self-addressing, even with a single signing
1350
+ // key, matching KERIpy's GroupHab.make (code defaults to Blake3_256).
1351
+ version: args.version ?? Vrsn_2_0,
1352
+ code: DigDex.Blake3_256,
1335
1353
  isith: args.isith,
1336
1354
  ndigs,
1337
1355
  nsith: args.nsith,
@@ -1350,6 +1368,8 @@ export class Habery {
1350
1368
  this.persistGroupHabRecord(pre, group, mhab.pre, signingMembers, rotationMembers, ns);
1351
1369
  }
1352
1370
  this.habs.set(pre, hab);
1371
+ // Membership is local intent, needed to accept before collecting witness receipts.
1372
+ this.db.groups.add(pre);
1353
1373
  const decision = this.kevery.processEvent({
1354
1374
  serder,
1355
1375
  sigers,
@@ -1363,8 +1383,10 @@ export class Habery {
1363
1383
  if (!args.hidden) {
1364
1384
  this.removeGroupHabRecord(pre, group, ns);
1365
1385
  }
1386
+ else
1387
+ this.db.groups.delete(pre);
1366
1388
  this.habs.delete(pre);
1367
- throw new ValidationError(decision.message, decision.context);
1389
+ throw new ValidationError(decision.message);
1368
1390
  }
1369
1391
  if (hab.accepted) {
1370
1392
  this.markAcceptedGroupHab(pre);
@@ -1374,7 +1396,7 @@ export class Habery {
1374
1396
  hab,
1375
1397
  serder,
1376
1398
  sigers,
1377
- message: messagize(serder, { sigers, pipelined: true }),
1399
+ message: messagize(serder, { sigers, pipelined: true, gvrsn: args.version ?? Vrsn_2_0 }),
1378
1400
  };
1379
1401
  }
1380
1402
  /**
@@ -1446,6 +1468,8 @@ export class Habery {
1446
1468
  * - member AIDs should already be in the key state intended for the new
1447
1469
  * group key list, matching KLI's operator workflow of rotating members
1448
1470
  * before rotating the group
1471
+ * Body and returned proof framing follow the group's accepted KEL version;
1472
+ * a conflicting explicit `version` is refused.
1449
1473
  */
1450
1474
  rotateGroupHab(group, smids, rmids, args = {}) {
1451
1475
  const hab = this.habByName(group);
@@ -1464,6 +1488,7 @@ export class Habery {
1464
1488
  const keys = this.extractGroupMemberKeys(signingMembers);
1465
1489
  const ndigs = this.extractGroupMemberNextDigests(rotationMembers);
1466
1490
  const kever = hab.kever;
1491
+ const version = acceptedKelVersion(kever, args.version);
1467
1492
  const serder = rotateEvent(hab.pre, keys, kever.serder.said ?? kever.said, {
1468
1493
  ilk: kever.delpre !== null ? Ilks.drt : Ilks.rot,
1469
1494
  sn: kever.sn + 1,
@@ -1475,6 +1500,7 @@ export class Habery {
1475
1500
  cuts: args.cuts,
1476
1501
  adds: args.adds,
1477
1502
  data: args.data,
1503
+ version,
1478
1504
  });
1479
1505
  const sigers = this.signGroupEventWithLocalMembers(serder, signingMembers, keys, kever.ndigers);
1480
1506
  const decision = this.kevery.processEvent({
@@ -1487,7 +1513,7 @@ export class Habery {
1487
1513
  local: true,
1488
1514
  });
1489
1515
  if (decision.kind === "reject") {
1490
- throw new ValidationError(decision.message, decision.context);
1516
+ throw new ValidationError(decision.message);
1491
1517
  }
1492
1518
  if (serder.sn !== null && serder.said && this.db.kels.getLast(hab.pre, serder.sn) === serder.said) {
1493
1519
  this.commitGroupHabMembers(hab.pre, signingMembers, rotationMembers);
@@ -1496,10 +1522,10 @@ export class Habery {
1496
1522
  hab,
1497
1523
  serder,
1498
1524
  sigers,
1499
- message: messagize(serder, { sigers, pipelined: true }),
1525
+ message: messagize(serder, { sigers, pipelined: true, gvrsn: serder.gvrsn ?? version }),
1500
1526
  };
1501
1527
  }
1502
- /** Create a locally signed group interaction event. */
1528
+ /** Create a locally signed group interaction in the group's accepted KEL version; conflicts are refused. */
1503
1529
  interactGroupHab(group, smids, args = {}) {
1504
1530
  const hab = this.habByName(group);
1505
1531
  if (!hab?.pre || !hab.kever) {
@@ -1514,7 +1540,8 @@ export class Habery {
1514
1540
  throw new ValidationError(`Local member identifier ${record.mid} must be a group signing member.`);
1515
1541
  }
1516
1542
  const kever = hab.kever;
1517
- const serder = interactEvent(hab.pre, kever.serder.said ?? kever.said, kever.sn + 1, args.data ?? []);
1543
+ const version = acceptedKelVersion(kever, args.version);
1544
+ const serder = interactEvent(hab.pre, kever.serder.said ?? kever.said, kever.sn + 1, args.data ?? [], { version });
1518
1545
  const keys = kever.verfers.map((verfer) => verfer.qb64);
1519
1546
  const sigers = this.signGroupEventWithLocalMembers(serder, signingMembers, keys);
1520
1547
  const decision = this.kevery.processEvent({
@@ -1527,7 +1554,7 @@ export class Habery {
1527
1554
  local: true,
1528
1555
  });
1529
1556
  if (decision.kind === "reject") {
1530
- throw new ValidationError(decision.message, decision.context);
1557
+ throw new ValidationError(decision.message);
1531
1558
  }
1532
1559
  if (hab.accepted) {
1533
1560
  this.markAcceptedGroupHab(hab.pre);
@@ -1536,7 +1563,7 @@ export class Habery {
1536
1563
  hab,
1537
1564
  serder,
1538
1565
  sigers,
1539
- message: messagize(serder, { sigers, pipelined: true }),
1566
+ message: messagize(serder, { sigers, pipelined: true, gvrsn: serder.gvrsn ?? version }),
1540
1567
  };
1541
1568
  }
1542
1569
  /** Extract the single current verifier from each group signing member. */
@@ -1663,12 +1690,22 @@ export class Habery {
1663
1690
  }
1664
1691
  /** Closes backing databases and optionally clears temp storage. */
1665
1692
  *close(clear = false) {
1666
- yield* this.db.close(clear);
1667
- yield* this.ks.close(clear);
1668
- yield* this.obx.close(clear);
1669
- if (this.cf) {
1670
- yield* this.cf.close(clear && this.temp);
1693
+ const failures = [];
1694
+ const closing = [this.db.close(clear), this.ks.close(clear)];
1695
+ if (this.cf)
1696
+ closing.push(this.cf.close(clear && this.temp));
1697
+ for (const operation of closing) {
1698
+ try {
1699
+ yield* operation;
1700
+ }
1701
+ catch (error) {
1702
+ failures.push(error);
1703
+ }
1671
1704
  }
1705
+ if (failures.length === 1)
1706
+ throw failures[0];
1707
+ if (failures.length > 1)
1708
+ throw new AggregateError(failures, "Habery resource close failed", { cause: failures[0] });
1672
1709
  }
1673
1710
  }
1674
1711
  /**
@@ -1690,16 +1727,15 @@ export function branToSeedAeid(bran) {
1690
1727
  * durable DB state rather than depending on process-local creation history.
1691
1728
  */
1692
1729
  export function* createHabery(args) {
1693
- const { name, resources, base = "", temp = false, headDirPath, compat = false, readonly = false, cf: providedCf, skipConfig = false, skipSignator = false, bran, seed, aeid, salt, algo, outboxer = "disabled", cesrBodyMode = DEFAULT_CESR_BODY_MODE, } = args;
1730
+ const { name, base = "", temp = false, headDirPath, compat = false, readonly = false, cf: providedCf, skipConfig = false, skipSignator = false, bran, seed, aeid, salt, algo, } = args;
1694
1731
  let db;
1695
1732
  let ks;
1696
- let obx;
1697
1733
  let cf;
1698
1734
  let delivered = false;
1735
+ let failure;
1699
1736
  try {
1700
1737
  db = yield* createBaser({
1701
1738
  name,
1702
- resources,
1703
1739
  base,
1704
1740
  temp,
1705
1741
  headDirPath,
@@ -1716,19 +1752,6 @@ export function* createHabery(args) {
1716
1752
  reopen: true,
1717
1753
  readonly,
1718
1754
  });
1719
- if (compat && outboxer !== "disabled") {
1720
- throw new ValidationError("Outboxer is a tufa-only sidecar and is unavailable in compat mode.");
1721
- }
1722
- obx = outboxer === "disabled" ? new DisabledOutboxer() : (yield* createOutboxer({
1723
- name,
1724
- base,
1725
- temp,
1726
- headDirPath,
1727
- compat,
1728
- reopen: true,
1729
- readonly,
1730
- mustExist: outboxer === "open",
1731
- }));
1732
1755
  cf = providedCf
1733
1756
  ?? (skipConfig ? undefined : (yield* createConfiger({
1734
1757
  name,
@@ -1756,33 +1779,42 @@ export function* createHabery(args) {
1756
1779
  algo,
1757
1780
  salt: normalizeSaltQb64(salt),
1758
1781
  });
1759
- const hby = new Habery(name, base, temp, headDirPath, compat, readonly, db, ks, obx, cesrBodyMode, mgr, cf, skipSignator);
1782
+ const hby = new Habery(name, base, temp, headDirPath, compat, readonly, db, ks, mgr, cf, skipSignator);
1760
1783
  delivered = true;
1761
1784
  return hby;
1762
1785
  }
1786
+ catch (error) {
1787
+ failure = { error };
1788
+ throw error;
1789
+ }
1763
1790
  finally {
1764
1791
  if (!delivered) {
1765
- // Failed acquisition retains ownership; never clear persistent data or caller config.
1766
- try {
1767
- if (cf && cf !== providedCf)
1768
- yield* cf.close();
1769
- }
1770
- finally {
1792
+ // Failed acquisition still owns these resources; attempt every close.
1793
+ const failures = [];
1794
+ if (failure)
1795
+ failures.push(failure.error);
1796
+ const closing = [];
1797
+ if (cf && cf !== providedCf)
1798
+ closing.push(cf.close());
1799
+ if (ks)
1800
+ closing.push(ks.close());
1801
+ if (db)
1802
+ closing.push(db.close());
1803
+ for (const operation of closing) {
1771
1804
  try {
1772
- if (obx)
1773
- yield* obx.close();
1805
+ yield* operation;
1774
1806
  }
1775
- finally {
1776
- try {
1777
- if (ks)
1778
- yield* ks.close();
1779
- }
1780
- finally {
1781
- if (db)
1782
- yield* db.close();
1783
- }
1807
+ catch (error) {
1808
+ failures.push(error);
1784
1809
  }
1785
1810
  }
1811
+ if (failures.length > (failure ? 1 : 0)) {
1812
+ // deno-lint-ignore no-unsafe-finally -- Cancellation must also report cleanup failure.
1813
+ if (failures.length === 1)
1814
+ throw failures[0];
1815
+ // deno-lint-ignore no-unsafe-finally -- Preserve acquisition and every failed cleanup.
1816
+ throw new AggregateError(failures, "Habery acquisition and close failed", { cause: failures[0] });
1817
+ }
1786
1818
  }
1787
1819
  }
1788
1820
  }