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
@@ -0,0 +1,664 @@
1
+ /**
2
+ * Group IPEX workflow orchestration.
3
+ *
4
+ * This module owns multisig coordination around embedded `/ipex/*` messages.
5
+ * CLI adapters supply parsed options and output/file handling; this service
6
+ * signs, publishes and sends completed group IPEX messages. CLI orchestration
7
+ * owns timed waits and worker lifetimes. Approval borrows explicit semantic,
8
+ * delivery and credential owners; its byte-input context belongs to the operation.
9
+ */
10
+ import { attachmentPayload, bytesEqual, collectPayload, concatBytes, Counter, Diger, parseBytes, Prefixer, Seqner, SerderKERI, Vrsn_1_0, Vrsn_2_0, } from "cesr-ts";
11
+ import { call } from "effection";
12
+ import { evaluateChain } from "../../acdc/chaining.js";
13
+ import { resolveAttachmentGvrsn } from "../../core/attachment-countering.js";
14
+ import { TransIdxSigGroup } from "../../core/dispatch.js";
15
+ import { ValidationError } from "../../core/errors.js";
16
+ import { verifyExchangeProofs } from "../../core/exchange/exchange-proofing.js";
17
+ import { exchange, serializeMessage } from "../../core/exchange/protocol-exchanging.js";
18
+ import { Kever } from "../../core/kel/kever.js";
19
+ import { CREDENTIAL_MAILBOX_TOPIC } from "../../core/mailbox/mailbox-topics.js";
20
+ import { messageAttachmentGroups } from "../../core/protocol-serialization.js";
21
+ import { loadNests } from "../../db/exchange/exchange-nests.js";
22
+ import { groupSigningMembers, localGroupMember, localIpexContribution } from "../multisig/group-members.js";
23
+ import { embeddedBusinessExnSAD, MULTISIG_EXN_ROUTE, multisigChild, multisigChildGenusAttrs, prepareMultisigEventExn, } from "../multisig/grouping.js";
24
+ import { groupSendResult, multisigPayloadSaid, prepareGroupMessage, remoteGroupMembers, sendGroupMessage, storedGroupMessage, } from "../multisig/multisig-messaging.js";
25
+ import { envelopeFromFrame } from "../protocol/parsering.js";
26
+ import { Reactor } from "../protocol/reactor.js";
27
+ import { abortable } from "../runtime/abortable.js";
28
+ import { collectBytes } from "../transport/byte-source.js";
29
+ import { credentialGrantReady, credentialPresentationSupportMessages, credentialSaidFromGrant, validateAdmitGrant, } from "./ipex-credentialing.js";
30
+ import { walkIpexGraph } from "./ipex-graph.js";
31
+ import { authenticateIpexNode, issuedNodeVerdict } from "./ipex-node-authentication.js";
32
+ import { IPEX_ADMIT_ROUTE, IPEX_GRANT_ROUTE, ipexConversationReady, ipexRecipient } from "./ipexing.js";
33
+ /** Authenticate the exact disclosed graph; only the existing evaluator's explicit true authorizes new use. */
34
+ function acdcV2GraphUse(hby, registry, origin, nests) {
35
+ const graph = walkIpexGraph(origin, nests, true);
36
+ if (!graph)
37
+ throw new ValidationError("ACDC v2 group graph is malformed or incomplete.");
38
+ const verdicts = new Map();
39
+ for (const [said, node] of graph.nodes) {
40
+ verdicts.set(said, issuedNodeVerdict(authenticateIpexNode(node.body, envelopeFromFrame(node), hby.db, registry)));
41
+ }
42
+ const verdict = evaluateChain(graph, verdicts, hby.db);
43
+ if (verdict?.kind === "unknown" && verdict.retryable)
44
+ return null;
45
+ if (verdict?.kind !== "valid")
46
+ throw new ValidationError("ACDC v2 group graph is false or unresolved.");
47
+ return true;
48
+ }
49
+ /** Current retained Grant authentication and graph truth are separate from protocol completion/history. */
50
+ function acdcV2GrantUse(hby, exchanger, registry, said) {
51
+ const grant = hby.db.exns.get([said]);
52
+ if (!grant || !exchanger.verifyAccepted(said, IPEX_GRANT_ROUTE))
53
+ return null;
54
+ const origins = grant.sad.a.o;
55
+ if (!Array.isArray(origins) || origins.length !== 1 || typeof origins[0] !== "string") {
56
+ throw new ValidationError("ACDC v2 group Grant requires one origin.");
57
+ }
58
+ return acdcV2GraphUse(hby, registry, origins[0], loadNests(hby.db, said));
59
+ }
60
+ /** Recheck current graph authorization at an accepted group's new delivery, output or consent action. */
61
+ export function requireAcdcV2GroupUse(hby, protocol, embedded) {
62
+ const grant = embedded.route === IPEX_GRANT_ROUTE
63
+ ? embedded.said
64
+ : embedded.route === IPEX_ADMIT_ROUTE
65
+ ? embedded.sad.p
66
+ : undefined;
67
+ if (typeof grant === "string" && acdcV2GrantUse(hby, protocol.exc, protocol.registry?.store ?? null, grant) !== true) {
68
+ throw new ValidationError("ACDC v2 group graph is unavailable for completed use.");
69
+ }
70
+ }
71
+ /** Approve exactly one ACDC v2 IPEX stream before adding this member's signature; no new acceptance rows are manufactured. */
72
+ export function* prepareAcdcV2GroupIpex(hby, protocol, group, raw) {
73
+ const frames = parseBytes(concatBytes(Counter.makeGVC(Vrsn_2_0), raw));
74
+ const frame = frames[0], embedded = frame?.body;
75
+ if (frames.length !== 1 || !(embedded instanceof SerderKERI) || embedded.pvrsn.major !== 2 || embedded.pre !== group.pre
76
+ || !embedded.route?.startsWith("/ipex/")) {
77
+ throw new ValidationError("ACDC v2 group approval requires one exact group-authored IPEX message.");
78
+ }
79
+ localGroupMember(hby, group.pre);
80
+ const envelope = envelopeFromFrame(frame);
81
+ const prior = localIpexContribution(hby.db, localGroupMember(hby, group.pre).pre, embedded, rebuildStoredExchangeGroups(hby.db, embedded.said));
82
+ if (!prior) {
83
+ // A group candidate legitimately carries fewer than its final threshold.
84
+ // Verify each supplied contribution against its accepted establishment keys;
85
+ // the ordinary Exchanger still owns threshold completion after explicit approval.
86
+ for (const proof of envelope.tsgs.filter(proof => proof.pre === group.pre)) {
87
+ if (proof.sn > BigInt(Number.MAX_SAFE_INTEGER))
88
+ throw new ValidationError("Invalid group proof ordinal.");
89
+ const said = hby.db.kels.getLast(group.pre, Number(proof.sn));
90
+ const event = said ? hby.db.getEvtSerder(group.pre, said) : null;
91
+ if (!event)
92
+ return null;
93
+ if (said !== proof.said || !event.estive
94
+ || Kever.verifyIndexedSignatures(embedded.raw, proof.sigers, event.verfers).sigers.length
95
+ !== proof.sigers.length) {
96
+ throw new ValidationError("Invalid group member contribution.");
97
+ }
98
+ }
99
+ const supplied = verifyExchangeProofs(hby.db, embedded, {
100
+ tsgs: envelope.tsgs.filter(proof => proof.pre !== group.pre),
101
+ cigars: envelope.cigars,
102
+ sourceSeals: envelope.ssts,
103
+ });
104
+ if (supplied.invalid)
105
+ throw new ValidationError("ACDC v2 group candidate contains invalid exchange proof.");
106
+ if (supplied.missing.length)
107
+ return null;
108
+ if (embedded.route === IPEX_GRANT_ROUTE) {
109
+ const origins = embedded.sad.a.o;
110
+ if (!Array.isArray(origins) || origins.length !== 1 || typeof origins[0] !== "string") {
111
+ throw new ValidationError("ACDC v2 group Grant requires one origin.");
112
+ }
113
+ if (acdcV2GraphUse(hby, protocol.registry?.store ?? null, origins[0], frame.nests ?? []) !== true)
114
+ return null;
115
+ }
116
+ else if (embedded.route === IPEX_ADMIT_ROUTE) {
117
+ if (typeof embedded.sad.p !== "string"
118
+ || acdcV2GrantUse(hby, protocol.exc, protocol.registry?.store ?? null, embedded.sad.p) !== true)
119
+ return null;
120
+ }
121
+ }
122
+ const establishment = group.kever, sigers = prior ? prior.sigers : group.sign(embedded.raw, true);
123
+ const proof = prior
124
+ ?? new TransIdxSigGroup(new Prefixer({ qb64: group.pre }), hby.db.getEvtSerder(group.pre, establishment.lastEst.d).sner, new Diger({ qb64: establishment.lastEst.d }), sigers);
125
+ const approved = {
126
+ ...frame,
127
+ attachments: [...frame.attachments, ...messageAttachmentGroups({ tsgs: [proof] }, Vrsn_2_0)],
128
+ };
129
+ const attachments = yield* call(() => collectPayload(attachmentPayload(approved, { gvrsn: Vrsn_2_0 })));
130
+ const wire = concatBytes(embedded.raw, attachments);
131
+ yield* new Reactor(protocol).processBytes(wire, { local: true });
132
+ yield* protocol.processEscrowsOnce();
133
+ return wire;
134
+ }
135
+ /**
136
+ * Approve one pending multisig wrapper around an embedded IPEX message.
137
+ *
138
+ * @param hby Borrowed local identities and accepted-state stores.
139
+ * @param protocol Borrowed semantic owner; this approval creates its own byte-input context.
140
+ * @param postman Borrowed delivery owner; the caller runs and joins its worker.
141
+ * @param reger Explicit legacy store, required for grant approval/delivery and fresh admit approval.
142
+ * @param wrapper Accepted multisig exchange carrying the proposed IPEX child.
143
+ * @param options Approval/genus policy used for the existing group workflow.
144
+ * @returns Approval and current group/protocol completion information.
145
+ */
146
+ export function* approveMultisigIpex(hby, protocol, postman, reger, wrapper, options = {}) {
147
+ const { child, groupHab } = yield* loadIpexProposal(hby, wrapper);
148
+ const { event: embedded, genus } = child;
149
+ const embeddedSaid = embedded.said;
150
+ if (embedded.pvrsn.major === 1 && embedded.route === IPEX_GRANT_ROUTE && !reger) {
151
+ throw new ValidationError("VDR runtime did not open Reger.");
152
+ }
153
+ const payloadSaid = multisigPayloadSaid(wrapper);
154
+ if (!payloadSaid)
155
+ throw new ValidationError("Multisig IPEX approval requires its coordination identity.");
156
+ if (!hby.db.meids.get([payloadSaid]).some(index => index.qb64 === wrapper.said)) {
157
+ // Recover only this explicitly selected accepted wrapper after an interrupted
158
+ // handler. Ordinary intake owns the index; do not synthesize it or sweep history.
159
+ const message = yield* abortable(signal => collectBytes(protocol.exc.replay(wrapper.said, signal)));
160
+ yield* new Reactor(protocol).processBytes(message, { local: true });
161
+ if (!hby.db.meids.get([payloadSaid]).some(index => index.qb64 === wrapper.said)) {
162
+ throw new ValidationError("Selected IPEX wrapper was not indexed by ordinary intake.");
163
+ }
164
+ }
165
+ const approved = yield* approveIpexChild(hby, protocol, groupHab, child, wrapper, reger);
166
+ if (!approved)
167
+ return { approved: null, accepted: protocol.exc.complete(embeddedSaid), messages: [], deliveries: [] };
168
+ const publication = options.publish
169
+ ? yield* publishGroupIpexProposal(hby, protocol, postman, groupHab, approved, genus)
170
+ : { messages: [], deliveries: [] };
171
+ const deliveries = publication.deliveries;
172
+ if ((options.sendLead ?? true)
173
+ && hby.db.exns.get([embeddedSaid])?.said === embeddedSaid
174
+ && protocol.exc.lead(groupHab, embeddedSaid)) {
175
+ deliveries.push(...(yield* sendCompletedGroupIpex(hby, postman, reger, groupHab, embedded, options.gvrsn, protocol.registry?.store ?? null, protocol.exc)));
176
+ }
177
+ return {
178
+ accepted: hby.db.exns.get([embeddedSaid])?.said === embeddedSaid,
179
+ messages: publication.messages,
180
+ deliveries,
181
+ approved,
182
+ };
183
+ }
184
+ /** Read the exact stored v2 child, or decode the separately framed legacy embed. */
185
+ export function storedMultisigIpexBody(db, wrapper) {
186
+ if (wrapper.pvrsn.major === 1) {
187
+ const sad = embeddedBusinessExnSAD(wrapper);
188
+ return sad ? new SerderKERI({ sad }) : null;
189
+ }
190
+ const children = loadNests(db, wrapper.said), child = children[0]?.body, attrs = wrapper.sad?.a;
191
+ return children.length === 1 && child instanceof SerderKERI && child.pvrsn.major === 2
192
+ && attrs && typeof attrs === "object" && !Array.isArray(attrs)
193
+ && attrs.exn === child.said && attrs.gid === child.pre
194
+ ? child
195
+ : null;
196
+ }
197
+ /** Decode one accepted coordination wrapper and select its actual local group signing state. */
198
+ function* loadIpexProposal(hby, wrapper) {
199
+ let child;
200
+ if (wrapper.pvrsn.major === 2) {
201
+ const nested = loadNests(hby.db, wrapper.said);
202
+ const frame = nested[0], attrs = wrapper.sad?.a;
203
+ if (nested.length !== 1 || !(frame.body instanceof SerderKERI) || frame.body.pvrsn.major !== 2
204
+ || !attrs || typeof attrs !== "object" || Array.isArray(attrs)
205
+ || attrs.exn !== frame.body.said
206
+ || attrs.gid !== frame.body.pre) {
207
+ throw new ValidationError("Multisig IPEX approval requires its exact retained child.");
208
+ }
209
+ child = {
210
+ event: frame.body,
211
+ attachment: yield* call(() => collectPayload(attachmentPayload(frame, { gvrsn: Vrsn_2_0 }))),
212
+ genus: Vrsn_2_0,
213
+ };
214
+ }
215
+ else {
216
+ child = multisigChild(hby, wrapper, "exn");
217
+ if (!child)
218
+ throw new ValidationError("Multisig IPEX approval requires an embedded child.");
219
+ }
220
+ const group = child.event.pre;
221
+ if (!group || !child.event.said || !wrapper.said) {
222
+ throw new ValidationError("Multisig IPEX approval requires wrapper, group, and embedded SAIDs.");
223
+ }
224
+ const groupHab = hby.habs.get(group);
225
+ if (!groupHab)
226
+ throw new ValidationError(`Local group ${group} is missing member signing state.`);
227
+ return { child, groupHab };
228
+ }
229
+ /**
230
+ * Admit peer evidence, reuse or sign the local contribution, then advance ordinary escrows.
231
+ * The operation owns its byte-input context, borrowing only semantic owners and identities.
232
+ * It neither publishes member wrappers nor sends the completed business exchange.
233
+ */
234
+ function* approveIpexChild(hby, protocol, groupHab, child, wrapper, reger) {
235
+ if (wrapper.pvrsn.major === 2) {
236
+ const retained = hby.db.exns.get([wrapper.said]);
237
+ if (!retained || !bytesEqual(retained.raw, wrapper.raw)
238
+ || !protocol.exc.verifyAccepted(wrapper.said, MULTISIG_EXN_ROUTE)) {
239
+ throw new ValidationError("V2 IPEX approval requires the exact authenticated stored wrapper.");
240
+ }
241
+ }
242
+ const { event: embedded, attachment: peerAttachment, genus } = child;
243
+ if (embedded.pvrsn.major === 2) {
244
+ return yield* prepareAcdcV2GroupIpex(hby, protocol, groupHab, concatBytes(embedded.raw, peerAttachment));
245
+ }
246
+ if (embedded.route === IPEX_GRANT_ROUTE) {
247
+ if (!reger)
248
+ throw new ValidationError("Grant approval requires the local credential wallet.");
249
+ if (!credentialGrantReady(hby, reger, embedded, peerAttachment, genus))
250
+ return null;
251
+ }
252
+ const input = new Reactor(protocol);
253
+ if (peerAttachment.length > 0) {
254
+ yield* input.processBytes(concatBytes(Counter.makeGVC(genus), embedded.raw, peerAttachment), { local: true });
255
+ yield* protocol.processEscrowsOnce();
256
+ }
257
+ const member = localGroupMember(hby, groupHab.pre);
258
+ const prior = storedGroupMessage(hby.db, member.pre, wrapper);
259
+ let approved;
260
+ if (prior) {
261
+ // Accepted child proofs can replace provisional sets. The recipient wrapper
262
+ // retains this member's actual contribution independently of that merged row.
263
+ const retained = multisigChild(hby, prior, "exn");
264
+ if (!retained || retained.event.said !== embedded.said) {
265
+ throw new ValidationError("Recorded IPEX approval has a different child.");
266
+ }
267
+ const frames = parseBytes(concatBytes(Counter.makeGVC(retained.genus), retained.event.raw, retained.attachment));
268
+ if (frames.length !== 1)
269
+ throw new ValidationError("Recorded IPEX approval must retain one child message.");
270
+ const proof = localIpexContribution(hby.db, member.pre, embedded, envelopeFromFrame(frames[0]).tsgs);
271
+ if (!proof)
272
+ throw new ValidationError("Recorded IPEX approval lacks a valid member contribution.");
273
+ approved = concatBytes(serializeMessage(embedded, { tsgs: [proof], gvrsn: genus }), peerAttachment);
274
+ }
275
+ else {
276
+ if (!ipexConversationReady(hby.db, embedded))
277
+ return null;
278
+ if (embedded.route === IPEX_ADMIT_ROUTE) {
279
+ if (!reger)
280
+ throw new ValidationError("Admit approval requires the local credential wallet.");
281
+ const prior = embedded.ked?.p;
282
+ const grant = typeof prior === "string" && prior.length > 0 ? hby.db.exns.get([prior]) : null;
283
+ if (!grant)
284
+ throw new ValidationError("Admit approval requires its accepted grant.");
285
+ validateAdmitGrant(grant, groupHab.pre, reger);
286
+ if (ipexRecipient(embedded, grant) !== grant.pre) {
287
+ throw new ValidationError("Admit recipient does not match its grant sender.");
288
+ }
289
+ const response = hby.db.erpy.get([grant.said]);
290
+ if (response && response.qb64 !== embedded.said) {
291
+ throw new ValidationError("Grant already has another accepted response.");
292
+ }
293
+ }
294
+ approved = groupIpexPartial(hby, groupHab, embedded, peerAttachment, genus);
295
+ }
296
+ yield* input.processBytes(concatBytes(Counter.makeGVC(genus), approved), { local: true });
297
+ yield* protocol.processEscrowsOnce();
298
+ return approved;
299
+ }
300
+ /**
301
+ * Reuse this member's verified stored contribution, or sign its first partial.
302
+ * Group and member rotation cannot replace a recorded signature. Peer proof
303
+ * bytes remain distinct input; only a genuine local signature permits reuse.
304
+ */
305
+ export function groupIpexPartial(hby, groupHab, embedded, attachments = new Uint8Array(), gvrsn = Vrsn_1_0) {
306
+ if (embedded.pvrsn.major === 2) {
307
+ throw new ValidationError("ACDC v2 group IPEX requires exact-stream prepareAcdcV2GroupIpex approval.");
308
+ }
309
+ const group = groupHab.pre;
310
+ const groupRecord = hby.db.getHab(group);
311
+ const memberPre = groupRecord?.mid;
312
+ const memberHab = memberPre ? hby.habs.get(memberPre) : null;
313
+ if (embedded.pre !== group || !embedded.said) {
314
+ throw new ValidationError("IPEX sender must match the selected group and have a SAID.");
315
+ }
316
+ const prior = memberHab
317
+ ? localIpexContribution(hby.db, memberHab.pre, embedded, rebuildStoredExchangeGroups(hby.db, embedded.said))
318
+ : null;
319
+ if (prior)
320
+ return concatBytes(serializeMessage(embedded, { tsgs: [prior], gvrsn }), attachments);
321
+ const groupKever = groupHab.kever;
322
+ if (!group || !groupKever || !memberHab) {
323
+ throw new ValidationError(`Local group ${group || "<missing>"} is missing member signing state.`);
324
+ }
325
+ // Hab owns contribution selection, including a member that rotated ahead of
326
+ // the group's accepted key list. A fresh endorsement needs current authority
327
+ // only; recorded contributions above retain their original proof bytes.
328
+ const sigers = groupHab.sign(embedded.raw, true);
329
+ const estSaid = groupKever.lastEst.d || groupKever.said;
330
+ const estEvent = estSaid ? hby.db.getEvtSerder(group, estSaid) : null;
331
+ const seqner = estEvent?.sner;
332
+ if (!estSaid || !seqner) {
333
+ throw new ValidationError(`Missing establishment event material for group ${group}.`);
334
+ }
335
+ const tsg = new TransIdxSigGroup(new Prefixer({ qb64: group }), seqner, new Diger({ qb64: estSaid }), sigers);
336
+ return concatBytes(serializeMessage(embedded, { tsgs: [tsg], pipelined: false, gvrsn }), attachments);
337
+ }
338
+ /**
339
+ * Prepare recipient-specific wrappers, replaying recorded ones, and admit each
340
+ * exact packet locally before returning any transmission work. Composition owns
341
+ * the delivery worker. Ordinary Baser/Multiplexor evidence is the recovery record;
342
+ * there is no new queue or cross-store/network transaction.
343
+ */
344
+ function* prepareGroupIpexMessages(hby, protocol, groupHab, embedded, childGvrsn) {
345
+ const member = localGroupMember(hby, groupHab.pre);
346
+ const frames = parseBytes(childGvrsn ? concatBytes(Counter.makeGVC(childGvrsn), embedded) : embedded);
347
+ const childFrame = frames[0], child = childFrame?.body;
348
+ if (frames.length !== 1 || !(child instanceof SerderKERI)) {
349
+ throw new ValidationError("Group IPEX requires one complete exchange.");
350
+ }
351
+ const genus = childFrame.gvrsn ?? child.gvrsn ?? childGvrsn ?? child.pvrsn;
352
+ if (child.pvrsn.major === 2) {
353
+ if (child.route === IPEX_GRANT_ROUTE) {
354
+ const origins = child.sad.a.o;
355
+ if (!Array.isArray(origins) || origins.length !== 1 || typeof origins[0] !== "string"
356
+ || acdcV2GraphUse(hby, protocol.registry?.store ?? null, origins[0], childFrame.nests ?? []) !== true) {
357
+ throw new ValidationError("ACDC v2 group graph is unavailable before proposal publication.");
358
+ }
359
+ }
360
+ else if (child.route === IPEX_ADMIT_ROUTE && (typeof child.sad.p !== "string"
361
+ || acdcV2GrantUse(hby, protocol.exc, protocol.registry?.store ?? null, child.sad.p) !== true)) {
362
+ throw new ValidationError("ACDC v2 group Grant is unavailable before Admit publication.");
363
+ }
364
+ }
365
+ const payload = { gid: groupHab.pre, ...multisigChildGenusAttrs(child, genus) };
366
+ const input = new Reactor(protocol);
367
+ const messages = [];
368
+ for (const recipient of remoteGroupMembers(hby, member, groupSigningMembers(hby, groupHab.pre))) {
369
+ const prepared = child.pvrsn.major === 2
370
+ ? yield* prepareMultisigEventExn(member.pre, { route: MULTISIG_EXN_ROUTE, attrs: { gid: groupHab.pre } }, embedded, {
371
+ recipient,
372
+ version: Vrsn_2_0,
373
+ childGvrsn: genus,
374
+ })
375
+ : exchange(MULTISIG_EXN_ROUTE, payload, {
376
+ sender: member.pre,
377
+ recipient,
378
+ version: Vrsn_1_0,
379
+ embeds: { exn: embedded },
380
+ });
381
+ const signed = yield* prepareGroupMessage(protocol.exc, member, recipient, prepared);
382
+ yield* input.processBytes(signed.message, { local: true });
383
+ if (!protocol.exc.complete(signed.exnSaid)
384
+ || !hby.db.meids.get([signed.payloadSaid]).some(index => index.qb64 === signed.exnSaid)) {
385
+ throw new ValidationError("Group IPEX wrapper was not accepted and indexed locally.");
386
+ }
387
+ messages.push(signed);
388
+ }
389
+ return messages;
390
+ }
391
+ /** Publish approval wrappers through ordinary Poster sends; never acquire workers or stores here. */
392
+ export function* publishGroupIpexProposal(hby, protocol, postman, groupHab, embedded, childGvrsn) {
393
+ const outcomes = [];
394
+ for (const message of yield* prepareGroupIpexMessages(hby, protocol, groupHab, embedded, childGvrsn)) {
395
+ outcomes.push(yield* sendGroupMessage(postman, message));
396
+ }
397
+ return groupSendResult(outcomes);
398
+ }
399
+ /**
400
+ * Publish an initial command's member wrappers with StreamPoster's original
401
+ * first-present-role routing. Shared preparation signs/replays and admits locally;
402
+ * this concrete operation retains its existing finite-stream transport contract.
403
+ */
404
+ export function* publishInitialGroupIpex(hby, protocol, postman, groupHab, embedded, childGvrsn) {
405
+ const outcomes = [];
406
+ for (const message of yield* prepareGroupIpexMessages(hby, protocol, groupHab, embedded, childGvrsn)) {
407
+ const evt = postman.sendStream({
408
+ src: message.src,
409
+ dest: message.recipient,
410
+ msgs: [message.message],
411
+ topic: "multisig",
412
+ }, { notify: true });
413
+ const outcome = yield* postman.wait(evt);
414
+ if (outcome.kin === "failed")
415
+ throw outcome.error;
416
+ outcomes.push({
417
+ recipient: message.recipient,
418
+ exnSaid: message.exnSaid,
419
+ payloadSaid: message.payloadSaid,
420
+ deliveries: outcome.deliveries,
421
+ });
422
+ }
423
+ return groupSendResult(outcomes);
424
+ }
425
+ /** Approve stored wrappers for one IPEX child without external lead sending or acquiring stores/workers. */
426
+ export function* approveStoredMultisigIpexWrappers(hby, protocol, embeddedSaid, reger) {
427
+ for (const [, wrapper] of hby.db.exns.getTopItemIter()) {
428
+ if (wrapper.route !== MULTISIG_EXN_ROUTE) {
429
+ continue;
430
+ }
431
+ const embedded = storedMultisigIpexBody(hby.db, wrapper);
432
+ if (!embedded || embedded.said !== embeddedSaid) {
433
+ continue;
434
+ }
435
+ const { child, groupHab } = yield* loadIpexProposal(hby, wrapper);
436
+ yield* approveIpexChild(hby, protocol, groupHab, child, wrapper, reger);
437
+ }
438
+ }
439
+ /**
440
+ * Return the first incomplete stored `/multisig/exn` wrapping `/ipex/*`.
441
+ *
442
+ * @param db Borrowed accepted exchanges; discovery does not mutate notices or approval state.
443
+ * @returns First incomplete stored IPEX proposal, or no result when none exists.
444
+ */
445
+ export function findPendingMultisigIpex(db) {
446
+ for (const [, wrapper] of db.exns.getTopItemIter()) {
447
+ if (wrapper.route !== MULTISIG_EXN_ROUTE) {
448
+ continue;
449
+ }
450
+ const embedded = storedMultisigIpexBody(db, wrapper);
451
+ if (!embedded?.route?.startsWith("/ipex/")) {
452
+ continue;
453
+ }
454
+ const embeddedSaid = embedded.said;
455
+ if (typeof embeddedSaid !== "string" || db.exns.get([embeddedSaid])?.said === embeddedSaid) {
456
+ continue;
457
+ }
458
+ return wrapper;
459
+ }
460
+ return null;
461
+ }
462
+ /**
463
+ * Send a completed group IPEX message from the elected local lead.
464
+ *
465
+ * @param hby Borrowed local identities and accepted-state stores.
466
+ * @param postman Borrowed Poster; its delivery worker must run while this operation awaits outcomes.
467
+ * @param reger Borrowed credential evidence store for grant artifacts.
468
+ * @param groupHab Group sender whose elected local lead publishes completed output.
469
+ * @param embedded Completed embedded IPEX message.
470
+ * @param gvrsn Attachment genus for the outgoing child/artifact stream.
471
+ * @returns Completed delivery results when this member is the elected sender.
472
+ */
473
+ export function* sendCompletedGroupIpex(hby, postman, reger, groupHab, embedded, gvrsn = Vrsn_1_0, registry = null, exchanger) {
474
+ if (!embedded.said) {
475
+ throw new ValidationError("Completed group IPEX message is missing a SAID.");
476
+ }
477
+ const priorSaid = embedded.ked?.p;
478
+ const prior = typeof priorSaid === "string" && priorSaid.length > 0 ? hby.db.exns.get([priorSaid]) : null;
479
+ const recipient = embedded.pvrsn.major === 2 && typeof embedded.sad?.ri === "string"
480
+ ? embedded.sad.ri
481
+ : ipexRecipient(embedded, prior ?? undefined);
482
+ if (!recipient) {
483
+ throw new ValidationError(`Unable to find recipient for ${embedded.route ?? "<unknown>"} ${embedded.said}.`);
484
+ }
485
+ const messages = [];
486
+ if (embedded.pvrsn.major === 2) {
487
+ if (!exchanger) {
488
+ throw new ValidationError("ACDC v2 group delivery requires its actual exchange verification owner.");
489
+ }
490
+ const grant = embedded.route === IPEX_GRANT_ROUTE
491
+ ? embedded.said
492
+ : embedded.route === IPEX_ADMIT_ROUTE
493
+ ? embedded.sad.p
494
+ : undefined;
495
+ if (typeof grant === "string" && acdcV2GrantUse(hby, exchanger, registry, grant) !== true) {
496
+ throw new ValidationError("ACDC v2 group graph is unavailable for completed delivery.");
497
+ }
498
+ if (embedded.route === IPEX_GRANT_ROUTE) {
499
+ const nests = loadNests(hby.db, embedded.said), aids = new Set([groupHab.pre]), regids = new Set();
500
+ for (const node of nests) {
501
+ const body = node.body;
502
+ if (body.issuer)
503
+ aids.add(body.issuer);
504
+ if (body.issuee)
505
+ aids.add(body.issuee);
506
+ if (body.regid)
507
+ regids.add(body.regid);
508
+ const a = body.sad.a;
509
+ if (a && typeof a === "object" && typeof a.rd === "string")
510
+ regids.add(a.rd);
511
+ }
512
+ messages.push(Counter.makeGVC(Vrsn_2_0));
513
+ for (const aid of aids) {
514
+ const state = hby.db.getKever(aid);
515
+ if (state)
516
+ messages.push(...hby.db.cloneDelegation(state, Vrsn_2_0), ...hby.db.clonePreIter(aid, 0, Vrsn_2_0));
517
+ }
518
+ for (const regid of regids) {
519
+ if (!registry)
520
+ throw new ValidationError("ACDC v2 group delivery registry evidence is unavailable.");
521
+ messages.push(registry.cloneTel(regid));
522
+ }
523
+ }
524
+ }
525
+ else if (embedded.route === IPEX_GRANT_ROUTE) {
526
+ if (!reger) {
527
+ throw new ValidationError("VDR runtime did not open Reger.");
528
+ }
529
+ messages.push(...groupGrantSupport(hby, reger, embedded, recipient, gvrsn));
530
+ }
531
+ if (embedded.pvrsn.major === 2) {
532
+ messages.push(yield* abortable(signal => collectBytes(exchanger.replay(embedded.said, signal))));
533
+ return yield* sendCredentialStream(postman, localGroupMember(hby, groupHab.pre), recipient, messages);
534
+ }
535
+ else {
536
+ messages.push(storedExchangeMessage(hby, requireStoredExchange(hby, embedded.said), gvrsn));
537
+ }
538
+ return yield* sendCredentialBytes(postman, localGroupMember(hby, groupHab.pre), recipient, messages);
539
+ }
540
+ /** Build credential support from the explicitly selected legacy store. */
541
+ function groupGrantSupport(hby, reger, embedded, recipient, gvrsn) {
542
+ const credentialSaid = credentialSaidFromGrant(embedded);
543
+ if (!credentialSaid)
544
+ throw new ValidationError("Grant is missing its credential SAID.");
545
+ const [creder] = reger.cloneCred(credentialSaid);
546
+ return credentialPresentationSupportMessages(hby, reger, creder, recipient, gvrsn);
547
+ }
548
+ /** Load one accepted stored EXN by SAID. */
549
+ export function requireStoredExchange(hby, said) {
550
+ const stored = hby.db.exns.get([said]);
551
+ if (!stored) {
552
+ throw new ValidationError(`Exchange ${said} is not stored as accepted.`);
553
+ }
554
+ return stored;
555
+ }
556
+ /**
557
+ * Rebuild an accepted EXN with its signatures and path/proof payloads.
558
+ * epath stores complete counted groups; remove each source counter before the
559
+ * serializer supplies the selected output genus's counter. Retain the selected
560
+ * grant's actual child proofs; support reconstruction must not replace them.
561
+ */
562
+ export function storedExchangeMessage(hby, serder, gvrsn = Vrsn_1_0) {
563
+ if (!serder.said) {
564
+ throw new ValidationError("Exchange message is missing a SAID.");
565
+ }
566
+ const cigars = hby.db.ecigs.get([serder.said]).map(([, cigar]) => cigar);
567
+ const sourceGenus = resolveAttachmentGvrsn(serder, hby.db.exchangeMeta.get([serder.said])?.gvrsn);
568
+ const pathed = hby.db.epath.get([serder.said]).map((text) => {
569
+ const raw = new TextEncoder().encode(text);
570
+ return raw.slice(new Counter({ qb64b: raw, version: sourceGenus }).fullSize);
571
+ });
572
+ return serializeMessage(serder, {
573
+ tsgs: rebuildStoredExchangeGroups(hby.db, serder.said),
574
+ cigars,
575
+ pathed,
576
+ pipelined: false,
577
+ gvrsn,
578
+ });
579
+ }
580
+ /**
581
+ * Send raw credential/IPEX bytes over the credential mailbox topic.
582
+ *
583
+ * @param postman Borrowed Poster; its delivery worker must run while this operation awaits outcomes.
584
+ * @param hab Local signing habitat; its state/store lifetime remains with the caller.
585
+ * @param dest Final recipient AID.
586
+ * @param msgs Complete signed credential/IPEX messages in required order.
587
+ * @returns Successful destination URLs; failed concrete outcomes throw.
588
+ */
589
+ export function* sendCredentialBytes(postman, hab, dest, msgs) {
590
+ const sent = [];
591
+ for (const msg of msgs) {
592
+ const evt = postman.send({
593
+ src: hab.pre,
594
+ dest,
595
+ msg,
596
+ topic: CREDENTIAL_MAILBOX_TOPIC,
597
+ }, { notify: true });
598
+ const outcome = yield* postman.wait(evt);
599
+ if (outcome.kin === "failed")
600
+ throw outcome.error;
601
+ sent.push(...outcome.deliveries);
602
+ }
603
+ return sent;
604
+ }
605
+ /**
606
+ * Send an initial IPEX command's prepared batch through one stream admission.
607
+ *
608
+ * @param postman Borrowed Poster; an independently running worker owns delivery.
609
+ * @param hab Local source signer; bytes are already signed before admission.
610
+ * @param dest Resolved final recipient AID.
611
+ * @param msgs Finite ordered support and business messages sharing endpoint selection.
612
+ * @returns Actual delivered URLs; a failed concrete outcome throws its original error.
613
+ */
614
+ export function* sendCredentialStream(postman, hab, dest, msgs) {
615
+ const evt = postman.sendStream({ src: hab.pre, dest, topic: CREDENTIAL_MAILBOX_TOPIC, msgs }, { notify: true });
616
+ const outcome = yield* postman.wait(evt);
617
+ if (outcome.kin === "failed")
618
+ throw outcome.error;
619
+ return outcome.deliveries;
620
+ }
621
+ function rebuildStoredExchangeGroups(db, said) {
622
+ const groups = [];
623
+ let currentKey = null;
624
+ let currentSigers = [];
625
+ const flush = () => {
626
+ if (!currentKey || currentSigers.length === 0) {
627
+ return;
628
+ }
629
+ groups.push(new TransIdxSigGroup(new Prefixer({ qb64: currentKey[0] }), seqnerFromSnh(currentKey[1]), new Diger({ qb64: currentKey[2] }), currentSigers));
630
+ currentSigers = [];
631
+ };
632
+ for (const [keys, siger] of db.esigs.getTopItemIter([said, ""])) {
633
+ const groupKey = keys.slice(1);
634
+ if (!groupKey[0] || !groupKey[1] || !groupKey[2]) {
635
+ continue;
636
+ }
637
+ if (currentKey
638
+ && (currentKey[0] !== groupKey[0] || currentKey[1] !== groupKey[1] || currentKey[2] !== groupKey[2])) {
639
+ flush();
640
+ }
641
+ currentKey = [groupKey[0], groupKey[1], groupKey[2]];
642
+ currentSigers.push(siger);
643
+ }
644
+ flush();
645
+ return groups;
646
+ }
647
+ function seqnerFromSnh(snh) {
648
+ return new Seqner({ code: "0A", raw: hexToFixedBytes(snh, 16) });
649
+ }
650
+ function hexToFixedBytes(hex, size) {
651
+ const normalized = hex.length % 2 === 0 ? hex : `0${hex}`;
652
+ if (!/^[0-9a-f]+$/i.test(normalized)) {
653
+ throw new ValidationError(`Invalid hex ordinal ${hex}`);
654
+ }
655
+ if (normalized.length > size * 2) {
656
+ throw new ValidationError(`Hex ordinal ${hex} exceeds ${size} bytes.`);
657
+ }
658
+ const raw = new Uint8Array(size);
659
+ const padded = normalized.padStart(size * 2, "0");
660
+ for (let index = 0; index < size; index += 1) {
661
+ raw[index] = Number.parseInt(padded.slice(index * 2, (index * 2) + 2), 16);
662
+ }
663
+ return raw;
664
+ }